如何改进NLTK中的荷兰语NER chunkers

2024-05-29 05:05:21 发布

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

多亏了这个好答案,我有了一个很好的开始,我用NLTK和Conll2002语料库:NLTK named entity recognition in dutch为荷兰语训练自己的NE chunker。使用这些提示,我还能够轻松地训练一个改进的标记器(基于IIS分类),其标记准确率在95%左右,这对于我的目的来说已经足够了。在

然而,命名实体识别的F测度仅为40%左右。我该如何改进?我尝试过使用Maxent之类的内置算法,但只得到一个内存错误。然后我继续尝试让Megam工作,但是它不能在我的Windows机器上编译,也没有可用的二进制文件了。我在尝试合并其他软件或方法时也遇到了死胡同,比如libSVM、YamCha、CRF++和Weka。所有人都有自己的手册和问题,这些问题似乎一直在堆积。所以我有点不知所措。在

我需要的是一个实用的方法来解决荷兰的净入学率问题。有很多研究,我发现论文引用了70%到85%的F度量。那太好了!有没有人能告诉我在哪里可以找到一个改进的实现,或者我如何可以自己(使用Windows)构建一个?我更喜欢使用NLTK,因为它的灵活性,但是如果在不同的工具箱中有一个标准的解决方案,我也很乐意。即使是商业工具也会受到欢迎。在

下面是我现在用于评估的代码:

import nltk

from nltk.corpus import conll2002

tokenizer = nltk.data.load('tokenizers/punkt/dutch.pickle')
tagger = nltk.data.load('taggers/conll2002_ned_IIS.pickle')
chunker = nltk.data.load('chunkers/conll2002_ned_NaiveBayes.pickle')

test_sents = conll2002.tagged_sents(fileids="ned.testb")[0:1000]

print "tagger accuracy on test-set: " + str(tagger.evaluate(test_sents))

test_sents = conll2002.chunked_sents(fileids="ned.testb")[0:1000]

print chunker.evaluate(test_sents)

# chunker trained with following commandline: 
# python train_chunker.py conll2002 --fileids ned.train --classifier NaiveBayes --filename /nltk_data/chunkers/conll2002_ned_NaiveBayes.pickle

Tags: 标记testdataloadpickletaggernltkned

热门问题