国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

文本分析-使用jieba庫進(jìn)行中文分詞和去除停用詞(附案例實戰(zhàn))

這篇具有很好參考價值的文章主要介紹了文本分析-使用jieba庫進(jìn)行中文分詞和去除停用詞(附案例實戰(zhàn))。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

?文本分析-使用jieba庫進(jìn)行中文分詞和去除停用詞(附案例實戰(zhàn))

???♂? 個人主頁:@艾派森的個人主頁

???作者簡介:Python學(xué)習(xí)者
?? 希望大家多多支持,我們一起進(jìn)步!??
如果文章對你有幫助的話,
歡迎評論 ??點贊???? 收藏 ??加關(guān)注+


?

中文分詞

????????中文分詞是將中文文本切分成一系列有意義的詞語的過程。中文分詞可以用于文本分析、機器翻譯、信息檢索等領(lǐng)域。傳統(tǒng)的中文分詞方法主要是基于規(guī)則和統(tǒng)計方法,其中規(guī)則分詞法主要通過定義一些分詞規(guī)則來分詞,如基于漢字的筆畫、拼音、部首等規(guī)則;而統(tǒng)計分詞法則是通過訓(xùn)練大規(guī)模中文語料庫來自動學(xué)習(xí)分詞規(guī)律,并使用這些規(guī)律進(jìn)行分詞。隨著深度學(xué)習(xí)技術(shù)的發(fā)展,基于神經(jīng)網(wǎng)絡(luò)的中文分詞方法也逐漸得到廣泛應(yīng)用。在中文分詞領(lǐng)域上,使用最多的就是jieba庫,本次我也將重點介紹jieba庫進(jìn)行中文分詞。

jieba是目前最好的Python中文分詞組件,它主要有以下3種特性:

  • 支持3種分詞模式:精確模式、全模式、搜索引擎模式
  • 支持繁體字
  • 支持自定義詞典

jieba.cutjieba.lcut接受3個參數(shù):

  • 需要分詞的字符串(unicode或UTF-8字符串、GBK字符串)
  • cut_all參數(shù):是否使用全模式,默認(rèn)值為False
  • HMM參數(shù):用來控制是否使用HMM模型,默認(rèn)值為True

jieba.cut_for_searchjieba.lcut_for_search接受2個參數(shù):

  • 需要分詞的字符串(unicode或UTF-8字符串、GBK字符串)
  • HMM參數(shù):用來控制是否使用HMM模型,默認(rèn)值為True
    ?

jieba.cut和jieba.cut_for_search所返回的結(jié)果是一個可迭代的generator,可使用for循環(huán)來獲得分詞后得到的每一個詞語(unicode)。

jieba.lcut和jieba.lcut_for_search直接返回list結(jié)果。

示例:

import jieba
text = '中文分詞是將中文文本切分成一系列有意義的詞語的過程。'
print(jieba.cut(text))
print(jieba.cut_for_search(text))
print(jieba.lcut(text))
print(jieba.lcut_for_search(text))

運行結(jié)果:?

['中文', '分詞', '是', '將', '中文', '文本', '切', '分成', '一系列', '有', '意義', '的', '詞語', '的', '過程', '。']
['中文', '分詞', '是', '將', '中文', '文文', '文本', '切分', '分成', '一系', '一系列', '系列', '列有', '有意', '意義', '的', '詞語', '的', '過程', '。']
['中文', '分詞', '是', '將', '中文', '文本', '切', '分成', '一系', '系列', '一系列', '有', '意義', '的', '詞語', '的', '過程', '。']
<generator object Tokenizer.cut at 0x000001B56EE14740>
<generator object Tokenizer.cut_for_search at 0x000001B56EE14740>
['中文', '分詞', '是', '將', '中文', '文本', '切', '分成', '一系列', '有', '意義', '的', '詞語', '的', '過程', '。']
['中文', '分詞', '是', '將', '中文', '文本', '切', '分成', '一系', '系列', '一系列', '有', '意義', '的', '詞語', '的', '過程', '。']

