成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

Python3爬蟲里中文分詞的方法是什么

Python3爬蟲里中文分詞的方法是什么?這個(gè)問題可能是我們?nèi)粘W(xué)習(xí)或工作經(jīng)常見到的。希望通過這個(gè)問題能讓你收獲頗深。下面是小編給大家?guī)淼膮⒖純?nèi)容,讓我們一起來看看吧!

成都創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)、成都網(wǎng)站制作、網(wǎng)站營(yíng)銷推廣、網(wǎng)站開發(fā)設(shè)計(jì),對(duì)服務(wù)護(hù)欄打樁機(jī)等多個(gè)行業(yè)擁有豐富的網(wǎng)站建設(shè)及推廣經(jīng)驗(yàn)。成都創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司成立于2013年,提供專業(yè)網(wǎng)站制作報(bào)價(jià)服務(wù),我們深知市場(chǎng)的競(jìng)爭(zhēng)激烈,認(rèn)真對(duì)待每位客戶,為客戶提供賞心悅目的作品。 與客戶共同發(fā)展進(jìn)步,是我們永遠(yuǎn)的責(zé)任!

原理

中文分詞,即 Chinese Word Segmentation,即將一個(gè)漢字序列進(jìn)行切分,得到一個(gè)個(gè)單獨(dú)的詞。表面上看,分詞其實(shí)就是那么回事,但分詞效果好不好對(duì)信息檢索、實(shí)驗(yàn)結(jié)果還是有很大影響的,同時(shí)分詞的背后其實(shí)是涉及各種各樣的算法的。

中文分詞與英文分詞有很大的不同,對(duì)英文而言,一個(gè)單詞就是一個(gè)詞,而漢語是以字為基本的書寫單位,詞語之間沒有明顯的區(qū)分標(biāo)記,需要人為切分。根據(jù)其特點(diǎn),可以把分詞算法分為四大類:

·基于規(guī)則的分詞方法

·基于統(tǒng)計(jì)的分詞方法

·基于語義的分詞方法

·基于理解的分詞方法

下面我們對(duì)這幾種方法分別進(jìn)行總結(jié)。

基于規(guī)則的分詞方法

這種方法又叫作機(jī)械分詞方法、基于字典的分詞方法,它是按照一定的策略將待分析的漢字串與一個(gè)“充分大的”機(jī)器詞典中的詞條進(jìn)行匹配。若在詞典中找到某個(gè)字符串,則匹配成功。該方法有三個(gè)要素,即分詞詞典、文本掃描順序和匹配原則。文本的掃描順序有正向掃描、逆向掃描和雙向掃描。匹配原則主要有最大匹配、最小匹配、逐詞匹配和最佳匹配。

·最大匹配法(MM)?;舅枷胧牵杭僭O(shè)自動(dòng)分詞詞典中的最長(zhǎng)詞條所含漢字的個(gè)數(shù)為 i,則取被處理材料當(dāng)前字符串序列中的前 i 個(gè)字符作為匹配字段,查找分詞詞典,若詞典中有這樣一個(gè) i 字詞,則匹配成功,匹配字段作為一個(gè)詞被切分出來;若詞典中找不到這樣的一個(gè) i 字詞,則匹配失敗,匹配字段去掉最后一個(gè)漢字,剩下的字符作為新的匹配字段,再進(jìn)行匹配,如此進(jìn)行下去,直到匹配成功為止。統(tǒng)計(jì)結(jié)果表明,該方法的錯(cuò)誤率 為 1/169。

·逆向最大匹配法(RMM)。該方法的分詞過程與 MM 法相同,不同的是從句子(或文章)末尾開始處理,每次匹配不成功時(shí)去掉的是前面的一個(gè)漢字。統(tǒng)計(jì)結(jié)果表明,該方法的錯(cuò)誤率為 1/245。

·逐詞遍歷法。把詞典中的詞按照由長(zhǎng)到短遞減的順序逐字搜索整個(gè)待處理的材料,一直到把全部的詞切分出來為止。不論分詞詞典多大,被處理的材料多么小,都得把這個(gè)分詞詞典匹配一遍。

