簡體   English   中英

刪除詞匯表 TF-IDF 中單次出現的單詞

[英]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 向量化器不能准確提供您想要的。 你必須:

  1. 使矢量化器適合您的語料庫。 從向量化器中提取完整的詞匯表
  2. 把這些詞當作新詞典的關鍵詞。
  3. 計算每個單詞的出現次數:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM