入门科普:一文看懂NLP和中文分词算法(附代码举例)
導(dǎo)讀:在人類社會(huì)中,語(yǔ)言扮演著重要的角色,語(yǔ)言是人類區(qū)別于其他動(dòng)物的根本標(biāo)志,沒(méi)有語(yǔ)言,人類的思維無(wú)從談起,溝通交流更是無(wú)源之水。
所謂“自然”乃是寓意自然進(jìn)化形成,是為了區(qū)分一些人造語(yǔ)言,類似C++、Java等人為設(shè)計(jì)的語(yǔ)言。
NLP的目的是讓計(jì)算機(jī)能夠處理、理解以及運(yùn)用人類語(yǔ)言,達(dá)到人與計(jì)算機(jī)之間的有效通訊。
作者:涂銘 劉祥 劉樹(shù)春
本文摘編自《Python自然語(yǔ)言處理實(shí)戰(zhàn):核心技術(shù)與算法》,如需轉(zhuǎn)載請(qǐng)聯(lián)系我們
01 什么是NLP
1. NLP的概念
NLP(Natural Language Processing,自然語(yǔ)言處理)是計(jì)算機(jī)科學(xué)領(lǐng)域以及人工智能領(lǐng)域的一個(gè)重要的研究方向,它研究用計(jì)算機(jī)來(lái)處理、理解以及運(yùn)用人類語(yǔ)言(如中文、英文等),達(dá)到人與計(jì)算機(jī)之間進(jìn)行有效通訊。
在一般情況下,用戶可能不熟悉機(jī)器語(yǔ)言,所以自然語(yǔ)言處理技術(shù)可以幫助這樣的用戶使用自然語(yǔ)言和機(jī)器交流。從建模的角度看,為了方便計(jì)算機(jī)處理,自然語(yǔ)言可以被定義為一組規(guī)則或符號(hào)的集合,我們組合集合中的符號(hào)來(lái)傳遞各種信息。
這些年,NLP研究取得了長(zhǎng)足的進(jìn)步,逐漸發(fā)展成為一門獨(dú)立的學(xué)科,從自然語(yǔ)言的角度出發(fā),NLP基本可以分為兩個(gè)部分:自然語(yǔ)言處理以及自然語(yǔ)言生成,演化為理解和生成文本的任務(wù),如圖所示。
▲NLP的基本分類
自然語(yǔ)言的理解是個(gè)綜合的系統(tǒng)工程,它又包含了很多細(xì)分學(xué)科,有代表聲音的音系學(xué),代表構(gòu)詞法的詞態(tài)學(xué),代表語(yǔ)句結(jié)構(gòu)的句法學(xué),代表理解的語(yǔ)義句法學(xué)和語(yǔ)用學(xué)。
音系學(xué):指代語(yǔ)言中發(fā)音的系統(tǒng)化組織。
詞態(tài)學(xué):研究單詞構(gòu)成以及相互之間的關(guān)系。
句法學(xué):給定文本的哪部分是語(yǔ)法正確的。
語(yǔ)義學(xué):給定文本的含義是什么?
語(yǔ)用學(xué):文本的目的是什么?
語(yǔ)言理解涉及語(yǔ)言、語(yǔ)境和各種語(yǔ)言形式的學(xué)科。而自然語(yǔ)言生成(Natural Language Generation,NLG)恰恰相反,從結(jié)構(gòu)化數(shù)據(jù)中以讀取的方式自動(dòng)生成文本。該過(guò)程主要包含三個(gè)階段:
文本規(guī)劃:完成結(jié)構(gòu)化數(shù)據(jù)中的基礎(chǔ)內(nèi)容規(guī)劃
語(yǔ)句規(guī)劃:從結(jié)構(gòu)化數(shù)據(jù)中組合語(yǔ)句來(lái)表達(dá)信息流
實(shí)現(xiàn):產(chǎn)生語(yǔ)法通順的語(yǔ)句來(lái)表達(dá)文本
2. NLP的研究任務(wù)
NLP可以被應(yīng)用于很多領(lǐng)域,這里大概總結(jié)出以下幾種通用的應(yīng)用:
機(jī)器翻譯:計(jì)算機(jī)具備將一種語(yǔ)言翻譯成另一種語(yǔ)言的能力。
情感分析:計(jì)算機(jī)能夠判斷用戶評(píng)論是否積極。
智能問(wèn)答:計(jì)算機(jī)能夠正確回答輸入的問(wèn)題。
文摘生成:計(jì)算機(jī)能夠準(zhǔn)確歸納、總結(jié)并產(chǎn)生文本摘要。
文本分類:計(jì)算機(jī)能夠采集各種文章,進(jìn)行主題分析,從而進(jìn)行自動(dòng)分類。
輿論分析:計(jì)算機(jī)能夠判斷目前輿論的導(dǎo)向。
知識(shí)圖譜:知識(shí)點(diǎn)相互連接而成的語(yǔ)義網(wǎng)絡(luò)。
機(jī)器翻譯是自然語(yǔ)言處理中最為人所熟知的場(chǎng)景,國(guó)內(nèi)外有很多比較成熟的機(jī)器翻譯產(chǎn)品,比如百度翻譯、Google翻譯等,還有提供支持語(yǔ)音輸入的多國(guó)語(yǔ)言互譯的產(chǎn)品。
情感分析在一些評(píng)論網(wǎng)站比較有用,比如某餐飲網(wǎng)站的評(píng)論中會(huì)有非常多拔草的客人的評(píng)價(jià),如果一眼掃過(guò)去滿眼都是又貴又難吃,那誰(shuí)還想去呢?另外有些商家為了獲取大量的客戶不惜雇傭水軍灌水,那就可以通過(guò)自然語(yǔ)言處理來(lái)做水軍識(shí)別,情感分析來(lái)分析總體用戶評(píng)價(jià)是積極還是消極。
智能問(wèn)答在一些電商網(wǎng)站有非常實(shí)際的價(jià)值,比如代替人工充當(dāng)客服角色,有很多基本而且重復(fù)的問(wèn)題,其實(shí)并不需要人工客服來(lái)解決,通過(guò)智能問(wèn)答系統(tǒng)可以篩選掉大量重復(fù)的問(wèn)題,使得人工座席能更好地服務(wù)客戶。
文摘生成利用計(jì)算機(jī)自動(dòng)地從原始文獻(xiàn)中摘取文摘,全面準(zhǔn)確地反映某一文獻(xiàn)的中心內(nèi)容。這個(gè)技術(shù)可以幫助人們節(jié)省大量的時(shí)間成本,而且效率更高。
文本分類是機(jī)器對(duì)文本按照一定的分類體系自動(dòng)標(biāo)注類別的過(guò)程。舉一個(gè)例子,垃圾郵件是一種令人頭痛的頑癥,困擾著非常多的互聯(lián)網(wǎng)用戶。2002年,Paul Graham提出使用“貝葉斯推斷”來(lái)過(guò)濾垃圾郵件,1000封垃圾郵件中可以過(guò)濾掉995封并且沒(méi)有一個(gè)是誤判,另外這種過(guò)濾器還具有自我學(xué)習(xí)功能,會(huì)根據(jù)新收到的郵件,不斷調(diào)整。也就是說(shuō)收到的垃圾郵件越多,相對(duì)應(yīng)的判斷垃圾郵件的準(zhǔn)確率就越高。
輿論分析可以幫助分析哪些話題是目前的熱點(diǎn),分析傳播路徑以及發(fā)展趨勢(shì),對(duì)于不好的輿論導(dǎo)向可以進(jìn)行有效的控制。
知識(shí)圖譜(Knowledge Graph/Vault)又稱科學(xué)知識(shí)圖譜,在圖書(shū)情報(bào)界稱為知識(shí)域可視化或知識(shí)領(lǐng)域映射地圖,是顯示知識(shí)發(fā)展進(jìn)程與結(jié)構(gòu)關(guān)系的一系列各種不同的圖形,用可視化技術(shù)描述知識(shí)資源及其載體,挖掘、分析、構(gòu)建、繪制和顯示知識(shí)及它們之間的相互聯(lián)系。知識(shí)圖譜的一般表現(xiàn)形式如圖所示。
▲知識(shí)圖譜圖示
3. NLP相關(guān)知識(shí)的構(gòu)成
3.1 基本術(shù)語(yǔ)
為了幫助讀者更好地學(xué)習(xí)NLP,這里會(huì)一一介紹NLP領(lǐng)域的一些基礎(chǔ)專業(yè)詞匯。
(1)分詞(segment)
詞是最小的能夠獨(dú)立活動(dòng)的有意義的語(yǔ)言成分,英文單詞之間是以空格作為自然分界符的,而漢語(yǔ)是以字為基本的書(shū)寫(xiě)單位,詞語(yǔ)之間沒(méi)有明顯的區(qū)分標(biāo)記,因此,中文詞語(yǔ)分析是中文分詞的基礎(chǔ)與關(guān)鍵。
中文和英文都存在分詞的需求,不過(guò)相較而言,英文單詞本來(lái)就有空格進(jìn)行分割,所以處理起來(lái)相對(duì)方便。但是,由于中文是沒(méi)有分隔符的,所以分詞的問(wèn)題就比較重要。
分詞常用的手段是基于字典的最長(zhǎng)串匹配,據(jù)說(shuō)可以解決85%的問(wèn)題,但是歧義分詞很難。舉個(gè)例子,“美國(guó)會(huì)通過(guò)對(duì)臺(tái)售武法案”,我們既可以切分為“美國(guó)/會(huì)/通過(guò)對(duì)臺(tái)售武法案”,又可以切分成“美/國(guó)會(huì)/通過(guò)對(duì)臺(tái)售武法案”。
(2)詞性標(biāo)注(part-of-speech tagging)
基于機(jī)器學(xué)習(xí)的方法里,往往需要對(duì)詞的詞性進(jìn)行標(biāo)注。詞性一般是指動(dòng)詞、名詞、形容詞等。標(biāo)注的目的是表征詞的一種隱藏狀態(tài),隱藏狀態(tài)構(gòu)成的轉(zhuǎn)移就構(gòu)成了狀態(tài)轉(zhuǎn)移序列。例如:我/r愛(ài)/v北京/ns天安門/ns。其中,ns代表名詞,v代表動(dòng)詞,ns、v都是標(biāo)注,以此類推。
(3)命名實(shí)體識(shí)別(NER,Named Entity Recognition)
命名實(shí)體是指從文本中識(shí)別具有特定類別的實(shí)體(通常是名詞),例如人名、地名、機(jī)構(gòu)名、專有名詞等。
(4)句法分析(syntax parsing)
句法分析往往是一種基于規(guī)則的專家系統(tǒng)。當(dāng)然也不是說(shuō)它不能用統(tǒng)計(jì)學(xué)的方法進(jìn)行構(gòu)建,不過(guò)最初的時(shí)候,還是利用語(yǔ)言學(xué)專家的知識(shí)來(lái)構(gòu)建的。句法分析的目的是解析句子中各個(gè)成分的依賴關(guān)系。
所以,往往最終生成的結(jié)果是一棵句法分析樹(shù)。句法分析可以解決傳統(tǒng)詞袋模型不考慮上下文的問(wèn)題。比如,“小李是小楊的班長(zhǎng)”和“小楊是小李的班長(zhǎng)”,這兩句話,用詞袋模型是完全相同的,但是句法分析可以分析出其中的主從關(guān)系,真正理清句子的關(guān)系。
(5)指代消解(anaphora resolution)
中文中代詞出現(xiàn)的頻率很高,它的作用的是用來(lái)表征前文出現(xiàn)過(guò)的人名、地名等。
例如,清華大學(xué)坐落于北京,這家大學(xué)是目前中國(guó)最好的大學(xué)之一。在這句話中,其實(shí)“清華大學(xué)”這個(gè)詞出現(xiàn)了兩次,“這家大學(xué)”指代的就是清華大學(xué)。但是出于中文的習(xí)慣,我們不會(huì)把“清華大學(xué)”再重復(fù)一遍。
(6)情感識(shí)別(emotion recognition)
所謂情感識(shí)別,本質(zhì)上是分類問(wèn)題,經(jīng)常被應(yīng)用在輿情分析等領(lǐng)域。情感一般可以分為兩類,即正面、負(fù)面,也可以是三類,在前面的基礎(chǔ)上,再加上中性類別。
一般來(lái)說(shuō),在電商企業(yè),情感識(shí)別可以分析商品評(píng)價(jià)的好壞,以此作為下一個(gè)環(huán)節(jié)的評(píng)判依據(jù)。通常可以基于詞袋模型+分類器,或者現(xiàn)在流行的詞向量模型+RNN。經(jīng)過(guò)測(cè)試發(fā)現(xiàn),后者比前者準(zhǔn)確率略有提升。
(7)糾錯(cuò)(correction)
自動(dòng)糾錯(cuò)在搜索技術(shù)以及輸入法中利用得很多。由于用戶的輸入出錯(cuò)的可能性比較大,出錯(cuò)的場(chǎng)景也比較多。所以,我們需要一個(gè)糾錯(cuò)系統(tǒng)。具體做法有很多,可以基于N-Gram進(jìn)行糾錯(cuò),也可以通過(guò)字典樹(shù)、有限狀態(tài)機(jī)等方法進(jìn)行糾錯(cuò)。
(8)問(wèn)答系統(tǒng)(QA system)
這是一種類似機(jī)器人的人工智能系統(tǒng)。比較著名的有:蘋(píng)果Siri、IBM Watson、微軟小冰等。問(wèn)答系統(tǒng)往往需要語(yǔ)音識(shí)別、合成,自然語(yǔ)言理解、知識(shí)圖譜等多項(xiàng)技術(shù)的配合才會(huì)實(shí)現(xiàn)得比較好。
3.2 知識(shí)結(jié)構(gòu)
作為一門綜合學(xué)科,NLP是研究人與機(jī)器之間用自然語(yǔ)言進(jìn)行有效通信的理論和方法。這需要很多跨學(xué)科的知識(shí),需要語(yǔ)言學(xué)、統(tǒng)計(jì)學(xué)、最優(yōu)化理論、機(jī)器學(xué)習(xí)、深度學(xué)習(xí)以及自然語(yǔ)言處理相關(guān)理論模型知識(shí)做基礎(chǔ)。
作為一門雜學(xué),NLP可謂是包羅萬(wàn)象,體系化與特殊化并存,這里簡(jiǎn)單羅列其知識(shí)體系,知識(shí)結(jié)構(gòu)結(jié)構(gòu)圖如圖所示。
▲知識(shí)結(jié)構(gòu)圖示
自然語(yǔ)言的學(xué)習(xí),需要有以下幾個(gè)前置知識(shí)體系:
目前主流的自然語(yǔ)言處理技術(shù)使用python來(lái)編寫(xiě)。
統(tǒng)計(jì)學(xué)以及線性代數(shù)入門。
02 中文分詞技術(shù)
1. 中文分詞簡(jiǎn)介
“詞”這個(gè)概念一直是漢語(yǔ)語(yǔ)言學(xué)界糾纏不清而又繞不開(kāi)的問(wèn)題。“詞是什么”(詞的抽象定義)和“什么是詞”(詞的具體界定),這兩個(gè)基本問(wèn)題迄今為止也未能有一個(gè)權(quán)威、明確的表述,更無(wú)法拿出令大眾認(rèn)同的詞表來(lái)。主要難點(diǎn)在于漢語(yǔ)結(jié)構(gòu)與印歐體系語(yǔ)種差異甚大,對(duì)詞的構(gòu)成邊界方面很難進(jìn)行界定。
比如,在英語(yǔ)中,單詞本身就是“詞”的表達(dá),一篇英文文章就是“單詞”加分隔符(空格)來(lái)表示的,而在漢語(yǔ)中,詞以字為基本單位的,但是一篇文章的語(yǔ)義表達(dá)卻仍然是以詞來(lái)劃分的。
因此,在處理中文文本時(shí),需要進(jìn)行分詞處理,將句子轉(zhuǎn)化為詞的表示。這個(gè)切詞處理過(guò)程就是中文分詞,它通過(guò)計(jì)算機(jī)自動(dòng)識(shí)別出句子的詞,在詞間加入邊界標(biāo)記符,分隔出各個(gè)詞匯。
整個(gè)過(guò)程看似簡(jiǎn)單,然而實(shí)踐起來(lái)卻很復(fù)雜,主要的困難在于分詞歧義。以NLP分詞的經(jīng)典語(yǔ)句舉例,“結(jié)婚的和尚未結(jié)婚的”,應(yīng)該分詞為“結(jié)婚/的/和/尚未/結(jié)婚/的”,還是“結(jié)婚/的/和尚/未/結(jié)婚/的”?這個(gè)由人來(lái)判定都是問(wèn)題,機(jī)器就更難處理了。
此外,像未登錄詞、分詞粒度粗細(xì)等都是影響分詞效果的重要因素。
自中文自動(dòng)分詞被提出以來(lái),歷經(jīng)將近30年的探索,提出了很多方法,可主要?dú)w納為“規(guī)則分詞”“統(tǒng)計(jì)分詞”和“混合分詞(規(guī)則+統(tǒng)計(jì))”這三個(gè)主要流派。
規(guī)則分詞是最早興起的方法,主要是通過(guò)人工設(shè)立詞庫(kù),按照一定方式進(jìn)行匹配切分,其實(shí)現(xiàn)簡(jiǎn)單高效,但對(duì)新詞很難進(jìn)行處理。
隨后統(tǒng)計(jì)機(jī)器學(xué)習(xí)技術(shù)的興起,應(yīng)用于分詞任務(wù)上后,就有了統(tǒng)計(jì)分詞,能夠較好應(yīng)對(duì)新詞發(fā)現(xiàn)等特殊場(chǎng)景。
然而實(shí)踐中,單純的統(tǒng)計(jì)分詞也有缺陷,那就是太過(guò)于依賴語(yǔ)料的質(zhì)量,因此實(shí)踐中多是采用這兩種方法的結(jié)合,即混合分詞。
下面將詳細(xì)介紹這些方法的代表性算法。
2. 規(guī)則分詞
基于規(guī)則的分詞是一種機(jī)械分詞方法,主要是通過(guò)維護(hù)詞典,在切分語(yǔ)句時(shí),將語(yǔ)句的每個(gè)字符串與詞表中的詞進(jìn)行逐一匹配,找到則切分,否則不予切分。
按照匹配切分的方式,主要有正向最大匹配法、逆向最大匹配法以及雙向最大匹配法三種方法。
2.1 正向最大匹配法
正向最大匹配(Maximum Match Method,MM法)的基本思想為:假定分詞詞典中的最長(zhǎng)詞有i個(gè)漢字字符,則用被處理文檔的當(dāng)前字串中的前i個(gè)字作為匹配字段,查找字典。若字典中存在這樣的一個(gè)i字詞,則匹配成功,匹配字段被作為一個(gè)詞切分出來(lái)。如果詞典中找不到這樣的一個(gè)i字詞,則匹配失敗,將匹配字段中的最后一個(gè)字去掉,對(duì)剩下的字串重新進(jìn)行匹配處理。
如此進(jìn)行下去,直到匹配成功,即切分出一個(gè)詞或剩余字串的長(zhǎng)度為零為止。這樣就完成了一輪匹配,然后取下一個(gè)i字字串進(jìn)行匹配處理,直到文檔被掃描完為止。
其算法描述如下:
從左向右取待切分漢語(yǔ)句的m個(gè)字符作為匹配字段,m為機(jī)器詞典中最長(zhǎng)詞條的字符數(shù)。
查找機(jī)器詞典并進(jìn)行匹配。若匹配成功,則將這個(gè)匹配字段作為一個(gè)詞切分出來(lái)。若匹配不成功,則將這個(gè)匹配字段的最后一個(gè)字去掉,剩下的字符串作為新的匹配字段,進(jìn)行再次匹配,重復(fù)以上過(guò)程,直到切分出所有詞為止。
比如我們現(xiàn)在有個(gè)詞典,最長(zhǎng)詞的長(zhǎng)度為5,詞典中存在“南京市長(zhǎng)”和“長(zhǎng)江大橋”兩個(gè)詞。
現(xiàn)采用正向最大匹配對(duì)句子“南京市長(zhǎng)江大橋”進(jìn)行分詞,那么首先從句子中取出前五個(gè)字“南京市長(zhǎng)江”,發(fā)現(xiàn)詞典中沒(méi)有該詞,于是縮小長(zhǎng)度,取前4個(gè)字“南京市長(zhǎng)”,詞典中存在該詞,于是該詞被確認(rèn)切分。再將剩下的“江大橋”按照同樣方式切分,得到“江”“大橋”,最終分為“南京市長(zhǎng)”“江”“大橋”3個(gè)詞。
顯然,這種結(jié)果還不是我們想要的。
2.2 逆向最大匹配法
逆向最大匹配(Reverse Maximum Match Method,RMM法)的基本原理與MM法相同,不同的是分詞切分的方向與MM法相反。逆向最大匹配法從被處理文檔的末端開(kāi)始匹配掃描,每次取最末端的i個(gè)字符(i為詞典中最長(zhǎng)詞數(shù))作為匹配字段,若匹配失敗,則去掉匹配字段最前面的一個(gè)字,繼續(xù)匹配。相應(yīng)地,它使用的分詞詞典是逆序詞典,其中的每個(gè)詞條都將按逆序方式存放。
在實(shí)際處理時(shí),先將文檔進(jìn)行倒排處理,生成逆序文檔。然后,根據(jù)逆序詞典,對(duì)逆序文檔用正向最大匹配法處理即可。
由于漢語(yǔ)中偏正結(jié)構(gòu)較多,若從后向前匹配,可以適當(dāng)提高精確度。所以,逆向最大匹配法比正向最大匹配法的誤差要小。統(tǒng)計(jì)結(jié)果表明,單純使用正向最大匹配的錯(cuò)誤率為1/169,單純使用逆向最大匹配的錯(cuò)誤率為1/245。
比如之前的“南京市長(zhǎng)江大橋”,按照逆向最大匹配,最終得到“南京市”“長(zhǎng)江大橋”。當(dāng)然,如此切分并不代表完全正確,可能有個(gè)叫“江大橋”的“南京市長(zhǎng)”也說(shuō)不定。
2.3 雙向最大匹配法
雙向最大匹配法(Bi-directction Matching method)是將正向最大匹配法得到的分詞結(jié)果和逆向最大匹配法得到的結(jié)果進(jìn)行比較,然后按照最大匹配原則,選取詞數(shù)切分最少的作為結(jié)果。
據(jù)SunM.S.和Benjamin K.T.(1995)的研究表明,中文中90.0%左右的句子,正向最大匹配法和逆向最大匹配法完全重合且正確,只有大概9.0%的句子兩種切分方法得到的結(jié)果不一樣,但其中必有一個(gè)是正確的(歧義檢測(cè)成功),只有不到1.0%的句子,使用正向最大匹配法和逆向最大匹配法的切分雖重合卻是錯(cuò)的,或者正向最大匹配法和逆向最大匹配法切分不同但兩個(gè)都不對(duì)(歧義檢測(cè)失敗)。這正是雙向最大匹配法在實(shí)用中文信息處理系統(tǒng)中得以廣泛使用的原因。
前面舉例的“南京市長(zhǎng)江大橋”,采用該方法,中間產(chǎn)生“南京市/長(zhǎng)江/大橋”和“南京市/長(zhǎng)江大橋”兩種結(jié)果,最終選取詞數(shù)較少的“南京市/長(zhǎng)江大橋”這一結(jié)果。
下面是一段實(shí)現(xiàn)逆向最大匹配的代碼。
class?IMM(object):
????def?__init__(self,?dic_path):
????????self.dictionary?=?set()
????????self.maximum?=?0
????????#讀取詞典
????????with?open(dic_path,?'r',?encoding='utf8')?as?f:
????????????for?line?in?f:
????????????????line?=?line.strip()
????????????????if?not?line:
????????????????????continue
????????????????self.dictionary.add(line)
????????????????self.maximum?=?len(line)
????def?cut(self,?text):
????????result?=?[]
????????index?=?len(text)
????????while?index?>?0:
????????????word?=?None
????????????for?size?in?range(self.maximum,?0,?-1):
????????????????if?index?-?size?<?0:
????????????????????continue
????????????????piece?=?text[(index?-?size):index]
????????????????if?piece?in?self.dictionary:
????????????????????word?=?piece
????????????????????result.append(word)
????????????????????index?-=?size
????????????????????break
????????????if?word?is?None:
????????????????index?-=?1
????????return?result[::-1]
def?main():
????text?=?"南京市長(zhǎng)江大橋"
????tokenizer?=?IMM('./data/imm_dic.utf8')
????print(tokenizer.cut(text))
運(yùn)行main函數(shù),結(jié)果為:
基于規(guī)則的分詞,一般都較為簡(jiǎn)單高效,但是詞典的維護(hù)是一個(gè)很龐大的工程。在網(wǎng)絡(luò)發(fā)達(dá)的今天,網(wǎng)絡(luò)新詞層出不窮,很難通過(guò)詞典覆蓋到所有詞。
3. 統(tǒng)計(jì)分詞
隨著大規(guī)模語(yǔ)料庫(kù)的建立,統(tǒng)計(jì)機(jī)器學(xué)習(xí)方法的研究和發(fā)展,基于統(tǒng)計(jì)的中文分詞算法漸漸成為主流。
其主要思想是把每個(gè)詞看做是由詞的最小單位的各個(gè)字組成的,如果相連的字在不同的文本中出現(xiàn)的次數(shù)越多,就證明這相連的字很可能就是一個(gè)詞。
因此我們就可以利用字與字相鄰出現(xiàn)的頻率來(lái)反應(yīng)成詞的可靠度,統(tǒng)計(jì)語(yǔ)料中相鄰共現(xiàn)的各個(gè)字的組合的頻度,當(dāng)組合頻度高于某一個(gè)臨界值時(shí),我們便可認(rèn)為此字組可能會(huì)構(gòu)成一個(gè)詞語(yǔ)。
基于統(tǒng)計(jì)的分詞,一般要做如下兩步操作:
建立統(tǒng)計(jì)語(yǔ)言模型。
對(duì)句子進(jìn)行單詞劃分,然后對(duì)劃分結(jié)果進(jìn)行概率計(jì)算,獲得概率最大的分詞方式。這里就用到了統(tǒng)計(jì)學(xué)習(xí)算法,如隱含馬爾可夫(HMM)、條件隨機(jī)場(chǎng)(CRF)等。
限于篇幅,本文只對(duì)統(tǒng)計(jì)分詞相關(guān)技術(shù)做簡(jiǎn)要介紹。更多詳細(xì)內(nèi)容請(qǐng)參考《Python自然語(yǔ)言處理實(shí)戰(zhàn):核心技術(shù)與算法》一書(shū)第3章第3.3節(jié)。
4. 混合分詞
事實(shí)上,目前不管是基于規(guī)則的算法、還是基于HMM、CRF或者deep learning等的方法,其分詞效果在具體任務(wù)中,其實(shí)差距并沒(méi)有那么明顯。在實(shí)際工程應(yīng)用中,多是基于一種分詞算法,然后用其他分詞算法加以輔助。
最常用的方式就是先基于詞典的方式進(jìn)行分詞,然后再用統(tǒng)計(jì)分詞方法進(jìn)行輔助。如此,能在保證詞典分詞準(zhǔn)確率的基礎(chǔ)上,對(duì)未登錄詞和歧義詞有較好的識(shí)別。
關(guān)于作者:涂銘,阿里巴巴數(shù)據(jù)架構(gòu)師,對(duì)大數(shù)據(jù)、自然語(yǔ)言處理、Python、Java相關(guān)技術(shù)有深入的研究,積累了豐富的實(shí)踐經(jīng)驗(yàn)。
劉祥,百煉智能自然語(yǔ)言處理專家,主要研究知識(shí)圖譜、NLG等前沿技術(shù),參與機(jī)器自動(dòng)寫(xiě)作產(chǎn)品的研發(fā)與設(shè)計(jì)。
劉樹(shù)春,七牛云高級(jí)算法專家,七牛AI實(shí)驗(yàn)室NLP&OCR方向負(fù)責(zé)人,主要負(fù)責(zé)七牛NLP以及OCR相關(guān)項(xiàng)目的研究與落地。
本文摘編自《Python自然語(yǔ)言處理實(shí)戰(zhàn):核心技術(shù)與算法》,經(jīng)出版方授權(quán)發(fā)布。
延伸閱讀《Python自然語(yǔ)言處理實(shí)戰(zhàn)》
點(diǎn)擊上圖了解及購(gòu)買
轉(zhuǎn)載請(qǐng)聯(lián)系微信:togo-maruko
推薦語(yǔ):阿里巴巴、前明略數(shù)據(jù)和七牛云的高級(jí)專家和科學(xué)家撰寫(xiě),零基礎(chǔ)掌握NLP的核心技術(shù)、方法論和經(jīng)典算法。
據(jù)統(tǒng)計(jì),99%的大咖都完成了這個(gè)神操作
▼
更多精彩
在公眾號(hào)后臺(tái)對(duì)話框輸入以下關(guān)鍵詞
查看更多優(yōu)質(zhì)內(nèi)容!
PPT?|?報(bào)告?|?讀書(shū)?|?書(shū)單
大數(shù)據(jù)?|?揭秘?|?人工智能?|?AI
Python?|?機(jī)器學(xué)習(xí)?|?深度學(xué)習(xí)?|?神經(jīng)網(wǎng)絡(luò)
可視化?|?區(qū)塊鏈?|?干貨?|?數(shù)學(xué)
猜你想看
長(zhǎng)生不死、名人復(fù)活?瘋狂的AI時(shí)代,人類竟要靠IA實(shí)現(xiàn)“永生”
干貨:手把手教你用Python讀寫(xiě)CSV、JSON、Excel及解析HTML
干貨請(qǐng)收好:終于有人把用戶畫(huà)像的流程、方法講明白了
Q:?中文分詞技術(shù)都有哪些挑戰(zhàn)?
歡迎留言與大家分享
覺(jué)得不錯(cuò),請(qǐng)把這篇文章分享給你的朋友
轉(zhuǎn)載 / 投稿請(qǐng)聯(lián)系:baiyu@hzbook.com
更多精彩,請(qǐng)?jiān)诤笈_(tái)點(diǎn)擊“歷史文章”查看
點(diǎn)擊閱讀原文,了解更多
總結(jié)
以上是生活随笔為你收集整理的入门科普:一文看懂NLP和中文分词算法(附代码举例)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 国资委发文!10本书讲透数字化时代新机遇
- 下一篇: 世界一流大学的计算机专业,在用哪些书当教