日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

Python自然语言处理工具包推荐

發(fā)布時(shí)間:2025/3/21 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python自然语言处理工具包推荐 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

結(jié)巴分詞

就是前面說的中文分詞,這里需要介紹的是一個(gè)分詞效果較好,使用起來像但方便的Python模塊:結(jié)巴。

結(jié)巴中文分詞采用的算法

  • 基于Trie樹結(jié)構(gòu)實(shí)現(xiàn)高效的詞圖掃描,生成句子中漢字所有可能成詞情況所構(gòu)成的有向無環(huán)圖(DAG)

  • 采用了動態(tài)規(guī)劃查找最大概率路徑, 找出基于詞頻的最大切分組合

  • 對于未登錄詞,采用了基于漢字成詞能力的HMM模型,使用了Viterbi算法

結(jié)巴中文分詞支持的分詞模式

目前結(jié)巴分詞支持三種分詞模式:

  • 精確模式,試圖將句子最精確地切開,適合文本分析;

  • 全模式,把句子中所有的可以成詞的詞語都掃描出來, 速度非常快,但是不能解決歧義;

  • 搜索引擎模式,在精確模式的基礎(chǔ)上,對長詞再次切分,提高召回率,適合用于搜索引擎分詞。

使用方法如下:

# -*- coding:utf-8 -*-import jiebatext = '我來到北京清華大學(xué)' default_mode = jieba.cut(text)full_mode = jieba.cut(text,cut_all=True)search_mode = jieba.cut_for_search(text)print("精確模式:","/".join(default_mode))print("全模式:","/".join(full_mode))print("搜索引擎模式:","/".join(search_mode))

返回的數(shù)據(jù)如下:

上述代碼解釋:

  • cut方法接受兩個(gè)輸入?yún)?shù): 1) 第一個(gè)參數(shù)為需要分詞的字符串 2)cut_all參數(shù)用來控制是否采用全模式,默認(rèn)不采用。

  • cut_for_search方法接受一個(gè)參數(shù):需要分詞的字符串,該方法適合用于搜索引擎構(gòu)建倒排索引的分詞,粒度比較細(xì)

  • 注意:待分詞的字符串可以是gbk字符串、utf-8字符串或者unicode

  • cut以及jieba.cut_for_search返回的結(jié)構(gòu)都是一個(gè)可迭代的generator,可以使用for循環(huán)來獲得分詞后得到的每一個(gè)詞語(unicode),也可以用list(jieba.cut(…))轉(zhuǎn)化為list

結(jié)巴中文分詞的其他功能

1、添加或管理自定義詞典

結(jié)巴的所有字典內(nèi)容存放在dict.txt,你可以不斷的完善dict.txt中的內(nèi)容。

2、關(guān)鍵詞抽取

通過計(jì)算分詞后的關(guān)鍵詞的TF/IDF權(quán)重,來抽取重點(diǎn)關(guān)鍵詞。

具體示例:

# -*- coding:utf-8 -*-import jieba.analyse text = "結(jié)巴中文分詞模塊是一個(gè)非常好的Python分詞組件"tags = jieba.analyse.extract_tags(text,2)print("關(guān)鍵詞抽取:","/".join(tags))

更多信息請查看:https://github.com/fxsjy/jieba/

北大pkuseg

pkuseg簡介

pkuseg是由北京大學(xué)語言計(jì)算與機(jī)器學(xué)習(xí)研究組研制推出的一套全新的中文分詞工具包。pkuseg具有如下幾個(gè)特點(diǎn):

  • 多領(lǐng)域分詞。不同于以往的通用中文分詞工具,此工具包同時(shí)致力于為不同領(lǐng)域的數(shù)據(jù)提供個(gè)性化的預(yù)訓(xùn)練模型。根據(jù)待分詞文本的領(lǐng)域特點(diǎn),用戶可以自由地選擇不同的模型。我們目前支持了新聞領(lǐng)域,網(wǎng)絡(luò)領(lǐng)域,醫(yī)藥領(lǐng)域,旅游領(lǐng)域,以及混合領(lǐng)域的分詞預(yù)訓(xùn)練模型。在使用中,如果用戶明確待分詞的領(lǐng)域,可加載對應(yīng)的模型進(jìn)行分詞。如果用戶無法確定具體領(lǐng)域,推薦使用在混合領(lǐng)域上訓(xùn)練的通用模型。各領(lǐng)域分詞樣例可參考txt。

  • 更高的分詞準(zhǔn)確率。相比于其他的分詞工具包,當(dāng)使用相同的訓(xùn)練數(shù)據(jù)和測試數(shù)據(jù),pkuseg可以取得更高的分詞準(zhǔn)確率。

  • 支持用戶自訓(xùn)練模型。支持用戶使用全新的標(biāo)注數(shù)據(jù)進(jìn)行訓(xùn)練。

  • 支持詞性標(biāo)注。

相關(guān)測試結(jié)果:

MSRAPrecisionRecallF-score
jieba87.0189.8888.42
THULAC95.6095.9195.71
pkuseg96.9496.8196.88

