欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python基于Gensim實現(xiàn)文本相似度/匹配/查重

 更新時間:2024年03月08日 10:30:51   作者:小龍在山東  
Gensim是基于Python語言的自然語言處理庫,用來主題建模、文本相似度等文本處理任務,下面我們就來看看如何使用Gensim實現(xiàn)文本相似度/匹配/查重等操作吧

Gensim是基于Python語言的自然語言處理庫,用來主題建模、文本相似度等文本處理任務。

Gensim的工作流程包括:分詞、生成詞典、向量化、模型訓練等。

LSI模型

import jieba
from gensim import corpora, models, similarities

# 文本數(shù)據(jù)集
data = ['張文宏談為何這個冬天總生病',
        '“為什么這個冬天我們好像一直在生???”張文宏這樣說→']

# 分詞
token_list = []
for sentence in data:
    tokens = [word for word in jieba.lcut(sentence)]
    token_list.append(tokens)
print(token_list)

# 詞典,單詞映射唯一ID
dic = corpora.Dictionary(token_list)

# 文本轉(zhuǎn)化為文檔-詞袋(document-term)表示
corpus = [dic.doc2bow(doc) for doc in token_list]
print(corpus)

# 生成模型
lda_model = models.LsiModel(corpus, num_topics=2, id2word=dic)

# 主題及其詞匯
for topic in lda_model.print_topics():
    print(topic)

# 索引
index = similarities.MatrixSimilarity(lda_model[corpus])

query = '為什么這個冬天我們好像一直在生病'

# 預處理
query_bow = dic.doc2bow(jieba.lcut(query))

# 相似性得分
sims = index[lda_model[query_bow]]

sims = sorted(enumerate(sims), key=lambda item: -item[1])

for document_id, similarity in sims:
    print(document_id, similarity)

TFIDF

方案一

import jieba
from gensim import corpora, models, similarities
if __name__ == '__main__':
    base_data = [
        "好雨知時節(jié),當春乃發(fā)生。隨風潛入夜,潤物細無聲。野徑云俱黑,江船火獨明。曉看紅濕處,花重錦官城。",
        "君問歸期未有期,巴山夜雨漲秋池。何當共剪西窗燭,卻話巴山夜雨時。",
        "莫聽穿林打葉聲,何妨吟嘯且徐行。竹杖芒鞋輕勝馬,誰怕?一蓑煙雨任平生。料峭春風吹酒醒,微冷,山頭斜照卻相迎?;厥紫騺硎捝?,歸去,也無風雨也無晴。",
        "天街小雨潤如酥,草色遙看近卻無。最是一年春好處,絕勝煙柳滿皇都。",
        "古木陰中系短篷,杖藜扶我過橋東。沾衣欲濕杏花雨,吹面不寒楊柳風。",
        "少年聽雨歌樓上。紅燭昏羅帳。壯年聽雨客舟中。江闊云低、斷雁叫西風。 而今聽雨僧廬下。鬢已星星也。悲歡離合總無情。一任階前、點滴到天明。",
        "雨里雞鳴一兩家,竹溪村路板橋斜。婦姑相喚浴蠶去,閑看中庭梔子花。",
        "一夕輕雷落萬絲,霽光浮瓦碧參差。有情芍藥含春淚,無力薔薇臥曉枝。"
    ]
    # 1.將base_data中的數(shù)據(jù)進行遍歷后分詞
    base_items = [[i for i in jieba.lcut(item)] for item in base_data]
    print(base_items)
    # 2.生成詞典
    dictionary = corpora.Dictionary(base_items)
    # 3.通過doc2bow稀疏向量生成語料庫
    corpus = [dictionary.doc2bow(item) for item in base_items]
    # 4.通過TF模型算法,計算出tf值
    tf = models.TfidfModel(corpus)
    # 5.通過token2id得到特征數(shù)(字典里面的鍵的個數(shù))
    num_features = len(dictionary.token2id.keys())
    # 6.計算稀疏矩陣相似度,建立一個索引
    index = similarities.MatrixSimilarity(tf[corpus], num_features=num_features)
    # 7.處理測試數(shù)據(jù)
    test_text = "風雨凄凄,雞鳴喈喈。既見君子,云胡不夷。風雨瀟瀟,雞鳴膠膠。既見君子,云胡不瘳。風雨如晦,雞鳴不已。既見君子,云胡不喜。"
    test_words = [word for word in jieba.cut(test_text)]
    print(test_words)
    # 8.新的稀疏向量
    new_vec = dictionary.doc2bow(test_words)
    # 9.算出相似度
    sims = index[tf[new_vec]]
    print(list(sims))