·設(shè)立切分標(biāo)志法。切分標(biāo)志有自然和非自然之分。自然切分標(biāo)志是指文章中出現(xiàn)的非文字符號(hào),如標(biāo)點(diǎn)符號(hào)等;非自然標(biāo)志是利用詞綴和不構(gòu)成詞的詞(包 括單音詞、復(fù)音節(jié)詞以及象聲詞等)。設(shè)立切分標(biāo)志法首先收集眾多的切分標(biāo)志,分詞時(shí)先找出切分標(biāo)志,把句子切分為一些較短的字段,再用 MM、RMM 或其它的方法進(jìn)行細(xì)加工。這種方法并非真正意義上的分詞方法,只是自動(dòng)分詞的一種前處理方式而已,它要額外消耗時(shí)間掃描切分標(biāo)志,增加存儲(chǔ)空間存放那些非 自然切分標(biāo)志。

·最佳匹配法(OM)。此法分為正向的最佳匹配法和逆向的最佳匹配法,其出發(fā)點(diǎn)是:在詞典中按詞頻的大小順序排列詞條,以求縮短對(duì)分詞詞典的檢索時(shí) 間,達(dá)到最佳效果,從而降低分詞的時(shí)間復(fù)雜度,加快分詞速度。實(shí)質(zhì)上,這種方法也不是一種純粹意義上的分詞方法,它只是一種對(duì)分詞詞典的組織方式。OM 法的分詞詞典每條詞的前面必須有指明長(zhǎng)度的數(shù)據(jù)項(xiàng),所以其空間復(fù)雜度有所增加,對(duì)提高分詞精度沒有影響,分詞處理的時(shí)間復(fù)雜度有所降低。

此種方法優(yōu)點(diǎn)是簡(jiǎn)單,易于實(shí)現(xiàn)。但缺點(diǎn)有很多:匹配速度慢;存在交集型和組合型歧義切分問題;詞本身沒有一個(gè)標(biāo)準(zhǔn)的定義,沒有統(tǒng)一標(biāo)準(zhǔn)的詞集;不同詞典產(chǎn)生的歧義也不同;缺乏自學(xué)習(xí)的智能性。

基于統(tǒng)計(jì)的分詞方法

該方法的主要思想:詞是穩(wěn)定的組合,因此在上下文中,相鄰的字同時(shí)出現(xiàn)的次數(shù)越多,就越有可能構(gòu)成一個(gè)詞。因此字與字相鄰出現(xiàn)的概率或頻率能較好地反映成詞的可信度。可以對(duì)訓(xùn)練文本中相鄰出現(xiàn)的各個(gè)字的組合的頻度進(jìn)行統(tǒng)計(jì),計(jì)算它們之間的互現(xiàn)信息?;ガF(xiàn)信息體現(xiàn)了漢字之間結(jié)合關(guān)系的緊密程度。當(dāng)緊密程 度高于某一個(gè)閾值時(shí),便可以認(rèn)為此字組可能構(gòu)成了一個(gè)詞。該方法又稱為無字典分詞。

該方法所應(yīng)用的主要的統(tǒng)計(jì)模型有:N 元文法模型(N-gram)、隱馬爾可夫模型(Hiden Markov Model,HMM)、最大熵模型(ME)、條件隨機(jī)場(chǎng)模型(Conditional Random Fields,CRF)等。

在實(shí)際應(yīng)用中此類分詞算法一般是將其與基于詞典的分詞方法結(jié)合起來,既發(fā)揮匹配分詞切分速度快、效率高的特點(diǎn),又利用了無詞典分詞結(jié)合上下文識(shí)別生詞、自動(dòng)消除歧義的優(yōu)點(diǎn)。

基于語義的分詞方法

語義分詞法引入了語義分析,對(duì)自然語言自身的語言信息進(jìn)行更多的處理,如擴(kuò)充轉(zhuǎn)移網(wǎng)絡(luò)法、知識(shí)分詞語義分析法、鄰接約束法、綜合匹配法、后綴分詞法、特征詞庫(kù)法、矩陣約束法、語法分析法等。

