一种基于依存句法和泛化因果网络进行情感原因挖掘方法与流程

文档序号:19892624发布日期:2020-02-11 12:53阅读:412来源:国知局
一种基于依存句法和泛化因果网络进行情感原因挖掘方法与流程

本发明属于自然语言处理领域,具体涉及一种基于依存句法和泛化因果网络进行情感原因挖掘方法,是一种基于依存句法进行因果关系抽取,然后根据抽取的因果关系构建因果关系网络,根据此网络挖掘文本信息中激发情感产生和转移的触发事件。



背景技术:

随着社交网络平台的快速增长,越来越多的人倾向于在社交网络上表达他们的情感,情感原因挖掘也成为了自然语言处理方面一个新的挑战。近些年情感分析的研究重点主要是情感分类,但是有些时候我们更加关注激发情感产生和转移的触发事件。例如,制造商想知道产品销量高的原因和产品销量低的原因,政府想知道社会公信力下降的原因。本部分主要是介绍情感原因挖掘的研究现状。

sophiam.y.lee第一次提出情感原因挖掘这个概念,相关研究方案也是由语言学规则进行驱动,针对新闻文本中的情绪表达抽取对应的原因。该方法实验效果性能并不是很理想,准确率只能达到67.47%。在sophia的工作基础上,chen和lee提出了一种基于规则的情感原因挖掘方法,将occ模型引入情感原因挖掘,设计了新的情感原因抽取规则,缺点在于对于相同的情感定义,不同的研究人员的理解也一定会有差异,这样就导致在方案实施的过程中就会引起最终结果的差异,并且不会有很好的复现性。

除了基于规则的方法外,ghazi使用了crfs进行了情感原因挖掘。但是它需要情感原因和情感关键词在同一个句子中,这就极大的限制了此方法的使用范围,扩展性有待改进。lingu提出了一种基于qa的情感原因挖掘方法,但是到了更细粒度的场景下,分析结果可能就存在错误。

本方法首先根据依存句法关系,对文本中的情感原因关系进行抽取,通过抽取的关系构建因果关系网络,然后对构建的网络进行泛化处理,从而可以达到更好的事件匹配。本方法不论是实验效果方面还是扩展性都有很大的突破。



技术实现要素:

本方法主要是挖掘激发情感产生和转移的触发事件,发现文本的因果关系,找出其运行的规律。此方法在事件的预测、事件聚类和股市的预测中有广泛的应用价值,也可以帮助政府对社会媒体中的舆情进行有效的监控。

本发明为解决背景技术中提出的技术问题,所采用的技术方案如下:一种基于依存句法和泛化因果网络进行情感原因挖掘方法,该方法主要步骤为:首先根据依存句法抽取因果关系,然后利用抽取的因果关系构建泛化因果关系网络;

具体如下:

1)利用爬虫框架,爬取新闻数据,输入数据;

2)对输入数据进行预处理;

3)根据二元关系模型和语义分析,对文本进行语义模式提取;

4)判断提取的语义模式是否属于因果关系语义模式;

5)输出语句中的原因事件,结果事件与事件之间的因果关系;

6)利用因果关系连接词来识别成对的因果关系事件;

7)从确定的事件中提取更具体的因果事件;

8)把因果事件抽取成为由一系列动词名词联合组成的事件;

9)利用原因事件和结果事件构建因果关系网络,原因事件和结果事件建立连边;

10)对事件做泛化处理;

11)对因果事件进行预测;

12)评估因果关系网络预测的结果,采用计算精确率p值,召回率r值和f值进行评估。

本发明所述步骤1)中爬虫框架选自heritrix、jspider、webmagic、webcollector中任一种。

本发明所述步骤2)中预处理步骤包括断句、分词、词性标注或语义分析。

本发明所述断句处理主要是利用现有的分词器实现。

本发明所述分词器主要包括word分词器、ansj分词器、斯坦福分词、lucene&nutch分词器、斯坦福分词器或lucene&nutch分词器。

本发明所述步骤9)具体是:边代表事件之间的关系,箭尾指向原因事件,箭头指向结果事件;因果有传递性,即链式特性,多个匹配的因果头尾相接组成一个长链条。

本发明所述步骤10)具体是:同一类的事件归为一个事件,泛化后的事件常表征一类事件,即抽象事件。

本发明所述步骤11)具体是:预测导致a事件发生的原因事件,通过泛化的因果关系网络,找到a事件的结点,找到与其相关联的原因事件;然后找到一系类导致a事件发生的原因事件。

有益效果:现有对于情感因果挖掘的方法,主要是采用了简单的规模模板的方法,没有有效的考虑语句中句子之间的句法关系,而且事件匹配效果也是差强人意。与现有技术相比,本方法主要是有以下几个有益效果:

首先,本方法采用了句法依存的关系对句子进行语义解析,这样充分解读了句子中词语之间的隐含意思。

其次,本方法采用了对事件进行了泛化处理,提高了事件的匹配度。

