NLTK 荷兰语命名实体识别

2024-01-10

我正在尝试从荷兰语文本中提取命名实体。我用了nltk培训师 https://github.com/japerk/nltk-trainer/在 conll2002 荷兰语语料库上训练标注器和词块划分器。但是,分块器的解析方法没有检测到任何命名实体。这是我的代码:

str = 'Christiane heeft een lam.'

tagger = nltk.data.load('taggers/dutch.pickle')
chunker = nltk.data.load('chunkers/dutch.pickle')

str_tags = tagger.tag(nltk.word_tokenize(str))
print str_tags

str_chunks = chunker.parse(str_tags)
print str_chunks

该程序的输出:

[('Christiane', u'N'), ('heeft', u'V'), ('een', u'Art'), ('lam', u'Adj'), ('.', u'Punc')]
(S Christiane/N heeft/V een/Art lam/Adj ./Punc)

我原以为克里斯蒂安会被检测为命名实体。 有什么帮助吗?


The conll2002语料库同时包含西班牙语和荷兰语文本,因此您应该确保使用fileids参数,如python train_chunker.py conll2002 --fileids ned.train。同时使用西班牙语和荷兰语进行培训效果不佳。

默认算法是基于 Tagger 的 Chunker,该算法在 conll2002 上效果不佳。相反,使用基于分类器的分块器(例如 NaiveBayes),因此完整的命令可能如下所示(并且我已经确认生成的分块器确实将“Christiane”识别为“PER”):

python train_chunker.py conll2002 --fileids ned.train --classifier NaiveBayes --filename ~/nltk_data/chunkers/conll2002_ned_NaiveBayes.pickle

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NLTK 荷兰语命名实体识别 的相关文章

随机推荐