Nltk и стоп-слова терпят неудачу #lookuperror
Я пытаюсь начать проект анализа настроений, и я буду использовать метод стоп-слов. Я провел некоторое исследование и обнаружил, что у nltk есть стоп-слова, но когда я выполняю команду, возникает ошибка.
то, что я делаю, это следующее, чтобы узнать, какие слова используют nltk (например, то, что вы можете найти здесь http://www.nltk.org/book/ch02.html в разделе 4.1):
from nltk.corpus import stopwords
stopwords.words('english')
но когда я нажимаю enter, я получаю
---------------------------------------------------------------------------
LookupError Traceback (most recent call last)
<ipython-input-6-ff9cd17f22b2> in <module>()
----> 1 stopwords.words('english')
C:UsersUsuarioAnacondalibsite-packagesnltkcorpusutil.pyc in __getattr__(self, attr)
66
67 def __getattr__(self, attr):
---> 68 self.__load()
69 # This looks circular, but its not, since __load() changes our
70 # __class__ to something new:
C:UsersUsuarioAnacondalibsite-packagesnltkcorpusutil.pyc in __load(self)
54 except LookupError, e:
55 try: root = nltk.data.find('corpora/%s' % zip_name)
---> 56 except LookupError: raise e
57
58 # Load the corpus.
LookupError:
**********************************************************************
Resource 'corpora/stopwords' not found. Please use the NLTK
Downloader to obtain the resource: >>> nltk.download()
Searched in:
- 'C:UsersMeru/nltk_data'
- 'C:nltk_data'
- 'D:nltk_data'
- 'E:nltk_data'
- 'C:UsersMeruAnacondanltk_data'
- 'C:UsersMeruAnacondalibnltk_data'
- 'C:UsersMeruAppDataRoamingnltk_data'
**********************************************************************
и, из-за этой проблемы такие вещи не могут работать должным образом (получение той же ошибки):
>>> from nltk.corpus import stopwords
>>> stop = stopwords.words('english')
>>> sentence = "this is a foo bar sentence"
>>> print [i for i in sentence.split() if i not in stop]
вы знаете, что может быть проблемой? Я должен использовать слова по-испански, вы рекомендуете другой способ? Я также думал использовать пакет Goslate с наборами данных на английском языке
Спасибо за чтение!
Д. П.: Я использую Ananconda
4 ответов
у вас, похоже, нет корпуса стоп-слов на вашем компьютере.
вам нужно запустить загрузчик NLTK и загрузить все необходимые данные.
Откройте консоль Python и выполните следующие действия:
>>> import nltk
>>> nltk.download()
showing info http://nltk.github.com/nltk_data/
В открывшемся окне GUI просто нажмите кнопку "Загрузить", чтобы загрузить все корпорации или перейдите на вкладку "корпорации" и загрузите только те, которые вам нужны/нужны.
я попробовал с терминала ubuntu, и я не знаю, почему GUI не появился в соответствии с ответом tttthomasssss. Поэтому я последовал за комментарием от KLDavenport, и это сработало. Вот резюме:
откройте терминал / командную строку и введите python, затем
>>> import nltk
.>>> nltk.download("stopwords")
это сохранит корпус стоп-слов под nltk_data. Для моего случая это было /home/myusername/nltk_data/corpora/stopwords
.
Если вам нужен другой корпус, то посетите данные в nltk и найти корпус с их ID. Затем используйте ID для загрузки, как мы делали для стоп-слов.
Если вы хотите вручную установить nltk Corpus.
1) Перейти кhttp://www.nltk.org/nltk_data/ и загрузите желаемый файл nltk Corpus.
2) Теперь в оболочке Python проверьте значение nltk.данные.путь
3) Выберите один из путей, который существует на вашем компьютере, и распакуйте файлы данных в подкаталог corpora внутри.
4) Теперь вы можете импортировать данные в nltk.corpos импорт стоп-слов
ссылка: https://medium.com/@satorulogic/how-to-manually-download-a-nltk-corpus-f01569861da9
import nltk
nltk.download()
нажмите на кнопку загрузки, когда gui предложит. У меня получилось.(nltk.download('stopwords')
не работает для меня)