自然语言中corpora.Dictionary的理解"/>
自然语言中corpora.Dictionary的理解
在网上找到了解决方法,原来是该错误是因为镜像节点太慢了,换个镜像节点就好了
pip install -i
corpora.Dictionary()是干啥的?
dictionary.doc2bow() 是干啥的?
dictionary.doc2bow(doc)是把文档 doc变成一个稀疏向量,[(0, 1), (1, 1)],表明id为0,1的词汇出现了1次,至于其他词汇,没有出现。
词袋模型bow和词向量模型word2vec是干啥的?
CountVectorizer(ngram_range=(1,4)) 中的ngram_range是干啥的?
In [21]: qurey1 = “股票” #首先把这两个查询也变成向量
…: qurey2 = ‘文本’
…: vec_query1 = dic.doc2bow([qurey1])
…: vec_query2 = dic.doc2bow([qurey2])
In [22]: index = similarities.MatrixSimilarity(lsi[corpus])
#然后建立索引(估计是倒排词表,下面的就不怎么懂了)
In [23]: sims1 = index[lsi[vec_query1]]
…: sims2 = index[lsi[vec_query2]]
#得到了查询语句与哥哥文档的相似度
In [24]: sims_result1 = sorted(enumerate(sims1), key=lambda item: -item[1])
…: sims_result2 = sorted(enumerate(sims2), key=lambda item: -item[1])
#给结果排一下序
In [25]: print sims_result1
[(1, 0.99990207), (0, 0.99984658), (2, 0.99941468), (3, 0.93057805), (6, 0.31655648), (5, 0.27374423), (4, 0.12518336), (7, -0.11772308)]
In [27]: print sims_result2
[(4, 0.99776512), (7, 0.98443955), (5, 0.97619325), (6, 0.96549642), (3, 0.4200055), (2, 0.092727646), (0, 0.076089963), (1, 0.07257086)]
很明显的看到“股票”这个查询和文档集中前四个文档比较相似,“文本”这个查询和文档集中后四个文档比较相似,这也是符合我们的常识的。
完整代码:
#coding: utf-8
import sys, jieba
from gensim import corpora, models, similarities
reload(sys)
sys.setdefaultencoding(‘utf8’)
texts = [
‘什么是股票?’,
‘股票是个什么玩意?’,
‘新手怎样入门炒股?’,
‘现在股市的风险大吗?’,
‘python的自然语言处理’,
‘gensim的主要功能有把文本转为向量’,
‘提供存储文本矩阵的方法’,
‘这篇文章主要讨论如何用python来做一些简单的文本处理’
]
docs = [jieba.lcut_for_search(i) for i in texts]
dic = corpora.Dictionary(docs)
corpus = [dic.doc2bow(i) for i in docs]
lsi = models.LsiModel(corpus, id2word=dic, num_topics=2)
qurey1 = “股票”
qurey2 = ‘文本’
vec_query1 = dic.doc2bow([qurey1])
vec_query2 = dic.doc2bow([qurey2])
index = similarities.MatrixSimilarity(lsi[corpus])
sims1 = index[lsi[vec_query1]]
sims2 = index[lsi[vec_query2]]
sims_result1 = sorted(enumerate(sims1), key=lambda item: -item[1])
sims_result2 = sorted(enumerate(sims2), key=lambda item: -item[1])
print sims_result1
print sims_result2
更多推荐
自然语言中corpora.Dictionary的理解
发布评论