我有一列仅包含文本。我需要使用TFIDF从每一行中提取热门关键字。
示例
Input df['Text']
'I live in India',
'My favourite colour is Red',
'I Love Programming'
预期输出:
'live','India'
'favourite','colour','red'
'love','programming'
我如何得到这个?我尝试编写下面的代码
tfidf = TfidfVectorizer(max_features=300, ngram_range = (2,2))
Y = df['Text'].apply(lambda x: tfidf.fit_transform(x))
我收到以下错误希望对原始文本文档进行迭代,收到字符串对象。
TfidfVectorizer fit_transform函数期望句子\文档的可迭代类型(例如集合,列表等)适合TfIdf得分。
所以您实际上应该做的是-
Y = tfidf.fit_transform(df['Text'])
您的预期输出建议使用Toekenization,但是如果您想获得TFDIF分数,请使用以下代码:
df = pd.DataFrame({'Text':['I live in India', 'My favourite colour is Red', 'I Love Programming']})
tfidf = TfidfVectorizer(max_features=300, ngram_range = (2,2))
Y = tfidf.fit_transform(df['Text'])
df_Y = pd.DataFrame(Y.toarray(), columns = tfidf.get_feature_names())
df2 = pd.concat([df,df_Y], axis = 1)
这将返回具有实际文本和tfidf权重的新数据框。