日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

计算多个文档之间的文本相似程度

發布時間:2023/12/20 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 计算多个文档之间的文本相似程度 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

首先我們上代碼:

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

總結

以上是生活随笔為你收集整理的计算多个文档之间的文本相似程度的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。