?分詞默認(rèn)使用的是精確模式,我們可以通過cut_all參數(shù)來改為全模式。如果想使用搜索引擎模式的話,使用jieba.lcut_for_search即可。

示例

import jieba
text = '中文分詞是將中文文本切分成一系列有意義的詞語的過程。'
print(jieba.lcut(text,cut_all=False)) # 默認(rèn)精確模式,即cut_all=False
print(jieba.lcut(text,cut_all=True)) # 改為全模式,即cut_all=True
print(jieba.lcut_for_search(text)) # 搜索引擎模式

運行結(jié)果:?

['中文', '分詞', '是', '將', '中文', '文本', '切', '分成', '一系列', '有', '意義', '的', '詞語', '的', '過程', '。']
['中文', '分詞', '是', '將', '中文', '文文', '文本', '切分', '分成', '一系', '一系列', '系列', '列有', '有意', '意義', '的', '詞語', '的', '過程', '。']
['中文', '分詞', '是', '將', '中文', '文本', '切', '分成', '一系', '系列', '一系列', '有', '意義', '的', '詞語', '的', '過程', '。']

自定義分詞詞典?

????????很多時候使用jieba分詞的結(jié)果會不盡人意,它的分詞里如果沒有該詞語,就會將其分開,比如下面的示例:

import jieba
text = '艾派森是創(chuàng)新辦主任也是大數(shù)據(jù)專家'
jieba.lcut(text)
['艾派', '森是', '創(chuàng)新', '辦', '主任', '也', '是', '大', '數(shù)據(jù)', '專家']

可以發(fā)現(xiàn),我們是不想讓它把“艾派森”、“創(chuàng)新辦”、“大數(shù)據(jù)”分開的,但是在它的詞典里是沒有這些新詞語的,所以這時候我們需要自定義分詞詞典進(jìn)行補充。

方法1:直接定義詞典列表

我們可以直接將我們自定義的詞語放入一個列表中,然后使用jieba.load_userdict進(jìn)行應(yīng)用

b = ['艾派森','創(chuàng)新辦','大數(shù)據(jù)']
jieba.load_userdict(b) # 應(yīng)用自定義詞典列表
jieba.lcut(text)
['艾派森', '是', '創(chuàng)新辦', '主任', '也', '是', '大數(shù)據(jù)', '專家']

方法2:外部文件載入

外部文件的話我們需要創(chuàng)建一個自定義詞典txt文件,里面寫入自定義詞語即可,注意是一行一個詞語。然后將該文件的路徑傳入jieba.load_userdict即可,我這里是代碼和文件在同一路徑下,所以直接寫入文件名即可。

文本分析-使用jieba庫進(jìn)行中文分詞和去除停用詞(附案例實戰(zhàn))?

# 方法2:外部文件載入
jieba.load_userdict('自定義詞典.txt')
jieba.lcut(text)
['艾派森', '是', '創(chuàng)新辦', '主任', '也', '是', '大數(shù)據(jù)', '專家']

方法3:動態(tài)增加或刪除詞語

優(yōu)點:比添加自定義詞典靈活,隨用隨機。

比如當(dāng)我們遇到如下情況時:

text2 = '我們中出了一個叛徒'
jieba.lcut(text2)
['我們', '中出', '了', '一個', '叛徒']

可以發(fā)現(xiàn)它誤解了我們的初始意思,將“中出”作為一個詞語進(jìn)行分開,我們漢語里面哪有這個詞語,似乎日語里面有這個詞,要么就是csgo里面的口頭語“中出”,意思是從中路出了。所以這時候我們將需要“中出”進(jìn)行刪除,然后加入“出了”這個詞語。

jieba.del_word('中出')  # 刪除單詞
jieba.lcut(text2)
['我們', '中', '出', '了', '一個', '叛徒']

