中文分詞技術全解析,你想知道的都在這裡(附開源工具)

2021-03-01 python遇見NLP


分詞(word tokenization),也叫切詞,即通過某種方式將句子中的各個詞語識別並分離開來,使得文本從「字序列」的表示升級為「詞序列」表示。分詞技術不僅僅適用於中文,對於英文、日文、韓文等語言也同樣適用。

雖然英文中有天然的單詞分隔符(空格),但是常有單詞與其他標點黏滯的情況,比如"Hey, how are you."中的"Hey"和"you"是需要與身後的標點分隔開的

為什麼需要分詞?

能不能不分詞?

中文分詞難在哪?

從古至今的分詞算法原理

從中到外的分詞工具


當處理大規模語言文本時,要理解文本內容進行分析,我們人類通常是通過「詞」這個最小的可理解性語言單位來進行初步理解的,但為了提高效率,使用機器(計算機)來進行語言文本的分析,我們也可以從「分詞」開始。對於中文來說,如果不進行分詞,那麼機器的神經網絡將直接基於原始的漢字序列進行處理和學習。然而我們知道一個字在不同的詞語中可能含義迥然不同,比如「哈哈」與「哈士奇」中「哈」的含義相去甚遠,如果模型在訓練階段沒見過「哈士奇」,那麼預測的時候就有可能以為「哈士奇」所在的句子在表達歡快的氣氛了╮( ̄▽ ̄"")╭顯然,要解決上述問題的話,分詞就是了,分詞之後,最小的輸入單位就不再是字了,而是詞,由於「哈哈」與「哈士奇」是兩個不同的詞,自然就不會有前面這個問題啦。因此可以認為,分詞緩解了「一字多義」的問題。除此之外,從特徵(feature)與NLP任務的角度來說,字相比詞來說,是更原始和低級的特徵,往往與任務目標的關聯比較小;而到了詞級別後,往往與任務目標能發生很強的關聯。比如對於情感分類任務,「我今天走狗屎運了」這句中的每個字都跟正向情感關係不大,甚至「狗」這個字還往往跟負面情感密切相關,但是「狗屎運」這個詞卻表達了「幸運」、「開心」、「驚喜」的正向情感,因此,分詞可以看作是給模型提供了更high-level、更直接的feature,丟給模型後自然容易獲得更佳的表現。


答案是,當然可以。從前面分詞的目的可以看出,只要模型本身能夠學習到字的多義性,並且自己學到由字組詞的規律,那麼就相當於隱含的內置了一個分詞器在模型內部,這時候這個內置的分詞器是與解決目標任務的網絡部分一起「端到端訓練」的,因此甚至可能獲得更佳的性能。
然而,從上面這段的描述也能看出,要滿足這個條件,是很難得的。這需要訓練語料非常豐富,且模型足夠大(可以有額外容量來內置一個隱含的分詞模型),才有可能獲得比「分詞器+詞級模型「更好的表現。這也是為什麼BERT等大型預訓練模型往往是字級別的,完全不需要使用分詞器。此外,分詞也並不是百利而無一害的,一旦分詞器的精度不夠高,或者語料本身就噪聲很大(錯字多、句式雜亂、各種不規範用語),這時強行分詞反而容易使得模型更難學習。比如模型終於學會了「哈士奇」這個詞,卻有人把哈士奇打成了「蛤士奇」,結果分詞器沒認出來,把它分成了「蛤」、「士」、「奇」這三個字,這樣我們這個已經訓練好的「word level模型」就看不到「哈士奇」了(畢竟模型訓練的時候,「哈士奇」是基本單位)。


1 歧義問題


首先,前面提到分詞可以緩解「一字多義」的問題,但是分詞本身又會面臨「切分歧義」的問題。

             


雖然切分成《無線電/法國/別/研究》看起來沒毛病,但是考慮到這是個書名,顯然正解《無線電法/國別/研究》對分詞器來說太南了(。 ́︿ ̀。)而如果不告訴你這是一個書名,顯然兩種切分方式看起來都沒毛病。

 

2 未登錄詞問題


此外,中文詞典也是與時俱進的,例如「青青草原」、「累覺不愛」等網絡詞在10年前是沒有的,今天訓練的分詞器也一定會在不久的將來遇到不認識的詞(即「未登錄詞」,out-of-vocabulary word),那個時候分詞器很容易因為「落伍」而出現切分錯誤。

 