WEIBOPrecisionRecallF-score
jieba87.7987.5487.66
THULAC93.4092.4092.87
pkuseg93.7894.6594.21

DefaultMSRACTB8PKUWEIBOAll Average
jieba81.4579.5881.8383.5681.61
THULAC85.5587.8492.2986.6588.08
pkuseg87.2991.7792.6893.4391.29

pkuseg的使用

1、使用默認(rèn)配置進(jìn)行配置

import pkuseg seg = pkuseg.pkuseg() # 以默認(rèn)配置加載模型text = seg.cut('我愛北京天安門') # 進(jìn)行分詞print(text)

2、使用細(xì)分領(lǐng)域分詞(如果用戶明確分詞領(lǐng)域,推薦使用細(xì)領(lǐng)域模型分詞)

import pkuseg seg = pkuseg.pkuseg(model_name='medicine') # 程序會自動下載所對應(yīng)的細(xì)領(lǐng)域模型text = seg.cut('我愛北京天安門') # 進(jìn)行分詞print(text)

3、分詞同時(shí)進(jìn)行詞性標(biāo)注,各詞性標(biāo)簽的詳細(xì)含義可參考 tags.txt

import pkuseg seg = pkuseg.pkuseg(postag=True) # 開啟詞性標(biāo)注功能text = seg.cut('我愛北京天安門') # 進(jìn)行分詞和詞性標(biāo)注print(text)

4、對文件分詞

import pkuseg # 對input.txt的文件分詞輸出到output.txt中# 開8個(gè)進(jìn)程pkuseg.test('input.txt', 'output.txt', nthread=8)

5、額外使用用戶自定義詞典

import pkuseg seg = pkuseg.pkuseg(user_dict='my_dict.txt') # 給定用戶詞典為當(dāng)前目錄下的"my_dict.txt"text = seg.cut('我愛北京天安門') print(text)

模型配置:

pkuseg.pkuseg(model_name = "default", user_dict = "default", postag = False) model_name 模型路徑。 "default",默認(rèn)參數(shù),表示使用我們預(yù)訓(xùn)練好的混合領(lǐng)域模型(僅對pip下載的用戶)。 "news", 使用新聞領(lǐng)域模型。 "web", 使用網(wǎng)絡(luò)領(lǐng)域模型。 "medicine", 使用醫(yī)藥領(lǐng)域模型。 "tourism", 使用旅游領(lǐng)域模型。 model_path, 從用戶指定路徑加載模型。 user_dict 設(shè)置用戶詞典。 "default", 默認(rèn)參數(shù),使用我們提供的詞典。 None, 不使用詞典。 dict_path, 在使用默認(rèn)詞典的同時(shí)會額外使用用戶自定義詞典,可以填自己的用戶詞典的路徑,詞典格式為一行一個(gè)詞。 postag 是否進(jìn)行詞性分析。 False, 默認(rèn)參數(shù),只進(jìn)行分詞,不進(jìn)行詞性標(biāo)注。 True, 會在分詞的同時(shí)進(jìn)行詞性標(biāo)注。

對文件進(jìn)行分詞:

pkuseg.test(readFile, outputFile, model_name = "default", user_dict = "default", postag = False, nthread = 10) readFile 輸入文件路徑。 outputFile 輸出文件路徑。 model_name 模型路徑。同pkuseg.pkuseg user_dict 設(shè)置用戶詞典。同pkuseg.pkuseg postag 設(shè)置是否開啟詞性分析功能。同pkuseg.pkuseg nthread 測試時(shí)開的進(jìn)程數(shù)。

模型訓(xùn)練:

pkuseg.train(trainFile, testFile, savedir, train_iter = 20, init_model = None) trainFile 訓(xùn)練文件路徑。 testFile 測試文件路徑。 savedir 訓(xùn)練模型的保存路徑。 train_iter 訓(xùn)練輪數(shù)。 init_model 初始化模型,默認(rèn)為None表示使用默認(rèn)初始化,用戶可以填自己想要初始化的模型的路徑如init_model='./models/'。

pkuseg實(shí)戰(zhàn)

使用pkuseg 分詞+使用wordcloud顯示詞云:

import pkusegfrom collections import Counterimport pprintfrom wordcloud import WordCloudimport matplotlib.pyplot as plt with open("data/santisanbuqu_liucixin.txt", encoding="utf-8") as f: content = f.read() with open("data/CNENstopwords.txt", encoding="utf-8") as f: stopwords = f.read() lexicon = ['章北海', '汪淼', '葉文潔']seg = pkuseg.pkuseg(user_dict=lexicon)text = seg.cut(content) new_text = []for w in text: if w not in stopwords: new_text.append(w)counter = Counter(new_text)pprint.pprint(counter.most_common(50)) cut_text = " ".join(new_text) wordcloud = WordCloud(font_path="font/FZYingXueJW.TTF", background_color="white", width=800, height=600).generate( cut_text) plt.imshow(wordcloud, interpolation="bilinear")plt.axis("off")plt.show()

參考鏈接:https://github.com/lancopku/pkuseg-python

?

總結(jié)

以上是生活随笔為你收集整理的Python自然语言处理工具包推荐的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。