可以發(fā)現(xiàn)將“中出”刪除后,它就不會將中和出進(jìn)行組合了。?

jieba.add_word('出了')
jieba.lcut(text2)
['我們', '中', '出了', '一個', '叛徒']

當(dāng)我們添加了“出了”詞語后,它就可以將出和了進(jìn)行組合了,這就符合了我們最初的意思。?

問題:如果我們不想刪除“中出”這個詞,但是又不想讓它合在一起,該怎么辦?

?那么我們就需要提高“中”和“出”這兩個詞的權(quán)重,這樣就不會在進(jìn)行組合了。

# 如果我們不想刪除“中出”這個詞,但是又不想讓它合在一起,可以增大它的詞頻
jieba.add_word('中出')  # 為了演示效果,我們需要回到最初始的樣子
jieba.del_word('出了')
print(jieba.lcut(text2))
# 調(diào)節(jié)詞的詞頻,使其能(或不能)被分詞
# tune=True:執(zhí)行詞頻調(diào)整,默認(rèn)False不執(zhí)行
jieba.suggest_freq(('中','出'),tune=True)
print(jieba.lcut(text2))
['我們', '中出', '了', '一個', '叛徒']
['我們', '中', '出', '了', '一個', '叛徒']

可以看出,我們同樣實現(xiàn)了前面的效果。

去除停用詞?

????????去除停用詞是一種常用的自然語言處理技術(shù),它可以大大提高文本分類、情感分析、機器翻譯等任務(wù)的效果。常用的停用詞包括數(shù)字、時間、標(biāo)點符號、常見單詞等。

在中文分詞之后, 就需要進(jìn)行去除停用詞。

首先我們需要準(zhǔn)確一個停用詞庫,這里我建議大家使用哈工大的中文停用詞庫,比較齊全。如果里面沒有你想去除的詞語,你也可以再文件里面進(jìn)行添加,注意還是一行一個詞語。這里我們讀取停用詞庫文件,將里面的停用詞進(jìn)行存儲,后面做篩選用。

文本分析-使用jieba庫進(jìn)行中文分詞和去除停用詞(附案例實戰(zhàn))?

with open('停用詞庫.txt', encoding='utf-8') as f: # 可根據(jù)需要打開停用詞庫,然后加上不想顯示的詞語
    con = f.readlines()
    stop_words = set() # 集合可以去重
    for i in con:
        i = i.replace("\n", "")   # 去掉讀取每一行數(shù)據(jù)的\n
        stop_words.add(i)
stop_words

?文本分析-使用jieba庫進(jìn)行中文分詞和去除停用詞(附案例實戰(zhàn))?

讀取完停用詞庫我們將可以去除停用詞了,示例如下:?

text3 = '昨天我吃了一大碗米飯,真的是太好吃了!###@'
result = []
for word in jieba.lcut(text3):
    if word not in stop_words:
        result.append(word)
result
['昨天', '吃', '大碗', '米飯', ',', '真的', '太', '好吃', '!', '###', '@']

可以發(fā)現(xiàn)它確實去除了停用詞庫中的詞語,但是還有標(biāo)點符號等字符沒有去除。

所以這里我們還需要使用re正則進(jìn)行去除字符,只保留中文。

# 去除一些無用的字符只提取出中文出來
import re
new_text = "".join(re.findall('[\u4e00-\u9fa5]+', text3, re.S))
new_text
'昨天我吃了一大碗米飯真的是太好吃了'

可以發(fā)現(xiàn)經(jīng)過這一步處理,我們原來語句中的標(biāo)點符號等異常字符都去除掉了。此時再進(jìn)行分詞和去停用詞就可以算完美了。

result = []
for word in jieba.lcut(new_text):
    if word not in stop_words:
        result.append(word)
result
['昨天', '吃', '大碗', '米飯', '真的', '太', '好吃']

