Doc2Vec計算句子相似度
X_train 就是自己的訓練語料
“”“ date:2018_7_25 doc2vec計算句子相似性 ”“” # coding:utf-8 import sys import time import csv import glob import gensim import sklearn import numpy as np import jieba.posseg as pseg import jieba from gensim.models.doc2vec import Doc2Vec, LabeledSentence TaggededDocument = gensim.models.doc2vec.TaggedDocument def loadPoorEnt(path2 = 'G:/project/sentimation_analysis/data/stopwords.csv'): csvfile = open(path2,encoding='UTF-8') stopwords = [line.strip() for line in csvfile.readlines()] return stopwords stop_words = loadPoorEnt() def cut(data): result=[] #pos=['n','v'] res = pseg.cut(data) list = [] for item in res: #if item.word not in stop_words and (item.flag == 'n' or item.flag == 'a' or item.flag == 'v'): if item.word not in stop_words : list.append(item.word) result.append(list) return result def get_all_content(): #abel_dir = [path + x for x in os.listdir(path) if os.path.isdir(path + x)] all_files = glob.glob(r'D:/GFZQ/GFZQ/xuesu2018/xuesu/*.csv') return all_files def get_wenben(path): csvfile = open(path,'r',encoding='UTF-8') reader = csv.reader(csvfile) return reader def get_QA(wenben): Q_all =[] A_all =[] for QA in wenben : Q_all.append(QA[1]) A_all.append(QA[2]) all = Q_all + A_all return all,Q_all,A_all def get_datasest(all_csv): docs = all_csv print( len(docs)) x_train = [] # y = np.concatenate(np.ones(len(docs))) all_sent = [] for file_one in docs: for sent in file_one: #print (sent) all_sent.append(sent) for i,text in enumerate(all_sent): word_list = cut(text) #print(word_list[0]) l = len(word_list[0]) print (l) document = TaggededDocument(word_list[0], tags=[i]) x_train.append(document) return x_train def getVecs(model, corpus, size): vecs = [np.array(model.docvecs[z.tags[0]].reshape(1, size)) for z in corpus] return np.concatenate(vecs) 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('G:/project/sentimation_analysis/data/conference.model') return model_dm def get_csvfile (): all_files = get_all_content() length = 28 # len(all_files) print ("統計了%d家公司的情感詞" %length) all_csv = [] for i in range(length): print ("正在解析第%d家公司" %i) file_one = all_files[i] wenben = get_wenben(file_one) all, Q_all, A_all = get_QA(wenben) all_csv.append(all) return all_csv def stest(): model_dm = Doc2Vec.load('G:/project/sentimation_analysis/data/conference_model.csv') test_text = ["我們是好孩子"] inferred_vector_dm = model_dm.infer_vector(test_text) # print (inferred_vector_dm) sims = model_dm.docvecs.most_similar([inferred_vector_dm], topn=10) return sims if __name__ == '__main__': start = time.clock() all_csv = get_csvfile() x_train = get_datasest(all_csv) model_dm = train(x_train) sims = stest() for count, sim in sims: sentence = x_train[count] print ( sentence, sim, )
相關推薦
Doc2Vec計算句子相似度
X_train 就是自己的訓練語料 “”“ date:2018_7_25 doc2vec計算句子相似性 ”“” # coding:utf-8 import sys import time import csv import glob import gensim impo
用gensim doc2vec計算文字相似度,Python可以跑通的程式碼
Python3.7版本,轉載自:https://blog.csdn.net/juanjuan1314/article/details/75124046 wangyi_title.txt檔案下載地址:連結:https://pan.baidu.com/s/1uL75P13t98YHMqgv3Kx7T
用gensim doc2vec計算文字相似度
最近開始接觸gensim庫,之前訓練word2vec用Mikolov的c版本程式,看了很久才把程式看明白,在gensim庫中,word2vec和doc2vec只需要幾個介面就可以實現,實在是方便。python,我越來越愛你了。 這個程式很簡單,直接上程式了。 # codin
機器學習演算法Python實現:doc2vec 求句子相似度
# coding:utf-8 import sys import gensim import sklearn import numpy as np from gensim.models.doc2vec import Doc2Vec, LabeledSentence Ta
Doc2Vec計算句子文件向量、求文字相似度
注:本文主要是記錄自己常用的關於Doc2Vec的簡單程式程式碼。因此不做過多的解釋,直接寫出程式碼,如有問題可以討論交流。 一、doc2vec求文件向量 import sys import numpy as np import gensim from gensim.mod
句子相似度計算的幾種方法
在做自然語言處理的過程中,我們經常會遇到需要找出相似語句的場景,或者找出句子的近似表達,這時候我們就需要把類似的句子歸到一起,這裡面就涉及到句子相似度計算的問題,那麼本節就來了解一下怎麼樣來用 Python 實現句子相似度的計算。 基本方法 句子相似度計算我們一共歸類
中文句子相似度計算思路
這裡主要面向初學者介紹句子相似度目前主流的研究方向。 從詞到句子,這是目前中文相似度計算的主要思想。而由這個-思想引申出來的演算法卻非常多,這裡面向初學者介紹比較容易實現的方法。 這裡要介紹的是二分法計算句子相似度。這個演算法實現簡單,思路清晰由此出現的技術分類變化萬千,主
使用 TF-IDF 加權的空間向量模型實現句子相似度計算
使用 TF-IDF 加權的空間向量模型實現句子相似度計算 字元匹配層次計算句子相似度 計算兩個句子相似度的演算法有很多種,但是對於從未了解過這方面演算法的人來說,可能最容易想到的就是使用字串匹配相關的演算法,來檢查兩個句子所對應的字串的字元相似程度。比如單純的進行子串匹配,搜尋 A 串中能與 B 串匹配的
句子相似度比較的歸一化
我們將不同長度的句子(預處理並分詞之後的長度)直接做比較其實是不公平的,舉個例子: Sentence 1 = 長度為2 Sentence 2 = 長度為1 Sentence 3 = 長度為3 (在取相似詞TOP4,exp=0.7,的情況下) 即便Sent2與Sent1詞的
句子相似度_tf/idf
import mathfrom math import isnanimport pandas as pd#結巴分詞,切開之後,有分隔符def jieba_function(sent): import jieba sent1 = jieba.cut(sent) s = [] for ea
NLP入門(一)詞袋模型及句子相似度
本文作為筆者NLP入門系列文章第一篇,以後我們就要步入NLP時代。 本文將會介紹NLP中常見的詞袋模型(Bag of Words)以及如何利用詞袋模型來計算句子間的相似度(餘弦相似度,cosine similarity)。 首先,讓我們來看一下,什麼是詞袋模型。我們以下面兩個
基於WMD(詞移距離)的句子相似度分析簡介
word2vec word2vec是隻有一個隱層的全連線神經網路,對語料中的所有詞彙進行訓練並生成相應的詞向量(Word Embedding)WI 的大小是VxN, V是單詞字典的大小, 每次輸入是一個單詞, N是設定的隱層大小。word2vec的模型通過一種神經網路語言模型(Neu
計算字串相似度的一些方法
產品出了一個奇怪的需求,想通過字串相似度取匹配城市= =(當然,最後證實通過字串相似度取判斷兩個字串是不是一個城市是不對的!!!) 這裡就記錄一下我計算字串(英文字串)相似度的方法吧~ 參考文件: L
DSSM演算法-計算文字相似度
轉載請註明出處: http://blog.csdn.net/u013074302/article/details/76422551 導語 在NLP領域,語義相似度的計算一直是個難題:搜尋場景下query和Doc的語義相似度、feeds場景下Doc和Doc的語義相似度、機器翻譯場景下A句
[LeetCode] Sentence Similarity 句子相似度
Given two sentences words1, words2 (each represented as an array of strings), and a list of similar word pairs pairs, determine if two sentences are simi
[LeetCode] Sentence Similarity II 句子相似度之二
Given two sentences words1, words2 (each represented as an array of strings), and a list of similar word pairs pairs, determine if two sentences are simi
計算文字相似度方法大全-簡單說
本編文章是方法論-主要給大家介紹原理思路 簡單講解 基於關鍵詞的空間向量模型的演算法,將使用者的喜好以文件描述並轉換成向量模型,對商品也是這麼處理,然後再通過計算商品文件和使用者偏好文件的餘弦相似度。 文字相似度計算在資訊檢索、資料探勘、機器翻譯、文件複製檢測等領域
應用實戰: 如何利用Spark叢集計算物品相似度
本文是Spark調研筆記的最後一篇,以程式碼例項說明如何藉助Spark平臺高效地實現推薦系統CF演算法中的物品相似度計算。 在推薦系統中,最經典的推薦演算法無疑是協同過濾(Collaborative Filtering, CF),而item-cf又是CF演算法中一個實現簡單
LeetCode之計算字串相似度或編輯距離EditDistance
問題描述: /** * Given two words word1 and word2, find the minimum number of steps required to * convert word1 to word2. (each oper
基於句子相似度的FAQ問答系統
總結一波我的專案之一,歷史久遠,要把它理清一下。 Introduce:日趨增多的網路資訊使使用者很難迅速從搜尋引擎返回的大量資訊中找到所需內容。自動問答系統為人們提供了以自然語言提問的交流方式,為使用者直接返回所需的答案而不是相關的網頁,具有方便、快捷、高效等特點。