首頁常見問題正文

文本數(shù)據(jù)分析:刪除停用詞

更新時(shí)間:2022-12-21 來源:黑馬程序員 瀏覽量:

IT培訓(xùn)班

  停用詞是指在信息檢索中,為節(jié)省存儲(chǔ)空間和提高搜索效率,在處理自然語言文本之前或之后會(huì)自動(dòng)過濾掉某些沒有具體意義的字或詞,這些字或詞即被稱為停用詞,比如英文單詞“I”“the”或中文中的“啊”等。

  停用詞的存在直接增加了文本的特征難度,提高了文本數(shù)據(jù)分析過程中的成本,如果直接用包含大量停用詞的文本作為分析對象,則還有可能會(huì)導(dǎo)致數(shù)據(jù)分析的結(jié)果存在較大偏差,通常在處理過程中將它們從文本中刪除,如圖8-4所示。

1671588435490_刪除停用詞示例.jpg

  圖8-4 刪除停用詞示例

  從圖8-4中可以看出,即使從整個(gè)語句中刪除了停用詞,句子整體的意思并沒有產(chǎn)生很大的影響。

  停用詞都是人工輸入、非自動(dòng)化生成的,生成后的停用詞會(huì)形成一個(gè)停用詞表,但是并沒有一個(gè)明確的停用詞表能夠適用于所有的工具。對于中文的停用詞,可以參考中文停用詞庫、哈工大停用詞表、百度停用詞列表,對于其他語言來說,可以參照https://www.ranks.nl/stopwords進(jìn)行了解。

  刪除停用詞常用的方法有詞表匹配法、詞頻閾值法和權(quán)重閾值法,NLTK庫所采用的就是詞表匹配法,它里面有一個(gè)標(biāo)準(zhǔn)的停用詞列表,在使用之前要確保已經(jīng)下載了stopwords語料庫,并且用import語句導(dǎo)入stopwords模塊,示例代碼如下。

In [20]: from nltk.corpus import stopwords
         # 原始文本
         sentence='Python is a structured and powerful object-oriented
                  programming language.'
         # 將英文語句按空格劃分為多個(gè)單詞
         words=nltk.word_tokenize(sentence)
         words
Out[20]: ['Python', 'is', 'a', 'structured', 'and', 'powerful', 'object-oriented', 'programming', 'language', '.']
In [22]: # 獲取英文停用詞列表
         stop_words=stopwords.words('english')
         # 定義一個(gè)空列表
         remain_words=[]
         # 如果發(fā)現(xiàn)單詞不包含在停用詞列表中,就保存在remain_words中
         for word in words:
             if word not in stop_words:
                 remain_words.append(word)
         remain_words
Out[22]: ['Python', 'structured', 'powerful', 'object-oriented',
          'programming', 'language', '.']

  通過比較刪除前與刪除后的結(jié)果可以發(fā)現(xiàn),is、a、and這幾個(gè)常見的停用詞都被刪除了。

分享到:
在線咨詢 我要報(bào)名
和我們在線交談!