中文分詞 中文分詞及其應用

2021-10-12 21:48:53 字數 3017 閱讀 6649

一、中文分詞原理

中文分詞是指將乙個漢字序列切分成乙個乙個單獨的詞。分詞就是將連續的字序列按照一定的規範重新組合成詞序列的過程。現有的分詞方法可分為三大類,分別是基於字串匹配的分詞方法基於理解的分詞方法基於統計的分詞方法

(一)基於字串匹配的分詞方法

基於字串匹配的分詞方法又稱機械分詞方法,它是按照一定的策略將需要分析的中文字串與乙個「充分大的」機器詞典中的詞條進行匹配,若在詞典中找到某個字串,則匹配成功(識別出乙個詞)。該類演算法的優點是速度快,實現簡單,效果尚可,但對歧義和未登入詞處理效果不佳。

按照掃瞄方向的不同,字串匹配分詞方法可以分為正向匹配和逆向匹配;按照不同長度優先匹配的情況,可以分為最大(最長)匹配和最小(最短)匹配;按照是否與詞性標註過程相結合,可以分為單純分詞方法和分詞與詞性標註相結合的一體化方法。常用的字串匹配方法主要有四種,分別是正向最大匹配法(從左到右的方向)、逆向最大匹配法(從右到左的方向)、最小切分(每一句中切出的詞數最小)、雙向最大匹配(進行從左到右、從右到左兩次掃瞄)。

(二)基於理解的分詞方法

基於理解的分詞方法是通過讓計算機模擬人對句子的理解,達到識別詞的效果。其基本思想就是在分詞的同時進行句法、語義分析,利用句法資訊和語義資訊來處理歧義現象。它通常包括三個部分:分詞子系統、句法語義子系統、總控部分。在總控部分的協調下,分詞子系統可以獲得有關詞、句子等的句法和語義資訊來對分詞歧義進行判斷,即它模擬了人對句子的理解過程。這種分詞方法需要使用大量的語言知識和資訊。由於中文語言知識的籠統、複雜性,難以將各種語言資訊組織成機器可直接讀取的形式,因此目前基於理解的分詞系統還處在試驗階段。

(三)基於統計的分詞方法

基於統計的分詞方法是在給定大量已經分詞的文字的前提下,利用統計機器學習模型學習詞語切分的規律(稱為訓練),從而實現對未知文字的切分。例如最大概率分詞方法和最大熵分詞方法等。隨著大規模語料庫的建立,統計機器學習方法的研究和發展,基於統計的中文分詞方法漸漸成為了主流方法,主要的統計模型有:n元文法模型、隱馬爾可夫模型、最大熵模型、條件隨機場模型等。

在實際的應用中,基於統計的分詞系統都需要使用分詞詞典來進行字串匹配分詞,同時使用統計方法識別一些新詞,即將字串頻率統計和字串匹配結合起來,既發揮匹配分詞切分速度快、效率高的特點,又利用了無詞典分詞結合上下文識別生詞、自動消除歧義的優點。

二、中文分詞工具

(一)jieba分詞

jieba分詞是目前使用人數較多的中文分詞工具。jieba分詞支援精確模式、全模式、搜尋引擎模式這三種模式。精確模式試圖將句子最精確地切開,適合文字分析;全模式可以把句子中所有的可以成詞的詞語都掃瞄出來, 速度非常快,但是不能解決歧義;搜尋引擎模式是在精確模式的基礎上,對長詞再次切分,提高召回率,適合用於搜尋引擎分詞。示例**及結果見圖1。

import jieba# 精準模式print("|".join(jieba.cut("今天天氣不錯,我來到北京野生動物園,在野生動物園看到有很多兇猛的動物",cut_all=false)))# 全模式print("|".join(jieba.cut("今天天氣不錯,我來到北京野生動物園,在野生動物園看到有很多兇猛的動物",cut_all=true)))# 搜尋引擎模式print("|".join(jieba.cut_for_search("今天天氣不錯,我來到北京野生動物園,在野生動物園看到有很多兇猛的動物")))
(二)jieba分詞的應用1 文字的表示

在對文字進行處理之前,需要對文字進行數學表示,其中一種方法為詞向量。基本思路是,在已建立的詞庫基礎上,根據文字中各詞彙進行位置判斷,最後構成向量表示文字。對文字進行向量表示的前提是對文字進行拆分,因此需要對文字進行中文分詞。示例**及結果見圖2。

圖2  文字的向量表示

2 文字相似度的計算

實現了文字的向量表示後,可以進行文字間距離的計算,即文字相似度計算。在文字相似度的計算中,比較常見的一種相似度計算方式為余弦相似度,余弦相似度的本質是計算兩點所構成向量夾角的余弦值,如圖3所示。

圖3  余弦相似度計算

三、中文分詞的應用:簡單的聊天機械人開發

通過中文分詞以及文字向量表示,可以實現對文字的解析,在此基礎上,可進行簡單聊天機械人的開發,其程式邏輯為:1資料準備:預先建立fenci.txt檔案儲存一段文字,通過對文字的分詞處理構建語料庫;預先建立的content_file.txt檔案儲存了一些標題和回帖的內容,這些內容是**於網上的一些帖子內容。我們把title看作是相關的聊天主題,而reply看作是回答的答案。2主程式的構建:a.使用者輸入一段文字;b.對使用者輸入的文字進行分詞;c.把使用者輸入的結果與content_file.txt檔案中的title欄位進行相似度計算,匹配到最為相似的主題;d.以最大相似度主題下的reply內容作為答案進行輸出。(fenci.txt檔案和content_file.txt檔案部分內容展示見圖4、圖5)具體**如下:

圖4  fenci.txt檔案部分內容

圖5  content_file.txt檔案部分內容

bilstm crf中文分詞 多標準中文分詞模型

這是復旦19年6月剛發的文章,初略看一遍,記筆記。chinese word segmentation簡稱cws 將多標準學習引入到cws,不同分詞標準語料共享common knowledge,能夠互相提公升 作者提到應該是第一次從頭開始訓練transformer做分詞任務,避免了rnn和cnn的長依...

mysql 中文分詞 MySQL 中文分詞原理

一,首先我們來了解一下其他幾個知識點 1.mysql的索引意義?索引是加快訪問表內容的基本手段,尤其是在涉及多個表的關聯查詢裡。當然,索引可以加快檢索速度,但是它也同時降低了索引列的插入,刪除和更新值的速度。換通俗的話來講 mysql中的索引就是乙個特殊的平衡二叉樹,當在平衡二叉樹中搜尋某一條值的時...

英文分詞和中文分詞

由於英語的基本組成單位就是詞,所以相對來說簡單很多。大致分為三步 3s 根據空格拆分單詞 split 排除停止詞 stop word 提取詞幹 stemming 1 根據空格拆分單詞 這一步是是最簡單的一步,英語的句子基本上就是由標點符號 空格和詞構成,那麼只要根據空格和標點符號將詞語分割成陣列即可...