資料探勘 分詞入門

2022-01-22 00:28:42 字數 2885 閱讀 6534

1、基於詞典的分詞,需要先預設乙個分詞詞典,比如上面句子切分出來的「假如、上午」這些詞先存放在詞典,然後把句子切分成單字組合成詞語去詞典裡查詢,匹配上了就挑選出來乙個詞。沒有匹配上的就切分成單字。

2、基於統計的分詞,需要先獲取大量的文字語料庫(比如新聞、微博等),然後統計文字裡相鄰的字同時出現的次數,次數越多就越可能構成乙個詞。當達到一定次數時就構成了乙個詞即可形成語料概率庫。再對上面句子進行單字切分,把字與字結合後在語料概率庫里查詢對應的概率,如果概率大於一定值就挑選出來形成乙個詞。這個是大概描述,實際生產環境中還需要對句子的上下文進行結合才能更準確的分詞。

3、基於語義的分詞,簡而言之就是模擬人類對句子的理解來進行分詞。需要先整理出中文語句的句法、語義資訊作為知識庫,然後結合句子的上下文,對句子進行單字切分後組合成詞逐個帶入知識庫進行識別,識別出來就挑選出乙個詞。目前還沒有特別成熟的基於語義的分詞系統。

1、正向最大匹配,沿著我們看到的句子逐字拆分後組合成詞語到詞典裡去匹配,直到匹配不到詞語為止。舉個實際的例子:「人民大會堂真雄偉」,我們先拆分為單字「人」去詞典裡去查詢,發現有「人」這個詞,繼續組合句子裡的單字組合「人民」去詞典裡查詢,發現有「人民」這個詞,以此類推發現到「人民大會堂」,然後會結合「人民大會堂真」去詞典裡查詢沒有找到這個詞,第乙個詞「人民大會堂」查詢結束。最終分詞的結果為:「人民大會堂/真/雄偉」。

2、逆向最大匹配,這個和上面相反,就是倒著推理。比如「沿海南方向」,我們按正向最大匹配來做就會切分成 「沿海/南方/向」,這樣就明顯不對。採用逆向最大匹配法則來解決這個問題,從句子的最後取得「方向」這兩個字查詢詞典找到「方向」這個詞。再加上「南方向」組成三字組合查詢詞典沒有這個詞,查詢結束,找到「方向」這個詞。以此類推,最終分出「沿/海南/方向」。

3、雙向最大匹配,顧名思義就是結合正向最大匹配和逆向最大匹配,最終取其中合理的結果。最早由哈工大王曉龍博士理論化的取最小切分詞數,比如「我在中華人民共和國家的院子裡看書」,正向最大匹配切分出來為「我/在/中華人民共和國/家/的/院子/裡/看書」工8個詞語,逆向最大匹配切分出來為「我/在/中華/人民/共/和/國家/的/院子/裡/看書」共11個詞語。取正向最大匹配切出來的結果就是正確的。但是如果把上面那個例子「沿海南方向」雙向切分,都是3個詞語,改如何選擇?看第4個《最佳匹配法則》。

4、最佳匹配法則,先準備一堆文字語料庫、乙個詞庫,統計詞庫里的每乙個詞在語料庫裡出現的次數記錄下來。最後按照詞頻高的優先選出,比如「沿海南方向」,正向切分為:「沿海/南方/向」,逆向切分為:「沿/海南/方向」。其中「海南」的頻度最高,優先取出來。剩下「沿」、「方向」也就正常切分了。是不是這就是基於詞典分詞的最佳方案?比如數學之美中提到的:「把手抬起來」 和 「這扇門的把手」,可以分為「把」、「手」、「把手」,不管怎麼分總有一句話的意思不對。後續再介紹如何通過統計的分詞處理這些問題。

說了這麼多,我們來實戰一下如何基於詞典的分詞:

public

class

testpositivematch

i++;

}if (!matchword.isempty())

else

matchword = "";}}

}

輸出結果為: 我 愛 這 個 中華人民共和國 大 家 庭

按照這樣我們乙個基本的分詞程式開發完成。

public

class

testsentimentpositivematch

if (decorativedict.contains(keytmp))

i++;

}if (!matchsentimentword.isempty())

if (!matchdecorativeword.isempty())

else

matchsentimentword = "";

matchdecorativeword = "";

}double totalscore = 1;

for(string decorativeword : decorativewordlist)

system.out.print("\r\n");

if (totalscore > 0)

else}}

機器再也不是冷冰冰的,看起來他能讀懂你的意思了。不過這只是乙個開始,丟擲幾個問題:

1、如何讓程式識別句子中的時間?比如「上午」、「下午2點」。

2、如何處理「把手抬起來」 和 「這扇門的把手」中的「把」與「手」的問題?

3、如何構建海量的知識庫,讓程式從「嬰兒」變成「成年人」?

4、如何使用有限的儲存空間海量的知識庫?

5、如何提高程式在海量知識庫中查詢定位資訊的效率?

6、如何識別新詞、人名、新鮮事物等未知領域?

這是《紐約時報》刊登的2張**,一張是老鼠的腦細胞(左),一張是宇宙(右)。早期宇宙中星系互連關係,和大腦神經元相互連線,幾乎無法分辨兩張圖之間的不同,大腦細胞與整個宇宙擁有一樣的結構。

宇宙芸芸眾生都是相通的,大腦也許就是乙個小宇宙,在這個小宇宙又有很多星球、住著很多生物。而電腦也是宇宙中地球上的乙個產物,只要儲存計算速度發展到足夠強大一定可以構建成乙個強大的大腦。

你看這個單詞 「testaword」 認識嗎?可能不認識,因為我們五官先獲取到的資訊,然後根據大腦以往學習的經驗做出判斷。但是你看這個短語 」 test a word」 認識嗎?再看看開始那個單詞「testaword」是不是就親切多了?

資料探勘入門 分詞

隨著社會化資料大量產生,硬體速度上公升 成本降低,大資料技術的落地實現,資料這座金山已浮出水面。這裡,嚴瀾將帶我們逐漸開啟這座金山 從 分詞 開始挖掘資料。1.基於詞典的分詞,需要先預設乙個分詞詞典,比如上面句子切分出來的 假如 上午 這些詞先存放在詞典,然後把句子切分成單字組合成詞語去詞典裡查詢,...

Python資料探勘 中文分詞

將乙個漢字序列切分成乙個乙個單獨的詞 安裝分詞模組 pip install jieba 分詞在特殊場合的實用性,呼叫add word 把我們要新增的分詞加入jieba詞庫 高效方法 將txt儲存的詞庫一次性匯入使用者詞庫中 import jieba jieba.load userdict d pyt...

資料探勘入門

性挖掘 對當前資料進行推斷,以做出 主要包括分類 回歸。分類 將樣本劃分到幾個預定義類,屬於離散。回歸 將樣本對映到乙個真實值 變數上,連續值。描述資料 描述資料庫中資料的一般性質。聚類 將樣本劃分為不同類 無預定義類 關聯規則發現 發現資料集中相關性。聚類分析,在發現緊密相關的觀測值組群,可以在沒...