Удаление акцентированных слов из алгоритма стоп-слов с помощью NLTK - PullRequest
0 голосов
/ 27 июня 2018

Я пытаюсь разработать простой алгоритм на Python для удаления стоп-слов из текста, но у меня проблемы со словами, которые имеют ударения. Я использую следующий код:

import io
from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize
from unicodedata import normalize
import sys

reload(sys)
sys.setdefaultencoding('utf8')

stop_words = set(stopwords.words('portuguese'))
file1 = open("C:\Users\Desktop\Test.txt")
print("File open")
line = file1.read()
words = line.split()
#convert the words to lower case
words = [word.lower() for word in words]
print("Running!")
for r in words:
    if r not in stop_words:
            appendFile = open('finalText.txt','a')
            appendFile.writelines(" "+r)
            appendFile.close()

print("Finished!")

При запуске кода со следующим тестовым файлом:

E É Á A O Ó U Ú

У меня есть такой вывод:

 É Á Ó Ú

Кажется, он не распознает акцентированные слова, и использование "setdefaultencoding" для utf-8 не работает, кто-нибудь знает решение, которое я могу использовать для решения этой проблемы?

1 Ответ

0 голосов
/ 28 июня 2018

Это не проблема кодирования или акцента. Это просто слова, которых нет в списке:

from nltk.corpus import stopwords
stop_words = set(stopwords.words('portuguese'))

print(" ".join([w for w in stop_words if len(w) == 1]))
# >>> e à o a
# -> does not contain á é ó ú

print("À".lower() in stop_words)
# >>> True

Вы можете просто добавить слова в набор (stop_words.add("é")), если вам нужно.

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