利用Stanford Parser进行观点词否定词抽取

问题:

接上一篇内容,当我们在文本中得到特征词的观点词之后,如果我们要做情感分析、极性判定(用户是在赞美还是批评),除了分析观点词本身的情感色彩之外,我们还需得到句子中是否有对该观点词的否定。如“我喜欢这个产品”->肯定;“我不喜欢这个产品”->否定。常见的否定词一般有“不”“无”“没有”等,否定词常常出现在观点词前面(不一定紧邻,有可能当中会隔着助词或副词等),因此如果光用统计的方法去判定准确率不高。

方法:

1.选择文本数据(数据源,如产品评论文本等)

2.对文本进行断句和分词

3.语法分析(Stanford Parser)

4.观点词抽取(参考前一篇内容)

5.否定词抽取。(利用stanford Parser返回的TypedDependency关系对象集合,查找当前观点词是否和其他词存在否定关系)

代码:

这里给的代码直接略过了前面几步,输入为:分词后的句子和观点词,输出:该观点词的否定词。

package textAnalysis;

import java.io.StringReader;

import java.util.Collection;

import java.util.List;

import edu.stanford.nlp.process.Tokenizer;

import edu.stanford.nlp.ling.HasWord;

import edu.stanford.nlp.ling.Label;

import edu.stanford.nlp.trees.*;

import edu.stanford.nlp.ling.HasWord;

import edu.stanford.nlp.parser.lexparser.LexicalizedParser;

import edu.stanford.nlp.process.Tokenizer;

import edu.stanford.nlp.trees.GrammaticalStructure;

import edu.stanford.nlp.trees.GrammaticalStructureFactory;

import edu.stanford.nlp.trees.PennTreebankLanguagePack;

import edu.stanford.nlp.trees.Tree;

import edu.stanford.nlp.trees.TreebankLanguagePack;

import edu.stanford.nlp.trees.TypedDependency;

import edu.stanford.nlp.trees.international.pennchinese.ChineseTreebankLanguagePack;

import edu.stanford.nlp.parser.lexparser.LexicalizedParser;

import edu.stanford.nlp.parser.lexparser.Test;

public class NegWordExtra {

public NegWordExtra(){

}

public static void main(String[] args) {

LexicalizedParser lp =

new LexicalizedParser("grammar/chinesePCFG.ser.gz");

Test.MAX_ITEMS = 2000000000;

TreebankLanguagePack tlp = new ChineseTreebankLanguagePack();

GrammaticalStructureFactory gsf = tlp.grammaticalStructureFactory();

String sentence = "这个 产品 很 保湿 但 不 油腻";

String keyword = "油腻";

Tokenizer<? extends HasWord> toke = tlp.getTokenizerFactory()

.getTokenizer(new StringReader(sentence));

List<? extends HasWord> sentList = toke.tokenize();

Tree parser = lp.apply(sentList);

GrammaticalStructure gs = gsf.newGrammaticalStructure(parser);

Collection tdl = gs.typedDependenciesCollapsedTree();

//System.out.println(tdl);

for(int i = 0;i < tdl.size();i ++){

TypedDependency td = (TypedDependency)tdl.toArray()[i];

String nodDep = td.dep().toString();

String nodgov = td.gov().toString();

String relation = td.reln().toString();

//int act = -1;

if(nodgov.contains(keyword) && relation.equals("neg")){

//act = td.gov().index();

System.out.println("Dep:" + nodDep + ", Gov:" + nodgov + " > relation:"+ relation);

}

}

}

}

注:本程序用的是Stanford 2011年9月14号发布的jar包和词库。因为发现在12年2月3号发的那个包把否定关系“neg”归为了副词修饰形容词的“advmod”关系了,所以没法得到否定词,具体情况还在学习研究中,有知道的同学也麻烦告诉我下。谢谢。

