1. 程式人生 > >資料探勘乾貨總結(一)--NLP基礎

資料探勘乾貨總結(一)--NLP基礎

本文共計1463字,預計閱讀時長八分鐘

NLP-基礎和中文分詞

本質

NLP (Natural Language Processing)自然語言處理是一門研究計算機處理人類語言的技術

、NLP用來解決什麼問題

語音合成(Speech synthesis)

語音識別(Speech recognition)

中文分詞(Chinese word segmentation)☆

文字分類(Text categorization)☆

資訊檢索(Information retrieval)

問答系統(Question answering)

機器翻譯(Machine translation)

自動摘要(Automatic summarization)

。。。

、NLP基礎

1.相似度度量

1)意義

計算個體間相似程度是機器學習和資料探勘的基礎作為評判個體間差異的大小

2)度量的方法

空間歐氏距離

路徑曼哈頓距離

加權標準化歐氏距離

編碼差別漢明距離

集合近似度傑卡德類似係數與距離

相關相關係數與相關距離

向量差距夾角餘弦最常用的度量方法

3)相似文字計算的流程

– 找出兩篇文章的關鍵詞

– 每篇文章各取出若干個關鍵詞合併成一個集合計算每篇文章對於這個集合中詞的詞頻

– 生成兩篇文章各自的詞頻向量

– 

計算兩個向量的餘弦相似度值越大就表示越相似

2. TF-IDF詞頻與反文件頻率

1)意義

找出文章中重要性最高的詞是自動摘要推薦演算法等技術的基礎

2)概念

僅僅用詞頻TF,並不能表明一個詞的重要性還要綜合考慮每個詞的權重因此需要計算IDF。TF*IDF可以有效地表示一個詞對文章的重要性

3)相似文章計算的流程

– 使用TF-IDF演算法找出兩篇文章的關鍵詞

– 每篇文章各取出若干個關鍵詞比如20),合併成一個集合計算每篇文章對於這個集合中的詞的詞頻為了避免文章長度的差異可以使用相對詞頻);

– 生成兩篇文章各自的詞頻向量

– 計算兩個向量的餘弦相似度

值越大就表示越相似

4)生成自動摘要的流程

– 使用TF-IDF演算法找出文章的關鍵詞

– 過濾掉停用詞後排序

– 將文章分成句子/

– 計算每個句子/簇的重要性

– 將重要性最高的句子/簇組合生成摘要

3. LCS最長公共子序列(Longest Common Subsequence)

1)意義

即找出兩個序列中最長的公共子序列廣泛的應用在圖形相似處理媒體流的相似比較計算生物學方面

2)演算法——動態規劃

如果xm = yn(最後一個字元相同),:XmYn的最長公共子序列LCS(Xm,Yn)的最後一個字元必定為xm(=yn)

如果xm ≠ yn,LCS(Xm,Yn) = max{LCS(Xm−1,Yn), LCS(Xm, Yn−1)}

建立一個二維陣列C[m,n],C[i,j]記錄序列XiYj的最長公共子序列的長度

那麼對於兩個序列:X =<A, B, C, B, D, A, B>Y=<B, D, C, A, B, A>,可以通過如下二維陣列求出LCS的長度

4. 中文分詞☆

1)意義

自然語言處理中與英文不同中文詞之間沒有空格所以為了實現機器對中文資料的處理多了一項很重要的任務——中文分詞

2)方法基於詞典匹配的最大長度查詢有前向查詢和後向查詢兩種

         +

資料結構Trie單詞查詢樹字典樹),明顯提高查詢效率

3)工具Jieba分詞(下一篇詳細介紹)

4)概率語言模型

概率語言模型的任務是在全切分所得的所有結果中求某個切分方案S,使得P(S)最大

#STEP1

從統計思想的角度來看分詞問題的輸入是一個字串C=c1,c2……cn ,輸出是一個詞串S=w1,w2……wm ,其中m<=n。對於一個特定的字串C,會有多個切分方案S對應分詞的任務就是在這些S中找出一個切分方案S,使得P(S|C)的值最大

P(S|C)就是由字串C產生切分S的概率也就是對輸入字串切分出最有可能的詞序列基於貝葉斯公式可以得到如下推論

轉換的精髓

#STEP2

• P(C)只是一個用來歸一化的固定值

• 從詞串恢復到漢字串的概率只有唯一的一種方式所以P(C|S)=1。

• 所以比較P(S1|C)P(S2|C)的大小變成比較P(S1)P(S2) 的大小

#STEP3

• 為了容易實現假設每個詞之間的概率是上下文無關的(註釋)

• 最後算 logP(w),log是為了防止向下溢位如果一個數太小,10^-30可能會向下溢位

• 如果這些對數值事前已經算出來了則結果直接用加法就可以得到而加法比乘法速度更快

***N元模型***

在此需要引入一個N元模型的概念前後兩詞出現概率並不是相互獨立的嚴格意義上

P(w1,w2)= P(w1)P(w2|w1)

P(w1,w2,w3)= P(w1,w2)P(w3|w1,w2)

那麼

P(w1,w2,w3)= P(w1)P(w2|w1)P(w3|w1,w2)

所以

 P(S)=P(w1,w2,...,wn)= P(w1)P(w2|w1)P(w3|w1,w2)…P(wn|w1w2…wn-1)

這個式子叫做概率的鏈規則

顯然這個式子不好求解需要進行簡化:

① 如果簡化成一個詞的出現僅依賴於它前面出現的一個詞那麼就稱為二元模型(Bigram)

P(S) = P(w1,w2,...,wn)≈P(w1) P(w2|w1)P(w3|w2)…P(wn|wn-1)

② 如果簡化成一個詞的出現僅依賴於它前面出現的兩個詞就稱之為三元模型(Trigram)。

③ 如果一個詞的出現不依賴於它前面出現的詞叫做一元模型(Unigram)。

 P(S)=P(w1,w2,...,wn)= P(w1)P(w2)P(w3)…P(wn)

以上。

聽說,愛點讚的人運氣都不會太差哦

如果有任何意見和建議,也歡迎在下方留言~

關注這個公眾號,定期會有大資料學習的乾貨推送給你哦~

點選這裡檢視往期精彩內容: