本文主要為了計算文件之間的相似度。標準語聊為我們訓練模型所需的,使用者語料則用來測試與標準語聊的相似度
1、 資料預處理部分,見注釋
對標準語聊進行處理如下
ws = open('d:/sentence.csv','r',encoding='gbk')
times = 0
import re
import jieba
standard_data = #
##標準語料
map_value =
seed = 0
from zhon.hanzi import punctuation
for i in ws.readlines():
times += 1
if times == 1:
continue
newline = i.strip().split(',')
newline = re.sub("[a-za-z0-9\[
\`\~
\!\@
\#\$
\^\&
\*\(
\)\=\|\
\'\:
\;\'
\,\[
\]\.
\<
\>
\/\?
\~\!
\@\#
\\\&
\*\%
\-\_
]", "", newline[0])
newline = re.sub(' ','',newline)
newline = re.sub("[
%s]+" %punctuation, "", newline)
seed += 1
map_value[seed-1] = newline
ws.close()
2、tf-idf
from gensim import corpora, models, similarities
# 生成字典和向量語料
dictionary = corpora.dictionary(standard_data)
# 通過下面一句得到語料中每一篇文件對應的稀疏向量(這裡是bow向量)
corpus = [dictionary.doc2bow(text) for
text
in standard_data]
# corpus是乙個返回bow向量的迭代器。下面**將完成對corpus中出現的每乙個特徵的idf值的統計工作
tfidf_model = models.tfidfmodel(corpus)
corpus_tfidf = tfidf_model[corpus]
####文件相似性的計算
map_value_user = {}
import jieba
import re
raw_data =
w = open('d:/user_content_v2.txt','r',encoding= 'utf-8')
start = 0
forline
in w.readlines():
newline = line.strip()
newline = re.sub(' ','',newline)
newline2 = jieba.cut(newline)
newline2 = list(newline2)
map_value_user[start] = newline
start += 1
w.close()
index = similarities.matrixsimilarity(corpus_tfidf)
vec_bow =[dictionary.doc2bow(text) for
text
in raw_data] #把使用者語料轉為詞包
all_reult_sims =
times_v2 = 0
###對每個使用者語聊與標準語聊計算相似度
for i in vec_bow:
#直接使用上面得出的tf-idf 模型即可得出商品描述的tf-idf 值
sims = index[tfidf_model[i]]
sims = sorted(enumerate(sims), key=lambda item: -item[1])
result_sims =
for i,j in sims:
times_v2 += 1
3、lsi
lsi = models.lsimodel(corpus_tfidf)
corpus_lsi = lsi[corpus_tfidf]
####文件相似性的計算
map_value_user = {}
import jieba
import re
raw_data =
w = open('d:/user_content_v2.txt','r',encoding= 'utf-8')
start = 0
forline
in w.readlines():
newline = line.strip()
newline = re.sub(' ','',newline)
newline2 = jieba.cut(newline)
newline2 = list(newline2)
map_value_user[start] = newline
start += 1
w.close()
index = similarities.matrixsimilarity(corpus_lsi)
vec_bow =[dictionary.doc2bow(text) for
text
in raw_data] #把商品描述轉為詞包
all_reult_sims =
times_v2 = 0
for i in vec_bow:
#直接使用上面得出的tf-idf 模型即可得出商品描述的tf-idf 值
sims = index[lsi[tfidf_model[i]]]
sims = sorted(enumerate(sims), key=lambda item: -item[1])
result_sims =
for i,j in sims:
times_v2 += 1
文字的tfidf值表示
做nlp的時候,如果用到tf idf,sklearn中用countvectorizer與tfidftransformer兩個類,下面對和兩個類進行講解 countvectorizer與tfidftransformer在處理訓練資料的時候都用fit transform方法,在測試集用transform...
基於TF IDF的新聞標籤提取
新聞標籤是一條新聞的關鍵字,可以由編輯上傳,或者通過機器提取。新聞標籤的提取主要用於推薦系統中,所以,提取的準確性影響推薦系統的有效性。同時,對於將標籤展示出來的新聞 標籤的準確性也會影響使用者體驗。新聞首先是一段文字,新聞的標籤首先是這一段文字的關鍵字。在文字關鍵字提取當中,td idf是首先可以...
使用sklearn提取文字的tfidf特徵
from sklearn.feature extraction.text import countvectorizer,tfidfvectorizer,tfidftransformercorpus this is the first document.this is the second secon...