斯坦福 NLP 工具如何训练中文分割器模型
Posted
技术标签:
【中文标题】斯坦福 NLP 工具如何训练中文分割器模型【英文标题】:How to train a Chinese segmenter model by Stanford NLP Tools 【发布时间】:2015-02-03 15:29:35 【问题描述】:我是斯坦福 CoreNLP 工具的新手。现在我没有得到很好的中文分段结果,所以我想改变Segmenter的粒度。我想我可以通过训练自己的听写来做到这一点。
我下载了trainSegmenter-20080521
文件,然后关注trainSegmenter-20080521/README.txt
。
这是 README.txt:
Sat Jun 21 00:57:22 2008
Author: Pi-Chuan Chang
Here's a documentation of how to train and test the segmenter on specific split
range of the CTB data.
The following steps assumes you have 3 files defining the ranges of train/dev/test.
They should be named as "ctb6.train", "ctb6.dev", "ctb6.test" respectively.
The format should be like:
chtb_0003.fid
chtb_0015.fid
...
[STEP 1] change the CTB6 path in the Makefile:
CTB6=/afs/ir/data/linguistic-data/Chinese-Treebank/6/
[STEP 2] download and uncompress the lastest segmenter from:
http://nlp.stanford.edu/software/stanford-chinese-segmenter-2008-05-21.tar.gz
and change this path in the Makefile to your local path:
SEGMENTER=/tmp/stanford-chinese-segmenter-2008-05-21/
[STEP 3] simply type:
make all
You can also split down into these sub-steps:
make internaldict # make internal dictionaries for affixation feaetures
make data # make datasets
make traintest # train & test the CRF segmenter
但是我还是有一些问题:
训练文件的格式是什么,train/dev/test
各自是干什么用的?
chtb_0003.fid
、chtb_0015.fid
等是什么?
Makefile中的CTB6 path
是什么,看来我应该把变量CTB6
改成/afs/ir/data/linguistic-data/Chinese-Treebank/6/
。但它在那里很远,似乎不是一个有效的子路径。
顺便说一句,有很多属性应该设置为特殊需求,例如sighanPostProcessing
和serDictionary
。
有没有什么地方我可以得到所有这些属性及其解释?
我现在所能做的就是阅读源代码,例如,edu.stanford.nlp.sequences.SeqClassifierFlags.java
,但我仍然对这些属性标志感到困惑。
非常感谢任何人的帮助。
【问题讨论】:
【参考方案1】:我会忽略那个自述文件。里面的信息已经过时了。
最近的解释在这里:
http://nlp.stanford.edu/software/segmenter-faq.shtml
预期的输入格式是每行一个句子,每行包含已分段的文本。如果您从解析树中获取分段数据,则有一些工具可以将解析树转换为分段文本。
如果有特定的句子没有正确切分,可能是因为它使用的是 CTB 切分标准,而您更喜欢不同的句子。也可能是因为分词器不知道的单词。如果您将遵循 CTB 分词标准的例句发送给 java-nlp-user,这些未知词最终会进入分词器的训练数据中。
【讨论】:
【参考方案2】:也许联系 Pi-Cuan Chang 是您获得最终答案的最佳选择,但我确实对此进行了一些调查。尽我所能回答您的问题:
train/dev/test 集的格式为中文树库格式;我收集的是第 6 版:https://catalog.ldc.upenn.edu/LDC2007T36
*.fid 文件看起来像是句子的解析树。格式如下(注意我的文本编辑器没有正确显示汉字):
((IP-HLN (NP-SBJ (NP-PN (NR
标题>
((FRAG (NR
...
自述文件中给出的路径是斯坦福机器上的本地路径。这将不是正确的路径。您应该将其更改为本地内容,然后将树库 (https://catalog.ldc.upenn.edu/LDC2007T36) 放在那里。请注意,您需要 LDC 许可证!
【讨论】:
非常感谢@gaborangeli 的回答,为了训练中文Segmenter Model,事情可能和你说的一样。你对运行斯坦福 CoreNLP 工具的标志有什么想法吗?我尽了最大的努力,但仍然对这些正在运行的标志了解甚少。以上是关于斯坦福 NLP 工具如何训练中文分割器模型的主要内容,如果未能解决你的问题,请参考以下文章
斯坦福 stanford coreNLP 中的PCFG parser-lexparser