使用Stanford Parser进行句法分析
一、句法分析
1、定义
句法分析判断输入的单词序列(一般为句子)的构成是否合乎给定的语法,并通过构造句法树来确定句子的结构以及各层次句法成分之间的关系,即确定一个句子中的哪些词构成一个短语,哪些词是动词的主语或宾语等问题。
2、主流技术
基于统计的方法是现阶段句法分析的主流技术。常见的概率句法分析模型包括概率上下文无关模型、基于历史的句法分析模型、层次化渐进式的句法分析模型和中心词驱动的句法分析模型。综合多种模型而实现的句法分析器种类繁多,目前在开源中文句法分析器中比较具有代表性有Stanford parser和 Berkeley parser。前者基于因子模型,后者基于非词汇化分析模型。
3、应用领域
随着自然语言应用的日益广泛,特别是对文本处理需求的进一步增加,句法分析的作用愈加突出,它在机器翻译、信息检索与抽取、问答系统、语音识别等研究领域中都有重要的应用价值。
二、Stanford Parser
1、简介
Stanford parser 是由斯坦福大学自然语言处理小组开发的开源句法分析器,是基于概率统计句法分析的一个 JAVA 实现。 分析器目前提供了5个中文文法。
2、优点
①既是一个高度优化的概率上下文无关文法和词汇化依存分析器,也是一个词汇化上下文无关文法分析器。
②基于权威可靠的宾州树库(Penn Treebank)作为分析器的训练数据,目前已面向英文、中文、德文、阿拉伯文、意大利文、保加利亚文、葡萄牙文等语种提供句法分析功能。
③提供了多样化的分析输出形式,除句法分析树输出外,还支持分词和词性标注文本输出、短语结构树输出、斯坦福依存关系输出等。
④分析器内置了分词工具、词性标注工具、基于自定义树库的分析器训练工具等句法分析辅助程序。
⑤通过设置不同的运行参数,可实现句法分析模型选择、自定义词性标记集、文本编码设置和转换、语法关系导入和导出等功能的定制。
三、使用Stanford Parser教程
(一)IDE中运行
1. 在Stanford官方网站下载最新安装包
http://nlp.stanford.edu/software/lex-parser.html#Download
2. 解压下载后的zip包 stanford-parser-full-2015-12-09.zip,里面会有数据,依赖包以及demo,还有相关的source code和java doc
3. 使用Eclipse创建项目,名为stanfordparser,在build path中引入stanford-parser-3.6.0-models.jar,stanford-parser.jar,slf4j-simple.jar, slf4j-api.jar
4.从步骤2中解压的文件中把ParserDemo.java和ParserDemo2.java和data文件夹都复制到Eclipse项目中。
5. 以ParserDemo.java为例,在Eclipse中右键点击ParserDemo.java文件,设置运行参数Arguments为:
edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz data/english-onesent.txt
(注意gz和data之间有个空格,空格前是第一个参数,空格后是第二个参数。)
第一个参数是PCFG路径,models里已经提供,第二个参数是待分析的数据文件,在data文件夹中。
6.运行,输出的结果为:
(二)命令行中运行
在已解压的stanford-parser-full-2015-12-09文件夹中,找到lexparser.bat文件。在命令窗口中运行这个文件,得到如下结果,即为命令行运行结果。
(三)可视化界面查看句法分析结果
1.在已解压的stanford-parser-full-2015-12-09文件夹中,找到lexparser-gui.bat文件。在命令窗口中运行这个文件,得到如下可视化界面。
2.点击Load File选择要进行句法分析的语料文件。点击Load Parser选择model文件,解析器选择英文。最后点击Parser>即可生成解析树。
上图用了stanford-parser-3.6.0-models.jar的model文件,用了english-onesent.txt作为要句法分析的语料文件。
上图用了stanford-chinese-corenlp-2016-01-19-models.jar的model文件,用了chinese-onesent-utf8.txt作为要句法分析的语料文件。
四、使用Stanford Parser的实例分析
Example :分词&词性标注、句法分析树、依存句法分析
1、先贴全部代码
2、分析的句子
“中国的神威太湖之光计算机被用于天气预报、制药研究和工业设计等领域。”
3、运行结果
①分词并词性标注结果:
②句法分析树结果:
③依存句法分析结果:
4、代码分析
①
定义modelpath用来存放模型文件。中文处理方面的模型文件有:chineseFactored.ser.gz、chinesePCFG.ser.gz、xinhuaFactored.ser.gz、xinhuaFactoredSegmenting.ser.gz、xinhuaPCFG.ser.gz等。其中factored包含词汇化信息,PCFG是更快更小的模板,xinhua是根据大陆的《新华日报》训练的语料,而chinese同时包含香港和台湾的语料,本程序使用的xinhuaFactoredSegmenting.ser.gz可以对未分词的句子进行句法解析。
②
初始化用于句法分析的类LexicalizedParser,函数loadModel 加载模型文件。
③
调用ParserGrammar.class里的parse函数,该函数调用tokenize解析函数:首先初始化treebankLanguageBank抽象类的getTokenizerFactory方法,生成解析器tokenizer,将句子分词并进行词性标注,结果放在tokens然后返回。
④
调用Tree.class里的pennPrint方法打印句法分析树。
⑤
实例化ChineseGrammaticalStructure类。调用GrammaticalStructure类的typedDependenciesCollapsed函数,它会调用typedDependencies方法对句子进行依存句法分析。
例如:调试过程中,运行typedDependencies方法对句子进行依存句法分析中,过程变量elementData的第10个数据正在分析句子中“制药研究”的依赖关系,调试结果如下:
- “制药研究”的支配词(governor)是“研究”,词性是“NN”,即下图的gov-label-values[3]&[4]
- “制药研究”的从属词(dependent)是“制药”,词性是“NN”,即下图的dep-label-values[3]&[4]
- “制药研究”的依存关系(reln)是“nn(名词组合形式)”,即下图的reln-shortName
调试结果分析结束。
⑥
输出句子的词性标注结果。
参考资料
【1】《大规模语料库上的Stanford和Berkeley句法分析器性能对比分析》项炜,金澎;文献编号1009-3044(2013)08-1984-03
【2】Stanford Parser中标记的中文释义参考-《Stanford Parser学习入门(3)-标记》-http://www.cnblogs.com/csts/p/5445719.html
参考文件
使用Stanford Parser进行句法分析的更多相关文章
- 使用Berkeley Parser进行句法分析
一.句法分析 1.定义 句法分析判断输入的单词序列(一般为句子)的构成是否合乎给定的语法,并通过构造句法树来确定句子的结构以及各层次句法成分之间的关系,即确定一个句子中的哪些词构成一个短语,哪些词是动 ...
- 同时使用Twitter nlp 和stanford parser的解决方法
因为Twitter nlp中使用了较老版本的stanford parser,导致不能同时使用 解决方法是使用未集成其它jar包的Twitter nlp,关于这点Stanford FAQ中也有说明(在F ...
- Stanford parser:入门使用
一.stanford parser是什么? stanford parser是stanford nlp小组提供的一系列工具之一,能够用来完成语法分析任务.支持英文.中文.德文.法文.阿拉伯文等多种语言. ...
- Stanford Parser学习入门(3)-标记
以下是Stanford parser中的标记中文释义供参考. probabilistic context-free grammar(PCFG) ROOT:要处理文本的语句 IP:简单从句 NP ...
- Stanford Parser学习入门(2)-命令行运行
在Stanford parser目录中已经定义了一部分命令行工具以及图形界面,本文将介绍如何在windows使用这些工具进行语法分析,Linux下也有shell可以使用. 关于如何搭建环境请参考上一篇 ...
- Stanford Parser学习入门(1)-Eclipse中配置
Stanford Parser是斯坦福大学研发的用于语法分析的工具,属于stanford nlp系列工具之一.本文主要介绍Standfor Parser的入门用法. 在Stanford官方网站下载最新 ...
- Stanford parser学习:LexicalizedParser类分析
上次(http://www.cnblogs.com/stGeekpower/p/3457746.html)主要是对应于javadoc写了下LexicalizedParser类main函数的功能,这次看 ...
- 在 NLTK 中使用 Stanford NLP 工具包
转载自:http://www.zmonster.me/2016/06/08/use-stanford-nlp-package-in-nltk.html 目录 NLTK 与 Stanford NLP 安 ...
- Python自然语言处理工具小结
Python自然语言处理工具小结 作者:白宁超 2016年11月21日21:45:26 目录 [Python NLP]干货!详述Python NLTK下如何使用stanford NLP工具包(1) [ ...
随机推荐
- js将秒数换算成时分秒
转载自:http://jingyan.baidu.com/article/375c8e19a0413925f2a229d2.html <script language="javascr ...
- java删除递归文件夹及文件夹下文件
public static void delUrlLocalFile(String urlPath) { File file = new File(urlPath); if(file.isDirect ...
- poj2391 Ombrophobic Bovines 拆点+二分法+最大流
/** 题目:poj2391 Ombrophobic Bovines 链接:http://poj.org/problem?id=2391 题意:有n块区域,第i块区域有ai头奶牛,以及一个可以容纳bi ...
- tf命令总结
$/AutoBuild/WpfApp/WpfApp/MainWindow.xaml 发现tf workspaces /collection:http://192.168.175.117:8080/tf ...
- EJB的优点有哪些?(选择2项)
EJB的优点有哪些?(选择2项) A.技术领先 B.价格低廉 C.性能优越 D.强大的容器支持 解答:CD
- Java1.0的AWT(旧AWT)和Java1.1以后的AWT(新AWT)有着很大的区别
Java1.0的AWT(旧AWT)和Java1.1以后的AWT(新AWT)有着很大的区别,新的AWT克服了旧AWT的很多缺点,在设计上有较大改进,使用也更方便,这里主要介绍新的AWT, 但在Java1 ...
- NPOI 1.2教程(目录)操作Excel
原文地址:http://www.cnblogs.com/atao/archive/2009/11/15/1603528.html
- iOS开发中“此证书的签发者无效”的解决方式
iOS开发过程中有时候会出现证书所有变成无效,例如以下图 然后进行打包的时候会提演示样例如以下警告: 解决方法: 第一步: 下载https://developer.apple.com/certif ...
- 拦截asp.net输出流并进行处理的方法
本文实例主要实现对已经生成了HTML的页面做一些输出到客户端之前的处理. 方法的实现原理是:把Response的输出重定向到自定义的容器内,也就是我们的StringBuilder对象里,在HTML所有 ...
- Unittest框架概念
1.测试脚手架(test fixture): 测试准备前要做的工作和测试执行完后要做的工作(包括setUp()和tearDown()) 2.测试用例(test case): 最小的测试单元 3.测试套 ...