Python 如何查找和删除idf值低和高的单词?

Python 如何查找和删除idf值低和高的单词?,python,tfidfvectorizer,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_extr

我正在查找基于其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_
根据较低的thrshold值=8和较高的thrshold值=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}


现在过滤的文本列表将不包含任何idf值低(11)的单词

请共享列表样本…是的,两个输入列表样本以及所需输出样本。什么构成“高”或“低”idf值?您需要更全面地定义问题。我的列表a中有来自dataframe的单词。绘制方框图后,我需要使用idf10删除单词。我有来自sklearn.feature\u extraction.text import TfidfVectorizer vectorizer=TfidfVectorizer()vectorizer.fit(a)idf=vectorizer.idf u我得到了单词的idf值,它在idf中,现在我如何映射它们?好的,我得到了:)来自sklearn.feature\u extraction.text import TfidfVectorizer vectorizer=TfidfVectorizer()的train_tf=vectorizer.fit(train['final_input_text'].values)dict(zip(train_tf.get_feature_names(),idf))
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))