我正在根据单词的 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/