我刚开始我的第一个NLTK项目,并对正确的设置感到困惑.我需要几个资源,如Punkt Tokenizer和maxent pos tagger.我自己使用GUI下载它们nltk.download().对于我的合作者,我当然希望自动下载这些内容.我没有在文档中找到任何惯用代码.
我应该把nltk.data.load('tokenizers/punkt/english.pickle')它们放进代码中吗?这是在每次运行脚本时下载资源吗?我是否向用户(即我的共同开发者)提供了有关下载内容以及为什么需要这么长时间的反馈?那里必须有适合工作的装备,对吗?:)
//编辑要探讨我的问题:
如何测试运行我的代码的机器上是否已安装nltk资源(如Punkt Tokenizer),如果不是,则安装它?
alv*_*vas 18
您可以使用该nltk.data.find()功能,请参阅https://github.com/nltk/nltk/blob/develop/nltk/data.py:
>>> import nltk
>>> nltk.data.find('tokenizers/punkt.zip')
ZipFilePathPointer(u'/home/alvas/nltk_data/tokenizers/punkt.zip', u'')
Run Code Online (Sandbox Code Playgroud)
当资源不可用时,您会发现错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/nltk-3.0a3-py2.7.egg/nltk/data.py", line 615, in find
raise LookupError(resource_not_found)
LookupError:
**********************************************************************
Resource u'punkt.zip' not found. Please use the NLTK Downloader
to obtain the resource: >>> nltk.download()
Searched in:
- '/home/alvas/nltk_data'
- '/usr/share/nltk_data'
- '/usr/local/share/nltk_data'
- '/usr/lib/nltk_data'
- '/usr/local/lib/nltk_data'
**********************************************************************
Run Code Online (Sandbox Code Playgroud)
最有可能的是,您希望执行类似的操作以确保您的协作者拥有该包:
>>> try:
... nltk.data.find('tokenizers/punkt')
... except LookupError:
... nltk.download('punkt')
...
[nltk_data] Downloading package punkt to /home/alvas/nltk_data...
[nltk_data] Package punkt is already up-to-date!
True
Run Code Online (Sandbox Code Playgroud)