3 規範問題


最後,分詞時的切分邊界也一直沒有一個確定的規範。儘管在 1992 年國家頒布了《信息處理用現代詞漢語分詞規範》,但是這種規範很容易受主觀因素影響,在實際場景中也難免遇到有所不及的問題。


對於中文分詞問題,最簡單的算法就是基於詞典直接進行greedy匹配

比如,我們可以直接從句子開頭的第一個字開始查字典,找出字典中以該字開頭的最長的單詞,然後就得到了第一個切分好的詞。比如這句「夕小瑤正在講NLP」,查字典發現「夕小瑤」是最長的詞了,於是得到

夕小瑤/正在講NLP

然後從下一個詞的開頭開始繼續匹配字典,發現「正在」就是最長的詞了,於是

夕小瑤/正在/講NLP

依此類推,最終得到

夕小瑤/正在/講/NLP

這種簡單的算法即為前向最大匹配法(FMM)

雖然做法很樸素,但是名字聽起來還有點高端╮(╯▽╰)╭不過,由於中文句子本身具有重要信息後置的特點,從後往前匹配的分詞正確率往往要高於從前往後,於是就有了反向進行的「後向最大匹配法(BMM)」。當然了,無論是FMM還是BMM,都一定存在不少切分錯誤,因此一種考慮更周到的方法是「雙向最大匹配」。雙向最大匹配算法是指對待切分句子分別使用FMM和RMM進行分詞,然後對切分結果不重合的歧義句進行進一步的處理。通常可對兩種方法得到的詞彙數目進行比較,根據數目的相同與否採取相應的措施,以此來降低歧義句的分詞錯誤率.

2 基於統計

2.1 基於語言模型

基於詞典的方法雖然簡單,但是明顯能看出來太!不!智!能!了!稍微複雜一些的句子,例如「沒關係,除夕小瑤在家做飯。」,這時候如果使用後向最大匹配法,就會切分成「沒關係/,/除/夕小瑤/在家/做飯/。」,這明顯錯的很不可原諒。

 

犯這種錯誤的根本原因在於,基於詞典的方法在切分時是沒有考慮詞語所在的上下文的,沒有從全局出發找最優解。其實上面這個句子無非就是在糾結兩種切分方式:

我們日常說話中很少會有人說出「沒關係/,/除/xxxx/做飯/。」這種句子,而第二個句子出現的頻率則會非常高,比如裡面的「小瑤」可以替換成「我」、「老王」等。顯然給定一個句子,各種切分組合是數量有限的,如果有一個東西可以評估出任何一個組合的存在合理性的分值,那麼不就找到了最佳的分詞組合嘛!

 

所以,這種方法的本質就是在各種切詞組合中找出那個最合理的組合,這個過程就可以看作在切分詞圖中找出一條概率最大的路徑

              

而這個可以給詞序列存在合理性打分的東西就叫做「語言模型」(language model)。這種利用語言模型來評估各種切分組合的方法是不是就顯得智能多啦╮(╯▽╰)╭給定一個句子分詞後得到的單詞序列{w1,w2...wm},語言模型就能計算出這個句子(或者說詞序列)存在的可能性:

顯然,當m取值稍微一大,乘法鏈的後面幾項會變得非常難計算(估計出這幾項的概率需要依賴極其龐大的語料才能保證估計誤差可接受)。計算困難怎麼辦?當然是用合理的假設來簡化計算,比如我們可以假設當前位置取什麼詞僅取決於相鄰的前面n個位置,即這種簡化的語言模型就稱為n-gram語言模型。這樣乘法鏈中的每個乘子都可以在已經完成人工標註的分詞語料中計算得到啦。當然了,在實際計算中可能還會引入一些平滑技巧,來彌補分詞語料規模有限導致的估計誤差,這裡就不展開講啦。

2.2 基於統計機器學習

NLP是一門跟機器學習強綁定的學科,分詞問題自然也不例外。中文分詞同樣可以建模成一個「序列標註」問題,即一個考慮上下文的字分類問題。因此可以先通過帶標籤的分詞語料來訓練一個序列標註模型,再用這個模型對無標籤的語料進行分詞。

 

樣本標籤

 

