NLP計算文件相似度之LSH

2021-08-01 05:40:10 字數 2184 閱讀 9690

#coding:utf-8

# 使用lsh來處理 字首樹

from sklearn.feature_extraction.text import tfidfvectorizer

import jieba.posseg as pseg

from sklearn.neighbors import lshforest

import os

defa_sub_b

(a,b):

ret =

for el in a:

if el not

in b:

return ret

stop = [line.strip().decode('utf-8') for line in open('stopword.txt').readlines() ]

#讀檔案

raw_documents=

walk = os.walk(os.path.realpath("/users/muhongfen/sougou"))

for root, dirs, files in walk:

for name in files:

f = open(os.path.join(root, name), 'r')

raw = str(os.path.join(root, name))+" "

raw += f.read()

#tfidfvectorizer 訓練tfidf矩陣

tfidf_vectorizer = tfidfvectorizer(min_df=3, max_features=none, ngram_range=(1, 2), use_idf=1, smooth_idf=1,sublinear_tf=1)

train_documents =

temp_documents = #用作輸出 沒有空格的格式

for item_text in raw_documents:

item_str = ""

temp_str = ""

item=(pseg.cut(item_text))

for i in list(item):

if i.word not

in list(stop): #去掉停用詞

item_str+=i.word

temp_str+=i.word

item_str+=" "

#tfidf_vectorizer.fit_transform的輸入需要空格分隔的單詞

x_train = tfidf_vectorizer.fit_transform(train_documents)

test_data_1 = '本報訊 全球最大個人電腦製造商戴爾公司8日說,由於市場競爭激烈,以及定價策略不當,該公司今年第一季度盈利預計有所下降。'\

'訊息發布之後,戴爾股價一度**近6%,創下一年來的新低。戴爾公司估計,其第一季度收入約為142億美元,每股收益33美分。此前公司**當季收入為142億至146億美元,'\

'每股收益36至38美分,而分析師平均**戴爾同期收入為145.2億美元,每股收益38美分。為搶奪失去的市場份額,戴爾公司一些產品打折力度很大。戴爾公司首席執行官凱文·羅林斯在乙份宣告中說,'\

'公司在售後服務和產品質量方面一直在投資,同時不斷下調**。戴爾公司將於5月18日公布第一季度的財報。'

test_cut_raw_1 = ""

item_test=(pseg.cut(test_data_1))

for j in list(item_test):

test_cut_raw_1+=j.word

test_cut_raw_1+=" "

x_test = tfidf_vectorizer.transform([test_cut_raw_1])

lshf = lshforest(random_state=42) #lshforest訓練資料

lshf.fit(x_train.toarray())

distances, indices = lshf.kneighbors(x_test.toarray(), n_neighbors=5)

print(distances)

print(indices)

for i in indices[0]:

print i

print temp_documents[i]

NLP基礎 相似度計算常用方法綜述

相似度計算用於衡量物件之間的相似程度,在資料探勘 自然語言處理中是乙個基礎性計算。其中的關鍵技術主要是兩個部分,物件的特徵表示,特徵集合之間的相似關係。在資訊檢索 網頁判重 推薦系統等,都涉及到物件之間或者物件和物件集合的相似性的計算。而針對不同的應用場景,受限於資料規模 時空開銷等的限制,相似度計...

NLP 使用TF IDF模型計算文字相似度

所用資料集 chnsenticorp htl all.csv 語料庫即存放稀疏向量的列表。要注意的是,搜尋文字text與被檢索的文件共用乙個特徵詞詞典。主要使用gensim庫完成了分詞 tf idf模型訓練 文字相似度計算。過程如下 分詞 建立特徵詞典 建立語料庫 用tf idf模型處理語料庫 計算...

NLP 文字相似度(一)

乙份文字,從結構上劃分可以是 字 詞 句 段 篇。文字比較的粒度是詞,一篇文章,可以劃分成n個不同的詞,選取其中包含重要資訊的m個詞作為這片文章的特徵。m個詞構成了m維的向量,兩個文字之間的比較就是兩個m維向量之間的比較。向量之間如何比較?我們可以採用余弦相似度,其描述如下 對於n維的向量a,b,其...