python - 如何查找并删除具有低和高 idf 值的单词?

标签 python tfidfvectorizer

我正在根据单词的 idf 值查找过滤单词。我的列表中有 36k 个单词,列表中有 24k 个单词的 idf 值。现在,我如何将每个单词与其 idf 值映射,使其成为易于过滤。

我已经存储了数据帧中的所有唯一单词(36k),并且我的 idf 值为 24k

a=list(project_data['final_input_text'].str.split(' ', expand=True).stack().unique())

我希望单词映射到它们的 idf 值,无论是在字典还是数据帧中

最佳答案

from sklearn.feature_extraction.text import TfidfVectorizer 
vectorizer = TfidfVectorizer() 
train_tf = vectorizer.fit(train['final_input_text'].values) 
idf_scores = train_tf.idf_

根据较低阈值 = 8 和较高阈值 = 11 过滤索引

filtered_indices = np.argwhere(((idf_scores> 8) & (idf_scores<11.55) ))
filtered_indices = [idx[0] for idx in filtered_indices]

#list of vocabulary from the vectorizer
vocabulary = train_tf.get_feature_names()

#preparing a set with filtered vocabulary
filtered_voc = {vocabulary[i] for i in filtered_indices}

从论文中删除单词(不在过滤的 voc 中)

filtered_text_list = []
for text in train['final_input_text'].values:
  text_word_list = [word for word in text.split() if word in filtered_voc]
  filtered_text_list.append(' '.join(text_word_list))

现在filtered_text_list将不包含任何具有低(<8)和高(>11)idf值的单词

关于python - 如何查找并删除具有低和高 idf 值的单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56156260/

相关文章:

Python 创建自己的字典子集的字典 View

python - SKLearn 使用新数据进行预测

python - 大型文档语料库上的 Sklearn TFIDF

python - 如何检查经过训练的词汇和 TfidfVectorizer 是否正确应用于另一个语料库?

python-3.x - 如何在 Pandas 数据帧上迭代 TfidfVectorizer()

c++ - 如何打包python模块依赖的共享对象?

python - 在单元测试中模拟 API 调用

python - 从失败的步骤暂停和恢复 Python 脚本

python - 如何使用 TfIdfVectorizer 查找重要单词?

python - TfidfVectorizer 赋予停用词较高的权重