docsim學習 比較文件之間的相似度

2021-09-02 18:52:22 字數 2537 閱讀 2914

參考資料:

在我們做文字處理的時候,經常需要對兩篇文件是否相似做處理或者根據輸入的文件,找出最相似的文件。

gensim提供了這樣的工具,具體的處理思路如下,對於中文文字的比較,先需要做分詞處理,根據分詞的結果生成乙個字典,然後再根據字典把原文件轉化成向量。然後去訓練相似度。

import gensim

import jieba

# 訓練樣本

from gensim import corpora

from gensim.similarities import similarity

# fin = open("questions.txt",encoding='utf8').read().strip(' ') #strip()取出首位空格

#jieba.load_userdict("userdict.txt")

#stopwords = set(open('stopwords.txt',encoding='utf8').read().strip('\n').split('\n')) #讀入停用詞

raw_documents = [

'0無償居間介紹買賣毒品的行為應如何定性',

'1吸毒男動態持有大量毒品的行為該如何認定',

'2如何區分是非法種植毒品原植物罪還是非法製造毒品罪',

'4將自己吸食的毒品原價轉讓給朋友吸食的行為該如何認定',

'5為獲報酬幫人購買毒品的行為該如何認定',

'6毒販出獄後再次夠買毒品途中被抓的行為認定',

'7虛誇毒品功效勸人吸食毒品的行為該如何認定',

'8妻子下落不明丈夫又與他人登記結婚是否為無效婚姻',

'9一方未簽字辦理的結婚登記是否有效',

'10夫妻雙方2023年按農村習俗舉辦婚禮沒有結婚證 一方可否起訴離婚',

'11結婚前對方父母出資購買的住房寫我們二人的名字有效嗎',

'12身份證被別人冒用無法登記結婚怎麼辦?',

'13同居後又與他人登記結婚是否構成重婚罪',

'14未辦登記只舉辦結婚儀式可起訴離婚嗎',

'15同居多年未辦理結婚登記,是否可以向法院起訴要求離婚'

]corpora_documents =

for item_text in raw_documents:

item_str = jieba.lcut(item_text)

print(item_str)

print(corpora_documents)

# 生成字典和向量語料

dictionary = corpora.dictionary(corpora_documents)

corpus = [dictionary.doc2bow(text) for text in corpora_documents]

#num_features代表生成的向量的維數(根據詞袋的大小來定)

similarity = similarity('-similarity-index', corpus, num_features=400)

test_data_1 = '你好,我想問一下我想離婚他不想離,孩子他說不要,是六個月就自動生效離婚'

test_cut_raw_1 = jieba.lcut(test_data_1)

print(test_cut_raw_1)

test_corpus_1 = dictionary.doc2bow(test_cut_raw_1)

similarity.num_best = 5

print(similarity[test_corpus_1]) # 返回最相似的樣本材料,(index_of_document, similarity) tuples

print('################################')

test_data_2 = '家人因涉嫌運輸毒品被抓,她只是去朋友家探望朋友的,結果就被抓了,還在朋友家收出毒品,可家人的身上和行李中都沒有。現在已經拘留10多天了,請問會被判刑嗎'

test_cut_raw_2 = jieba.lcut(test_data_2)

print(test_cut_raw_2)

test_corpus_2 = dictionary.doc2bow(test_cut_raw_2)

similarity.num_best = 5

print(similarity[test_corpus_2]) # 返回最相似的樣本材料,(index_of_document, similarity) tuples

margin,padding之間的比較

box1,box2 box2 html box1 box2 複製 同上,box1,box2增加浮動屬性 box1,box2 box1 box2 html box1 box2 複製 box2的margin left增加到100px box1 box2 html box1 box1 tdtnzdbfth...

POP,AOP,OOP之間的比較

面向過程就是分析出解決問題所需要的步驟,然後用函式把這些步驟一步一步實現,使用的時候乙個乙個依次呼叫就可以了。面向過程側重整個問題的解決步驟,著眼區域性或者具體。物件導向側重具體的功能,讓某個物件具有這樣的功能。更加側重於整體。物件導向是把構成問題事務分解成各個物件,建立物件的目的不是為了完成乙個步...

函式指標之間的比較

因為某種原因 threaded red black tree c warpper 需要比較兩個函式指標是否相等。但是,這麼貌似很簡單的需求卻得不到滿足。下表,是在visual c 2008 中,同乙個函式通過不同途徑得到的指標 key comp 0x0041158c febird trb compa...