可以看出分詞的結(jié)果都只有中文了。

如果我們不想保留單詞,比如上面的“吃”、“太”,這樣的詞語沒有什么價值,只需要在去重的時候加上過濾條件即可。原理就是判斷字的長度是否大于1。

result = []
for word in jieba.lcut(new_text):
    if word not in stop_words and len(word) > 1:
        result.append(word)
result
['昨天', '大碗', '米飯', '真的', '好吃']

綜合

????????前面我們學(xué)習(xí)了中文分詞、去除停用詞、去除標(biāo)點符號。在實際應(yīng)用的時候當(dāng)然還是把這些功能封裝為一個函數(shù),即提高效率也提高代碼可讀性。這里我放出我自己封裝的函數(shù)供大家參考,可以直接拿去用。

import re
import jieba

def chinese_word_cut(mytext):
    jieba.load_userdict('自定義詞典.txt')  # 這里你可以添加jieba庫識別不了的網(wǎng)絡(luò)新詞,避免將一些新詞拆開
    jieba.initialize()  # 初始化jieba
    # 文本預(yù)處理 :去除一些無用的字符只提取出中文出來
    new_data = re.findall('[\u4e00-\u9fa5]+', mytext, re.S)
    new_data = " ".join(new_data)
    # 文本分詞
    seg_list_exact = jieba.lcut(new_data)
    result_list = []
    # 讀取停用詞庫
    with open('停用詞庫.txt', encoding='utf-8') as f: # 可根據(jù)需要打開停用詞庫,然后加上不想顯示的詞語
        con = f.readlines()
        stop_words = set()
        for i in con:
            i = i.replace("\n", "")   # 去掉讀取每一行數(shù)據(jù)的\n
            stop_words.add(i)
    # 去除停用詞并且去除單字
    for word in seg_list_exact:
        if word not in stop_words and len(word) > 1:
            result_list.append(word)      
    return result_list

封裝好之后,我們需要用的時候直接調(diào)用即可。

text3 = '昨天我吃了一大碗米飯,真的是太好吃了!###@'
chinese_word_cut(text3)
['昨天', '大碗', '米飯', '真的', '好吃']

小案例 :將txt文件中的評論內(nèi)容進(jìn)行分詞后輸出為一個新的txt文件

# 加載數(shù)據(jù)
txt_path = '評論內(nèi)容.txt'  # 你的txt文件的路徑,絕對路徑和相對路徑都可,我這里是相對路徑
comment_list = []
with open(txt_path)as f:
    for i in f.readlines():
        i = i.replace('\n','')
        comment_list.append(i)

import re
import jieba
# 定義分詞函數(shù)
def chinese_word_cut(mytext):
    jieba.load_userdict('自定義詞典.txt')  # 這里你可以添加jieba庫識別不了的網(wǎng)絡(luò)新詞,避免將一些新詞拆開
    jieba.initialize()  # 初始化jieba
    # 文本預(yù)處理 :去除一些無用的字符只提取出中文出來
    new_data = re.findall('[\u4e00-\u9fa5]+', mytext, re.S)
    new_data = " ".join(new_data)
    # 文本分詞
    seg_list_exact = jieba.lcut(new_data)
    result_list = []
    # 讀取停用詞庫
    with open('停用詞庫.txt', encoding='utf-8') as f: # 可根據(jù)需要打開停用詞庫,然后加上不想顯示的詞語
        con = f.readlines()
        stop_words = set()
        for i in con:
            i = i.replace("\n", "")   # 去掉讀取每一行數(shù)據(jù)的\n
            stop_words.add(i)
    # 去除停用詞并且去除單字
    for word in seg_list_exact:
        if word not in stop_words and len(word) > 1:
            result_list.append(word)      
    return result_list