最后,本方法有很好的扩展性,不仅可以应用到情感原因挖掘领域,而且还可以应用到任何原因挖掘领域。

附图说明

图1是基于依存句法进行因果关系抽取流程图;

图2是一个简单的语义模式提取分析例子;

图3是构建泛化因果关系网络流程图。

具体实施方式

以下结合附图和具体实施例对本发明做进一步详细的说明。

实施例1

本文提出的基于依存句法和泛化因果网络进行情感原因挖掘方法,主要是应用于发现文本的因果关系,找出其运行的规律。在挖掘情感原因时,可按照下面描述的步骤进行。

图1是本发明基于依存句法进行因果关系抽取流程图。

第一步:利用已有的爬虫框架webmagic,爬取天涯网站的新闻数据,作为本方法的输入数据。爬去方法主要是分为三步,首先根据种子链接,抽取目标链接放入待爬取队列;然后从页面中解析并抽取需要的信息,webmagic在这里会用jsoup组件来解析html页面;最后处理数据,将已提取出来的数据以文件格式存放或者存入数据库以及搜索引擎索引库等。

第二步:对天涯的文本数据进行预处理,在此过程中,本案例主要是选取带有情感词的句子,然后对这些句子进行断句、分词、词性标注和语义分析。对输入的文本数据根据标点符号对文本数据进行断句处理,主要利用斯坦福分词器,把每个句子分为一系列的词语;然后利用斯坦福的ctb对每一个词语进行词性标注。最后利用斯坦福解析器的对该句子进行语义分析。

第三步:根据二元关系模型和语义分析,对文本进行语义模式提取。我们举例说明如何利用二元关系进行语义模式提取,例如“小明刚刚丢了一百元钱,所以他今天很不开心”,在这个句子中“小明刚刚丢了一百元钱”和“他今天不开心”属于因果事件,“所以”属于包含因果关系的谓语动词,则根据语义分析和二元关系模型对这句话提取的语义模式为[“小明丢钱”,“所以”,“他不开心”]。

第四步:判断提取的语义模式是否属于情感因果关系语义模式,主要是根据语句是否包含因果关系连接词,如果语义模式中包含本文中确定的因果关系连接词,就认为属于情感因果关系语义模式。

第五步:输出语句中的情感原因事件,情感结果事件。我们主要是通过语义模式匹配,判断事件属于情感原因事件还是情感结果事件。

第六步:从确定的事件中提取更具体的因果事件,我们主要是通过去掉事件描述中的停顿词以此获得更加简练的事件描述。

第七步:把情感因果事件抽取成为由一系列动词名词联合组成的事件,例如“小明丢钱”抽取为[小明,丢钱],这两个词组合表示形成一个事件的定义。

第八步:利用情感原因事件和结果事件构建因果关系网络,情感原因事件和情感结果事件建立连边。边代表事件之间的关系,它是有方向的,箭尾指向原因事件,箭头指向结果事件。因果有传递性,即链式特性,多个匹配的因果头尾相接组成一个长链条。

第九步:对情感事件做泛化处理,即同一类的事件归为一个事件。这种泛化后的事件常常是表征一类事件,因此我们称之为抽象事件。

第十步:本案例最后根据泛化的因果关系网络,对情感产生的原因进行挖掘,首先我们在泛化因果关系网络中找到相关事件的节点,然后对该节点相关联的边进行搜索,找到相关的情感词,然后找到与情感词同时出现的原因事件。此过程是一个挖局情感产生原因的完整过程。

实施例2

基于依存句法和泛化因果网络进行情感原因挖掘方法,不仅仅可以应用到情感原因挖掘领域,还能应用到对重大事件的产生原因进行分析。为政府控制重大事件的舆情走向提出指导建议。

第一步:利用已有的爬虫框架webcollector,爬取新浪网站的新闻数据,webcollector是一个无须配置、便于二次开发的java爬虫框架(内核)。仅仅需少量代码就可以实现一个功能强大的爬虫。首先自定义请求头在一些爬取任务中,一些网站的反爬机制比较强,需要登录,或许还有其他请求,这个时候就需要自定义请求头将登录后的cookie信息封装在内。方法很简单,重写getresponse方法即可轻松自定义请求头。然后设置代理,在一些反爬机制比较强的网站,当发现同一个ip访问本网站特别频繁,会采取一些机制来应对,比如弹验证码,或者直接将此ip拉黑,则无法继续爬取任务,这个时候就需要设置代理;最后爬去网页信息。

第二步:对文本数据进行预处理,主要包括断句、分词、词性标注和语义分析。对输入的文本数据利用lucene&nutch分词器进行语义分析。

第三步:根据二元关系模型和语义分析,对文本进行语义模式提取。我们举例说明如何利用二元关系进行语义模式提取,例如“天津812爆炸事故,是由于瑞海公司危险品仓库起火引起。”,在这个句子中“天津812爆炸事故”和“瑞海公司危险品仓库起火引起”属于因果事件,“由于”属于包含因果关系的谓语动词,则根据语义分析和二元关系模型对这句话提取的语义模式为[“天津812爆炸事故”,“所以”,“瑞海公司危险品仓库起火”]。

