关于python:AttributeError:无法从nltk.book import *设置属性

AttributeError: can't set attribute from nltk.book import *

安装nltk之后,我导入nltk,然后使用nltk.download(),但是当我尝试使用"from nltk.book import*"时,它显示属性错误。从nltk.corpus import*和从nltk import*工作正常

我对自然语言处理很陌生,所以我不太了解,请帮忙。

从nltk.book导入**NLTK手册的介绍性示例*

正在加载text1,…,text9和sent1,…,sent9

键入要查看的文本或句子的名称。

键入:'texts()'或'sents()'列出材料。

回溯(最近一次呼叫的最后一次):

文件",第1行,in

1
from nltk.book import *

文件"C:Program Files(x86)python 3.5libsite packagesltkook.py",第行19,在

1
text1 = Text(gutenberg.words('melville-moby_dick.txt'))

文件"C:Program Files(x86)python 3.5libsite packagesltk ext.py",第295行,在init中

1
tokens = list(tokens)

文件"C:Program Files(x86)python 3.5libsite-

packagesltkcorpus
eaderutil.py",第233行,长度

1
for tok in self.iterate_from(self._toknum[-1]): pass

文件"c:program files(x86)python 3.5libsite packagesltkcorpus
eaderutil.py",第291行,在迭代中

1
tokens = self.read_block(self._stream)

文件"c:program files(x86)python 3.5libsite packagesltkcorpus
eaderplaintext.py",第117行,位于read_word_块中words.extend(self.u wordu tokenizer.tokenize(stream.readline()))

文件"C:Program Files(x86)python 3.5libsite packagesltk okenize
egexp.py",第126行,tokenize中self.u检查regexp()。

文件"c:program files(x86)python 3.5libsite packagesltk okenize
egexp.py",第121行,位于check regexp中self._regexp=将_regexp_编译为_noncapting(self._模式,self._标志)

文件"c:program files(x86)python 3.5libsite packagesltkinternals.py",第56行,编译为"regexp-to-uncapting"返回sre_compile.compile(将regexp_转换为uncapting_parsed(sre_parse.parse(pattern)),flags=flags)

文件"c:program files(x86)python 3.5libsite packagesltkinternals.py",第52行,转换为"uncaptured"已分析的_pattern.pattern.groups=1

attributeError:无法设置属性


我不确定你是否解决了我们的问题。以防万一,这里也报告了同样的问题:https://github.com/nltk/nltk/issues/1135

解决方案:https://github.com/nltk/nltk/issues/1106

"我可以通过进入nltk目录中的internals.py文件并删除行parsed_pattern.pattern.groups = 1来解决这个问题。我的理论基础是,在做了一些代码读取之后,原始版本的sre_parse.pyNLTK被设计为作为sre_parse.Pattern类的一个实例的属性来工作存储的groups。python 3.5附带的版本将groups存储为返回subpattern列表长度的属性(我不太熟悉属性,但这是我假定的)。我说的代码在75行。我不知道这样做的长期效果是什么,我只是通过跟踪代码找到了这个解决方案,我还没有考虑从长远来看这可能导致什么错误。有人请告诉我这是否会导致问题,是否有更好的解决方案。"

到目前为止,上述工作对我来说没有任何问题。