中文句法分析器 ctbparser
本文导语: 一个用C++实现的 中文句法分析 工具包,采用的是中文宾州树库标准(Chinese Tree Bank),并提供源代码。 可以对原始的文档(GBK编码)进行自动繁简转换,分句,分词,词性标注,依存句法分析。 该句法分析工具采用了标准的图...
一个用C++实现的 中文句法分析 工具包,采用的是中文宾州树库标准(Chinese Tree Bank),并提供源代码。 可以对原始的文档(GBK编码)进行自动繁简转换,分句,分词,词性标注,依存句法分析。
该句法分析工具采用了标准的图模型算法,即最大生成树算法(projective Maximum Spanning Tree)。该算法由Eisner于96年提出,复杂度为句子长度的三次方。详情可参见论文[1]
句法分析目前尚属于研究阶段,离实际应用还有很长的距离。其关键问题在于句法分析速度太慢。远远落后于分词和词性标注,因此无法处理海量数据。正因 为这样,本工具包不提供更加耗时的高阶解码算法(Higher order projective parsing),并采用新的数据结构[2],在无损精度的前提下,提高句法分析的速度。
系统框架:
整个句法分析分为5步:
1、繁简、半全角转换并切句:所有繁体字通过一张对应表转成简体字,所有的半角符号转成全角。比如'a'就转成'a'。对转换好的句子,用简单的规则进行切句。
2、命名实体识别:采用条件随机场模型标出句中的人名、地名。
3、分词:采用条件随机场模型进行分词,人名、地名被强制独立成词。此外,采用最短路的方法匹配出字典中的词。
4、词性标注:采用条件随机场模型进行词性标注,字典匹配出的词,其词性和字典一致。
5、句法分析:采用最优生成树算法,对句子进行句法分析。
评测:
在CTB6标准测试集上,ctbparser分词得到95.3% F1值,词性标注精度94.27%,句法分析精度81%。处理速度(包括分词、词性标注、句法分析)的速度是每秒30句,内存占用为270M。(操作系 统:64位CentOS 5,CPU: Intel(R) Xeon(R) E5405, 2.00GHz)
具体使用说明在工具包readme_cn.html文件中,这里就不提了。
参考文献:
[1] Mark A. Paskin, "Cubic-time Parsing and Learning Algorithms for Grammatical Bigram Models", technique report, 2001
[2] Xian Qian, Qi Zhang, Xuangjing Huang and Lide Wu. "2D Trie for fast parsing ", COLING 2010