计算多个文档之间的文本相似程度
生活随笔
收集整理的這篇文章主要介紹了
计算多个文档之间的文本相似程度
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
首先我們上代碼:
from sklearn.feature_extraction.text import CountVectorizer corpus = [ 'UNC played Duke in basketball', 'Duke lost the basketball game', 'I ate a sandwich' ] vectorizer = CountVectorizer(binary=True,stop_words='english')#設置停用詞為英語,這樣就會過濾掉 #過濾掉a an the 等不必要的冠詞,同時設定英語里的同種詞的形式,單復數,過去式等為同樣的詞語 print(vectorizer.fit_transform(corpus).todense()) print(vectorizer.vocabulary_)輸出:
[[0 1 1 0 0 1 0 1][0 1 1 1 1 0 0 0][1 0 0 0 0 0 1 0]] {'unc': 7, 'played': 5, 'duke': 2, 'basketball': 1, 'lost': 4, 'game': 3, 'ate': 0, 'sandwich': 6}前面三行的矩陣只有0和1兩個值,每一個矩陣都有8個0或者1,這里說明了我們的詞庫當中一共有8個不同的英語詞匯,由于之前我們使用了代碼:
vectorizer = CountVectorizer(binary=True,stop_words='english')#設置停用詞為英語,這樣就會過濾掉 #過濾掉a an the 等不必要的冠詞,同時設定英語里的同種詞的形式,單復數,過去式等為同樣的詞語因此我們已經過濾掉了a an tne?這種英語里的冠詞,每一個名次的單復數,動詞的過去,過去完成時等詞,比如說我們的play和played計算機就會默認為是同一個詞了,真的神奇。
后面的輸出0和1表示了所有詞庫當中的某一個詞是否出現,我們所有的詞匯的所對應的數值已經計算出:
{'unc': 7, 'played': 5, 'duke': 2, 'basketball': 1, 'lost': 4, 'game': 3, 'ate': 0, 'sandwich': 6} 在每一句話當中,出現就記為1,不出現則記為0,這就是上述矩陣的含義了。最后我們通過sklearn庫當中的函數來計算這三個句子特征向量的歐式距離,其實就是把我們的矩陣拿來計算,計算的公式如下:
代碼如下:
from sklearn.metrics.pairwise import euclidean_distances counts = vectorizer.fit_transform(corpus).todense() for x,y in [[0,1],[0,2],[1,2]]:dist = euclidean_distances(counts[x],counts[y])print('文檔{}與文檔{}的距離{}'.format(x,y,dist))因此我們有輸出:
文檔0與文檔1的距離[[2.]] 文檔0與文檔2的距離[[2.44948974]] 文檔1與文檔2的距離[[2.44948974]]說明文檔2和文檔1、0的相似程度是一樣的。
轉載于:https://www.cnblogs.com/geeksongs/p/11189136.html
總結
以上是生活随笔為你收集整理的计算多个文档之间的文本相似程度的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 项目时间进度计划与项目进度控制
- 下一篇: Xcode 9以下(xip) 官方直接下