# 保存分詞結(jié)果
save_path = '分詞后的數(shù)據(jù).txt'  # 要保存的分詞文件的路徑
with open(save_path,'a',encoding='utf-8')as f:
    for comment in comment_list:
        cutted_comment = ' '.join(chinese_word_cut(comment))
        if cutted_comment:
            f.write(cutted_comment)
            f.write('\n')

評論內(nèi)容.txt

文本分析-使用jieba庫進(jìn)行中文分詞和去除停用詞(附案例實戰(zhàn))

?分詞后的數(shù)據(jù).txt

文本分析-使用jieba庫進(jìn)行中文分詞和去除停用詞(附案例實戰(zhàn))

案例實戰(zhàn)

中文分詞是文本分析必須要經(jīng)歷的環(huán)節(jié),關(guān)于具體案例,我前面寫了很多,大家可以學(xué)習(xí)參考。

基于sklearn實現(xiàn)LDA主題模型(附實戰(zhàn)案例)

基于gensim實現(xiàn)word2vec模型(附案例實戰(zhàn))

數(shù)據(jù)分析案例-文本挖掘與中文文本的統(tǒng)計分析

基于TF-IDF+KMeans聚類算法構(gòu)建中文文本分類模型(附案例實戰(zhàn))

大數(shù)據(jù)分析案例-基于樸素貝葉斯算法構(gòu)建微博謠言檢測模型

大數(shù)據(jù)分析案例-基于邏輯回歸算法構(gòu)建微博評論情感分類模型文章來源地址http://www.zghlxwxcb.cn/news/detail-512347.html

