Передача df[language]
работает для стоп-слов, но не для снежного кома. Есть ли способ обойти это?
Я пока не нашла никаких зацепок...
import nltk
from nltk.corpus import stopwords
import pandas as pd
import re
df = pd.DataFrame([['A sentence in English', 'english'], ['En mening på svenska', 'swedish']], columns = ['text', 'language'])
def tokenize(text):
tokens = re.split('\W+', text)
return tokens
def remove_stopwords(tokenized_list, language):
stopword = nltk.corpus.stopwords.words(language)
text = [word for word in tokenized_list if word not in stopword]
return text
def stemming(tokenized_text, l):
ss = nltk.stem.SnowballStemmer(l)
text = [ss.stem(word) for word in tokenized_text]
return text
df['text_tokenized'] = df['text'].apply(lambda x: tokenize(x.lower()))
df['text_nostop'] = df['text_tokenized'].apply(lambda x: remove_stopwords(x, df['language']))
df['text_stemmed'] = df['text_nostop'].apply(lambda x: stemming(x, df['language']))
Я ожидал, что это сделает снежный ком, используя английский и шведский языки в качестве языка, так же, как удаление стоп-слов. Я получаю сообщение error
, как показано ниже:
ValueError: истинное значение серии неоднозначно. Используйте a.empty, a.bool(), a.item(), a.any() или a.all().