文字分析入門(二)

2021-09-22 09:57:53 字數 3407 閱讀 8052

還是先上新概念。

分詞我們在做文字挖掘的時候,要對文字做的預處理首先就是分詞。對於英文來說,因此單詞之間天然有空格隔開,因此可以按照空格分詞(但也有需要把多個單詞做成乙個分詞的時候)。而對於中文來說,由於沒有空格,那麼分詞就變成了乙個需要專門去處理去解決的問題。

我們現在的分詞都是基於統計來分詞。對於乙個良好的分詞系統來說應該由詞典和統計兩套系統組成。統計,是為了給詞典不斷可持續地更新,不斷加入新詞。在分詞的過程中,首先,乙個良好的詞典很重要;其次,演算法要跟著需求,跟著應用場景走,針對不同的需求我們應該選擇不同的演算法。

下面介紹幾個簡單的分詞方法:

正向最大匹配法

逆向最大匹配法

雙向最大匹配法

正向最大匹配法:

從前往後去詞,每次減少乙個字,直到分詞系統的詞典命中分詞或只剩下乙個字。

首先,機械匹配分詞法分為增字匹配法和減字匹配法。增字法一般與最小匹配相結合,即從乙個字開始增加,而減字法常與最大匹配相結合。(這應該不難理解)因此正向最大匹配法採用減字匹配法較為常見

下面舉例**網路:

第1次:「我們在野生動物」,掃瞄7字詞典,無

第2次:「我們在野生動」,掃瞄6字詞典,無

。。。。

第6次:「我們」,掃瞄2字詞典,有

掃瞄中止,輸出第1個詞為「我們」,去除第1個詞後開始第2輪掃瞄,即:

第2輪掃瞄:

第1次:「在野生動物園玩」,掃瞄7字詞典,無

第2次:「在野生動物園」,掃瞄6字詞典,無

。。。。

第6次:「在野」,掃瞄2字詞典,有

掃瞄中止,輸出第2個詞為「在野」,去除第2個詞後開始第3輪掃瞄,即:

第3輪掃瞄:

第1次:「生動物園玩」,掃瞄5字詞典,無

第2次:「生動物園」,掃瞄4字詞典,無

第3次:「生動物」,掃瞄3字詞典,無

第4次:「生動」,掃瞄2字詞典,有

掃瞄中止,輸出第3個詞為「生動」,第4輪掃瞄,即:

第4輪掃瞄:

第1次:「物園玩」,掃瞄3字詞典,無

第2次:「物園」,掃瞄2字詞典,無

第3次:「物」,掃瞄1字詞典,無

掃瞄中止,輸出第4個詞為「物」,非字典詞數加1,開始第5輪掃瞄,即:

第5輪掃瞄:

第1次:「園玩」,掃瞄2字詞典,無

第2次:「園」,掃瞄1字詞典,有

掃瞄中止,輸出第5個詞為「園」,單字字典詞數加1,開始第6輪掃瞄,即:

第6輪掃瞄:

第1次:「玩」,掃瞄1字字典詞,有

掃瞄中止,輸出第6個詞為「玩」,單字字典詞數加1,整體掃瞄結束。

正向最大匹配法,最終切分結果為:「我們/在野/生動/物/園/玩」,其中,單字字典詞為2,非詞典詞為1。

由結果可以看出,其工作效率較差,分詞準確度不高。

2.逆向最大匹配法:

與正向相反,從後往前取詞。

第1輪掃瞄:「在野生動物園玩」

第1次:「在野生動物園玩」,掃瞄7字詞典,無

第2次:「野生動物園玩」,掃瞄6字詞典,無

。。。。

第7次:「玩」,掃瞄1字詞典,有

掃瞄中止,輸出「玩」,單字字典詞加1,開始第2輪掃瞄

第2輪掃瞄:「們在野生動物園」

第1次:「們在野生動物園」,掃瞄7字詞典,無

第2次:「在野生動物園」,掃瞄6字詞典,無

第3次:「野生動物園」,掃瞄5字詞典,有

掃瞄中止,輸出「野生動物園」,開始第3輪掃瞄

第3輪掃瞄:「我們在」

第1次:「我們在」,掃瞄3字詞典,無

第2次:「們在」,掃瞄2字詞典,無

第3次:「在」,掃瞄1字詞典,有

掃瞄中止,輸出「在」,單字字典詞加1,開始第4輪掃瞄

第4輪掃瞄:「我們」

第1次:「我們」,掃瞄2字詞典,有

掃瞄中止,輸出「我們」,整體掃瞄結束。

