【发布时间】:2016-11-18 17:21:34
【问题描述】:
我正在使用 nltk 的默认标记器来获取单词的 POS 标记,但我没有得到预期的结果:
>>> nltk.pos_tag(nltk.tokenize.word_tokenize("I want a watch"))
[('I', 'PRP'), ('want', 'VBP'), ('a', 'DT'), ('watch', 'NN')]
>>> nltk.pos_tag(nltk.tokenize.word_tokenize("Lets watch a movie"))
[('Lets', 'NNS'), ('watch', 'VBP'), ('a', 'DT'), ('movie', 'NN')]
正如您在上面看到的,pos_tag 函数正确地标记了单词watch。但在以下情况下:
>>> nltk.pos_tag(nltk.tokenize.word_tokenize("I want to read a book"))
[('I', 'PRP'), ('want', 'VBP'), ('to', 'TO'), ('read', 'VB'), ('a', 'DT'), ('book', 'NN')]
>>> nltk.pos_tag(nltk.tokenize.word_tokenize("I want to book a ticket"))
[('I', 'PRP'), ('want', 'VBP'), ('to', 'TO'), ('book', 'NN'), ('a', 'DT'), ('ticket', 'NN')]
它错误地预测了单词book 的标签。
我知道我们可以构建一个自定义标注器,但我不希望仅仅为了一个词从头开始构建一个标注器。我希望提高单词book 的标注器的准确性。我提到了这个answer,但是最新版本好像没有nltk.tag._POS_TAGGER这个方法。
是否有任何可能的解决方法?
【问题讨论】:
-
我在我的机器 (NLTK3) 上将它正确标记为
'VB'。检查这个Python NLTK pos_tag not returning the correct part-of-speech tag -
@MosesKoledoye 我同意您的评论,即 NLTK 并不完美。但我想修改现有算法的权重,以便它正确地为单词“book”分配标签
-
FWIW,Stanford POS 标记器(虽然速度较慢)为我提供了更好的结果。默认标记器甚至无法正确处理“The quick brown fox jumped over the lazy dog”。
-
@Ares 感谢您的洞察力。我也会尝试斯坦福标记器!
标签: python python-3.x nlp nltk