Python NLTK WordNet错误,使用语法集查找单词

Python NLTK WordNet错误,使用语法集查找单词,python,nltk,wordnet,Python,Nltk,Wordnet,我将Python3.6与NLTK 3.2.3一起使用,并且我得到的“WordNetError”仅用于单词“escort”。我没有任何其他单词的错误。这是一份成绩单,上面用“狗”一词表示成功,用“护送”一词表示错误: Python 3.6.0 | Anaconda定制(64位)|(默认,2016年12月23日12:22:00) linux上的[GCC 4.4.7 20120313(Red Hat 4.4.7-1)] 有关详细信息,请键入“帮助”、“版权”、“信用证”或“许可证”。 >>>从nltk

我将Python3.6与NLTK 3.2.3一起使用,并且我得到的“WordNetError”仅用于单词“escort”。我没有任何其他单词的错误。这是一份成绩单,上面用“狗”一词表示成功,用“护送”一词表示错误:

Python 3.6.0 | Anaconda定制(64位)|(默认,2016年12月23日12:22:00)
linux上的[GCC 4.4.7 20120313(Red Hat 4.4.7-1)]
有关详细信息,请键入“帮助”、“版权”、“信用证”或“许可证”。
>>>从nltk.corpus导入wordnet
>>>wordnet.synsets('dog')
[Synset('dog.n.01')、Synset('frump.n.01')、Synset('dog.n.03')、Synset('cad.n.01')、Synset('frank.n.02')、Synset('pawl.n.01')、Synset('andiron.n.01')、Synset('chase.v.01')]
>>>wordnet.synsets('escort')
回溯(最近一次呼叫最后一次):
文件“/home/user1/.conda/envs/ca/lib/python3.6/site-packages/nltk/corpus/reader/wordnet.py”,第1403行,位于\u-pos\u和\u-line的\u-synset\u中
offset=int(_next_token())
ValueError:基数为10的int()的文本无效:“02026433\x00v”
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/home/user1/.conda/envs/ca/lib/python3.6/site packages/nltk/corpus/reader/wordnet.py”,第1491行,语法集
对于pos中的p
文件“/home/user1/.conda/envs/ca/lib/python3.6/site packages/nltk/corpus/reader/wordnet.py”,第1493行,在
用于索引[form]中的偏移量。获取(p,[])]
文件“/home/user1/.conda/envs/ca/lib/python3.6/site packages/nltk/corpus/reader/wordnet.py”,第1335行,位于synset_from_pos_和_offset中
synset=self.\u synset\u来自\u pos\u和\u行(pos,数据\u文件\u行)
文件“/home/user1/.conda/envs/ca/lib/python3.6/site-packages/nltk/corpus/reader/wordnet.py”,第1448行,位于\u-pos\u和\u行的\u-synset\u中
raise WordNetError('第%r行:%s'(数据文件第e行))
nltk.corpus.reader.wordnet.WordNetError:line'02025829 38 v 01 escort 0 006@0202550 v 0000+09992538 n 0102~02026203 v 0000~02026327 v 0000~02026433\x00v 0000~02026712 v 0000 04+08 00+09 00+20 00+21 00;陪同;她让她的哥哥陪她去舞会“\n”:基数为10的int()的文字无效:“02026433\x00v”
但是,当我在使用在线WordNet搜索工具时,它会按预期执行查找。最新的WordNet语料库是使用nltk.download()下载的

当需要查找整数值时,该错误似乎引用了单词的WordNet定义中的十六进制值


有什么想法吗?请告知您是否遇到过类似情况。

仔细检查“动词”词典文件后,我发现它实际上已损坏。以下是“vi”类编辑器中的内容:

我用空格替换了“^@”,问题就解决了。我想更大的问题是它最初是如何被腐蚀的


问题解决了

当我从几个线程使用PythonWordNet时,我会遇到这些异常。那里有些东西不安全。
Python 3.6.0 |Anaconda custom (64-bit)| (default, Dec 23 2016, 12:22:00) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from nltk.corpus import wordnet
>>> wordnet.synsets('dog')
[Synset('dog.n.01'), Synset('frump.n.01'), Synset('dog.n.03'), Synset('cad.n.01'), Synset('frank.n.02'), Synset('pawl.n.01'), Synset('andiron.n.01'), Synset('chase.v.01')]
>>> wordnet.synsets('escort')
Traceback (most recent call last):
  File "/home/user1/.conda/envs/ca/lib/python3.6/site-packages/nltk/corpus/reader/wordnet.py", line 1403, in _synset_from_pos_and_line
    offset = int(_next_token())
ValueError: invalid literal for int() with base 10: '02026433\x00v'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/user1/.conda/envs/ca/lib/python3.6/site-packages/nltk/corpus/reader/wordnet.py", line 1491, in synsets
    for p in pos
  File "/home/user1/.conda/envs/ca/lib/python3.6/site-packages/nltk/corpus/reader/wordnet.py", line 1493, in <listcomp>
    for offset in index[form].get(p, [])]
  File "/home/user1/.conda/envs/ca/lib/python3.6/site-packages/nltk/corpus/reader/wordnet.py", line 1335, in synset_from_pos_and_offset
    synset = self._synset_from_pos_and_line(pos, data_file_line)
  File "/home/user1/.conda/envs/ca/lib/python3.6/site-packages/nltk/corpus/reader/wordnet.py", line 1448, in _synset_from_pos_and_line
    raise WordNetError('line %r: %s' % (data_file_line, e))
nltk.corpus.reader.wordnet.WordNetError: line '02025829 38 v 01 escort 0 006 @ 02025550 v 0000 + 09992538 n 0102 ~ 02026203 v 0000 ~ 02026327 v 0000 ~ 02026433\x00v 0000 ~ 02026712 v 0000 04 + 08 00 + 09 00 + 20 00 + 21 00 | accompany as an escort; "She asked her older brother to escort her to the ball"  \n': invalid literal for int() with base 10: '02026433\x00v'
02025829 38 v 01 escort 0 006 @ 02025550 v 0000 + 09992538 n 0102 ~ 02026203 v 0000 ~ 02026327 v 0000 ~ 02026433^@v 0000 ~ 02026712 v 0000 04 +