亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在python中停用詞過濾

發布時間:2021-05-09 17:33:10 來源:億速云 閱讀:687 作者:Leah 欄目:開發技術

這篇文章將為大家詳細講解有關怎么在python中停用詞過濾,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

python有哪些常用庫

python常用的庫:1.requesuts;2.scrapy;3.pillow;4.twisted;5.numpy;6.matplotlib;7.pygama;8.ipyhton等。

一、什么是停用詞

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

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

怎么在python中停用詞過濾

我們在進行自然語言處理時,可以用BinTrie、DoubleArrayTrie和AhoCorasickDoubleArrayTrie中的任意一個來存儲詞典。考慮到該詞典中都是短語且比較多,用雙數組字典樹更劃算,處理時間更快。

二、加載停用詞字典

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

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樹結構的詞匯。如果要刪除停用詞,可以直接使用分詞后的結果剔除停用詞即可。剔除的方法如下:

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

四、分詞以及刪除停用詞

在前面的博文中,我們已經學會了如何分詞,現在我們又學會了如何剔除停用詞。這里,我們將兩者結合起來,實現分詞效果。代碼如下:

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

運行之后,得到如下結果:

怎么在python中停用詞過濾

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

對應上面的結果,我們先分詞在刪除停用詞。但是,有時候我們也喜歡先刪除停用詞在進行分詞。下面,我們來實現直接刪除停用詞。

代碼如下:

#直接過濾方法
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 offset<len(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("分詞結果", termlist)
    print("去掉停用詞", remove_stopwords(termlist, trie))
    print("不分詞去掉停用詞", direct_remove_stopwords(text, "**", trie))

運行之后,效果如下:

怎么在python中停用詞過濾

關于怎么在python中停用詞過濾就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

淮滨县| 齐河县| 东兴市| 阿荣旗| 泰和县| 石门县| 沙洋县| 舒城县| 广丰县| 定襄县| 申扎县| 武陟县| 黄浦区| 香格里拉县| 贵定县| 胶南市| 灌南县| 安阳市| 乃东县| 正镶白旗| 伊通| 鄢陵县| 磴口县| 三原县| 安阳市| 汉寿县| 巨野县| 色达县| 林芝县| 尉犁县| 正宁县| 神木县| 澄迈县| 桃园县| 平利县| 昌都县| 蒙山县| 宝兴县| 德化县| 武强县| 长白|