一般用{B:begin, M:middle, E:end, S:single}這4個類別來描述一個分詞樣本中每個字所屬的類別。它們代表的是該字在詞語中的位置。其中,B代表該字是詞語中的起始字,M代表是詞語中的中間字,E代表是詞語中的結束字,S則代表是單字成詞。人/b  們/e  常/s  說/s  生/b  活/e  是/s  一/s  部/s  教/b  科/m  書/e之後我們就可以直接套用統計機器學習模型來訓練出一個分詞器啦。統計序列標註模型的代表就是生成式模型的代表——隱馬爾可夫模型(HMM),和判別式模型的代表——(線性鏈)條件隨機場(CRF)。已經對這兩個模型很熟悉的小夥伴可以跳過。

 

隱馬爾可夫模型(HMM)

 

HMM模型的詳細介紹見


《如果你跟夕小瑤戀愛了... (上)》  /   


在了解了HMM模型的基本概念之後,我們來看看HMM模型是如何進行分詞的吧~基本思路:將分詞問題轉換為給每個位置的字進行分類的問題,即序列標註問題。其中,類別有4個(前面講到的B、M、E、S)。給所有的位置分類完成後,便可以根據類別序列得到分詞結果啦。

 

舉個慄子!

 

那麼問題又來了,假如一個完美的HMM分詞模型給你了,那麼如何用這個模型對輸入的字序列進行序列標註呢?首先看下HMM模型中的兩個核心概念:觀測序列狀態序列。觀測序列就是我可以直接看到的序列,也就是「小Q碩士畢業於中國科學院」這個字序列,而狀態序列則是不能通過肉眼直接觀察到的內在序列,也就是上面這句話所對應的標註結果「BEBEBMEBEBME」,而我們的HMM模型,就可以幫助我們完成從觀測序列->狀態序列的華麗變身!

 

用數學抽象表示如下:用  代表輸入的句子,n為句子長度,表示字,  代表輸出的標籤,那麼理想的輸出即為:

我們的理想輸出的是   ,通過貝葉斯公式能夠得到:



為給定的輸入,因此  計算為常數,可以忽略,因此最大化 等價於最大化  .可是,上面這個式子也太難算了吧!!!為此,聰明的科學家們引入了兩個可以簡化計算的假說:觀測獨立性假設:每個字的輸出僅僅與當前字有關,即每個λ的值只依賴於其對應的O值,即齊次馬爾可夫假設:每個輸出僅僅與上一個輸出有關,即Oi的值只依賴於Oi-1,即在HMM中,將稱為觀測概率  稱為轉移概率。通過設置某些 ,可以排除類似BBB、EM等不合理的組合。

 

最後,求解    的常用方法是Veterbi算法。它是一種動態規劃方法,核心思想是:如果最終的最優路徑經過某個 ,那麼從初始節點到  點的路徑必然也是一個最優路徑。當然啦,這一切的前提是HMM中的模型參數都已經被訓練好了,而訓練這些模型參數可以通過萬能的極大似然估計來從有標籤的分詞語料中學習得到,這裡就不展開贅述啦,對細節不清楚的小夥伴可參考本小節開頭給出的兩篇文章。

 

條件隨機場 (CRF)

 

HMM隱馬模型有一個非常大的缺點,就是其存在輸出獨立性假設,導致其不能將上下文納入特徵設計,大大限制了特徵的可用範圍。CRF則沒有這個限制,它不對單獨的節點進行歸一化,而是對所有特徵進行全局歸一化,進而全局的最優值。因此,在分詞問題上,顯然作為判別式模型的CRF相比HMM更具優越性。

HMM模型圍繞的是一個關於序列X和Y的聯合概率分布𝑃(𝑋,𝑌),而條件隨機場則圍繞條件概率分布模型𝑃(𝑌|𝑋)展開。

             

從圖中我們可以看出模型之間的遞進關係,CRF是一個概率無向圖模型,它和HMM很類似,但是CRF沒有隱變量,並且是一個判別模型。使用CRF計算序列中的每個字位𝑥𝑖  對應的分詞標籤𝑦𝑖  時,都可以看做是一次考慮上下文依賴關係的分類。


Z(x)就是概率圖模型中的配分函數,目的就是提供一個歸一化因子,將各個類別的值求和,為計算每個類別的概率提供一個分母,對這個思想還不清楚的小夥伴請移步本節開頭的推薦文章哦,這裡不再贅述其背後的數學思想了。K為設計的特徵(函數)的數量,w_k為每個特徵函數待學習的權重。而這裡的f_k就是能夠幫助CRF完成分詞的特徵啦,確切的說是特徵函數。特徵函數可以看作一個比較複雜的特徵,特徵值取決於多個輸入變量的取值。當然啦,這裡只給出了簡化形式,特徵函數又分為轉移特徵和狀態特徵,其中轉移特徵會考慮歷史時刻的輸出,而狀態特徵僅考慮當前時刻。f(y_1, x_1, x) = {1 if y_1 == 'I' and x_1 == '小' and x=='瑤'; else 0}這裡即表示如果當前位置的字(觀測值)是『瑤』,且上個位置的字是『小』,且上個位置的預測標籤是類別『I』,那麼該特徵函數會輸出1,也就是說該特徵的特徵值為1,其餘情況均為0。顯然這個特徵一旦取值為1,則是一個很強的特徵來指示『瑤』這個字的位置的預測標籤為『E』。與HMM一樣,訓練CRF中的參數依然是通過萬能的極大似然估計,具體算法形式如梯度下降法、IIS、擬牛頓法等。訓練好CRF分詞模型後,跟HMM一樣, 可以通過Viterbi算法來進行全局的推理,從而得到最優的分詞序列。這裡同樣不展開講啦。總結一下,與HMM比,使用CRF進行分詞有以下優點:CRF可以使用輸入文本的全局特徵,而HMM只能看到輸入文本在當前位置的局部特徵CRF是判別式模型,直接對序列標註建模;HMM則引入了不必要的先驗信息


3 基於神經網絡