·擴(kuò)充轉(zhuǎn)移網(wǎng)絡(luò)法。該方法以有限狀態(tài)機(jī)概念為基礎(chǔ)。有限狀態(tài)機(jī)只能識(shí)別正則語言,對(duì)有限狀態(tài)機(jī)作的第一次擴(kuò)充使其具有遞歸能力,形成遞歸轉(zhuǎn)移網(wǎng)絡(luò) (RTN)。在RTN 中,弧線上的標(biāo)志不僅可以是終極符(語言中的單詞)或非終極符(詞類),還可以調(diào)用另外的子網(wǎng)絡(luò)名字分非終極符(如字或字串的成詞條件)。這樣,計(jì)算機(jī)在 運(yùn)行某個(gè)子網(wǎng)絡(luò)時(shí),就可以調(diào)用另外的子網(wǎng)絡(luò),還可以遞歸調(diào)用。詞法擴(kuò)充轉(zhuǎn)移網(wǎng)絡(luò)的使用, 使分詞處理和語言理解的句法處理階段交互成為可能,并且有效地解決了漢語分詞的歧義。

·矩陣約束法。其基本思想是:先建立一個(gè)語法約束矩陣和一個(gè)語義約束矩陣, 其中元素分別表明具有某詞性的詞和具有另一詞性的詞相鄰是否符合語法規(guī)則, 屬于某語義類的詞和屬于另一詞義類的詞相鄰是否符合邏輯,機(jī)器在切分時(shí)以之約束分詞結(jié)果。

基于理解的分詞方法

基于理解的分詞方法是通過讓計(jì)算機(jī)模擬人對(duì)句子的理解,達(dá)到識(shí)別詞的效果。其基本思想就是在分詞的同時(shí)進(jìn)行句法、語義分析,利用句法信息和語義信息來處理歧義現(xiàn)象。它通常包括三個(gè)部分:分詞子系統(tǒng)、句法語義子系統(tǒng)、總控部分。在總控部分的協(xié)調(diào)下,分詞子系統(tǒng)可以獲得有關(guān)詞、句子等的句法和語義信息來對(duì)分詞歧義進(jìn)行判斷,即它模擬了人對(duì)句子的理解過程。這種分詞方法需要使用大量的語言知識(shí)和信息。目前基于理解的分詞方法主要有專家系統(tǒng)分詞法和神經(jīng)網(wǎng)絡(luò)分詞法等。

·專家系統(tǒng)分詞法。從專家系統(tǒng)角度把分詞的知識(shí)(包括常識(shí)性分詞知識(shí)與消除歧義切分的啟發(fā)性知識(shí)即歧義切分規(guī)則)從實(shí)現(xiàn)分詞過程的推理機(jī)中獨(dú)立出來,使知識(shí)庫(kù)的維護(hù)與推理機(jī)的實(shí)現(xiàn)互不干擾,從而使知識(shí)庫(kù)易于維護(hù)和管理。它還具有發(fā)現(xiàn)交集歧義字段和多義組合歧義字段的能力和一定的自學(xué)習(xí)功能。

·神經(jīng)網(wǎng)絡(luò)分詞法。該方法是模擬人腦并行,分布處理和建立數(shù)值計(jì)算模型工作的。它將分詞知識(shí)所分散隱式的方法存入神經(jīng)網(wǎng)絡(luò)內(nèi)部,通過自學(xué)習(xí)和訓(xùn)練修改內(nèi)部權(quán)值,以達(dá)到正確的分詞結(jié)果,最后給出神經(jīng)網(wǎng)絡(luò)自動(dòng)分詞結(jié)果,如使用 LSTM、GRU 等神經(jīng)網(wǎng)絡(luò)模型等。

·神經(jīng)網(wǎng)絡(luò)專家系統(tǒng)集成式分詞法。該方法首先啟動(dòng)神經(jīng)網(wǎng)絡(luò)進(jìn)行分詞,當(dāng)神經(jīng)網(wǎng)絡(luò)對(duì)新出現(xiàn)的詞不能給出準(zhǔn)確切分時(shí),激活專家系統(tǒng)進(jìn)行分析判斷,依據(jù)知識(shí)庫(kù)進(jìn)行推理,得出初步分析,并啟動(dòng)學(xué)習(xí)機(jī)制對(duì)神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練。該方法可以較充分發(fā)揮神經(jīng)網(wǎng)絡(luò)與專家系統(tǒng)二者優(yōu)勢(shì),進(jìn)一步提高分詞效率。

以上便是對(duì)分詞算法的基本介紹,接下來我們?cè)俳榻B幾個(gè)比較實(shí)用的分詞 Python 庫(kù)及它們的使用方法。

