今天開始記錄一下本狗學習機器學習以及深度學習的過程。
先從與大數據相關的最基礎的開始
今天先記錄一下NLP文本相似度
開始相似度之前先了解一下相似度與距離之間的關係:
顯然,越相似距離越近,成正比的關係;
接下來記錄一下文本相似度,文本相似度分兩類
1、語意相似:語意相似但字面不相似
eg:本狗的學習之旅
我的學習之路
2、字面相似:字面相似,但是語義不相似
eg:我吃飽飯了
我吃不飽飯
那怎樣來解決呢?
1、語意相似:基於共點擊的行爲(協同過濾,後面本狗會更新),
藉助迴歸算法(後面會更新)
2、字面相似:LCS最大公共子序列
中文分詞(eg:本狗/的/學習/之路
字面相似的問題解決
1)餘弦相似度:cos=ab/|a|*|b|
舉個例子:
句子1:這件衣服尺寸大了,那件尺寸合適
句子2:這件衣服尺寸不大,那件更合適
對這兩句話就行分詞
句子1:這件/衣服/尺寸/大了,那件/尺寸/合適
句子2:這件/衣服/尺寸/不/大,那件/更/合適
接下來進行去重窮舉列出所有分詞BOW(bag of words)
這件,衣服,尺寸,大了,那件,合適,不,大,更
計算詞頻:
句子1:這件 1,衣服 1,尺寸2,大了1,那件 1,合適 0,不 0,大 0,更 0
句子2:這件 1,衣服1,尺寸 1,大了 0,那件1,合適 1,不 1,大 1,更1
句子1:(1,1,2,1,1,0,0,0,0)
句子2:(1,1,1,0,1,1,1,1,1)
計算餘弦相似度:=0.625
值越大越相似
接下來看TFIDF
tf:詞頻:一個詞在文章中出現的次數
關鍵詞:在當前文章出現較多,但在其他文章中出現較少
當然要注意的是:文章中出現最多的不一定是關鍵詞,要注意出現最多的是“的”,“是”,“在”,“了”,這類最常用的詞叫停用詞
停用詞對結果毫無幫助,必須過濾掉
還需要注意:如果某個詞比較少見,但是在這篇文章中多次出現,那麼它很可能反映了這篇文章的特性,正是我們需要的關鍵詞
因此,在詞頻的基礎上,賦予每一個詞的權重,進一步體現該詞的重要性
最常見的詞:(“的”,“是”,“在”)給予最小的權重
較常見的詞:(“國內”,“中國”,“報道”)給予較小的權重
少見的詞:(“禍害”,“繁殖”)給予較高的權重
idf:反文檔頻率
將tf和idf相乘,就得到一個tf-idf值,某個詞對文章重要性越高,該值越大
詞頻和反文檔頻率怎樣計算呢
詞頻(TF)= 某個詞在文章中出現的次數 / 文章的總詞數
詞頻(TF)=某個詞在文章中出現的次數 / 該文出現次數最多的詞的出現次數
反文檔頻率(IDF)= log( 語料庫的文檔總數 / 包含該詞的文檔數+1)
使用log函數爲了是得到的曲線更加平滑,文檔數加1,爲了是得到的IDF是一個正值。
關於NLP文本出路的TFIDF原理到此,怎樣分詞後面會更新。接下來就是實踐,LCS的方式下一次更新。