Я делаю консольное приложение для быстрого анализа настроений с Python, TextBlob и NLTK.
В настоящее время я использую ссылку на вики-статью на испанском языке, поэтому мне не нужно переводить ее, и я могу использовать список стоп-слов nltk на испанском, но что если я хочу, чтобы этот код работал для ссылок на разные языки?
Если я использую строку TextFinal=TextFinal.translate(to="es")
ниже textFinal=TextBlob(texto)
(код ниже), я получаю сообщение об ошибке, поскольку он не может перевести испанский на испанский.
Могу ли я предотвратить это, просто используя try / catch? Есть ли способ заставить код пытаться переводить на разные языки (а также использовать разные списки стоп-слов) в зависимости от языка ссылок, которые я передаю в приложение?
import nltk
nltk.download('stopwords')
from nltk import word_tokenize
from nltk.corpus import stopwords
import string
from textblob import TextBlob, Word
import urllib.request
from bs4 import BeautifulSoup
response = urllib.request.urlopen('https://es.wikipedia.org/wiki/Valencia')
html = response.read()
soup = BeautifulSoup(html,'html5lib')
text = soup.get_text(strip = True)
tokens = word_tokenize(text)
tokens = [w.lower() for w in tokens]
table = str.maketrans('', '', string.punctuation)
stripped = [w.translate(table) for w in tokens]
words = [word for word in stripped if word.isalpha()]
stop_words = set(stopwords.words('spanish'))
words = [w for w in words if not w in stop_words]
with open('palabras.txt', 'w') as f:
for word in words:
f.write(" " + word)
with open('palabras.txt', 'r') as myfile:
texto=myfile.read().replace('\n', '')
textFinal=TextBlob(texto)
print (textFinal.sentiment)
freq = nltk.FreqDist(words)
freq.plot(20, cumulative=False)