分詞工具

在這里介紹幾個(gè)比較有代表性的支持分詞的 Python 庫(kù),主要有:

1. jieba

專用于分詞的 Python 庫(kù),GitHub:https://github.com/fxsjy/jieba,分詞效果較好。

支持三種分詞模式:

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

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

    ·搜索引擎模式:在精確模式的基礎(chǔ)上,對(duì)長(zhǎng)詞再次切分,提高召回率,適用于搜索引擎分詞。

另外 jieba 支持繁體分詞,支持自定義詞典。

其使用的算法是基于統(tǒng)計(jì)的分詞方法,主要有如下幾種:

    ·基于前綴詞典實(shí)現(xiàn)高效的詞圖掃描,生成句子中漢字所有可能成詞情況所構(gòu)成的有向無環(huán)圖 (DAG);

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

    ·對(duì)于未登錄詞,采用了基于漢字成詞能力的 HMM 模型,使用了 Viterbi 算法。

精確模式分詞

首先我們來看下精確模式分詞,使用 lcut() 方法,類似 cut() 方法,其參數(shù)和 cut() 是一致的,只不過返回結(jié)果是列表而不是生成器,默認(rèn)使用精確模式,代碼如下:

import jieba
string = '這個(gè)把手該換了,我不喜歡日本和服,別把手放在我的肩膀上,工信處女干事每月經(jīng)過下屬科室都要親口交代24口
交換機(jī)等技術(shù)性器件的安裝工作'
result = jieba.lcut(string)
print(len(result), '/'.join(result))

結(jié)果:

38 這個(gè)/把手/該換/了/,/我/不/喜歡/日本/和服/,/別/把手/放在/我/的/肩膀/上/,/工信處/女干事/每月/經(jīng)過/下屬/科室
/都/要/親口/交代/24/口/交換機(jī)/等/技術(shù)性/器件/的/安裝/工作

可見分詞效果還是不錯(cuò)的。

全模式分詞

使用全模式分詞需要添加 cut_all 參數(shù),將其設(shè)置為 True,代碼如下:

result = jieba.lcut(string, cut_all=True)
print(len(result), '/'.join(result))

結(jié)果如下:

51 這個(gè)/把手/該換/了///我/不/喜歡/日本/和服///別/把手/放在/我/的/肩膀/上///工信處/處女/女干事/干事/每月/月經(jīng)
/經(jīng)過/下屬/科室/都/要/親口/口交/交代/24/口交/交換/交換機(jī)/換機(jī)/等/技術(shù)/技術(shù)性/性器/器件/的/安裝/安裝工/裝工/工作

搜索引擎模式分詞

使用搜索引擎模式分詞需要調(diào)用 cut_for_search() 方法,代碼如下:

result = jieba.lcut_for_search(string)
print(len(result), '/'.join(result))

結(jié)果如下:

42 這個(gè)/把手/該換/了/,/我/不/喜歡/日本/和服/,/別/把手/放在/我/的/肩膀/上/,/工信處/干事/女干事/每月/經(jīng)過/下屬
/科室/都/要/親口/交代/24/口/交換/換機(jī)/交換機(jī)/等/技術(shù)/技術(shù)性/器件/的/安裝/工作

另外可以加入自定義詞典,如我們想把 日本和服 作為一個(gè)整體,可以把它添加到詞典中,代碼如下:

jieba.add_word('日本和服')
result = jieba.lcut(string)
print(len(result), '/'.join(result))

結(jié)果如下:

37 這個(gè)/把手/該換/了/,/我/不/喜歡/日本和服/,/別/把手/放在/我/的/肩膀/上/,/工信處/女干事/每月/經(jīng)過/下屬/科室
/都/要/親口/交代/24/口/交換機(jī)/等/技術(shù)性/器件/的/安裝/工作

可以看到切分結(jié)果中,日本和服 四個(gè)字就作為一個(gè)整體出現(xiàn)在結(jié)果中了,分詞數(shù)量比精確模式少了一個(gè)。

詞性標(biāo)注

另外 jieba 還支持詞性標(biāo)注,可以輸出分詞后每個(gè)詞的詞性,實(shí)例如下:

words = pseg.lcut(string)
print(list(map(lambda x: list(x), words)))

運(yùn)行結(jié)果:

