#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,其...