最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python+gensim實現(xiàn)文本相似度分析詳解

 更新時間:2023年07月28日 10:26:29   作者:小基基o_O  
這篇文章主要介紹了Python+gensim實現(xiàn)文本相似度分析詳解,在開發(fā)中我們會遇到進(jìn)行文本相似度分析的需求,計算文本相似度,用于鑒別文章是否存在抄襲,需要的朋友可以參考下

1、gensim使用流程

在這里插入圖片描述

2、代碼實現(xiàn)

from jieba import lcut
from gensim.similarities import SparseMatrixSimilarity
from gensim.corpora import Dictionary
from gensim.models import TfidfModel
# 文本集和搜索詞
texts = ['吃雞這里所謂的吃雞并不是真的吃雞,也不是諧音詞刺激的意思',
         '而是出自策略射擊游戲《絕地求生:大逃殺》里的臺詞',
         '我吃雞翅,你吃雞腿']
keyword = '玩過吃雞?今晚一起吃雞'
# 1、將【文本集】生成【分詞列表】
texts = [lcut(text) for text in texts]
# 2、基于文本集建立【詞典】,并獲得詞典特征數(shù)
dictionary = Dictionary(texts)
num_features = len(dictionary.token2id)
# 3.1、基于詞典,將【分詞列表集】轉(zhuǎn)換成【稀疏向量集】,稱作【語料庫】
corpus = [dictionary.doc2bow(text) for text in texts]
# 3.2、同理,用【詞典】把【搜索詞】也轉(zhuǎn)換為【稀疏向量】
kw_vector = dictionary.doc2bow(lcut(keyword))
# 4、創(chuàng)建【TF-IDF模型】,傳入【語料庫】來訓(xùn)練
tfidf = TfidfModel(corpus)
# 5、用訓(xùn)練好的【TF-IDF模型】處理【被檢索文本】和【搜索詞】
tf_texts = tfidf[corpus]  # 此處將【語料庫】用作【被檢索文本】
tf_kw = tfidf[kw_vector]
# 6、相似度計算
sparse_matrix = SparseMatrixSimilarity(tf_texts, num_features)
similarities = sparse_matrix.get_similarities(tf_kw)
for e, s in enumerate(similarities, 1):
    print('kw 與 text%d 相似度為:%.2f' % (e, s))

打印結(jié)果

keyword 與 text1 相似度為:0.65
keyword 與 text2 相似度為:0.00
keyword 與 text3 相似度為:0.12

3、過程拆解

3.1、生成分詞列表

對文本集中的文本進(jìn)行 中文分詞,返回分詞列表

格式如下:

[‘word1’, ‘word2’, ‘word3’, …]

import jieba
text = '七月七日長生殿,夜半無人私語時。'
words = jieba.lcut(text)
print(words)

[‘七月’, ‘七日’, ‘長生殿’, ‘,’, ‘夜半’, ‘無人’, ‘私語’, ‘時’, ‘。’]

3.2、基于文本集建立詞典,獲取特征數(shù)

  • corpora.Dictionary:建立詞典
  • len(dictionary.token2id):詞典中詞的個數(shù)
from gensim import corpora
import jieba
# 文本集
text1 = '堅果果實'
text2 = '堅果實在好吃'
texts = [text1, text2]
# 將文本集生成分詞列表
texts = [jieba.lcut(text) for text in texts]
print('文本集:', texts)
# 基于文本集建立詞典
dictionary = corpora.Dictionary(texts)
print('詞典:', dictionary)
# 提取詞典特征數(shù)
feature_cnt = len(dictionary.token2id)
print('詞典特征數(shù):%d' % feature_cnt)

打印結(jié)果

文本集: [[‘堅果’, ‘果實’], [‘堅果’, ‘實在’, ‘好吃’]]

詞典: Dictionary(4 unique tokens: [‘堅果’, ‘果實’, ‘好吃’, ‘實在’])

詞典特征數(shù):4

3.3、基于詞典建立語料庫

語料庫即存放稀疏向量的列表

from gensim import corpora
import jieba
text1 = '來東京吃東京菜'
text2 = '東京啊東京啊東京'
texts = [text1, text2]
texts = [jieba.lcut(text) for text in texts]
dictionary = corpora.Dictionary(texts)
print('詞典(字典):', dictionary.token2id)
# 基于詞典建立新的【語料庫】
corpus = [dictionary.doc2bow(text) for text in texts]
print('語料庫:', corpus)

打印結(jié)果

詞典(字典): {‘東京’: 0, ‘吃’: 1, ‘來’: 2, ‘菜’: 3, ‘啊’: 4}
語料庫: [[(0, 2), (1, 1), (2, 1), (3, 1)], [(0, 3), (4, 2)]]

3.3.1、doc2bow函數(shù)

1、將所有單詞取【集合】,并對每個單詞分配一個ID號

['東京', '啊', '東京', '啊', '東京']為例

對單詞分配ID: 東京0; 4

變成: [0, 4, 0, 4, 0]

2、轉(zhuǎn)換成 稀疏向量

03個,即表示為( 0, 3)

42個,即表示為( 4, 2)

最終結(jié)果:[( 0, 3), ( 4, 2)]

3.3.2、搜索詞也轉(zhuǎn)成稀疏向量

from gensim import corpora
import jieba
text1 = '南方醫(yī)院無痛人流'
text2 = '北方人流落南方'
texts = [text1, text2]
texts = [jieba.lcut(text) for text in texts]
dictionary = corpora.Dictionary(texts)
# 用【詞典】把【搜索詞】也轉(zhuǎn)換為【稀疏向量】
keyword = '無痛人流'
kw_vector = dictionary.doc2bow(jieba.lcut(keyword))
print(kw_vector)