[['這個(gè)', 'r'], ['把手', 'v'], ['該', 'r'], ['換', 'v'], ['了', 'ul'], [',', 'x'], ['我', 'r'], ['不', 'd'], 
['喜歡', 'v'], ['日本和服', 'x'], [',', 'x'], ['別', 'r'], ['把手', 'v'], ['放在', 'v'], ['我', 'r'], ['的', 'uj'], 
['肩膀', 'n'], ['上', 'f'], [',', 'x'], ['工信處', 'n'], ['女干事', 'n'], ['每月', 'r'], ['經(jīng)過', 'p'], 
['下屬', 'v'], ['科室', 'n'], ['都', 'd'], ['要', 'v'], ['親口', 'n'], ['交代', 'n'], ['24', 'm'], ['口', 'n'], 
['交換機(jī)', 'n'], ['等', 'u'], ['技術(shù)性', 'n'], ['器件', 'n'], ['的', 'uj'], ['安裝', 'v'], ['工作', 'vn']]

關(guān)于詞性的說明可以參考:https://gist.github.com/luw2007/6016931。

2. SnowNLP

SnowNLP: Simplified Chinese Text Processing,可以方便的處理中文文本內(nèi)容,是受到了 TextBlob 的啟發(fā)而寫的,由于現(xiàn)在大部分的自然語言處理庫(kù)基本都是針對(duì)英文的,于是寫了一個(gè)方便處理中文的類庫(kù),并且和 TextBlob 不同的是,這里沒有用 NLTK,所有的算法都是自己實(shí)現(xiàn)的,并且自帶了一些訓(xùn)練好的字典。GitHub地址:https://github.com/isnowfy/snownlp。

分詞

這里的分詞是基于 Character-Based Generative Model 來實(shí)現(xiàn)的,論文地址:http://aclweb.org/anthology//Y/Y09/Y09-2047.pdf,我們還是以上面的例子說明,相關(guān)使用說明如下:

from snownlp import SnowNLP
string = '這個(gè)把手該換了,我不喜歡日本和服,別把手放在我的肩膀上,工信處女干事每月經(jīng)過下屬科室都要親口交代24口
交換機(jī)等技術(shù)性器件的安裝工作'
s = SnowNLP(string)
result = s.words
print(len(result), '/'.join(result))

運(yùn)行結(jié)果:

40 這個(gè)/把手/該/換/了/,/我/不/喜歡/日本/和/服/,/別把手/放在/我/的/肩膀/上/,/工/信處女/干事/每月/經(jīng)過/下屬/科室
/都/要/親口/交代/24/口/交換機(jī)/等/技術(shù)性/器件/的/安裝/工作

經(jīng)過觀察,可以發(fā)現(xiàn)分詞效果其實(shí)不怎么理想,和服 被分開了,工信處 也被分開了,女干事 也被分開了。

另外 SnowNLP 還支持很多功能,例如詞性標(biāo)注(HMM)、情感分析、拼音轉(zhuǎn)換(Trie樹)、關(guān)鍵詞和摘要生成(TextRank)。

我們簡(jiǎn)單看一個(gè)實(shí)例:

print('Tags:', list(s.tags))
print('Sentiments:', s.sentiments)
print('Pinyin:', s.pinyin)

運(yùn)行結(jié)果:

Tags: [('這個(gè)', 'r'), ('把手', 'Ng'), ('該', 'r'), ('換', 'v'), ('了', 'y'), (',', 'w'), ('我', 'r'), ('不', 'd'), 
('喜歡', 'v'), ('日本', 'ns'), ('和', 'c'), ('服', 'v'), (',', 'w'), ('別把手', 'ad'), ('放在', 'v'), ('我', 'r'), 
('的', 'u'), ('肩膀', 'n'), ('上', 'f'), (',', 'w'), ('工', 'j'), ('信處女', 'j'), ('干事', 'n'), ('每月', 'r'), 
('經(jīng)過', 'p'), ('下屬', 'v'), ('科室', 'n'), ('都', 'd'), ('要', 'v'), ('親口', 'd'), ('交代', 'v'), ('24', 'm'), 
('口', 'q'), ('交換機(jī)', 'n'), ('等', 'u'), ('技術(shù)性', 'n'), ('器件', 'n'), ('的', 'u'), ('安裝', 'vn'), ('工作', 'vn')]
Sentiments: 0.015678817603646866
Pinyin: ['zhe', 'ge', 'ba', 'shou', 'gai', 'huan', 'liao', ',', 'wo', 'bu', 'xi', 'huan', 'ri', 'ben', 'he', 'fu', 
',', 'bie', 'ba', 'shou', 'fang', 'zai', 'wo', 'de', 'jian', 'bang', 'shang', ',', 'gong', 'xin', 'chu', 'nv', 
'gan', 'shi', 'mei', 'yue', 'jing', 'guo', 'xia', 'shu', 'ke', 'shi', 'dou', 'yao', 'qin', 'kou', 'jiao', 'dai', 
'24', 'kou', 'jiao', 'huan', 'ji', 'deng', 'ji', 'shu', 'xing', 'qi', 'jian', 'de', 'an', 'zhuang', 'gong', 'zuo']

