日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python数据分析(4):jieba分词详解

發布時間:2023/12/10 python 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python数据分析(4):jieba分词详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • jieba分詞器
    • 1. jieba分詞器的分詞模式說明
      • (1)精確模式
      • (2)全模式
      • (3)搜索引擎模式
      • (4)Paddle模式
    • 2. jieba分詞器的基本用法
      • (1)三種模式案例
      • (2)詞性標注
      • (3)識別新詞:HMM參數
      • (4)搜索引擎模式分詞:cut_for_search()函數
    • 3. 調整詞典
      • (1)使用自定義詞典:load_userdict()函數
      • (2)動態修改詞典:add_word()、del_word()函數
      • (3)調節詞頻:suggest_freq()函數
    • 4. 關鍵詞提取
      • (1)基于TF-IDF算法的關鍵詞提取:extract_tags()函數
      • (2)基于TextRank算法的關鍵詞提取:textrank()函數
    • 5. 停用詞過濾
    • 6. 詞頻統計


前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到網站:人工智能從入門到精通教程




jieba分詞器

1. jieba分詞器的分詞模式說明

jieba分詞器提供4種分詞模式,并且支持簡體/繁體分詞、自定義詞典、關鍵詞提取、詞性標注。

(1)精確模式

該模式會將句子最精確地切分開,適合在文本分析時使用。

(2)全模式

該模式會將句子中所有成詞的詞語都掃描出來,速度也非???#xff0c;缺點是不能解決歧義問題,有歧義的詞語也會被掃描出來。

(3)搜索引擎模式

該模式會在精確模式的基礎上對長詞再進行切分,將更短的詞語切分出來。在搜索引擎中,要求輸入詞語的一部分也能檢索到整個詞語相關的文檔,所以該模式適用于搜索引擎分詞。

(4)Paddle模式

該模式利用PaddlePaddle深度學習框架,訓練序列標注網絡模型實現分詞,同時支持詞性標注。該模式在4.0及以上版本的jieba分詞器中才能使用。使用該模式需要安裝paddlepaddle模塊

2. jieba分詞器的基本用法

在Python中,可以使用jieba模塊的cut()函數進行分詞,返回結果是一個迭代器。

