使用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 模型文件下载 ...
随机推荐
- 跟着百度学PHP[16]-验证码的学习
一个验证码需要有以下步骤: 验证底图 验证码内容 生成验证码 对比校验 验证码需要依靠PHP的GD扩展库.一些集成环境是默认安装了GD拓展库. <?php //创建一个100*30px图片,默认 ...
- pycharm 社区版
这个是免费版.到3.1.13 http://pan.baidu.com/s/1bnvPdtt 没用过idea的商业版,不知道为什么它的更新那么蛋疼,不能增量更新,每次都得手动下载完整的压缩包.
- linux2.4中netfilter_nat_alg机制分析--以FTP流程为例,分析NAT和ALG
以FTP流程为例,分析NAT和ALG 网络环境: ×5+6=1286) 创建×5+6=1286),更新skb的应用层信息(这里应用层信息还是×5+6=1286) 创建×5+6=1286) 创建×5+6 ...
- thinkphp 从服务器拉取下来 验证码失效
public function verify(){ ob_end_clean();//加入 $verify = new \Think\Verify(); $verify->entry(1); }
- Java 和因特网
既然Java 不过另一种类型的程序设计语言,大家可能会奇怪它为什么值得如此重视,为什么还有这么多的人 认为它是计算机程序设计的一个里程碑呢?如果您来自一个传统的程序设计背景,那么答案在刚开始的时候 并 ...
- eclipse配置weblogic服务器
最近项目要从tocmat迁移到weblogic,使用weblogic的原因不用多说,好处不言而喻.于是准备配置基于eclipse的weblogic服务器,并将整个过程记录下来分享给大家. ...
- 【vijos】1770 大内密探(树形dp+计数)
https://vijos.org/p/1770 不重不漏地设计状态才能正确的计数QAQ 虽然可能最优化是正确的,但是不能保证状态不相交就是作死.... 之前设的状态错了... 应该设 f[i][0] ...
- c# 将html添加进剪贴板(带格式)
调用: ClipboardHelper.CopyToClipboard("<h1>hello world</h1>", ""); /// ...
- java拆装箱(转)
转载:http://www.cnblogs.com/dolphin0520/p/3780005.html 深入剖析Java中的装箱和拆箱 自动装箱和拆箱问题是Java中一个老生常谈的问题了,今天我们就 ...
- JavaScript------字符串中各种方法
参考“菜鸟教程” http://www.runoob.com/js/js-strings.html 1.search() var s = "Hello World"; alert( ...