使用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) [ ...
随机推荐
- Java中模拟POST上传文件
/** * * @param url 请求URL * @param filePath 本地文件地址 * @return */ public static String upload(String ur ...
- 第一周python入门
第一编程语言的分类: 1.机器语言 二进制编程 直接操作硬件 优点:执行速度快 缺点:开发效率低 面向机器编程 2.汇编语言 英文标签代替一串特定的二进制,直接操作硬件 缺点开发效率低 面向 ...
- 【学习ATX基于uiautomator2】之API操作Android方法
具体API可参考:<uiautomator2>以及参考github官方文档 感谢:Ricky_Frog <Python+uiautomator2手机UI自动化测试实战 -- 2. 用 ...
- React从入门到精通系列之(14)refs和DOM元素
react.js 3.7k 次阅读 · 读完需要 8 分钟 8 十四.refs和DOM元素 在典型的React数据流中,props是父组件与其子组件交互的唯一方式. 要修改子组件,需要使用一个新的 ...
- RMAN 总括 组成 配置 检测
RMAN 组件: 1. RMAN 执行程序, 也就是RMAN 命令. 2. Server session : 服务器上的进程, 是真正用来干活的. 3. Target database: 你想要进行备 ...
- C++ Scoket的升级版(多态的运用)
//Socket报文发送c++升级版 #define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std; #in ...
- Android开发人员必须掌握的10 个开发工具+应该深入学习的10个开源应用项目
一.Android开发人员必须掌握的10 个开发工具 Android SDK 本身包含很多帮助开发人员设计.开发.测试和发布 Android 应用的工具,在本文中,我们将讨论 10 个最常用的工具. ...
- [转]移动互联网应用技术架构简介-Restful服务
Restful是基于网络的软件系统架构风格.其优先考虑分布性和扩展性,而不是安全.错误处理.对象映射. 所以Restful架构特别适用的场合为用户快速增长的互联网和移动互联网领域,看起来很容易理解,以 ...
- 常用 Git 命令文档和命令
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAA3IAAAEVCAIAAAAq20B9AAAgAElEQVR4nOydd3wUxfvH93p6gQRCCF ...
- java必备——经典的Hibernate
在编程开发中,我们有非常多框架,他们有些非常方便,也非常有用,今天我们一起来认识一个java经典的框架Hibernate,Hibernate英文名称为"冬眠".这是个非常有意思的技 ...