利用Stanford Parser进行观点词否定词抽取相关推荐

  1. 利用依存分析完成开放领域关系抽取

    利用依存分析完成开放领域关系抽取 1 问题描述 对于大规模的自由文本内容,完成开放领域三元组的抽取.即在不知道文本内容存在什么关系的情况下,抽取各种各样的关系,以三元组的形式表示出来.就是说,我们的目 ...

  2. stanford parser的python使用

    前提知识: StanfordParser(短语结构句法), StanfordDependencyParser(依存结构句法) StanfordParser 和 StanfordDependencyPa ...

  3. 【转】自然语言系列学习之表示学习与知识获取(八)利用远程监督多实例的关系抽取

    下面介绍下如何利用远程监督多实例进行关系抽取.前文有提到到当利用文本进行关系抽取,基本思想是利用知识图谱中,如(下图)任意两个实体同时在句子中出现: 我们把句子当成是两个实体关系训练得样例,这样就可以 ...

  4. Stanford Parser的学习之开篇(一)

    由于学习的需要,我找到了能够分析中文句子的句法分析器Stanford Parser. 下载地址:http://nlp.stanford.edu/software/lex-parser.shtml#Do ...

  5. wordcloud:利用fontawesome字体绘制图标词云图

    根据文本生成词云的操作很常见,在某些场景下,我们可以遇到图标也按照某种形状排列的情况,那么可以用生成词云图的方法生成这样的图标词云图吗? 如何应用fontawesome字体 当前最常见的图标字体就是w ...

  6. 【Python例】利用 python 进行用户画像词云图的生成 --- wordcloud

    [Python例]利用 python 进行用户画像词云图的生成 - wordcloud 本文主要用于记录,并使用 python 脚本进行用户画像的词云图的生成. 前言 对于词云图来说,是一个用户画像数 ...

  7. python过滤敏感词汇_利用Python正则表达式过滤敏感词的方法

    利用Python正则表达式过滤敏感词的方法 问题描述:很多网站会对用户发帖内容进行一定的检查,并自动把敏感词修改为特定的字符. 技术要点: 1)Python正则表达式模块re的sub()函数: 2)在 ...

  8. 基于Stanford Parser 及OpenNLP Shallow Parser构建句子语法解析树

    最近做一个项目需要对给定的文本中的句子做Parse,根据POS tag及句子成分信息找出词语/短语之间的dependency,然后根据dependency构建句子的parse tree. 需要用到St ...

  9. (一)利用Wikipedia中文语料训练词向量word2vec——获取Wikipedia简体中文语料库

    利用Wikipedia中文语料训练词向量一共分为两个篇章,这篇文章属于第一部分,包括下载Wikipedia语料库,并将其从繁体转换为简体. 目录 第一步 下载语料库 第二步 将下载好的bz2文件转换为 ...

最新文章

  1. 他只有2年工作经验,现在却拿着40万年薪,只因他曾做过这件事
  2. 图像添加Beta分布噪声
  3. SQL SERVER 常用日期计算
  4. 简化存货核算方法和物料分类帐对比
  5. java throwable判断,Java异常处理 Throwable实现方法解析
  6. 数据结构-顺序表(C语言实现)
  7. 【学习笔记】浅谈短小可爱的左偏树(可并堆)
  8. python 档案管理系统_Python 写入档案的 4 个方法
  9. python设置时间步长与时间离散格式_python怎么定义时间
  10. Java基础语法之Map
  11. vue 实现文本的拖拽_Vue-实现简单拖拽(自定义属性)
  12. oracle语句_ORACLE 常用语句实例:CTE MERGE 结合
  13. JMX Java Management Extensions
  14. 微信小程序连锁店如何做
  15. 腾讯云创建二级域名并解析
  16. STM32/APM32 用DMA采集ADC1多通道--标准库
  17. Gradle打包报错:Failed to calculate the value of task ‘:unityLibrary:compileReleaseJavaWithJavac‘
  18. 一位参加过IT培训班的学员经历和建议。
  19. Tigo Energy通过Stark Renováveis安装案例向巴西安装商展示优化技术
  20. spring cloud 资源服务器授权配置

热门文章

  1. 计算螺栓点云的高度【halcon三维计算】
  2. 备忘录形成html乱码,【关于备忘录“乱码”现象】的解决方案~~~~~
  3. 网络营销工作培养的工作能力
  4. 2021巢湖学院高考成绩查询,2021年巢湖学院高考录取通知书查询 通知书什么时候可以收到...
  5. 关于Word无法启动转换器mswrd632.wpc错误的解决方法
  6. 解决 “Word无法启动转换器mswrd632.wpc”
  7. 2012年中国管理咨询公司排名(前100位)
  8. JAVA商城源码-多用户商城系统源码-B2B2C商城系统
  9. 干簧管磁浮球液位开关原来是这么样用的
  10. PAT乙级 1018 锤子剪刀布 (20 分)