3. THULAC

THULAC(THU Lexical Analyzer for Chinese)由清華大學(xué)自然語言處理與社會(huì)人文計(jì)算實(shí)驗(yàn)室研制推出的一套中文詞法分析工具包,GitHub 鏈接:https://github.com/thunlp/THULAC-Python,具有中文分詞和詞性標(biāo)注功能。THULAC具有如下幾個(gè)特點(diǎn):

能力強(qiáng)。利用集成的目前世界上規(guī)模最大的人工分詞和詞性標(biāo)注中文語料庫(kù)(約含5800萬字)訓(xùn)練而成,模型標(biāo)注能力強(qiáng)大。

準(zhǔn)確率高。該工具包在標(biāo)準(zhǔn)數(shù)據(jù)集Chinese Treebank(CTB5)上分詞的F1值可達(dá)97.3%,詞性標(biāo)注的F1值可達(dá)到92.9%,與該數(shù)據(jù)集上最好方法效果相當(dāng)。

速度較快。同時(shí)進(jìn)行分詞和詞性標(biāo)注速度為300KB/s,每秒可處理約15萬字。只進(jìn)行分詞速度可達(dá)到1.3MB/s。

我們用一個(gè)實(shí)例看一下分詞效果:

import thulac
string = '這個(gè)把手該換了,我不喜歡日本和服,別把手放在我的肩膀上,工信處女干事每月經(jīng)過下屬科室都要親口交代24口
交換機(jī)等技術(shù)性器件的安裝工作'
t = thulac.thulac()
result = t.cut(string)
print(result)

運(yùn)行結(jié)果:

[['這個(gè)', 'r'], ['把手', 'n'], ['該', 'v'], ['換', 'v'], ['了', 'u'], [',', 'w'], ['我', 'r'], ['不', 'd'], 
['喜歡', 'v'], ['日本', 'ns'], ['和服', 'n'], [',', 'w'], ['別把手', 'n'], ['放', 'v'], ['在', 'p'], ['我', 'r'], 
['的', 'u'], ['肩膀', 'n'], ['上', 'f'], [',', 'w'], ['工信處', 'n'], ['女', 'a'], ['干事', 'n'], ['每月', 'r'], 
['經(jīng)過', 'p'], ['下屬', 'v'], ['科室', 'n'], ['都', 'd'], ['要', 'v'], ['親口', 'd'], ['交代', 'v'], ['24', 'm'], 
['口', 'q'], ['交換機(jī)', 'n'], ['等', 'u'], ['技術(shù)性', 'n'], ['器件', 'n'], ['的', 'u'], ['安裝', 'v'], ['工作', 'v']]

4. NLPIR

NLPIR 分詞系統(tǒng),前身為2000年發(fā)布的 ICTCLAS 詞法分析系統(tǒng),GitHub 鏈接:https://github.com/NLPIR-team/NLPIR,是由北京理工大學(xué)張華平博士研發(fā)的中文分詞系統(tǒng),經(jīng)過十余年的不斷完善,擁有豐富的功能和強(qiáng)大的性能。NLPIR是一整套對(duì)原始文本集進(jìn)行處理和加工的軟件,提供了中間件處理效果的可視化展示,也可以作為小規(guī)模數(shù)據(jù)的處理加工工具。主要功能包括:中文分詞,詞性標(biāo)注,命名實(shí)體識(shí)別,用戶詞典、新詞發(fā)現(xiàn)與關(guān)鍵詞提取等功能。另外對(duì)于分詞功能,它有 Python 實(shí)現(xiàn)的版本,GitHub 鏈接:https://github.com/tsroten/pynlpir。