方案二

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模型】,傳入【語料庫】來訓練
tfidf = TfidfModel(corpus)
# 5、用訓練好的【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))

方案三

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])

到此這篇關于Python基于Gensim實現(xiàn)文本相似度/匹配/查重的文章就介紹到這了,更多相關Python Gensim內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Pygame Display顯示模塊的使用方法

    Pygame Display顯示模塊的使用方法

    本文主要介紹了Pygame Display顯示模塊的使用方法,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • 關于Python使用logging庫進行有效日志管理的方法詳解

    關于Python使用logging庫進行有效日志管理的方法詳解

    在開發(fā)大型軟件或處理復雜問題時,我們經(jīng)常需要一種方法來記錄和跟蹤程序的運行狀態(tài),Python 提供了一個名為 logging 的標準庫,可以幫助我們更好地完成這項任務,在這篇文章中,我們將介紹如何使用 Python 的 logging 庫進行日志記錄
    2023-06-06
  • Python繪制分段函數(shù)的實現(xiàn)示例

    Python繪制分段函數(shù)的實現(xiàn)示例

    本文主要介紹了Python繪制分段函數(shù)的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-04-04
  • python如何爬取網(wǎng)站數(shù)據(jù)并進行數(shù)據(jù)可視化

    python如何爬取網(wǎng)站數(shù)據(jù)并進行數(shù)據(jù)可視化

    這篇文章主要介紹了python爬取拉勾網(wǎng)數(shù)據(jù)并進行數(shù)據(jù)可視化,爬取拉勾網(wǎng)關于python職位相關的數(shù)據(jù)信息,并將爬取的數(shù)據(jù)已csv各式存入文件,然后對csv文件相關字段的數(shù)據(jù)進行清洗,并對數(shù)據(jù)可視化展示,包括柱狀圖展示、直方圖展示,需要的朋友可以參考下
    2019-07-07
  • Python實戰(zhàn)之畫哆啦A夢(超詳細步驟)

    Python實戰(zhàn)之畫哆啦A夢(超詳細步驟)

    這篇文章主要介紹了Python實戰(zhàn)之畫哆啦A夢(超詳細步驟),文中有非常詳細的代碼示例,對正在學習python的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • JSON文件及Python對JSON文件的讀寫操作

    JSON文件及Python對JSON文件的讀寫操作

    JSON和XML都是互聯(lián)網(wǎng)上數(shù)據(jù)交換的主要載體。這篇文章主要介紹了JSON文件及Python對JSON文件的讀寫操作,需要的朋友可以參考下
    2018-10-10
  • Python中一行和多行import模塊問題

    Python中一行和多行import模塊問題

    我們通過本篇文章給大家分析了為什么Python不建議使用一行import所有模塊的原因,有興趣的朋友學習下。
    2018-04-04
  • Python實現(xiàn)的數(shù)據(jù)結(jié)構(gòu)與算法之隊列詳解

    Python實現(xiàn)的數(shù)據(jù)結(jié)構(gòu)與算法之隊列詳解

    這篇文章主要介紹了Python實現(xiàn)的數(shù)據(jù)結(jié)構(gòu)與算法之隊列,詳細分析了隊列的定義、功能與Python實現(xiàn)隊列的相關技巧,以及具體的用法,需要的朋友可以參考下
    2015-04-04
  • Pandas庫中dataframe.corr()函數(shù)的使用

    Pandas庫中dataframe.corr()函數(shù)的使用

    dataframe.corr()是Pandas庫中的一個函數(shù),用于計算DataFrame中各列之間的相關系數(shù),本文主要介紹了Pandas庫中dataframe.corr()函數(shù)的使用,具有一定的參考價值,感興趣的可以了解一下
    2024-07-07
  • python實現(xiàn)鄰接表轉(zhuǎn)鄰接矩陣

    python實現(xiàn)鄰接表轉(zhuǎn)鄰接矩陣

    這篇文章主要介紹了python實現(xiàn)鄰接表轉(zhuǎn)鄰接矩陣,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12

最新評論