資料探勘乾貨總結(一)--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(最後一個字元相同),則:Xm與Yn的最長公共子序列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]記錄序列Xi和Yj的最長公共子序列的長度
④那麼對於兩個序列: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)
以上。
聽說,愛點讚的人運氣都不會太差哦
如果有任何意見和建議,也歡迎在下方留言~
關注這個公眾號,定期會有大資料學習的乾貨推送給你哦~
點選這裡檢視往期精彩內容: