Проблемы с шаблоном (изучение НЛП) - PullRequest
0 голосов
/ 23 февраля 2019

Я изучал классификацию текстов НЛП через книгу "Текстовая аналитика с 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 со всеми другими необходимыми пакетами.

Спасибо взаранее!

1 Ответ

0 голосов
/ 24 июля 2019

Переход на Python 3.6 решил эту проблему для меня.

Если вы используете conda, сначала настройте среду и укажите, что вы хотите использовать 3.6, и установите все необходимые вам пакеты.

conda create --name myenv python=3.6 pandas numpy gensim jupyter 
conda activate myenv

По какой-то причине мне не нужно было устанавливать Pattern напрямую.

Объяснение по теме Gensim: https://github.com/RaRe-Technologies/gensim/issues/2438

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...