基於詞向量的文本查重
import gensim
import numpy as np
import jieba
from gensim.models.doc2vec import Doc2Vec, LabeledSentence
# stop_text = open('stop_list.txt', 'r')
# stop_word = []
# for line in stop_text:
# stop_word.append(line.strip())
TaggededDocument = gensim.models.doc2vec.TaggedDocument
def get_corpus():
with open("corpus_seg.txt", 'r') as doc:
docs = doc.readlines()
train_docs = []
for i, text in enumerate(docs):
word_list = text.split(' ')
length = len(word_list)
word_list[length - 1] = word_list[length - 1].strip()
document = TaggededDocument(word_list, tags=[i])
train_docs.append(document)
return train_docs
def train(x_train, size=200, epoch_num=1):
model_dm = Doc2Vec(x_train, min_count=1, window=3, size=size, sample=1e-3, negative=5, workers=4)
model_dm.train(x_train, total_examples=model_dm.corpus_count, epochs=70)
model_dm.save('model_doc2vec')
return model_dm
def test():
model_dm = Doc2Vec.load("model_doc2vec")
text_test = u'武漢東湖新技術開發區人民檢察院指控: 2013年4月27日21時許,被告人王某、連某經預謀後,竄至本區流芳高新四路聯想工地內,竊取該處扣件若干欲離開時,被此處工地值班人員劉某發現並制止。被告人王某、連某遂共同用拳頭、安全帽及啤酒瓶毆打劉某的頭部、背部等處,致被害人劉某輕微傷,後共同逃離現場。 2013年11月1日,被告人王某被公安機關抓獲。同年11月25日,被告人王某按照公安機關的安排,以打電話的方式聯繫被告人連某投案。到案後,上述二被告人共同賠償被害人劉某人民幣1.5萬元,並獲得諒解。 針對上述指控的事實,公訴機關當庭出示和宣讀的證據有:1、抓獲及破案經過;2、調解協議、諒解書、病歷等書證;3、涉案物品照片;4、鑑定意見書;5、證人證言;6、被害人陳述;7、被告人的供述及辯解、訊問同步錄音錄像等。 公訴機關認爲,被告人王某、連某以非法佔有爲目的,在實施盜竊行爲時,爲抗拒抓捕,當場使用暴力,致一人輕微傷,其行爲均觸犯了《中華人民共和國刑法》第二百六十九條、第二百六十三條的規定,應當以搶劫罪追究其刑事責任。案發後,被告人王某協助公安機關抓捕同案犯,具有《中華人民共和國刑法》第六十八條規定的情節;被告人連某主動投案,並如實供述自己的犯罪事實,具有《中華人民共和國刑法》第六十七條第一款規定的情節。'
text_cut = jieba.cut(text_test)
text_raw = []
for i in list(text_cut):
text_raw.append(i)
inferred_vector_dm = model_dm.infer_vector(text_raw)
sims = model_dm.docvecs.most_similar([inferred_vector_dm], topn=100)
return sims
if __name__ == '__main__':
x_train = get_corpus()
model_dm = train(x_train)
sims = test()
for count, sim in sims:
sentence = x_train[count]
words = ''
for word in sentence[0]:
words = words + word + ' '
print(words, sim, len(sentence[0]))