第四步:判断提取的语义模式是否属于因果关系语义模式,主要是根据语句是否包含因果关系连接词,如果语义模式中包含本文中确定的因果关系连接词,就认为属于因果关系语义模式。

第五步:输出语句中的原因事件,结果事件与事件之间的因果关系。我们主要是通过语义模式匹配,判断事件属于原因事件还是结果时间。

第六步:从确定的事件中提取更具体的因果事件,我们主要是通过去掉事件描述中的停顿词以此获得更加简练的事件描述。

第七步:把因果事件抽取成为由一系列动词名词联合组成的事件,例如“瑞海公司危险品仓库起火”抽取为[瑞海公司,危险品仓库,起火],这三个词组合表示形成一个事件的定义。

第八步:利用原因事件和结果事件构建因果关系网络,原因事件和结果事件建立连边。边代表事件之间的关系,它是有方向的,箭尾指向原因事件,箭头指向结果事件。因果有传递性,即链式特性,多个匹配的因果头尾相接组成一个长链条。

第九步:对事件做泛化处理,即同一类的事件归为一个事件。这种泛化后的事件常常是表征一类事件,因此我们称之为抽象事件。

第十步:对重大事件的发生原因进行预测,例如预测导致a事件发生的原因事件,我们通过泛化的因果关系网络,找到a事件的结点,找到与其相关联的原因事件。因为因果具有传递性,则我们可以找到一系类导致a事件发生的原因事件。

实施例3

第一步,利用已有的爬虫框架,爬取新闻数据,作为本方法的输入数据。现有的主流爬虫框架有heritrix、jspider、webmagic等,因为webmagic的属于java单机爬虫,符合实验需求并且操作简单,所以我们采用了webmagic爬虫框架。

第二步,对输入的文本数据根据标点符号对文本数据进行断句处理,主要是利用现有的分词器实现这个过程,主流的分词器有word分词器、ansj分词器、斯坦福分词器,因为斯坦福分词器的准确率较高,所以我们利用斯坦福分词器,把每个句子分为一系列的词语;然后利用斯坦福的ctb对每一个词语进行词性标注。最后利用斯坦福解析器的对该句子进行语义分析。

第三步,根据二元关系模型和语义分析,对文本进行语义模式提取。首先二元关系包含[名词1,关系,名词2]、[名词1,名词2,关系]、[关系,名词1,名词2]这三种关系。我们举例说明如何进行语义模式提取,例如“内蒙古的干旱气候,导致粮食减产”,在这个句子中“内蒙古干旱气候”和“粮食减产”属于名词,“导致”属于包含因果关系的谓语动词,则根据语义分析和二元关系模型对这句话提取的语义模式为[“内蒙古气候干旱”,“导致”,“粮食减产”](见图2)。

第四步,判断提取的语义模式是否属于因果关系语义模式,主要是根据语句是否包含因果关系连接词,因果关系连接词主要包含:因为,所以,既然,导致,影响、以致、致使、原因等26个词。根据模式匹配判断是否属于因果关系语义模式,如果属于则输出因果关系和原因事件,结果事件,否则返回到输入文本。例如我们对“小明打篮球”这句话进行语义模式抽取的时候,抽取结果为[小明,打,篮球],很明显本句话中不包含因果关系。

第五步,输出语句中的原因事件,结果事件与事件之间的因果关系。

利用抽取的因果关系构建泛化因果关系网络,包含以下步骤(见图3):

第六步,从确定的事件中提取更具体的因果事件,从而获得更高质量可读性的因果事件。

第七步,从确定的事件中提取更具体的因果事件。

第八步,把因果事件抽取成为由一系列动词名词联合组成的事件,例如“内蒙古气候干旱”抽取为[内蒙古,气候,干旱],这三个词组合表示形成一个事件的定义。

第九步,利用原因事件和结果事件构建因果关系网络,原因事件和结果事件建立连边。边代表事件之间的关系,它是有方向的,箭尾指向原因事件,箭头指向结果事件。因果有传递性,即链式特性,多个匹配的因果头尾相接组成一个长链条。

第十步,对事件做泛化处理,即同一类的事件归为一个事件,即不管内蒙粮食还是四川粮食减产都归为粮食减产这个事件。

第十一步,对因果事件进行预测,例如预测导致a事件发生的原因事件,我们通过泛化的因果关系网络,找到a事件的结点,找到与其相关联的原因事件。因为因果具有传递性,则我们可以找到一系类导致a事件发生的原因事件。预测结果事件原理也是如此。

第十二步,评估因果关系网络预测的结果,我们采用计算精确率p值,召回率r值和f值进行评估,计算精确率的公式如下:

计算召回率的公式如下:

计算f值的公式如下:

显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定,对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动,这里无法对所有的实施方式予以穷举,凡是属于本发明的技术方案所引伸出的显而易见的变化或变动仍处于本发明的保护范围之列。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1