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

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

 更新時(shí)間:2024年03月08日 10:30:51   作者:小龍?jiān)谏綎|  
Gensim是基于Python語(yǔ)言的自然語(yǔ)言處理庫(kù),用來(lái)主題建模、文本相似度等文本處理任務(wù),下面我們就來(lái)看看如何使用Gensim實(shí)現(xiàn)文本相似度/匹配/查重等操作吧

Gensim是基于Python語(yǔ)言的自然語(yǔ)言處理庫(kù),用來(lái)主題建模、文本相似度等文本處理任務(wù)。

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

LSI模型

import jieba
from gensim import corpora, models, similarities

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

# 分詞
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 = '為什么這個(gè)冬天我們好像一直在生病'

# 預(yù)處理
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 = [
        "好雨知時(shí)節(jié),當(dāng)春乃發(fā)生。隨風(fēng)潛入夜,潤(rùn)物細(xì)無(wú)聲。野徑云俱黑,江船火獨(dú)明。曉看紅濕處,花重錦官城。",
        "君問(wèn)歸期未有期,巴山夜雨漲秋池。何當(dāng)共剪西窗燭,卻話巴山夜雨時(shí)。",
        "莫聽(tīng)穿林打葉聲,何妨吟嘯且徐行。竹杖芒鞋輕勝馬,誰(shuí)怕?一蓑煙雨任平生。料峭春風(fēng)吹酒醒,微冷,山頭斜照卻相迎。回首向來(lái)蕭瑟處,歸去,也無(wú)風(fēng)雨也無(wú)晴。",
        "天街小雨潤(rùn)如酥,草色遙看近卻無(wú)。最是一年春好處,絕勝煙柳滿皇都。",
        "古木陰中系短篷,杖藜扶我過(guò)橋東。沾衣欲濕杏花雨,吹面不寒楊柳風(fēng)。",
        "少年聽(tīng)雨歌樓上。紅燭昏羅帳。壯年聽(tīng)雨客舟中。江闊云低、斷雁叫西風(fēng)。 而今聽(tīng)雨僧廬下。鬢已星星也。悲歡離合總無(wú)情。一任階前、點(diǎn)滴到天明。",
        "雨里雞鳴一兩家,竹溪村路板橋斜。婦姑相喚浴蠶去,閑看中庭梔子花。",
        "一夕輕雷落萬(wàn)絲,霽光浮瓦碧參差。有情芍藥含春淚,無(wú)力薔薇臥曉枝。"
    ]
    # 1.將base_data中的數(shù)據(jù)進(jìn)行遍歷后分詞
    base_items = [[i for i in jieba.lcut(item)] for item in base_data]
    print(base_items)
    # 2.生成詞典
    dictionary = corpora.Dictionary(base_items)
    # 3.通過(guò)doc2bow稀疏向量生成語(yǔ)料庫(kù)
    corpus = [dictionary.doc2bow(item) for item in base_items]
    # 4.通過(guò)TF模型算法,計(jì)算出tf值
    tf = models.TfidfModel(corpus)
    # 5.通過(guò)token2id得到特征數(shù)(字典里面的鍵的個(gè)數(shù))
    num_features = len(dictionary.token2id.keys())
    # 6.計(jì)算稀疏矩陣相似度,建立一個(gè)索引
    index = similarities.MatrixSimilarity(tf[corpus], num_features=num_features)
    # 7.處理測(cè)試數(shù)據(jù)
    test_text = "風(fēng)雨凄凄,雞鳴喈喈。既見(jiàn)君子,云胡不夷。風(fēng)雨瀟瀟,雞鳴膠膠。既見(jiàn)君子,云胡不瘳。風(fēng)雨如晦,雞鳴不已。既見(jiàn)君子,云胡不喜。"
    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 = ['吃雞這里所謂的吃雞并不是真的吃雞,也不是諧音詞刺激的意思',
         '而是出自策略射擊游戲《絕地求生:大逃殺》里的臺(tái)詞',
         '我吃雞翅,你吃雞腿']
keyword = '玩過(guò)吃雞?今晚一起吃雞'
# 1、將【文本集】生成【分詞列表】
texts = [lcut(text) for text in texts]
# 2、基于文本集建立【詞典】,并獲得詞典特征數(shù)
dictionary = Dictionary(texts)
num_features = len(dictionary.token2id)
# 3.1、基于詞典,將【分詞列表集】轉(zhuǎn)換成【稀疏向量集】,稱作【語(yǔ)料庫(kù)】
corpus = [dictionary.doc2bow(text) for text in texts]
# 3.2、同理,用【詞典】把【搜索詞】也轉(zhuǎn)換為【稀疏向量】
kw_vector = dictionary.doc2bow(lcut(keyword))
# 4、創(chuàng)建【TF-IDF模型】,傳入【語(yǔ)料庫(kù)】來(lái)訓(xùn)練
tfidf = TfidfModel(corpus)
# 5、用訓(xùn)練好的【TF-IDF模型】處理【被檢索文本】和【搜索詞】
tf_texts = tfidf[corpus]  # 此處將【語(yǔ)料庫(kù)】用作【被檢索文本】
tf_kw = tfidf[kw_vector]
# 6、相似度計(jì)算
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 = '無(wú)痛人流并非無(wú)痛'
text2 = '北方人流浪到南方'
texts = [text1, text2]
keyword = '無(wú)痛人流'
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))
# 相似度計(jì)算
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相似度計(jì)算:')
sim = index[tfidf[new_vec]]
for i in range(len(sim)):
    print('第', i+1, '句話的相似度為:', sim[i])

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