眾所周知,深度學習已經成功佔領NLP,席捲了NLP中的分類、序列標註和生成問題。如前所述,分詞也可以建模為序列標註問題,那麼擅長處理序列數據的LSTM(長短時記憶網絡+超連結到歷史推文和最近超級火的預訓練模型同樣可以用於中文分詞。


3.1 基於(Bi-)LSTM

對LSTM模型還不熟悉的小夥伴見小夕以前寫的這篇的《step-by-step to LSTM》,本文對lstm的基本理論不再贅述啦。

如前面語言模型一節中所述,字的上下文信息對於排解切分歧義來說非常重要,能考慮的上下文越長,自然排解歧義的能力就越強。而前面的n-gram語言模型也只能做到考慮一定距離的上下文,那麼有沒有在理論上能考慮無限長上下文距離的分詞模型呢?當然啦,LSTM是有方向的,為了讓每個位置的字分類時既能考慮全部歷史信息(左邊的所有的字),又能考慮全部未來信息(右邊所有的字),我們可以使用雙向LSTM(Bi-LSTM)來充當序列標註的骨架模型,如圖

       

LSTM完成對每個位置的上下文信息的編碼後,最終通過softmax分類層完成對每個位置的分類,從而跟HMM和CRF一樣完成了基於序列標註的中文分詞。

 

3.2 基於預訓練模型+知識蒸餾

 

最近的一年多的時間裡,BERT、ERNIE、XLNet等大型預訓練席捲了NLP的絕大部分領域,在分詞問題上也有顯著的優越性。

              

然而,眾所周知,預訓練模型太大了,過於消耗計算資源,如果要對海量的文本進行分詞,哪怕用上8卡的32G Tesla V100都會顯得力不從心,因此一種解決方案就是,將預訓練模型中的分詞知識通過知識蒸餾(Knowledge Distillation)來遷移到小模型(比如LSTM、GRU)上。近期Jieba分詞器中就上線了這麼一個用這種方法得到的先進分詞模型(其實是個通用的詞法分析模型),感興趣的小夥伴可以自行了解一下。預訓練模型和知識蒸餾的資料很多了,這裡就不贅述啦。


下面列了幾個較為主流的分詞工具(排名不分先後,大家自行試用),相關的paper請在訂閱號後臺回復【中文分詞】領取。說到分詞工具第一個想到的肯定是家喻戶曉的「結巴」中文分詞,主要算法是前面講到的基於統計的最短路徑詞圖切分,近期還內置了百度飛槳的預訓練模型+大規模蒸餾的前沿分詞模型。github項目地址:https://github.com/fxsjy/jieba
#encoding=utf-8#Jieba#pip install jiebaimport jieba
sentence = "不會講課的程式設計師不是一名好的算法工程師"tokens = jieba.cut(sentence)print("jieba: " + " ".join(tokens))
#output#Building prefix dict from the default dictionary ...#Loading model from cache /tmp/jieba.cache#Loading model cost 0.266 seconds.#Prefix dict has been built successfully.#jieba: 不會 講課 的 程式設計師 不是 一名 好 的 算法 工程


2 THULAC(THU Lexical Analyzer for Chinese)

由清華大學自然語言處理與社會人文計算實驗室研製推出的一套中文詞法分析工具包,具有中文分詞和詞性標註功能。該工具所採用的分詞模型為結構化感知機。更多算法細節請參考github項目和閱讀論文原文。


github項目地址:https://github.com/thunlp/THULAC

論文連結:https://www.mitpressjournals.org/doi/pdf/10.1162/coli.2009.35.4.35403

使用示例:

#THULAC#pip install thulacimport thulac
sentence = "不會講課的程式設計師不是一名好的算法工程師"thu1 = thulac.thulac(seg_only=True) text = thu1.cut(sentence, text=True) print("THULAC: " + text)
#output#Model loaded succeed#THULAC: 不 會 講課 的 程式設計師 不 是 一 名 好 的 算法 工程師

 

3 NLPIR-ICTCLAS漢語分詞系統

北京理工大學海量語言信息處理與雲計算工程研究中心大數據搜索與挖掘實驗室( Big Data Search and Mining Lab.BDSM@BIT)發布。是基於層次HMM的分詞庫,將分詞、POS、NER等都納入到了一個層次HMM的框架之下聯合訓練得到。主頁:http://ictclas.nlpir.org/github項目地址:https://github.com/tsroten/pynlpir
#NLPIR-ICTCLAS#pip install pynlpirimport pynlpir
sentence = "不會講課的程式設計師不是一名好的算法工程師"pynlpir.open()tokens = [x[0] for x in pynlpir.segment(sentence)]print("NLPIR-TCTCLAS: " + " ".join(tokens))pynlpir.close()
#output#NLPIR-TCTCLAS: 不 會 講課 的 程式設計師 不 是 一 名 好 的 算法 工程


4 LTP

哈工大出品,同THULAC一樣,LTP也是基於結構化感知器(Structured Perceptron, SP),以最大熵準則學習的分詞模型。項目主頁:https://www.ltp-cloud.com/github項目地址:https://github.com/HIT-SCIR/ltp論文連結:http://jcip.cipsc.org.cn/CN/abstract/abstract1579.shtml使用示例:使用前需下載分詞模型(http://ltp.ai/download.html)


#LTP#pip install pyltpfrom pyltp import Segmentor
sentence = "不會講課的程式設計師不是一名好的算法工程師"segmentor = Segmentor()#segmentor.load("/path/to/your/cws/model")segmentor.load("ltp_data_v3.4.0/cws.model")tokens = segmentor.segment(sentence)print("LTP: " + " ".join(tokens))segmentor.release()
#output#LTP: 不 會 講課 的 程式設計師 不 是 一 名 好 的 算法 工程


5 HanLP

HanLP是隨《自然語言處理入門》配套開源的一系列NLP算法庫。除了經典的1.x版本在不斷迭代更新以外,今年還全新推出了2.0版本。1.x版本有有基於詞典的分詞工具和基於CRF的切詞模型。2.0版本開源了基於深度學習算法的分詞工具。github項目地址:https://github.com/hankcs/pyhanlp
#HanLP#v1.x#pip install pyhanlpfrom pyhanlp import *
sentence = "不會講課的程式設計師不是一名好的算法工程師"print(HanLP.segment(sentence))


github地址:https://github.com/hankcs/HanLP/tree/doc-zh
#HanLP#v2.0#pip install hanlpimport hanlp
sentence = "不會講課的程式設計師不是一名好的算法工程師"tokenizer = hanlp.load('PKU_NAME_MERGED_SIX_MONTHS_CONVSEG')tokens = tokenizer(sentence)print("hanlp 2.0: " + " ".join(tokens))#output#hanlp 2.0: 不 會 講課 的 程式設計師 不 是 一 名 好 的 算法 工程


6 Stanford CoreNLP

斯坦福推出的切詞工具,可以支持多種語言。算法核心是基於CRF模型。github項目地址:https://github.com/Lynten/stanford-corenlp論文連結:https://nlp.stanford.edu/pubs/sighan2005.pdf使用示例:需要先從stanford官網下載中文切詞模型(https://stanfordnlp.github.io/CoreNLP/)
###stanford CoreNLP#pip install stanfordcorenlpfrom stanfordcorenlp import StanfordCoreNLP
sentence = "不會講課的程式設計師不是一名好的算法工程師"with StanfordCoreNLP(r'stanford-chinese-corenlp-2018-10-05-models', lang='zh') as nlp: print("stanford: " + " ".join(nlp.word_tokenize(sentence)))


相關焦點

  • 【分詞】中文分詞的古今中外,你想知道的都在這裡
    分詞(word tokenization),也叫切詞,即通過某種方式將句子中的各個詞語識別並分離開來,使得文本從「字序列」的表示升級為「詞序列」表示。分詞技術不僅僅適用於中文,對於英文、日文、韓文等語言也同樣適用。
  • 小米開源NLP分詞工具
    近日,小米NLP團隊開源了其分詞工具minlp-tokenizer,該分詞工具支持細粒度和
  • 資源 | Python中文分詞工具大合集
    首先介紹之前測試過的8款中文分詞工具,這幾款工具可以直接在AINLP公眾號後臺在線測試,嚴格的說,它們不完全是純粹的中文分詞工具,例如SnowNLP, Thulac, HanLP,LTP,CoreNLP都是很全面的(中文)自然語言處理工具。
  • 【分詞】從why到how的中文分詞詳解,從算法原理到開源工具
    分詞(word tokenization),也叫切詞,即通過某種方式將句子中的各個詞語識別並分離開來,使得文本從「字序列」的表示升級為「詞序列」表示。分詞技術不僅僅適用於中文,對於英文、日文、韓文等語言也同樣適用。
  • 中文分詞工具測評
    引言分詞對於研究和應用中文自然語言處理的童鞋來說,都是一個非常非常基礎的部件,分詞的質量直接影響到後續詞性標註、命名實體識別、句法分析等部件的準確性
  • 準確率創新高,北大開源中文分詞工具包 pkuseg
    北京大學近日開源了一個全新的中文分詞工具包 pkuseg ,相比於現有的同類開源工具,pkuseg 大幅提高了分詞的準確率。
  • 專欄 中文分詞工具測評
    分詞對於研究和應用中文自然語言處理的童鞋來說,都是一個非常非常基礎的部件,分詞的質量直接影響到後續詞性標註、命名實體識別、句法分析等部件的準確性
  • Python中文分詞工具大合集:安裝、使用和測試
    首先介紹之前測試過的8款中文分詞工具,這幾款工具可以直接在AINLP公眾號後臺在線測試,嚴格的說,它們不完全是純粹的中文分詞工具,例如SnowNLP, Thulac, HanLP,LTP,CoreNLP都是很全面的(中文)自然語言處理工具。
  • 中文分詞工具評估:chinese-segmentation-evaluation
    這裡有一個Java開源項目cws_evaluation,對中文分詞做了評比,但有幾點不足:(1). 只有java版本,但是機器學習主要是基於python的 (2).效果指標為行完美率和字完美率,該指標不妥,特別是句子越長,越無意義,(3). 每種分詞工具評測的算法太多了,這裡僅評比了默認的分詞算法。
  • 每天調用達80億次的小米MiNLP平臺,近期又開源了中文分詞功能
    機器之心報導作者:陳萍近日,小米開源了其自然語言處理平臺 MiNLP 的中文分詞功能,具備分詞效果好、輕量級、詞典可定製、多粒度切分以及調用更便捷等特點。分詞效果好不好對信息檢索、實驗結果影響很大,同時分詞的背後涉及各種各樣的算法實現。就中、英文而言,中文分詞與英文分詞有很大的不同,對英文而言,詞與詞之間都有空格隔開,一個單詞就是一個詞,而漢語是以字為基本的書寫單位,詞語之間沒有明顯的區分標記,需要人為切分。
  • 開源!我知道你不知道,百度開源詞法LAC 2.0幫你更懂中文
    百度NLP權威發布,可能是最好用的中文詞法分析工具——LAC 2.0閃亮登場!與LAC 1.0相比,LAC 2.0在性能與效果上有明顯提升,且支持多種開發語言,一鍵安裝調用,更加快速便捷。開源地址見下方評論區!
  • NLP快速入門:手把手教你用HanLP做中文分詞
    ,實現中文分詞的工具也越來越多。中文分詞技術作為中文自然語言處理的第一項核心技術,是眾多上層任務的首要基礎工作,同時在日常的工作中起著基礎性的作用。本文將講解如何在Python環境下調用HanLP包進行分詞,並結合Python語言簡約的特性,實現一行代碼完成中文分詞。
  • 探索小米開源分詞MiNLP基於深度學習的分詞工作
    MiNLP-Tokenizer中文分詞工具經過不斷優化和實戰打磨,已於2020年11月正式對外開源。MiNLP團隊計劃在2021年Q2完成所有詞法工具(詞性標註和命名實體識別)的開源,從2021年Q3開始,MiNLP團隊將逐步開源句法分析和部分語義分析工具,和開發者一起打造功能強大、效果領先的NLP平臺。內部的兩套分詞方案都是基於深度學習的分詞方案。
  • 推薦 | 中文文本標註工具Chinese-Annotator(內附多個開源文本標註工具)
    序列標註問題如中文分詞、命名實體識別,分類問題如關係識別、情感分析、意圖分析等,均需要標註數據進行模型訓練。深度學習大行其道的今天,基於深度學習的 NLP 模型更是數據饑渴。本文分享一個中文文本標註工具Chinese-Annotator。
  • 怎樣構建中文文本標註工具?(附工具、代碼、論文等資源)
    序列標註問題如中文分詞、命名實體識別,分類問題如關係識別、情感分析、意圖分析等,均需要標註數據進行模型訓練。在深度學習大行其道的今天,基於深度學習的 NLP 模型更是數據饑渴。 最前沿的 NLP 技術往往首先針對英文語料。
  • 技術專欄-結巴中文分詞介紹
    結巴中文分詞支持的三種分詞模式包括: (1) 精確模式:試圖將句子最精確地切開,適合文本分析; (2) 全模式:把句子中所有的可以成詞的詞語都掃描出來, 速度非常快,但是不能解決歧義問題; (3) 搜尋引擎模式:在精確模式的基礎上,對長詞再次切分,提高召回率,適合用於搜尋引擎分詞。可以看到,新添加的兩個專有名詞已經被結巴分詞工具辨別出來了。
  • 手把手教你用Jieba做中文分詞
    導讀:近年來,隨著NLP技術日益成熟,開源實現的分詞工具越來越多,如Ansj、HanLP
  • NLP的中文分詞面試指南
    所以很多關於NLP的面試中都會問到中文分詞的問題,很多NLP任務都依賴中文分詞的結果,同時中文分詞所使用的技術可以很好的應用到其它領域,比如:語音識別、實體識別等等。像今日頭條的內容推薦系統,就依賴著NLP的中文分詞質量。既然問題清楚了,那麼就要看具體是如何解決的了。為了幫助大家順利通過面試找到心儀的工作,或者解決日常工作遇到的中文分詞難題,我梳理了一下中文分詞的技術發展路徑,大體如下圖所示:
  • 中文分詞算法技術的原理和理論運用
    現在的計劃是等新站全部的展示樣式出來之後,便會進行整體大框架規劃,包括老站,而這裡想說的就是關於分詞技術理論的簡單介紹。分詞技術就是搜尋引擎針對用戶提交查詢的關鍵詞串進行的查詢處理後根據用戶的關鍵詞串用各種匹配方法進行分詞的一種技術。由於國內主要以中文搜尋引擎為主,這裡的分詞技術為中文分詞技術。
  • 科學網—幫機器學會中文分詞和詞性標註
    >本報記者 鄭金武 「部分居民生活水平」這樣的中文短語,人們理解起來沒有太大困難。 在近日於線上舉行的自然語言處理(NLP)領域學術會議ACL 2020上,創新工場大灣區人工智慧研究院的兩篇入選論文,正是針對中文自然語言處理的類似問題提出新模型,將外部知識(信息)創造性融入分詞及詞性標註模型,有效剔除了分詞「噪聲」誤導,大幅度提升了分詞及詞性標註效果。 「中文的分詞和詞性標註是自然語言處理的基本任務,對於後續的應用和任務處理非常重要。」