濮阳杆衣贸易有限公司

主頁 > 知識(shí)庫 > python基礎(chǔ)之停用詞過濾詳解

python基礎(chǔ)之停用詞過濾詳解

熱門標(biāo)簽:浙江電銷卡外呼系統(tǒng)好用嗎 南京銷售外呼系統(tǒng)軟件 地圖標(biāo)注微信發(fā)送位置不顯示 地圖制圖標(biāo)注位置改變是移位嗎 315電話機(jī)器人廣告 蓋州市地圖標(biāo)注 地圖標(biāo)注的意義點(diǎn) 上海機(jī)器人外呼系統(tǒng)哪家好 房產(chǎn)電銷外呼系統(tǒng)

一、什么是停用詞

在漢語中,有一類沒有多少意義的詞語,比如組詞“的”,連詞“以及”、副詞“甚至”,語氣詞“吧”,被稱為停用詞。一個(gè)句子去掉這些停用詞,并不影響理解。所以,進(jìn)行自然語言處理時(shí),我們一般將停用詞過濾掉。

而HanLP庫提供了一個(gè)小巧的停用詞字典,它位于Lib\site-packages\pyhanlp\static\data\dictionary目錄中,名字為:stopwords.txt。該文本收錄了常見的中英文無意義的詞匯,每行一個(gè)詞語。示例如下:

我們在進(jìn)行自然語言處理時(shí),可以用BinTrie、DoubleArrayTrie和AhoCorasickDoubleArrayTrie中的任意一個(gè)來存儲(chǔ)詞典??紤]到該詞典中都是短語且比較多,用雙數(shù)組字典樹更劃算,處理時(shí)間更快。

二、加載停用詞字典

通過前文的介紹,我們知道了使用雙數(shù)組字典樹加載停用詞字典更劃算。下面,我們來加載其停用詞,并返回鍵值對(duì)結(jié)構(gòu)。代碼如下:

def load_dictionary(path):
    map=JClass('java.util.TreeMap')()
    with open(path,encoding='utf-8') as src:
        for word in src:
            word=word.strip()
            map[word]=word
    return JClass('com.hankcs.hanlp.collection.trie.DoubleArrayTrie')(map)

三、刪除停用詞

通過上面的停用詞加載,我們獲取了DoubleArrayTrie樹結(jié)構(gòu)的詞匯。如果要?jiǎng)h除停用詞,可以直接使用分詞后的結(jié)果剔除停用詞即可。剔除的方法如下:

def remove_stopwords(termlist,trie):
    return [term.word for term in termlist if not trie.containsKey(term.word)]

四、分詞以及刪除停用詞

在前面的博文中,我們已經(jīng)學(xué)會(huì)了如何分詞,現(xiàn)在我們又學(xué)會(huì)了如何剔除停用詞。這里,我們將兩者結(jié)合起來,實(shí)現(xiàn)分詞效果。代碼如下:

if __name__ == "__main__":
    HanLP.Config.ShowTermNature=False
    trie=load_dictionary(HanLP.Config.CoreStopWordDictionaryPath)
    text="今天就這樣吧!明天我們在說可以嗎?"
    segment=DoubleArrayTrieSegment()
    termlist=segment.seg(text)
    print("分詞結(jié)果",termlist)
    print("去掉停用詞",remove_stopwords(termlist,trie))

運(yùn)行之后,得到如下結(jié)果:

五、直接刪除停用詞(不分詞)

對(duì)應(yīng)上面的結(jié)果,我們先分詞在刪除停用詞。但是,有時(shí)候我們也喜歡先刪除停用詞在進(jìn)行分詞。下面,我們來實(shí)現(xiàn)直接刪除停用詞。

代碼如下:

#直接過濾方法
def direct_remove_stopwords(text,replacement,trie):
    JString=JClass('java.lang.String')
    searcher=trie.getLongestSearcher(JString(text),0)
    offset=0
    result=''
    while searcher.next():
        begin=searcher.begin
        end=begin+searcher.length
        if begin>offset:
            result+=text[offset:begin]
            result+=replacement
            offset=end
    if offsetlen(text):
        result+=text[offset:]
    return result


if __name__ == "__main__":
    HanLP.Config.ShowTermNature = False
    trie = load_dictionary(HanLP.Config.CoreStopWordDictionaryPath)
    text = "今天就這樣吧!明天我們在說可以嗎?"
    segment = DoubleArrayTrieSegment()
    termlist = segment.seg(text)
    print("分詞結(jié)果", termlist)
    print("去掉停用詞", remove_stopwords(termlist, trie))
    print("不分詞去掉停用詞", direct_remove_stopwords(text, "**", trie))

運(yùn)行之后,效果如下:

到此這篇關(guān)于python基礎(chǔ)之停用詞過濾詳解的文章就介紹到這了,更多相關(guān)python停用詞過濾內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • python使用jieba實(shí)現(xiàn)中文分詞去停用詞方法示例
  • 利用Python過濾相似文本的簡單方法示例
  • Python實(shí)現(xiàn)敏感詞過濾的4種方法
  • Python過濾序列元素的方法
  • python numpy實(shí)現(xiàn)多次循環(huán)讀取文件 等間隔過濾數(shù)據(jù)示例
  • python正則過濾字母、中文、數(shù)字及特殊字符方法詳解

標(biāo)簽:雙鴨山 陽泉 赤峰 克拉瑪依 貴州 日照 臨汾 金華

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《python基礎(chǔ)之停用詞過濾詳解》,本文關(guān)鍵詞  python,基礎(chǔ),之停,用詞,過濾,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《python基礎(chǔ)之停用詞過濾詳解》相關(guān)的同類信息!
  • 本頁收集關(guān)于python基礎(chǔ)之停用詞過濾詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    酒泉市| 紫云| 潼关县| 伊金霍洛旗| 宣威市| 丰原市| 搜索| 荣昌县| 冷水江市| 绥阳县| 宁化县| 西盟| 余江县| 安宁市| 望都县| 漠河县| 台州市| 沅江市| 民勤县| 镇宁| 红桥区| 东城区| 山丹县| 环江| 墨脱县| 岗巴县| 德昌县| 宁都县| 盘锦市| 同仁县| 钟祥市| 睢宁县| 浑源县| 延吉市| 柯坪县| 北海市| 汾阳市| 社旗县| 浦北县| 保山市| 平利县|