bag-of-words

miaoxiaowuseng發表於2020-10-05

一、bag-of-words

1.1 詞袋特性

  • 詞袋是統計文字中每個單詞出現的次數
  • 實質上是將文字展平為一維向量
  • 詞袋沒有順序
  • 詞袋也沒有詞語之間意思上的包含關係。比如動物包含狗,貓等。

二、過濾

2.1 stopwords

2.1.1 停用詞是什麼

  • 將資料轉換為計算機可以理解的內容的過程稱為預處理。預處理的主要形式之一是過濾掉無用的資料。在自然語言處理中,無用的單詞(資料)稱為停用詞。
  • 停用詞是指搜尋引擎已程式設計忽略的常用詞(例如“the”,“a”,“an”,“in”)。
  • 我們不希望這些單詞佔用我們資料庫中的空間,或佔用寶貴的處理時間。為此,我們可以通過儲存要停止使用的單詞的列表輕鬆刪除它們。
  • python中的NLTK(自然語言工具包)具有以16種不同語言儲存的停用詞列表。可以在nltk_data目錄中找到它們。home / pratima / nltk_data / corpora / stopwords是目錄地址(不要忘記更改你的主目錄名稱)

2.1.2 停用詞使用情景

  • 對於分類任務,可以刪除停止詞

  • 但對於情感分析等需要分析語義的任務,則需要另外考慮

2.1.3 NLTK使用

  • 其中的停用詞包含了don’t的撇號,所以使用時文字要保留撇號
  • 其中停用詞都是小寫,使用時需要將文字都轉換為小寫

2.1.4 從一段文字中刪除停用詞

from nltk.corpus import stopwords 
from nltk.tokenize import word_tokenize 

example_sent = "This is a sample sentence, showing off the stop words filtration."

stop_words = set(stopwords.words('english')) 

word_tokens = word_tokenize(example_sent) 

filtered_sentence = [w for w in word_tokens if not w in stop_words] 

print(word_tokens) 
print(filtered_sentence) 

輸出

['This', 'is', 'a', 'sample', 'sentence', ',', 'showing', 
'off', 'the', 'stop', 'words', 'filtration', '.']
['This', 'sample', 'sentence', ',', 'showing', 'stop',
'words', 'filtration', '.']
ce', ',', 'showing', 'stop',
'words', 'filtration', '.']