从NLTK内部培训一名新的Stanford partofspeech tagger

2024-05-23 21:57:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我用斯坦福词性标注器和一些自己收集的训练数据,训练了一种非常见语言(维吾尔语)的词性标注器。我一直在使用NLTK的nltk.tag.stanford.POSTagger接口来标记Python中的各个句子。这对我的大多数目的都很好:(从/usr/share/stanford-postagger运行)

>>> from nltk.tag.stanford import POSTagger
>>> uy = POSTagger('models/uyghur.tagger', 'stanford-postagger.jar')
>>> uy.tag('Men méning mantini yégenlikimni bilimen .'.split())
[[(u'Men', u'PN1s'), (u'm\xe9ning', u'PN1s.GEN'), (u'mantini', u'N-ACC'), (u'y\xe9genlikimni', u'Vt-PST.dir-1s2'), (u'bilimen', u'Vt-PRS-1s1'), (u'.', u'PUNCT')]]

我会用十倍的塔格数据来做一个十倍的数据验证。在Python中,以十种方式拆分数据集是没有问题的,但是我不知道是否有办法在Python中训练一个新的标记器。当我这样做的时候,它是从命令行使用java -mx1g -classpath /usr/share/stanford-postagger/stanford-postagger.jar edu.stanford.nlp.tagger.maxent.MaxentTagger -props uyghurtagger.props。在

是否可以使用NLTK接口从Python中训练一个新的Stanford标记器,或者每次都需要通过命令行手动创建它?在


Tags: 数据标记shareusrtagtaggerjarnltk
1条回答
网友
1楼 · 发布于 2024-05-23 21:57:21

这比我想象的要简单得多。在

import subprocess32
subprocess32.call(
    ['java', '-mx1g', '-classpath',
     '/usr/share/stanford-postagger/stanford-postagger.jar',
     'edu.stanford.nlp.tagger.maxent.MaxentTagger', '-props',
     'uyghurtagger.props'])

它实际上就像将一系列命令行参数传递给subprocess32.call()一样简单。(根据^{} docs中的建议,我使用subprocess32,而不是{})。在

相关问题 更多 >