【发布时间】:2012-07-02 20:04:28
【问题描述】:
我正在尝试从荷兰语文本中提取命名实体。我使用nltk-trainer 在 conll2002 荷兰语语料库上训练一个标注器和一个分块器。但是,来自分块器的 parse 方法没有检测到任何命名实体。这是我的代码:
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)
我期待 Christiane 被检测为命名实体。 有什么帮助吗?
【问题讨论】:
-
当“Christiane”出现在句子中间时会发生什么?
-
@larsmans 也没有实体。我什至尝试使用训练语料库中的一句话,但没有运气。我在conll2002语料库(ned.train)上使用了train_chunker.py
-
你能具体说明你是如何使用train_chunker.py的吗?我在text-processing.com/demo/tag 的demo 认出了Christiane,当然我在conll2002 上用过train_chunker,所以训练参数肯定有区别。
-
@Jacob 我做了
python train_chunker.py conll2002。我也试过python train_chunker.py conll2002 --classifier Maxent,但是,大约 40 分钟后,得到了ValueError: setting an array element with a sequence.。您是如何训练分类器的?
标签: python nlp nltk named-entity-recognition