逆向最大匹配法,最終切分結果為:「我們/在/野生動物園/玩」,其中,單字字典詞為2,非詞典詞為0。

由結果推斷,逆向最大匹配分詞相較於正向而言,其正確率要高。

據統計結果表明,單純使用正向最大匹配法的錯誤率為1/169,單純使用逆向最大匹配法的錯誤率為1/245,顯然逆向最大匹配分詞法較正向最大匹配分詞法在切分準確率上有了較大提高,這一結果與漢語中心語偏後有一定的關係。

3.雙向最大匹配法

正向最大匹配法和逆向最大匹配法,都有其侷限性(如:長**店,逆向切分為「長/**店」),因此有人又提出了雙向最大匹配法,雙向最大匹配法。即,兩種演算法都切一遍,然後根據大顆粒度詞越多越好,非詞典詞和單字詞越少越好的原則,選取其中一種分詞結果輸出。

如:「我們在野生動物園玩」

正向最大匹配法,最終切分結果為:「我們/在野/生動/物/園/玩」,其中,兩字詞3個,單字字典詞為2,非詞典詞為1。

逆向最大匹配法,最終切分結果為:「我們/在/野生動物園/玩」,其中,五字詞1個,兩字詞1個,單字字典詞為2,非詞典詞為0。

非字典詞:正向(1)>逆向(0)(越少越好)

單字字典詞:正向(2)=逆向(2)(越少越好)

總詞數:正向(6)>逆向(4)(越少越好)

因此最終輸出為逆向結果。

總結一下就是,雙向最大匹配法,側重於分詞過程中的檢查和糾錯的功能,其基本原理是對切分字串採用正逆兩向最大匹配,進行初步的切分,然後比較兩個結果,如果結果一致,則ok。如果不一致,則判定為存在切分的歧義,需要進一步操作來消除歧義。在上面的例子中我們可以看到,根據大顆粒度詞越多越好(例子裡為「野生動物園」),非詞典詞和單字詞越少越好的原則,我們可以在正逆兩向中選擇乙個作為結果。因此雙向最大匹配也就是將前兩種分詞法都進行一遍然後進行乙個選優。

暫時先介紹這三種簡單的分詞方法。

最後介紹分詞的幾個定義:

unigram 一元分詞,把句子分成乙個乙個的漢字

bigram 二元分詞,把句子從頭到尾每兩個字組成乙個詞語

trigram 三元分詞,把句子從頭到尾每三個字組成乙個詞語.

在將文字進行預處理之後,我們要對文字轉化為特徵。這裡首先介紹一種文字特徵提取統計演算法:tf-idf。

以下內容搬自我的部落格:

tf-idf是一種文字特徵提取統計演算法。

首先依舊提出幾個定義。

詞頻(tf)即乙個詞語在文字**現的頻率。

文字總數(d):所蒐集的所有文字數。

由以上三個定義,可得tf-idf公式:

tf-idf(w)=tf(w)*idf(w)

tf(w)=w在所有檔案**現的次數/該檔案的總詞數。

idf(w)=log(d/(dw+1))//+1避免分母為0

idf的作用:

降低具有普遍性詞語的權重(比如一些語氣詞),提公升具有個性化的詞的頻率。

總結一下就是:

乙個詞的重要性和它在當前文件**現的次數成正比,和所有文件**現的次數成反比。

對於中文的文字進行處理的步驟:

1.分詞處理

2.生成向量

3.根據向量去做主題聚類

文字分析入門(一)

今天在圖書館查了不少資料,感覺沒什麼特別好的學習途徑。主要通過部落格,李航的 統計學習方法 相關比賽 來學習。首先還是介紹幾個名詞,乙個新領域總是有很多新名詞。tokenization 將文字轉化為tokens的過程 tokens 在文字裡的展示的單詞或實體 文字分析也好,平時做的資料探勘也好,開始...

python,文字分析

記得將當前目錄設定為檔案目錄 spyder編譯器的右上角,本人用spyder filename input 請輸入你的檔名 file open filename txt try for eachline in file print eachline except print 開啟檔案出錯 final...

文字分析awk

awk awk是乙個強大的文字分析工具。相對於grep的查詢,sed的編輯,awk在其對資料分析並生成報告時,顯得尤為強大。簡單來說awk就是把檔案逐行的讀入,空格,製表符 為預設分隔符將每行切片,切開的部分再進行各種分析處理。awk f 支援自定義分隔符 支援正規表示式匹配 支援自定義變數,陣列 ...