[英]Remove single occurrences of words in vocabulary TF-IDF
我試圖刪除在我的詞匯表中出現一次的單詞以減少我的詞匯量。 我在我的數據框中使用 sklearn TfidfVectorizer() 和 fit_transform 函數。
tfidf = TfidfVectorizer()
tfs = tfidf.fit_transform(df['original_post'].values.astype('U'))
我的第一個想法是tfidf向量化器中的預處理器字段或使用機器學習之前的預處理包。
任何進一步實施的提示或鏈接?
您正在從 scikit-learn TfidfVectorizer
的文檔中尋找min_df
參數(最小頻率):
min_df : 在 [0.0, 1.0] 或 int 范圍內浮動,默認值=1
在構建詞匯表時,忽略文檔頻率嚴格低於給定閾值的術語。 該值在文獻中也稱為截止值。 如果是float,該參數代表文檔的比例,整數絕對計數。 如果詞匯表不是 None,則忽略此參數。
# remove words occuring less than 5 times
tfidf = TfidfVectorizer(min_df=5)
您還可以刪除常用詞:
# remove words occuring in more than half the documents
tfidf = TfidfVectorizer(max_df=0.5)
您還可以像這樣刪除停用詞:
tfidf = TfidfVectorizer(stop_words='english')
ShmulikA 的答案很可能效果很好,但會根據文檔頻率刪除單詞。 因此,如果特定單詞僅在 1 個文檔中出現 200 次,它將被刪除。 TF-IDF 向量化器不能准確提供您想要的。 你必須:
for every document in corpus: for word in document: vocabulary[word] += 1
現在,找出是否有值 = 1,從字典中刪除這些條目。 將鍵放入列表並將列表作為參數傳遞給 TF-IDF 向量化器。
它將需要大量循環,也許只需使用 min_df,這在實踐中效果很好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.