【发布时间】:2020-07-27 06:46:38
【问题描述】:
我有一个推文数据框,我正在尝试在词形化的“推文”列上计算 Tf-Idf。我对词形还原的结果有疑问,并且在尝试计算 Tf-Idf 时遇到错误。
下面是我的代码:
w_tokenizer = nltk.tokenize.WhitespaceTokenizer()
lemmatizer=WordNetLemmatizer()
def lemmatize_text(tweet):
return [lemmatizer.lemmatize(w) for w in w_tokenizer.tokenize(tweet)]
df['tweet_lemmatized'] = df['tweet'].apply(lemmatize_text)
这是具有新列“tweet_lemmatized”的数据框示例:
target tweet_lemmatized
0 [believe, department, year, released, hoping]
1 [huge, expected, tomorrow, night, beginning]
效果不佳,因为栏目中有“希望”、“开始”之类的词。
我的第一个问题——如何改进词形还原?
现在我想计算该列的 Tf- Idf 并在我的数据框中生成带有顶部单词的新列。
这是我的 Tf-Idf 代码: 我想将最上面的词添加到我的原始数据框“df”中。
from sklearn.feature_extraction.text import TfidfVectorizer, ENGLISH_STOP_WORDS
tfidf= TfidfVectorizer(ngram_range=(1,2), max_features=100,
stop_words=ENGLISH_STOP_WORDS).fit(df.tweet_lemmatized)
tfidf_tweet = tfidf.transform(df.tweet_lemmatized)
result=pd.DataFrame(tfidf_tweet.toarray(), columns=tfidf.get_feature_names())
这是我得到的错误:
AttributeError: 'list' object has no attribute 'lower'
【问题讨论】:
标签: python tf-idf lemmatization