使用方法如下:

import pynlpir
pynlpir.open()
string = '這個(gè)把手該換了,我不喜歡日本和服,別把手放在我的肩膀上,工信處女干事每月經(jīng)過下屬科室都要親口交代24口
交換機(jī)等技術(shù)性器件的安裝工作'
result = pynlpir.segment(string)
print(result)

運(yùn)行結(jié)果如下:

[('這個(gè)', 'pronoun'), ('把', 'preposition'), ('手', 'noun'), ('該', 'pronoun'), ('換', 'verb'), 
('了', 'modal particle'), (',', 'punctuation mark'), ('我', 'pronoun'), ('不', 'adverb'), ('喜歡', 'verb'), 
('日本', 'noun'), ('和', 'conjunction'), ('服', 'verb'), (',', 'punctuation mark'), ('別', 'adverb'), 
('把', 'preposition'), ('手', 'noun'), ('放', 'verb'), ('在', 'preposition'), ('我', 'pronoun'), ('的', 'particle'), 
('肩膀', 'noun'), ('上', 'noun of locality'), (',', 'punctuation mark'), ('工', 'noun'), ('信', 'noun'), 
('處女', 'noun'), ('干事', 'noun'), ('每月', 'pronoun'), ('經(jīng)過', 'preposition'), ('下屬', 'verb'), ('科室', 'noun'), 
('都', 'adverb'), ('要', 'verb'), ('親口', 'adverb'), ('交代', 'verb'), ('24', 'numeral'), ('口', 'classifier'), 
('交換機(jī)', 'noun'), ('等', 'particle'), ('技術(shù)性', 'noun'), ('器件', 'noun'), ('的', 'particle'), ('安裝', 'verb'), 
('工作', 'verb')]

這里 把手 和 和服 也被分開了。

5. NLTK

NLTK,Natural Language Toolkit,是一個(gè)自然語言處理的包工具,各種多種 NLP 處理相關(guān)功能,GitHub 鏈接:https://github.com/nltk/nltk。

但是 NLTK 對(duì)于中文分詞是不支持的,示例如下:

from nltk import word_tokenize
string = '這個(gè)把手該換了,我不喜歡日本和服,別把手放在我的肩膀上,工信處女干事每月經(jīng)過下屬科室都要親口交代24口
交換機(jī)等技術(shù)性器件的安裝工作'
result = word_tokenize(string)
print(result)

結(jié)果:

