使用Berkeley Parser进行句法分析
一、句法分析
1、定义
句法分析判断输入的单词序列(一般为句子)的构成是否合乎给定的语法,并通过构造句法树来确定句子的结构以及各层次句法成分之间的关系,即确定一个句子中的哪些词构成一个短语,哪些词是动词的主语或宾语等问题。
2、主流技术
基于统计的方法是现阶段句法分析的主流技术。常见的概率句法分析模型包括概率上下文无关模型、基于历史的句法分析模型、层次化渐进式的句法分析模型和中心词驱动的句法分析模型。综合多种模型而实现的句法分析器种类繁多,目前在开源中文句法分析器中比较具有代表性有Stanford parser和 Berkeley parser。前者基于因子模型,后者基于非词汇化分析模型。
3、应用领域
随着自然语言应用的日益广泛,特别是对文本处理需求的进一步增加,句法分析的作用愈加突出,它在机器翻译、信息检索与抽取、问答系统、语音识别等研究领域中都有重要的应用价值。
二、Berkeley Parser
1、简介
Berkeley Parser是由伯克利大学自然语言处理小组开发的开源句法分析器,目前支持的语种主要有英文、中文、德文、阿拉伯文、保加利亚文、法文等。
2、特点
1) Berkeley Parser是一个纯粹的基于 PCFG的句法分析器,只能进行成分句法分析。
2) 分析器的输入形式可以文件为单位 (每行一个句子),分析完成后得到的输出文件中包含了输入文件中所有句子的句法分析结果。
3) 默认的分析结果输出形式是文本,但为了让分析结果更加直观,可以设置程序的输出形式为句法分析树图像。
4) 可指定输出基于一个句子的排名前 n的句法分析树及每棵树的概率值。
5) 分析器提供了用于读取标准树库的代码,可基于用户指定的树库来训练新的文法。
6) 支持多线程分析,在多处理机系统上能获得更高的句法分析性能。
7) 由于分析器不含分词功能,所以必须先借助外部分词工具来进行分词,再将经过预处理的分词结果串作为句法分析器的输入。
三、使用Berkeley Parser教程——命令行中运行
1. 在Berkeley Parser的github上找到Berkeley Parser的jar包和模型文件并下载。(https://github.com/slavpetrov/berkeleyparser)
2. 一个简易的Berkeley Parser工具只需要包含:
①berkeleyParser.jar
②模板文件:中文为chn_sm5.gr,英文为eng_sm6.gr
③输入文件
3. 分析器不含分词功能,所以必须先借助外部分词工具来进行分词,再将经过预处理的分词结果串作为句法分析器的输入。
4. 进行parse之前需要将分词文本中的英文小括号”(“ 和“)”分别转化为”-LRB-”和”-RRB-”。Berkeley parser不能自动的进行这样的转化。中文parser输入输出标记不能用参数-inputFile和-outputFile,必须用”<”和”>”指定,否则会出现乱码问题。
5. 基本命令:
①打印parser的所有选项:
输入:
输出:
②对英文句子进行句法分析:
输入:
③对中文句子进行句法分析:
输入:
(参数解释:-mx1g 给java虚拟机分配的最大内存为1)
四、使用Berkeley Parser实例
1、中文句法分析
(1)分词包:BerkeleyParser-1.7.jar
(2)输入文件:chinese-ansi-input.txt(ANSI编码)
(3)待分析的句子:中国 的 神威 太湖 之 光 计算机 被 用于 天气 预报 、 制药 研究 和 工业 设计 等 领域 。
(4)使用模板文件:chn_sm5.gr
(5)输出结果到文件:chinese-output.txt
(6)命令行运行的代码:
(7)输出文件的内容:
2、英文句法分析
(1)分词包:BerkeleyParser-1.7.jar
(2)输入文件:english-input.txt(UTF8编码)
(3)待分析的句子:One meets its destiny on the road he takes to avoid it.
(4)使用模板文件:eng_sm6.gr
(5)输出结果到文件:english-output.txt
(6)命令行运行的代码:
(7)输出文件的内容:
参考资料
【1】文献《大规模语料库上的Stanford和Berkeley句法分析器性能对比分析》项炜,金澎;
【2】Berkeley parser -《句法分析工具指南(parser guideline) 》- http://3y.uu456.com/bp-8d672929ed630b1c59eeb595-1.html
参考文件
使用Berkeley Parser进行句法分析的更多相关文章
- Berkeley parser使用方法
1. 简介 Berkeley Parser 是加州大学伯克利分校 NLP 实验室开发的一种基于概率上下文无关文法(PCFG)的成分句法分析器,支持英语,汉语,德语等多个语种,它具有较高的句法分析性能 ...
- 使用Stanford Parser进行句法分析
一.句法分析 1.定义 句法分析判断输入的单词序列(一般为句子)的构成是否合乎给定的语法,并通过构造句法树来确定句子的结构以及各层次句法成分之间的关系,即确定一个句子中的哪些词构成一个短语,哪些词是动 ...
- 我的nlp之路(1)
1/8日任务 基础篇: 如何使用远程连接从windows或者linux连到服务器进行操作(切换用户,传递文件) (严禁使用root账户) Linux基本bash命令 a) 查看文件大小, ...
- Stanford CoreNLP 3.6.0 中文指代消解模块调用失败的解决方案
当前中文指代消解领域比较活跃的研究者是Chen和Vincent Ng,这两个人近两年在AAAI2014, 2015发了一些相关的文章,研究领域跨越零指代.代词指代.名词指代等,方法也不是很复杂,集中于 ...
- Measuring Text Difficulty Using Parse-Tree Frequency
https://nlp.lab.arizona.edu/sites/nlp.lab.arizona.edu/files/Kauchak-Leroy-Hogue-JASIST-2017.pdf In p ...
- NLP常用开源/免费工具
一些常见的NLP任务的开源/免费工具, *Computational Linguistics ToolboxCLT http://complingone.georgetown.edu/~linguis ...
- Stanford parser学习:LexicalizedParser类分析
上次(http://www.cnblogs.com/stGeekpower/p/3457746.html)主要是对应于javadoc写了下LexicalizedParser类main函数的功能,这次看 ...
- parsing:NLP之chart parser句法分析器
已迁移到我新博客,阅读体验更佳parsing:NLP之chart parser句法分析器 完整代码实现放在我的github上:click me 一.任务要求 实现一个基于简单英语语法的chart句法分 ...
- 哈工大LTP语言分析:分词、词性标注、句法分析等
1. LTP介绍和安装 LTP语言云官网 在线演示 | 语言云(语言技术平台云 LTP-Cloud) 安装LTP的python接口包 $ sudo pip install pyltp 模型文件下载 ...
随机推荐
- TCP/IP笔记(八)应用层协议
TCP/IP的应用层涵盖了OSI参考模型中第5.第6.第7层的所有功能,不仅包含了管理通信连接的会话层功能.转换数据格式的标识层功能,还包括与对端主机交互的应用层功能在内的所有功能. 利用网络的应用程 ...
- MySql Int 类型和 varchar类型进行比较。
今天遇到个比较奇葩的问题,简单讲就是在Mysql中进行查询的时候 在Where语句中使用的int类型的字段和Varchar类型的字段进行对比. 例如:我这有一张表: 表中的数据如下: 当我进行查询的时 ...
- ubuntu qt5 error: Unknown module(s) in QT: webkitwidgets解决办法
question: project-error-unknown-modules-in-qt-webkitwidgets-webkit os: ubuntu16.04 LTS-32bit qmake v ...
- nginx配置事例
#user nobody; worker_processes 4; #error_log logs/error.log; #error_log logs/error.log notice; #erro ...
- Ubuntu SVN服务器的搭建与配置(转)
Ubuntu SVN服务器的搭建与配置 一. 安装 sudo apt-get install subversion sudo apt-get install libapache2-sv ...
- VMWare虚拟机 网络连接模式
这个是rocks 群里面我的一个朋友分享的,我觉很好而且描述的很清楚,这是一个做事的态度问题. 1 VMWare虚拟机bridged.host-only和NAT网络模式的区别和用法 VMWare提 ...
- JQ 时间插件
<script type="text/javascript" charset="utf-8" src="__PUBLIC__/ueditor/u ...
- String类和StringBuffer类
位于java.lang包中,这个包中的类使用时不用导入 String类一旦初始化就不可以改变,而stringbuffer则可以.它用于封装内容可变的字符串.它可以使用tostring()转换成stri ...
- WPF MVVM(Caliburn.Micro) 数据验证
书接前文 前文中仅是WPF验证中的一种,我们暂且称之为View端的验证(因为其验证规是写在Xaml文件中的). 还有一种我们称之为Model端验证,Model通过继承IDataErrorInfo接口来 ...
- Mac 终端命令行颜色高亮显示
一.颜色高亮显示 针对terminal采用bash模式: 编辑 ~/.bash_profile, 加入以下代码: export CLICOLOR=1 export LSCOLORS=gxfxaxdxc ...