python – 使用NLTK自定义POS标记(错误)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 使用NLTK自定义POS标记(错误),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2054字,纯文字阅读大概需要3分钟。
内容图文
![python – 使用NLTK自定义POS标记(错误)](/upload/InfoBanner/zyjiaocheng/796/58f0dcc872cd452680f9623388de3909.jpg)
我正在尝试将我自己的简单自定义标记器与nltk默认标记器结合使用,在本例中为perceptron标记器.
我的代码如下(基于this answer):
import nltk.tag, nltk.data
default_tagger = nltk.data.load(nltk.tag._POS_TAGGER)
model = {'example_one': 'VB' 'example_two': 'NN'}
tagger = nltk.tag.UnigramTagger(model=model, backoff=default_tagger)
但是,这会产生以下错误:
File "nltk_test.py", line 24, in <module>
default_tagger = nltk.data.load(nltk.tag._POS_TAGGER)
AttributeError: 'module' object has no attribute '_POS_TAGGER'
我试图通过将默认标记符更改为:
from nltk.tag.perceptron import PerceptronTagger
default_tagger = PerceptronTagger()
但后来我收到以下错误:
File "nltk_test.py", line 26, in <module>
tagger = nltk.tag.UnigramTagger(model=model, backoff=default_tagger)
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/nltk/tag/sequential.py", line 340, in __init__
backoff, cutoff, verbose)
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/nltk/tag/sequential.py", line 284, in __init__
ContextTagger.__init__(self, model, backoff)
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/nltk/tag/sequential.py", line 125, in __init__
SequentialBackoffTagger.__init__(self, backoff)
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/nltk/tag/sequential.py", line 50, in __init__
self._taggers = [self] + backoff._taggers
AttributeError: 'PerceptronTagger' object has no attribute '_taggers'
通过nltk.tag documentation查看似乎_POS_TAGGER不再存在.但是将其更改为_pos_tag或pos_tag也不起作用.
解决方法:
快速回答:现在使用nltk 3.0.1 pip install nltk == 3.0.1
更好的答案:他们去年9月更改了树库标记器并且还有很多其他后果(我们目前固定在3.0.1上,因为新的标记器至少对我们的需求更差).
这似乎工作,但我不确定代码是否正确:
class BackoffTagger:
def __init__(self):
self._taggers = [PerceptronTagger()]
model = {'example_one': 'VB', 'example_two': 'NN'}
tagger = nltk.tag.UnigramTagger(model=model, backoff=BackoffTagger())
tagger.tag(['example_one'])
>>> [('example_one', 'VB')]
内容总结
以上是互联网集市为您收集整理的python – 使用NLTK自定义POS标记(错误)全部内容,希望文章能够帮你解决python – 使用NLTK自定义POS标记(错误)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。