['這個(gè)把手該換了,我不喜歡日本和服,別把手放在我的肩膀上,工信處女干事每月經(jīng)過下屬科室都要親口交代24口交換機(jī)等
技術(shù)性器件的安裝工作']

如果要用中文分詞的話,可以使用 FoolNLTK,它使用 Bi-LSTM 訓(xùn)練而成,包含分詞、詞性標(biāo)注、實(shí)體識(shí)別等功能,同時(shí)支持自定義詞典,可以訓(xùn)練自己的模型,可以進(jìn)行批量處理。

使用方法如下:

import fool
string = '這個(gè)把手該換了,我不喜歡日本和服,別把手放在我的肩膀上,工信處女干事每月經(jīng)過下屬科室都要親口交代24口交換機(jī)
等技術(shù)性器件的安裝工作'
result = fool.cut(string)
print(result)

運(yùn)行結(jié)果:

[['這個(gè)', '把手', '該', '換', '了', ',', '我', '不', '喜歡', '日本', '和服', ',', '別', '把', '手', '放', '在', 
'我', '的', '肩膀', '上', ',', '工信處', '女', '干事', '每月', '經(jīng)過', '下屬', '科室', '都', '要', '親', '口', 
'交代', '24', '口', '交換機(jī)', '等', '技術(shù)性', '器件', '的', '安裝', '工作']]

可以看到這個(gè)分詞效果還是不錯(cuò)的。

另外還可以進(jìn)行詞性標(biāo)注,實(shí)體識(shí)別:

result = fool.pos_cut(string)
print(result)
_, ners = fool.analysis(string)
print(ners)

運(yùn)行結(jié)果:

[[('這個(gè)', 'r'), ('把手', 'n'), ('該', 'r'), ('換', 'v'), ('了', 'y'), (',', 'wd'), ('我', 'r'), ('不', 'd'), 
('喜歡', 'vi'), ('日本', 'ns'), ('和服', 'n'), (',', 'wd'), ('別', 'd'), ('把', 'pba'), ('手', 'n'), ('放', 'v'), 
('在', 'p'), ('我', 'r'), ('的', 'ude'), ('肩膀', 'n'), ('上', 'f'), (',', 'wd'), ('工信處', 'ns'), ('女', 'b'), 
('干事', 'n'), ('每月', 'r'), ('經(jīng)過', 'p'), ('下屬', 'v'), ('科室', 'n'), ('都', 'd'), ('要', 'v'), ('親', 'a'), 
('口', 'n'), ('交代', 'v'), ('24', 'm'), ('口', 'q'), ('交換機(jī)', 'n'), ('等', 'udeng'), ('技術(shù)性', 'n'), 
('器件', 'n'), ('的', 'ude'), ('安裝', 'n'), ('工作', 'n')]]
[[(12, 15, 'location', '日本')]]

6. LTP

語言技術(shù)平臺(tái)(Language Technology Platform,LTP)是哈工大社會(huì)計(jì)算與信息檢索研究中心歷時(shí)十年開發(fā)的一整套中文語言處理系統(tǒng)。LTP制定了基于XML的語言處理結(jié)果表示,并在此基礎(chǔ)上提供了一整套自底向上的豐富而且高效的中文語言處理模塊(包括詞法、句法、語義等6項(xiàng)中文處理核心技術(shù)),以及基于動(dòng)態(tài)鏈接庫(kù)(Dynamic Link Library, DLL)的應(yīng)用程序接口、可視化工具,并且能夠以網(wǎng)絡(luò)服務(wù)(Web Service)的形式進(jìn)行使用。

LTP 有 Python 版本,GitHub地址:https://github.com/HIT-SCIR/pyltp,另外運(yùn)行的時(shí)候需要下載模型,模型還比較大,下載地址:http://ltp.ai/download.html。

示例代碼如下:

from pyltp import Segmentor
string = '這個(gè)把手該換了,我不喜歡日本和服,別把手放在我的肩膀上,工信處女干事每月經(jīng)過下屬科室都要親口交代24口交換機(jī)
等技術(shù)性器件的安裝工作'
segmentor = Segmentor()
segmentor.load('./cws.model')
result = list(segmentor.segment(string))
segmentor.release()
print(result)

運(yùn)行結(jié)果:

41 這個(gè)/把手/該/換/了/,/我/不/喜歡/日本/和服/,/別/把/手/放在/我/的/肩膀/上/,/工信/處女/干事/每月/經(jīng)過/下屬/科室
/都/要/親口/交代/24/口/交換機(jī)/等/技術(shù)性/器件/的/安裝/工作

可以發(fā)現(xiàn) 工信處、女干事 沒有正確分開。

感謝各位的閱讀!看完上述內(nèi)容,你們對(duì)Python3爬蟲里中文分詞的方法是什么大概了解了嗎?希望文章內(nèi)容對(duì)大家有所幫助。如果想了解更多相關(guān)文章內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

網(wǎng)站名稱:Python3爬蟲里中文分詞的方法是什么
文章出自:http://jinyejixie.com/article2/ggsgic.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營(yíng)銷推廣、用戶體驗(yàn)網(wǎng)站策劃、網(wǎng)頁設(shè)計(jì)公司、網(wǎng)站制作、建站公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計(jì)公司
西和县| 沿河| 宁化县| 铜川市| 临安市| 福海县| 邵阳县| 额敏县| 白河县| 雷山县| 通海县| 雷山县| 阳西县| 遂川县| 张家港市| 资兴市| 东兰县| 岳阳市| 凉城县| 道真| 金门县| 谢通门县| 高雄市| 海林市| 绥江县| 黎城县| 沈丘县| 子洲县| 襄垣县| 和林格尔县| 库尔勒市| 老河口市| 江孜县| 博野县| 牙克石市| 鹤壁市| 洪江市| 攀枝花市| 明星| 离岛区| 普格县|