【发布时间】:2019-02-23 13:29:22
【问题描述】:
我一直在通过“Text Analytics with Python”一书学习 NLP 文本分类。需要在虚拟环境中安装几个模块。我使用 Anaconda 环境。我用 Python 3.7 创建了一个空白环境,并安装了所需的 pandas、numpy、nltk、gensim、sklearn ......然后,我必须安装 Pattern。第一个问题是我无法通过 conda 安装 Pattern,因为 Pattern 和 mkl_random 之间存在冲突。
(nlp) D:\Python\Text_classification>conda install -c mickc pattern
Solving environment: failed
UnsatisfiableError: The following specifications were found to be in conflict:
- mkl_random
- pattern
Use "conda info <package>" to see the dependencies for each package.
不可能删除 mkl_random,因为有相关的软件包:gensim、numpy、scikit-learn 等。我不知道该怎么做,我没有找到适合我的情况下接受的 Pattern 的 conda 安装.然后,我使用 pip 安装了 Pattern。安装成功。可以同时从 conda 和 pip 获取包吗?
我认为第二个问题与第一个问题有关。我从https://github.com/dipanjanS/text-analytics-with-python/tree/master/Old-First-Edition/source_code/Ch04_Text_Classification 下载了本书的示例代码,在 Python 2.x 'print' 函数中添加了括号并运行了 classification.py 程序引发了异常:
Traceback (most recent call last):
File "C:\Users\PC\Anaconda3\envs\nlp\lib\site-packages\pattern\text\__init__.py", line 609, in _read
raise StopIteration
StopIteration
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "classification.py", line 50, in <module>
norm_train_corpus = normalize_corpus(train_corpus)
File "D:\Python\Text_classification\normalization.py", line 96, in normalize_corpus
text = lemmatize_text(text)
File "D:\Python\Text_classification\normalization.py", line 67, in lemmatize_text
pos_tagged_text = pos_tag_text(text)
File "D:\Python\Text_classification\normalization.py", line 58, in pos_tag_text
tagged_text = tag(text)
File "C:\Users\PC\Anaconda3\envs\nlp\lib\site-packages\pattern\text\en\__init__.py", line 188, in tag
for sentence in parse(s, tokenize, True, False, False, False, encoding, **kwargs).split():
File "C:\Users\PC\Anaconda3\envs\nlp\lib\site-packages\pattern\text\en\__init__.py", line 169, in parse
return parser.parse(s, *args, **kwargs)
File "C:\Users\PC\Anaconda3\envs\nlp\lib\site-packages\pattern\text\__init__.py", line 1172, in parse
s[i] = self.find_tags(s[i], **kwargs)
File "C:\Users\PC\Anaconda3\envs\nlp\lib\site-packages\pattern\text\en\__init__.py", line 114, in find_tags
return _Parser.find_tags(self, tokens, **kwargs)
File "C:\Users\PC\Anaconda3\envs\nlp\lib\site-packages\pattern\text\__init__.py", line 1113, in find_tags
lexicon = kwargs.get("lexicon", self.lexicon or {}),
File "C:\Users\PC\Anaconda3\envs\nlp\lib\site-packages\pattern\text\__init__.py", line 376, in __len__
return self._lazy("__len__")
File "C:\Users\PC\Anaconda3\envs\nlp\lib\site-packages\pattern\text\__init__.py", line 368, in _lazy
self.load()
File "C:\Users\PC\Anaconda3\envs\nlp\lib\site-packages\pattern\text\__init__.py", line 625, in load
dict.update(self, (x.split(" ")[:2] for x in _read(self._path) if len(x.split(" ")) > 1))
File "C:\Users\PC\Anaconda3\envs\nlp\lib\site-packages\pattern\text\__init__.py", line 625, in <genexpr>
dict.update(self, (x.split(" ")[:2] for x in _read(self._path) if len(x.split(" ")) > 1))
RuntimeError: generator raised StopIteration
我不明白发生了什么。是因为我使用 pip 安装而引发的异常,还是问题出在书中的错误或不推荐使用的代码中......是否可以在 conda 中安装 Pattern 以及所有其他必要的包。
提前谢谢你!
【问题讨论】:
-
conda info <package>分别产生了什么?潜在的依赖冲突是什么? -
去年我在为 Gensim 安装 Pattern 时遇到了问题,因为它在 pip3 中还不可用。我最终下载了代码的 zip 并手动安装。我认为 Pattern 的 Python3 端口没有完成或正确完成。现在不确定状态。
-
这里的一些信息可能会对您有所帮助stackoverflow.com/questions/34998210/…
-
谢谢你。我认为您对 Python 版本和 Pattern 端口是正确的。这本书是为 Python 2.x 编写的,但它已经过时了。
标签: python design-patterns pip nlp anaconda