Я изучал классификацию текстов НЛП через книгу "Текстовая аналитика с Python".Требуется установить несколько модулей в виртуальной среде.Я использую Anaconda env.Я создал пустой env с Python 3.7 и установил необходимые pandas, numpy, nltk, gensim, sklearn ... затем я должен установить Pattern.Первая проблема заключается в том, что я не могу установить Pattern через conda из-за конфликта между 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и т.д. Я не знаю, что делать, я не нашел подходящих установок conda для Pattern, которые были бы приняты в моем случае.Затем я установил Pattern с помощью pip.Установка прошла успешно.Можно ли иметь пакеты от conda и pip одновременно?
Вторая проблема, я думаю, связана с первой.Я скачал примеры кода книги из https://github.com/dipanjanS/text-analytics-with-python/tree/master/Old-First-Edition/source_code/Ch04_Text_Classification,, добавил скобки в Python 2.x 'print' и запустил классификацию. В программе возникло исключение:
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, или проблема в неправильном или устаревшем коде в книге ... и возможно ли установить Pattern в conda со всеми другими необходимыми пакетами.
Спасибо взаранее!