在NLTK中实例化和使用StanfordTagger

时间:2011-12-18 22:23:21

标签: python nltk

我为这个问题的新手性质道歉 - 我一直在试图找出Python包装和名称空间,但是更好的观点似乎让我无法理解。也就是说,我想将Python包装器用于斯坦福的词性标注器。我没有找到文档here,它提供了一个使用示例:

st = StanfordTagger('bidirectional-distsim-wsj-0-18.tagger')
st.tag('What is the airspeed of an unladen swallow ?'.split())
    [('What', 'WP'), ('is', 'VBZ'), ('the', 'DT'), ('airspeed', 'NN'), ('of', 'IN'), ('an', 'DT'), ('unladen', 'JJ'), ('swallow', 'VB'), ('?', '.')]

这看起来很棒,但我似乎无法在我的本地Python + NLTK安装中显示正确的命名空间(我有最新的NLTK版本,并在Python 2.6.x和2.7中尝试过以下) .X):

>>> import nltk
>>> from nltk import *
>>> from nltk.tag import stanford 
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: cannot import name stanford

我也尝试了这个import语句,结果相同:

>>> from nltk.tag.stanford import StanfordTagger
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named stanford

在这里搜索SO,我发现this question,海报似乎遇到了完全相同的问题,但是能够通过命名空间步骤:

  

问题是我的nltk lib不包含stanford模块。所以我将其复制到相应的文件夹并编译相同。

听起来确实是同样的问题,除了我不能在我的生活中找到有关如何将模块添加到NLTK的任何文档。我在NLTK网站上阅读的所有内容都暗示斯坦福模块应该已经打包到基本安装中。所以,问题分为两部分:

  1. (具体)有关解决此特定问题的任何建议 并开始使用Python的StanfordTagger?我知道我很容易 直接调用jar然后在Python中解释输出 - 无论如何,这就是所有的Python包装器所做的 - 但我想让它在原则上工作,如果不是其他的话。
  2. (综合)什么是好的pythonic方法进行调查 缺少包装问题或依赖性如上?

1 个答案:

答案 0 :(得分:-1)

建议: 一个。查看PC上安装的nltk目录。我检查了我的stanford.py不存在(即在nltk / tag /目录中丢失)。您可以快速找到运行此处的位置:

import distutils.sysconfig
print distutils.sysconfig.get_python_lib()+'/nltk/tag/'

湾如果不存在,则将stanford.py文件从您提到的源复制到PC上的nltk / tag目录(在步骤a中得到)。

我希望它成功。