真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Python如何實(shí)現(xiàn)簡單的文本相似度分析操作-創(chuàng)新互聯(lián)

小編給大家分享一下Python如何實(shí)現(xiàn)簡單的文本相似度分析操作,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

創(chuàng)新互聯(lián)是專業(yè)的許昌網(wǎng)站建設(shè)公司,許昌接單;提供成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作,網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行許昌網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!

具體如下:

學(xué)習(xí)目標(biāo):

1.利用gensim包分析文檔相似度
2.使用jieba進(jìn)行中文分詞
3.了解TF-IDF模型

環(huán)境:

Python 3.6.0 |Anaconda 4.3.1 (64-bit)

工具:

jupyter notebook

注:為了簡化問題,本文沒有剔除停用詞“stop-word”。實(shí)際應(yīng)用中應(yīng)該要剔除停用詞。

首先引入分詞API庫jieba、文本相似度庫gensim

import jieba
from gensim import corpora,models,similarities

以下doc0-doc7是幾個(gè)最簡單的文檔,我們可以稱之為目標(biāo)文檔,本文就是分析doc_test(測(cè)試文檔)與以上8個(gè)文檔的相似度。

doc0 = "我不喜歡上海"
doc1 = "上海是一個(gè)好地方"
doc2 = "北京是一個(gè)好地方"
doc3 = "上海好吃的在哪里"
doc4 = "上海好玩的在哪里"
doc5 = "上海是好地方"
doc6 = "上海路和上海人"
doc7 = "喜歡小吃"
doc_test="我喜歡上海的小吃"

分詞

首先,為了簡化操作,把目標(biāo)文檔放到一個(gè)列表all_doc中。

all_doc = []
all_doc.append(doc0)
all_doc.append(doc1)
all_doc.append(doc2)
all_doc.append(doc3)
all_doc.append(doc4)
all_doc.append(doc5)
all_doc.append(doc6)
all_doc.append(doc7)

以下對(duì)目標(biāo)文檔進(jìn)行分詞,并且保存在列表all_doc_list中

all_doc_list = []
for doc in all_doc:
  doc_list = [word for word in jieba.cut(doc)]
  all_doc_list.append(doc_list)

把分詞后形成的列表顯示出來:

print(all_doc_list)

[['我', '不', '喜歡', '上海'],
['上海', '是', '一個(gè)', '好', '地方'],
['北京', '是', '一個(gè)', '好', '地方'],
['上海', '好吃', '的', '在', '哪里'],
['上海', '好玩', '的', '在', '哪里'],
['上海', '是', '好', '地方'],
['上海', '路', '和', '上海', '人'],
['喜歡', '小吃']]

以下把測(cè)試文檔也進(jìn)行分詞,并保存在列表doc_test_list中

doc_test_list = [word for word in jieba.cut(doc_test)]
doc_test_list

['我', '喜歡', '上海', '的', '小吃']

制作語料庫

首先用dictionary方法獲取詞袋(bag-of-words)

dictionary = corpora.Dictionary(all_doc_list)

詞袋中用數(shù)字對(duì)所有詞進(jìn)行了編號(hào)

dictionary.keys()

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]

編號(hào)與詞之間的對(duì)應(yīng)關(guān)系

dictionary.token2id

{'一個(gè)': 4,
'上海': 0,
'不': 1,
'人': 14,
'北京': 8,
'和': 15,
'哪里': 9,
'喜歡': 2,
'在': 10,
'地方': 5,
'好': 6,
'好吃': 11,
'好玩': 13,
'小吃': 17,
'我': 3,
'是': 7,
'的': 12,
'路': 16}

以下使用doc2bow制作語料庫

corpus = [dictionary.doc2bow(doc) for doc in all_doc_list]

語料庫如下。語料庫是一組向量,向量中的元素是一個(gè)二元組(編號(hào)、頻次數(shù)),對(duì)應(yīng)分詞后的文檔中的每一個(gè)詞。

[[(0, 1), (1, 1), (2, 1), (3, 1)],
[(0, 1), (4, 1), (5, 1), (6, 1), (7, 1)],
[(4, 1), (5, 1), (6, 1), (7, 1), (8, 1)],
[(0, 1), (9, 1), (10, 1), (11, 1), (12, 1)],
[(0, 1), (9, 1), (10, 1), (12, 1), (13, 1)],
[(0, 1), (5, 1), (6, 1), (7, 1)],
[(0, 2), (14, 1), (15, 1), (16, 1)],
[(2, 1), (17, 1)]]

以下用同樣的方法,把測(cè)試文檔也轉(zhuǎn)換為二元組的向量

doc_test_vec = dictionary.doc2bow(doc_test_list)
doc_test_vec

[(0, 1), (2, 1), (3, 1), (12, 1), (17, 1)]

相似度分析

使用TF-IDF模型對(duì)語料庫建模

tfidf = models.TfidfModel(corpus)

獲取測(cè)試文檔中,每個(gè)詞的TF-IDF值

tfidf[doc_test_vec]

[(0, 0.08112725037593049),
(2, 0.3909393754390612),
(3, 0.5864090631585919),
(12, 0.3909393754390612),
(17, 0.5864090631585919)]

對(duì)每個(gè)目標(biāo)文檔,分析測(cè)試文檔的相似度

index = similarities.SparseMatrixSimilarity(tfidf[corpus], num_features=len(dictionary.keys()))
sim = index[tfidf[doc_test_vec]]
sim

array([ 0.54680777, 0.01055349, 0. , 0.17724207, 0.17724207,
0.01354522, 0.01279765, 0.70477605], dtype=float32)

根據(jù)相似度排序

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

[(7, 0.70477605),
(0, 0.54680777),
(3, 0.17724207),
(4, 0.17724207),
(5, 0.013545224),
(6, 0.01279765),
(1, 0.010553493),
(2, 0.0)]

從分析結(jié)果來看,測(cè)試文檔與doc7相似度最高,其次是doc0,與doc2的相似度為零。大家可以根據(jù)TF-IDF的原理,看看是否符合預(yù)期。

最后總結(jié)一下文本相似度分析的步驟:

1、讀取文檔
2、對(duì)要計(jì)算的多篇文檔進(jìn)行分詞
3、對(duì)文檔進(jìn)行整理成指定格式,方便后續(xù)進(jìn)行計(jì)算
4、計(jì)算出詞語的詞頻
5、【可選】對(duì)詞頻低的詞語進(jìn)行過濾
6、建立語料庫詞典
7、加載要對(duì)比的文檔
8、將要對(duì)比的文檔通過doc2bow轉(zhuǎn)化為詞袋模型
9、對(duì)詞袋模型進(jìn)行進(jìn)一步處理,得到新語料庫
10、將新語料庫通過tfidfmodel進(jìn)行處理,得到tfidf
11、通過token2id得到特征數(shù)
12、稀疏矩陣相似度,從而建立索引
13、得到最終相似度結(jié)果

看完了這篇文章,相信你對(duì)“Python如何實(shí)現(xiàn)簡單的文本相似度分析操作”有了一定的了解,如果想了解更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司行業(yè)資訊頻道,感謝各位的閱讀!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。


網(wǎng)頁題目:Python如何實(shí)現(xiàn)簡單的文本相似度分析操作-創(chuàng)新互聯(lián)
當(dāng)前鏈接:http://weahome.cn/article/doopps.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部