相關(guān)文章

  • Python爬取十篇新聞統(tǒng)計(jì)TF-IDF

    Python爬取十篇新聞統(tǒng)計(jì)TF-IDF

    這篇文章主要為大家詳細(xì)介紹了Python爬取十篇新聞統(tǒng)計(jì)TF-IDF的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • python廣度搜索解決八數(shù)碼難題

    python廣度搜索解決八數(shù)碼難題

    這篇文章主要介紹了python廣度搜索解決八數(shù)碼難題。想了解算法和數(shù)據(jù)結(jié)構(gòu)的同學(xué),一定要看一下
    2021-04-04
  • selenium2.0中常用的python函數(shù)匯總

    selenium2.0中常用的python函數(shù)匯總

    這篇文章主要介紹了selenium2.0中常用的python函數(shù),總結(jié)分析了selenium2.0中常用的python函數(shù)的功能、原理與基本用法,需要的朋友可以參考下
    2019-08-08
  • Python查找算法之插補(bǔ)查找算法的實(shí)現(xiàn)

    Python查找算法之插補(bǔ)查找算法的實(shí)現(xiàn)

    這篇文章主要介紹了Python查找算法之插補(bǔ)查找算法的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Pycharm 解決自動(dòng)格式化沖突的設(shè)置操作

    Pycharm 解決自動(dòng)格式化沖突的設(shè)置操作

    這篇文章主要介紹了Pycharm 解決自動(dòng)格式化沖突的設(shè)置操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-01-01
  • 初步認(rèn)識(shí)Python中的列表與位運(yùn)算符

    初步認(rèn)識(shí)Python中的列表與位運(yùn)算符

    這篇文章主要介紹了Python中的列表與位運(yùn)算符,是Python入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-10-10
  • Python 操作 MongoDB 講解詳細(xì)

    Python 操作 MongoDB 講解詳細(xì)

    MongoDB是一款開(kāi)源的、基于分布式的、面向文檔存儲(chǔ)的非關(guān)系型數(shù)據(jù)庫(kù)。擁有高性能、高可用,易擴(kuò)展的優(yōu)點(diǎn),并且支持豐富的查詢語(yǔ)言來(lái)支持讀寫操作以及更復(fù)雜的查詢等。接下來(lái)我們來(lái)看一下如何使用Python操作MongoDB數(shù)據(jù)庫(kù)
    2021-09-09
  • Python反爬實(shí)戰(zhàn)掌握酷狗音樂(lè)排行榜加密規(guī)則

    Python反爬實(shí)戰(zhàn)掌握酷狗音樂(lè)排行榜加密規(guī)則

    最新的酷狗音樂(lè)反爬來(lái)襲,本文介紹如何利用Python掌握酷狗排行榜加密規(guī)則,本章內(nèi)容只限學(xué)習(xí),切勿用作其他用途!?。。。? 有需要的朋友可以借鑒參考下
    2021-10-10
  • 在Python中使用turtle繪制多個(gè)同心圓示例

    在Python中使用turtle繪制多個(gè)同心圓示例

    今天小編就為大家分享一篇在Python中使用turtle繪制多個(gè)同心圓示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-11-11
  • Python3基礎(chǔ)之基本數(shù)據(jù)類型概述

    Python3基礎(chǔ)之基本數(shù)據(jù)類型概述

    這篇文章主要介紹了Python3的基本數(shù)據(jù)類型,需要的朋友可以參考下
    2014-08-08

最新評(píng)論

修武县| 永济市| 嵊州市| 固镇县| 虞城县| 同仁县| 靖州| 福安市| 大邑县| 沙田区| 高阳县| 梅河口市| 盈江县| 循化| 营口市| 山东省| 灌阳县| 浠水县| 驻马店市| 洪江市| 许昌市| 菏泽市| 寻乌县| 庆元县| 天长市| 武穴市| 江都市| 藁城市| 边坝县| 南华县| 开平市| 宁国市| 新民市| 金昌市| 阳山县| 厦门市| 凌海市| 汶川县| 五大连池市| 宜丰县| 定边县|