[(0, 1), (3, 1)]

3.4、用語料庫訓(xùn)練TF-IDF模型

  • TF-IDF是一種統(tǒng)計方法,用以評估一字詞對于一個文件集或一個語料庫中的其中一份文件的重要程度
from gensim import corpora, models, similarities
import jieba
text1 = '南方醫(yī)院無痛人流'
text2 = '北方人流浪到南方'
texts = [text1, text2]
texts = [jieba.lcut(text) for text in texts]
dictionary = corpora.Dictionary(texts)
feature_cnt = len(dictionary.token2id.keys())
corpus = [dictionary.doc2bow(text) for text in texts]
# 用語料庫來訓(xùn)練TF-IDF模型
tfidf = models.TfidfModel(corpus)
print(tfidf) 
TfidfModel(num_docs=2, num_nnz=9)

3.5、相似度計算

from gensim import corpora, models, similarities
import jieba
text1 = '無痛人流并非無痛'
text2 = '北方人流浪到南方'
texts = [text1, text2]
keyword = '無痛人流'
texts = [jieba.lcut(text) for text in texts]
dictionary = corpora.Dictionary(texts)
num_features = len(dictionary.token2id)
corpus = [dictionary.doc2bow(text) for text in texts]
tfidf = models.TfidfModel(corpus)
new_vec = dictionary.doc2bow(jieba.lcut(keyword))
# 相似度計算
index = similarities.SparseMatrixSimilarity(tfidf[corpus], num_features)
print('\nTF-IDF模型的稀疏向量集:')
for i in tfidf[corpus]:
    print(i)
print('\nTF-IDF模型的keyword稀疏向量:')
print(tfidf[new_vec])
print('\n相似度計算:')
sim = index[tfidf[new_vec]]
for i in range(len(sim)):
    print('第', i+1, '句話的相似度為:', sim[i])

  • 注釋

到此這篇關(guān)于Python+gensim實現(xiàn)文本相似度分析詳解的文章就介紹到這了,更多相關(guān)Python文本相似度分析內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python爬蟲_城市公交、地鐵站點和線路數(shù)據(jù)采集實例

    Python爬蟲_城市公交、地鐵站點和線路數(shù)據(jù)采集實例

    下面小編就為大家分享一篇Python爬蟲_城市公交、地鐵站點和線路數(shù)據(jù)采集實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • Python數(shù)據(jù)正態(tài)性檢驗實現(xiàn)過程

    Python數(shù)據(jù)正態(tài)性檢驗實現(xiàn)過程

    這篇文章主要介紹了Python數(shù)據(jù)正態(tài)性檢驗實現(xiàn)過程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-04-04
  • Pytorch模型轉(zhuǎn)onnx模型實例

    Pytorch模型轉(zhuǎn)onnx模型實例

    今天小編就為大家分享一篇Pytorch模型轉(zhuǎn)onnx模型實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • Python實現(xiàn)輕松防止屏幕截圖的技巧分享

    Python實現(xiàn)輕松防止屏幕截圖的技巧分享

    屏幕截圖是一種常見的用于記錄信息或者監(jiān)控用戶活動的方法,為了保護(hù)隱私和數(shù)據(jù)安全,可以通過使用Python編寫一些防護(hù)措施來防止他人截取我們的屏幕,下面我們就來學(xué)習(xí)一下有哪些具體操作吧
    2023-12-12
  • Python實現(xiàn)的彈球小游戲示例

    Python實現(xiàn)的彈球小游戲示例

    這篇文章主要介紹了Python實現(xiàn)的彈球小游戲,可實現(xiàn)類似乒乓球游戲的鍵盤控制底部擋板移動碰撞小球的游戲功能,需要的朋友可以參考下
    2017-08-08
  • Python多線程的退出控制實現(xiàn)

    Python多線程的退出控制實現(xiàn)

    這篇文章主要介紹了Python多線程的退出控制實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Matplotlib使用Cursor實現(xiàn)UI定位的示例代碼

    Matplotlib使用Cursor實現(xiàn)UI定位的示例代碼

    這篇文章主要介紹了Matplotlib使用Cursor實現(xiàn)UI定位的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • pandas計算最大連續(xù)間隔的方法

    pandas計算最大連續(xù)間隔的方法

    今天小編就為大家分享一篇pandas計算最大連續(xù)間隔的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • Python實現(xiàn)單詞拼寫檢查

    Python實現(xiàn)單詞拼寫檢查

    這篇文章主要介紹了Python實現(xiàn)單詞拼寫檢查,本文講解了單詞拼寫檢查的一些知識并給出兩種實現(xiàn)方法,需要的朋友可以參考下
    2015-04-04
  • pytyon 帶有重復(fù)的全排列

    pytyon 帶有重復(fù)的全排列

    輸入開始排列數(shù)字和結(jié)束排列數(shù)字, 就會一個字典序輸出所以的排列情況
    2013-08-08

最新評論

化隆| 万源市| 大关县| 安庆市| 呈贡县| 拉萨市| 克拉玛依市| 娄底市| 开远市| 沂水县| 沅江市| 兰坪| 大港区| 延长县| 厦门市| 游戏| 武鸣县| 永顺县| 高平市| 玛曲县| 松溪县| 花莲县| 泌阳县| 香港 | 丰台区| 合水县| 桓台县| 南郑县| 万荣县| 沾化县| 汪清县| 三门峡市| 西乡县| 岳普湖县| 甘南县| 仙桃市| 垫江县| 井陉县| 启东市| 进贤县| 五莲县|