2015-10-17 127 views
7

我正在尝试为Python 3.4安装NLTK。实际的NLTK模块似乎安装正常。然后我跑NLTK数据过时 - Python 3.4

import nltk 

nltk.download() 

并选择下载所有内容。然而,完成后,窗口只是说'过时'。我尝试刷新和下载,但它保持'过时',如下所示:NLTK Window 1

我在网上查找并尝试各种修复程序,但我还没有找到任何帮助我的情况。

我也尝试手动查找缺少的部分,这些部分原来是“打开多语言Wordnet”和“Wordnet”。以下是我如何找到哪些零件丢失:Open Multilingual Wordnet

我该怎么办?我应该卸载并重新安装NLTK?我还没有真正找到删除软件包的方法(手动删除软件除外)。

编辑:关于方案2和方案3: 更多的澄清在方案2问题:

如果事情已经成功地下载,这是输出:

>>> nltk.download('subjectivity') 
[nltk_data] Downloading package subjectivity to 
[nltk_data]  C:\Users\Shane\AppData\Roaming\nltk_data... 
[nltk_data] Package subjectivity is already up-to-date! 
True 

然而,对于“共发现'和 'OMW',这是当我重新下载会发生什么:

>>> nltk.download('omw') 
[nltk_data] Downloading package omw to 
[nltk_data]  C:\Users\Shane\AppData\Roaming\nltk_data... 
[nltk_data] Unzipping corpora\omw.zip. 
True 
+1

您使用哪种操作系统? – alvas

+0

我使用Windows 7 – pyman

回答

8

简而言之:

不要使用GUI,在python解释器中添加所有软件包。

$ python3 
>>> import nltk 
>>> nltk.download('all') 

在长:

这可能是因为最近加入的Open Multilingual WordNet和东西不与NLTK下载GUI界面和指数权工作。

解决方案1:

只需使用nltk.download() GUI和下载这两个包而不选择所有。 (可能无法正常工作,但值得尝试)

解决方案2:

>>> import nltk 
>>> nltk.download('wordnet') 
>>> nltk.download('omw') # Open Multilingual WordNet 

解决方案3:

nltk.download('all')

通过Python解释器分别安装包检查索引中的所有软件包,如果它们不可用,请下载它们。

>>> import nltk 
>>> nltk.downlad('all') 

注:如果有任何文件被损坏可能是由于破互联网连接,只需找到其中NLTK数据存储,然后用溶液3

继续要查找nltk_data的存储目录, nltk.data.path存储可能的位置:

>>> import nltk 
>>> nltk.data.path 
['/home/alvas/nltk_data', '/usr/share/nltk_data', '/usr/local/share/nltk_data', '/usr/lib/nltk_data', '/usr/local/lib/nltk_data'] 

由于的点数据下载使用它们,知道你不会错过你所需要的部件,如果是那样的wordnetomw,你可以试试这个:

>>> from nltk.corpus import wordnet as wn 
>>> wn.synsets('bank')[0] 
Synset('bank.n.01') 
>>> wn.synsets('bank')[0].lemma_names('spa') 
['margen', 'orilla', 'vera'] 
>>> wn.synsets('bank')[0].lemma_names('fre') 
['rive', 'banque'] 

不要担心这么多,因为在所示的情况在GUI上。一旦nltk.download('all')完成没有错误,这意味着你有NLTK支持的所有语料库和模型。

但作为一个很好的做法,请提出在https://github.com/nltk/nltk_data/issues的问题,使开发人员可以检查问题是否可以被复制。显示更多的错误的打印屏幕。前后提出的解决方案后,太=)

+0

感谢您的回复。我已经尝试了解决方案1,但没有解决问题。我也尝试了解决方案2,但是当我去到图形用户界面后,它仍然说'过时'。此外,如果我尝试通过该方法重新下载'wordnet'和'omw',它将重新下载它,就好像它之前没有(而不是说“xyz已经是最新的”)。 我刚刚尝试过解决方案3.我如何判断它是否正常工作?去图形用户界面,它仍然表示'wordnet'和'omw'的'过时'。如果我在解决方案3之后应用解决方案2,它会重新下载它,好像它不在那里一样。 – pyman

+0

请参阅上面的解决方案2的问题(抱歉,我不能正确地在这里输入代码) – pyman

+0

GUI和命令行检查是相同的 - 当发生这种情况,这通常是因为自NLTK指数的外部包装已经改变(通过https: //github.com/nltk/nltk_data/blob/gh-pages/index.xml)最后生成...因此“索引已过时”可能意味着您不是最新的,因为您拥有旧版本的软件包或因为您拥有较新的版本。 – MartyMacGyver

1

不要担心“过时”的消息,这是你的时间浪费。只需继续并使用nltk即可。

的NLTK的数据资源几乎完全相互独立的。您可能永远没有理由使用任何标记为“过时”的软件包,但即使您这样做了,它们实际上也可能完全安装并可用。

不过,它也发生在我身上,这是我发现的:似乎下载器会认为资源“过时”,如果它检测到其下载文件夹中不在资源清单中的文件。也许这有时是由错误配置的资源引起的,但是如果您使用目录浏览器访问了有问题的资源,则可能导致GUI或编辑器遗留的杂散文件或谁知道什么会导致不匹配。例如,在Mac上,Finder将在访问的目录中保留一个.DS_Store文件。

但正如我所说,“问题”是不是真的值得固定。享受NLTK!

PS。据我所知,刷新nltk_data目录的最好(也是唯一的)方法是删除整个文件并重新下载。