当前位置:首页 期刊杂志

中文政治隐喻自动识别系统的设计与实现

时间:2024-05-04

朱毅 郭乐诗

(大连外国语大学软件学院 辽宁省大连市 116044)

1 数据来源

Selenium 是一个用于Web 应用程序测试的工具,选择要爬取的页面,通过webdriver 模块来获取网页请求信息,成功访问网页后,定位领导人讲话的讲话标题时,使用find_elements_by_xpath来获得讲话的标题,定位讲话的详细信息时,需要获取新的link,获取新的网页请求,通过selenium 的模拟用户点击操作进入讲话详情信息界面,获取领导人讲话的详细信息。当爬取成功当下讲话时,要想爬取下一条政治讲话详细信息,需要返回标题界面,使用selenium 中的back()函数就可以返回到上一个标题界面,将语句套在循环中进行遍历,直到爬取完最后一个讲话详情信息。

2 数据展示

该项目采用django 框架进行数据展示。Django 是一个开放的源代码的Web 应用框架,可以将数据库和html 等前端的开发和后端开发设计融合在一起。使设计者能够更加灵活的进行设计网站。

2.1 政治语句展示

2.1.1 判断路径

Django 框架收到浏览器请求时,首先截取http://127.0.0.1:8000/speechdetail/ 得到speechdetail 字符。 在setting.py 文件中通过ROOT_URLCONF 判断urls.py 文件。在urls.py 文件中匹配path('speechdetail/',views.speech_detail,name='speech_detail'),根据正则表达式,若匹配则调用相应的view 中的函数,跳转相应的HTML 页面。

2.1.2 匹配语句

View.py 文件中的speech_detail()的函数是显示政治语句的函数。用request.POST['title'],获取到要进入的政治语句的标题,调用speechdao.py 中的getSentences()函数。

2.1.3 调用数据库

speech.py 中使用filter 函数在数据库中找到对应政治标题的政治语句的详细信息找到对应语句的算法为“sents=sentModels.objects.filter(sentences_title=title)”找到之后将找到的语句信息返回给speech_detail.html 文件,交给浏览器,在页面中显示出政治语句的详细信息。

2.1.4 显示语句

图1:政治讲话信息展示图

而在speech_detail.html 中使用了{{sent.sentences}}标签,显示政治语句的详细信息,使用了{{sent.Metaphor}}标签,显示政治语句所对应的隐喻类型。使用了{{sent.sent_editor}}标签,显示了标注该句子隐喻的用户。

政治讲话信息展示如图1所示。

2.2 用户进行隐喻标注

在政治讲话中经常使用和出现的隐喻类型大体分为以下几种:建设隐喻,旅途隐喻,容器隐喻,管道隐喻,拟人隐喻,方位隐喻,家庭隐喻,概念隐喻,实体隐喻,战争隐喻。

用户要对政治语句进行人工隐喻标注时,点击要标注的政治语句的添加标注按钮,获取到路径’/insertM/’,在urls.py 文件中进行逐条匹配’path(‘preinsertMetaphor/’,views.preinsertMetaphor)’进行正则判断。

用户人工隐喻标注如图2所示。

3 隐喻分析和自动识别

3.1 数据预处理

从网页上直接爬取的数据往往会带有网页标签或是其他不规则的字符,这时就需要对爬取的数据进行清洗,得到想要的干净的数据。先使用Beautiful 中的BeautifulSoup(text,'html.parser').get_text()语句,去掉文本中的网页标签只留下纯文本类型。再使用jieba.cut()对文本进行分词处理,最后对已经分过词的文本进行去停用词处理,最后得到经过清洗的文本数据。

图2:人工隐喻标注示意图

3.2 构建词向量模型,对政治语句进行编码

使用gensim 模块训练词嵌入模型。将已经清洗过的文本数据放入一个词向量为300 维,词频均大于40 的模型中,使用word2vec 进行模型训练,将训练的结果存储为model 类型。读入之前训练好的Word2Vec 模型,根据word2vec 的结果对训练集的政治语句进行编码。对政治语句则使用K-Means 进行聚类编码。使用model.wv.syn0 函数载入模型,对文本数据进行分割词向量创建簇,划分结束后的每一个单词的聚类都存储在idx 当中,将所Word2Vec生成的词汇表压缩成一个单词为下标,每一个单词映射为簇编号的字典。在将政治语句转换成cluster bag vectors 时,使用的就不再是单一的单词,而是语义相关的簇。遍历政治语句时,如果单词在词汇表中则单词所在簇加一。遍历结束后将遍历结果存储在数组中,这时再将政治语句转换成数据向量作为训练集特征。政治语句的数据向量如图3所示。

3.3 随机森林算法建模

使用RandomForestClassifier()函数对训练集进行建模分析,利用训练集中已经标注好的政治语句的所属隐喻进行建模分析。建好模后进行一下测试,先对训练集进行一下预测,以此来判断一下模型的构建是否成功。使用forest.predict()对训练集中的政治语句进行预测,预测之后再使用混淆矩阵以及confusion_matrix()算法对随机森林预测的结果是否准确进行判断。

3.4 自动识别效果

用户单击选择系统中的自动识别部分,则跳转运行已经训练好的分类器,用户输入需要进行识别的政治语句,系统将对政治语句进行数据预处理、语句转换编码、随机森林预测等操作,最后将识别的结果显示在界面上。隐喻识别结果如图4所示。

4 结论

中文政治隐喻自动识别系统主要完成了以下几种工作:

通过selenium 爬取国家领导人讲话信息作为基础语料,使用jieba 等模块对讲话信息进行预处理,将清洗成功的文本使用word2vec 生成词向量模型。

图3:政治语句的数据向量图

图4:隐喻识别结果图

搭建Django 项目框架,创建数据库表,把国家领导人政治讲话信息存入数据库,利用django 框架搭建人工标注系统,方便用户对政治语句进行人工隐喻标注。将标记的结果作为训练集。使用随机森林构建分类器对政治语句进行隐喻识别,并将识别的结果返回到界面。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!