自然语言中corpora.Dictionary的理解

编程入门 行业动态 更新时间:2024-10-27 14:35:02

<a href=https://www.elefans.com/category/jswz/34/1768401.html style=自然语言中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的理解

本文发布于:2023-06-13 04:32:39,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/674170.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:自然语言   corpora   Dictionary

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!