cut()函數有4個參數:

  • 第一個參數:待分詞文本
  • cut_all:設置使用全模式(True)還是精確模式(False); 默認False
  • use_paddle:控制是否使用Paddle模式進行分詞
  • HMM:控制是否使用HMM模式識別新詞
  • (1)三種模式案例

    設置參數cut_all為True:全分詞

    import jieba str1 = '我來到了西北皇家理工學院,發現這兒真不錯' seg_list = jieba.cut(str1, cut_all=True) # 使用全模式進行分詞 生成列表 print('全模式分詞結果:', '/'.join(seg_list)) # /拼接列表元素 全模式分詞結果: 我/來到//西北/皇家/理工/理工學/理工學院/工學/工學院/學院//發現/這兒/真不/真不錯/不錯

    設置參數cut_all為False:精確分詞

    import jieba str1 = '我來到了西北皇家理工學院,發現這兒真不錯' seg_list = jieba.cut(str1, cut_all=False) # 使用精確模式進行分詞 print('精確模式分詞結果:', '/'.join(seg_list)) 精確式分詞結果: 我/來到//西北/皇家/理工學院//發現/這兒/真不錯

    cut_all參數不給定時,默認為false,即精確分詞

    import jieba str1 = '我來到了西北皇家理工學院,發現這兒真不錯' seg_list = jieba.cut(str1) print('全模式分詞結果:', '/'.join(seg_list)) 精確模式分詞結果: 我/來到//西北/皇家/理工學院//發現/這兒/真不錯

    use_paddle參數可以設置開啟paddle模式

    import jieba import paddle str1 = '我來到了西北皇家理工學院,發現這兒真不錯' #jieba.enable_paddle() 已經停用 paddle.enable_static() seg_list = jieba.cut(str1, use_paddle=True) #使用paddle模式進行分詞 print('Paddle模式分詞結果:', '/'.join(seg_list)) Paddle模式分詞結果: 我/來到//西北/皇家/理工學院//發現/這兒/真不錯

    (2)詞性標注

    import jieba import jieba.posseg as pseg #jieba.enable_paddle() str2 = '上海自來水來自海上' seg_list = pseg.cut(str2, use_paddle=True) #使用posseg進行分詞 for seg, flag in seg_list:print(seg, flag) 上海 ns 自來水 l 來自 v 海上 s

    (3)識別新詞:HMM參數

    HMM參數設置為True,可以識別新詞,即詞典中不存在的詞。

    詞典為jieba分詞自帶的字典。

    如下:他知

    import jieba str3 = '他知科技研發有限公司是一家互聯網行業的公司' seg_list = jieba.cut(str3, HMM=True) #HMM默認為True,所以可以不設置 print('精確模式分詞結果:', '/'.join(seg_list)) 精確模式分詞結果: 他知/科技/研發/有限公司//一家/互聯網/行業//公司

    (4)搜索引擎模式分詞:cut_for_search()函數

    cut_for_search()函數可以進行搜索引擎模式分詞

    該函數只有兩個參數:

  • 第一個參數:待分詞文本
  • 第二個參數:HMM,默認為True
  • import jieba str1 = '我來到了西北皇家理工學院,發現這兒真不錯' seg_list = jieba.cut_for_search(str1) print('搜索引擎模式分詞結果:', '/'.join(seg_list)) 搜索引擎模式分詞結果: 我/來到//西北/皇家/理工/工學/學院/理工學/工學院/理工學院//發現/這兒/真不/不錯/真不錯

    3. 調整詞典

    用戶也可以自己生成一個自定義詞典,包含jieba分詞自帶字典中沒有的詞語,添加到程序中。比如:

    注意:詞頻、詞性可省略。

    未加載自定義字典時使用精確切分來進行分詞

    import jieba seg_list = jieba.cut('心靈感應般地驀然回首,才能撞見那一低頭的溫柔;也最是那一低頭的溫柔,似一朵水蓮花不勝涼風的嬌羞;也最是那一抹嬌羞,才能讓兩人攜手共白首。') print('未加載自定義詞典時的精確模式分詞結果:\n', '/'.join(seg_list)) 未加載自定義詞典時的精確模式分詞結果:心靈感應/般地/驀然回首//才能/撞見/那一/低頭//溫柔///////低頭//溫柔///一朵//蓮花/不勝/涼風//嬌羞//////一抹/嬌羞//才能//兩人/攜手//白首/

    (1)使用自定義詞典:load_userdict()函數

    load_userdict()函數加載用戶自定義字典

    import jieba jieba.load_userdict('用戶詞典.txt') seg_list = jieba.cut('心靈感應般地驀然回首,才能撞見那一低頭的溫柔;也最是那一低頭的溫柔,似一朵水蓮花不勝涼風的嬌羞;也最是那一抹嬌羞,才能讓兩人攜手共白首。') print('加載自定義詞典時的精確模式分詞結果:\n', '/'.join(seg_list)) 加載自定義詞典時的精確模式分詞結果:心靈感應/般地/驀然回首//才能/撞見//一低頭//溫柔//////一低頭//溫柔///一朵/水蓮花/不勝/涼風//嬌羞//////一抹/嬌羞//才能//兩人/攜手//白首/。

    (2)動態修改詞典:add_word()、del_word()函數

    1. 動態添加詞:add_word()

    import jieba jieba.load_userdict('用戶詞典.txt') jieba.add_word('最是') #添加詞, 但是不會添加到 用戶字典.txt 文件中 seg_list = jieba.cut('心靈感應般地驀然回首,才能撞見那一低頭的溫柔;也最是那一低頭的溫柔,似一朵水蓮花不勝涼風的嬌羞;也最是那一抹嬌羞,才能讓兩人攜手共白首。') print('添加自定義詞時的精確模式分詞結果:\n', '/'.join(seg_list)) 添加自定義詞時的精確模式分詞結果:心靈感應/般地/驀然回首//才能/撞見//一低頭//溫柔///最是//一低頭//溫柔///一朵/水蓮花/不勝/涼風//嬌羞///最是//一抹/嬌羞//才能//兩人/攜手//白首/

    2.動態刪除詞:del_word()

    import jieba jieba.load_userdict('用戶詞典.txt') jieba.del_word('一低頭') seg_list = jieba.cut('心靈感應般地驀然回首,才能撞見那一低頭的溫柔;也最是那一低頭的溫柔,似一朵水蓮花不勝涼風的嬌羞;也最是那一抹嬌羞,才能讓兩人攜手共白首。') print('刪除自定義詞時的精確模式分詞結果:\n', '/'.join(seg_list)) 刪除自定義詞時的精確模式分詞結果:心靈感應/般地/驀然回首//才能/撞見/那一/低頭//溫柔///////低頭//溫柔///一朵/水蓮花/不勝/涼風//嬌羞//////一抹/嬌羞//才能//兩人/攜手//白首/

    (3)調節詞頻:suggest_freq()函數

    不修改詞頻前:

    #不修改詞頻 import jieba str3 = '他認為未來幾年健康產業在GDP中將占比第一。' seg_list = jieba.cut(str3) print('精確模式分詞結果:\n', '/'.join(seg_list)) 精確模式分詞結果:他/認為/未來/幾年/健康/產業//GDP/中將///第一/。

    修改詞頻后:

    #修改詞頻 import jieba str3 = '他認為未來幾年健康產業在GDP中將占比第一。' jieba.suggest_freq(('中', '將'), True) #修改詞頻 強制“中將” jieba.suggest_freq('占比', True) #強制讓“占比”作為一次詞 seg_list = jieba.cut(str3, HMM=False) print('精確模式分詞結果:\n', '/'.join(seg_list)) 精確模式分詞結果:他/認為/未來/幾年/健康/產業//GDP///占比/第一/。

    4. 關鍵詞提取

    從文本文件中提取關鍵詞的理論方法主要有兩種:

    第一種是有監督的學習方法,該方法將關鍵詞的提取視為一個二分類問題,要么是關鍵詞,要么不是

    第二種是無監督的學習方法,該方法對候選詞進行打分,大風范最高的候選詞為關鍵詞

    常見的打分算法有TF-IDF和TextRank。

    (1)基于TF-IDF算法的關鍵詞提取:extract_tags()函數

    extract_tags()函數能基于TF-IDF算法提取關鍵詞

    jieba.analyse.extract_tags(sentence, topK=20, withWeight=False, allowPOS=())

    該函數有四個參數:

  • sentence:待提取關鍵詞的文本
  • topK:關鍵詞數
  • withWeight:是否返回權重
  • allowPOS:指定篩選關鍵詞的詞性;默認不分詞性
  • 基于TF-IDF算法的關鍵詞提取

    # 基于TF-IDF算法的關鍵詞提取 from jieba import analyse text = '記者日前從中國科學院南京地質古生物研究所獲悉,該所早期生命研究團隊與美國學者合作,在中國湖北三峽地區的石板灘生物群中,發現了4種形似樹葉的遠古生物。這些“樹葉”實際上是形態奇特的早期動物,它們生活在遠古海洋底部。相關研究成果已發表在古生物學國際專業期刊《古生物學雜志》上。' keywords = analyse.extract_tags(text, topK=10, withWeight=True, allowPOS=('n', 'v')) print(keywords) [('古生物學', 0.783184303024), ('樹葉', 0.6635900468544), ('生物群', 0.43238540794400004), ('古生物', 0.38124919198039997), ('期刊', 0.36554014868720003), ('石板', 0.34699723913040004), ('形似', 0.3288202017184), ('研究成果', 0.3278758070928), ('團隊', 0.2826627565264), ('獲悉', 0.28072960723920004)]

    (2)基于TextRank算法的關鍵詞提取:textrank()函數

    textrank()函數能基于TextRank算法提取關鍵字

    jieba.analyse.textrank(sentance, topK=20, withWeight=False, allowPOS=('ns', 'n', 'vn', 'v'))

    兩種方法的區別是默認提取的詞性不同

    當然算法不同,結果可能有差異

    基于TextRank算法的關鍵詞提取

    # 基于TextRank算法的關鍵詞提取 from jieba import analyse text = '記者日前從中國科學院南京地質古生物研究所獲悉,該所早期生命研究團隊與美國學者合作,在中國湖北三峽地區的石板灘生物群中,發現了4種形似樹葉的遠古生物。這些“樹葉”實際上是形態奇特的早期動物,它們生活在遠古海洋底部。相關研究成果已發表在古生物學國際專業期刊《古生物學雜志》上。' keywords = analyse.textrank(text, topK=10, withWeight=True, allowPOS=('n', 'v')) print(keywords) [('古生物學', 1.0), ('樹葉', 0.8797803471074045), ('形似', 0.6765568513591282), ('專業', 0.6684901270801065), ('生物', 0.648692596888148), ('發表', 0.6139083953888275), ('生物群', 0.59981945604977), ('期刊', 0.5651065025924439), ('國際', 0.5642917600351786), ('獲悉', 0.5620719278559326)]

    5. 停用詞過濾

    停用詞:“你”、“我”、“的”、“在”及標點符號等大量出現但非關鍵詞的詞。

    我們可以把它們過濾掉

    啟動停用詞過濾前:

    #未啟動停用詞過濾 import jieba text = '商務部4月23日發布的數據顯示,一季度,全國農產品網絡零售額達936.8億元,增長31.0%;電商直播超過400萬場。電商給農民帶來了新的機遇。' seg_list = jieba.cut(text) print('未啟用停用詞過濾時的分詞結果:\n', '/'.join(seg_list)) 未啟用停用詞過濾時的分詞結果:商務部/4//23//發布//數據/顯示//一季度//全國/農產品/網絡/零售額//936.8/億元//增長/31.0%//電商/直播/超過/400/萬場//電商//農民/帶來////機遇/。

    為了過濾停用詞,需要有一個停用詞詞典。

    我們可以自己制作停用詞詞典,停用詞詞典的內容是根據NLP的目的變化的。

    如果制作太慢,可以百度下載一個停用詞詞典,稍作修改成自己想要的。如下:

    啟動停用詞過濾后:

    #啟動停用詞過濾 import jieba with open('stopwords.txt', 'r+', encoding = 'utf-8')as fp:stopwords = fp.read().split('\n') #將停用詞詞典的每一行停用詞作為列表中的一個元素 word_list = [] #用于存儲過濾停用詞后的分詞結果 text = '商務部4月23日發布的數據顯示,一季度,全國農產品網絡零售額達936.8億元,增長31.0%;電商直播超過400萬場。電商給農民帶來了新的機遇。' seg_list = jieba.cut(text) for seg in seg_list:if seg not in stopwords:word_list.append(seg) print('啟用停用詞過濾時的分詞結果:\n', '/'.join(word_list)) 啟用停用詞過濾時的分詞結果:商務部/4//23//發布/數據/顯示/一季度/全國/農產品/網絡/零售額//936.8/億元/增長/31.0%/電商/直播/超過/400/萬場/電商/農民/帶來//機遇

    注意:我們根據不同的編碼方式,修改encoding參數

    6. 詞頻統計

    import jieba text = '蒸饃饃鍋鍋蒸饃饃,饃饃蒸了一鍋鍋,饃饃擱上桌桌,桌桌上面有饃饃。' with open('stopwords.txt', 'r+', encoding = 'utf-8')as fp:stopwords = fp.read().split('\n') #加載停用詞 word_dict = {} #用于存儲詞頻統計結果的詞典 jieba.suggest_freq(('桌桌'), True) #讓“桌桌”作為一個詞 seg_list = jieba.cut(text) for seg in seg_list:if seg not in stopwords:if seg in word_dict.keys():word_dict[seg] += 1 #存在則詞頻+1else:word_dict[seg] = 1 #不存在則存入鍵值對 print(word_dict) {'蒸': 3, '饃饃': 5, '鍋鍋': 1, '一鍋': 1, '鍋': 1, '擱': 1, '桌桌': 2, '上面': 1}

    總結

    以上是生活随笔為你收集整理的Python数据分析(4):jieba分词详解的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 久久久精品美女 | 男女男精品网站 | 六月婷婷中文字幕 | av青草| 理论片高清免费理伦片 | 一区二区三区不卡视频 | 亚洲三级中文字幕 | 久久另类ts人妖一区二区 | 欧美私人情侣网站 | 午夜专区| 亚洲国产精品免费 | 手机看片国产精品 | 欧美大片在线观看 | 黄页网站免费在线观看 | 日剧大尺度床戏做爰 | 福利片在线看 | 色一色成人网 | 亚洲自拍偷拍精品 | 爱蜜臀av| 黄色大片在线免费观看 | 日韩国产传媒 | 欧洲美女与动交ccoo | 台湾性生生活1 | 中文字幕99 | 亚洲爆乳无码一区二区三区 | 高潮喷水一区二区三区 | 国产熟女一区二区三区五月婷 | 精品人妻无码一区二区三区蜜桃一 | 色人阁五月天 | 久久中文字幕无码 | 动漫av在线播放 | 国产自产视频 | 99热国内精品 | 成年人网站在线观看视频 | 国产精品99精品无码视亚 | 亚洲专区av | 国产福利在线看 | 欧美精品亚洲精品 | 国产一区二区免费在线观看 | 一本在线免费视频 | 韩国久久久 | 午夜精品一二三区 | 成人免费无码大片a毛片 | 国产欧美123| 综合影院| www.视频一区 | 一级黄色片在线观看 | 爱豆国产剧免费观看大全剧集 | 国产老女人乱淫免费 | 三级小说视频 | www.精品国产| 五十路六十路 | 波多野结衣之潜藏淫欲 | 69精品 | 久久精品视频一区二区三区 | 亚洲天堂网站 | 亚洲男女一区二区三区 | 国产视频一区二 | 香蕉影院在线观看 | 三上悠亚ssⅰn939无码播放 | 不卡在线播放 | 欧美肉丝袜videos办公室 | 欧美三级影院 | 日本精品成人 | 欧美亚洲一级片 | gogo人体做爰aaaa| 欧美成人久久 | 亚洲免费av电影 | 中文字幕免费观看 | 老外一级片 | 羞羞动漫在线观看 | 亚洲国产中文在线 | 污黄网站在线观看 | 亚洲观看黄色网 | 少妇高潮淫片免费观看 | 少妇特黄一区二区 | 中文字幕乱码在线 | 免费又黄又爽又色的视频 | 日本精品一区二区三区视频 | 免费的黄色小视频 | 青青草国产成人av片免费 | 色综合久久天天综合网 | 国产毛片毛片毛片毛片毛片 | 岛国精品一区 | 国精品一区二区三区 | 中文字幕第九页 | 国产一区二区三区视频播放 | 国产精品一二三四区 | www.夜夜操 | 免费观看成人鲁鲁鲁鲁鲁视频 | 999xxxxx| 日本一区欧美 | 日韩精品欧美精品 | 日韩欧美亚洲天堂 | 午夜精品免费视频 | 福利社区一区二区 | 色噜噜日韩精品欧美一区二区 | 国产大屁股喷水视频在线观看 | 国产成人精品aa毛片 |