到了這里,關(guān)于文本分析-使用jieba庫進(jìn)行中文分詞和去除停用詞(附案例實戰(zhàn))的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Python使用jieba庫分詞并去除標(biāo)點符號

    Python使用jieba庫分詞并去除標(biāo)點符號

    相對于英文文本,中文文本挖掘面臨的首要問題就是分詞,因為中文的詞之間沒有空格。在Python中可以使用jieba庫來進(jìn)行中文分詞。 但是在中文中,標(biāo)點符號出現(xiàn)的頻率也是很高的,在使用jieba庫對帶有標(biāo)點符號的漢語句子進(jìn)行分詞時,標(biāo)點符號出現(xiàn)在分詞結(jié)果中時,對于后

    2024年02月04日
    瀏覽(16)
  • 中文分詞入門:使用IK分詞器進(jìn)行文本分詞(附Java代碼示例)

    中文分詞是將連續(xù)的中文文本切分成一個個獨立的詞語的過程,是中文文本處理的基礎(chǔ)。IK分詞器是一個高效準(zhǔn)確的中文分詞工具,采用了\\\"正向最大匹配\\\"算法,并提供了豐富的功能和可定制選項。 細(xì)粒度和顆粒度的分詞模式選擇。 可自定義詞典,提高分詞準(zhǔn)確性。 支持中文

    2024年02月17日
    瀏覽(41)
  • Elasticsearch (ES) 搜索引擎: 文本搜索:分析器/分詞器、同義詞/停用詞、拼音搜索、高亮顯示、拼寫糾錯

    原文鏈接:https://xiets.blog.csdn.net/article/details/132349032 版權(quán)聲明:原創(chuàng)文章禁止轉(zhuǎn)載 專欄目錄:Elasticsearch 專欄(總目錄) 文本搜索主要指的就是全文搜索,全文搜索是搜索引擎的核心功能,與精確匹配的結(jié)構(gòu)化數(shù)據(jù)不同,文本(text)數(shù)據(jù)在構(gòu)建索引和搜索時都需要進(jìn)行額外的處

    2024年02月03日
    瀏覽(43)
  • 使用.NET Jieba.NET 的 PosSegmenter 實現(xiàn)中文分詞匹配

    使用.NET Jieba.NET 的 PosSegmenter 實現(xiàn)中文分詞匹配

    ? 目錄 引言 1. 什么是中文分詞 2. Jieba.NET簡介 3. PosSegmenter介紹 4. 實現(xiàn)中文分詞匹配 4.1 安裝Jieba.NET庫 4.2 創(chuàng)建PosSegmenter實例 4.3 分詞和詞性標(biāo)注 4.4 中文分詞匹配 5. 總結(jié) ? ????????在自然語言處理領(lǐng)域,中文分詞是一個重要且基礎(chǔ)的任務(wù)。中文文本通常沒有像英文那樣的

    2024年02月11日
    瀏覽(25)
  • 數(shù)據(jù)分析之jieba分詞使用詳解

    數(shù)據(jù)分析之jieba分詞使用詳解

    在所有人類語言中,一句話、一段文本、一篇文章都是有一個個的詞組成的。詞是包含獨立意義的最小文本單元,將長文本拆分成單個獨立的詞匯的過程叫做分詞。分詞之后,文本原本的語義將被拆分到在更加精細(xì)化的各個獨立詞匯中,詞匯的結(jié)構(gòu)比長文本簡單,對于計算機

    2024年02月11日
    瀏覽(36)
  • 文本預(yù)處理技巧:去除停用詞、詞形還原、詞干提取等

    文本預(yù)處理是自然語言處理中非常重要的一步,它是為了使得文本數(shù)據(jù)能夠被機器學(xué)習(xí)模型所處理而進(jìn)行的一系列操作。其中,去除停用詞、詞形還原、詞干提取等技巧是比較常用的。本文將介紹這些技巧的原理,并提供使用Python實現(xiàn)的代碼示例,幫助讀者更好地理解和實踐

    2024年02月05日
    瀏覽(39)
  • (2-3)文本預(yù)處理算法:去除停用詞(Stopword Removal)

    去除停用詞(Stop Words)是自然語言處理中的一個常見任務(wù),它旨在去除文本中的常見、無實際語義的詞語,以便更準(zhǔn)確地進(jìn)行文本分析和處理。停用詞通常包括像“a”、“an”、“the”、“in”、“on”等常見的詞匯。 2.3.1 ?什么是停用詞 停用詞(Stop Words)是自然語言處理中

    2024年04月22日
    瀏覽(39)
  • Python中文分詞庫——jieba的用法

    jieba是優(yōu)秀的中文分詞第三方庫。由于中文文本之間每個漢字都是連續(xù)書寫的,我們需要通過特定的手段來獲得其中的每個單詞,這種手段就叫分詞。而jieba是Python計算生態(tài)中非常優(yōu)秀的中文分詞第三方庫,需要通過安裝來使用它。 jieba庫提供了三種分詞模式,但實際上要達(dá)到

    2023年04月25日
    瀏覽(24)
  • 中文分詞庫jieba的三種模式介紹

    中文分詞庫jieba的三種模式介紹

    精準(zhǔn)模式 jieba.cut(test_text, cut_all=False): 試圖將句子最精確地分開,適合文本分析 全模式 jieba.cut(test_text, cut_all=True): 把句子中所有的可以成詞的詞語都掃描出來,速度非???,但是不能解決歧義 搜索引擎模式 jieba.cut_for_search(test_text):在精確模式的基礎(chǔ)上,對長詞再次切分,提

    2024年02月13日
    瀏覽(24)
  • 【一】頭歌平臺實驗-基于jieba的中文分詞實戰(zhàn)

    【一】頭歌平臺實驗-基于jieba的中文分詞實戰(zhàn)

    ? ? ? ?近年來,隨著自然語言處理技術(shù)的日益成熟,開源實現(xiàn)的分詞工具越來越多,如 Ansj 、盤古分詞等。Jieba 是目前最好的 Python 中文分詞組件。 本實訓(xùn)主要介紹 Jieba 模塊的使用,并通過示例與實戰(zhàn),幫助大家掌握使用 Jieba 的方法。 1、jieba的特點 ????????分詞是自然

    2024年02月05日
    瀏覽(136)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包