Ubuntu上使用gensim计算文档间的相似度
来源:互联网 发布:mac如何解密外置硬盘 编辑:程序博客网 时间:2024/06/05 21:16
暑期学习的过程中有幸接触了gensim中的lsi模型计算文档间的相似度,接下来将把我的所学整理一下~
详细的可见gensim的英文官方文档:http://radimrehurek.com/gensim/tutorial.html
关于gensim
gensim是一个相当专业的主题模型Python工具包,常应用于文本处理中挖掘文本间的相似度,它能够将文档根据TF-IDF, LDA, LSI 等模型转化成向量模式,以便进行进一步的处理。此外,gensim还实现了word2vec功能,能够将单词转化为词向量。
Ubuntu上gensim的安装
gensim依赖NumPy和SciPy这两大Python科学计算工具包,因此也需安装这两个依赖库~
(1)安装numpy和scipy
sudo apt-get install python-numpysudo apt-get install python-scipy
(2)安装gensim
sudo pip install --upgrade gensim
如果会报错的话可以尝试
sudo easy_install --upgrade gensim
gensim的使用
首先介绍几个概念:
(1)语料corpora就是一系列文档的集合,其中的词已经使用了字典进行相应的转换,成为一个个数字,我们可以通过字典的对应关系从数字找到对应的词。
(2)我们的输入是一个document list,每个文档是列表的一份子
from gensim import corpora, models, similarities# 先获取文档进行切词存于list中便于后续工作def get_class(): documents = [] data_path = '../task/' for i in range(len(interest)): each_path = os.path.join(data_path, interest[i]+'/') filename = os.listdir(each_path) for name in filename: title_class = '' f_path = os.path.join(each_path, name) lines = linecache.getlines(f_path) line = jieba.cut(lines[2]) for word in line: if word not in stopwords: title_class = title_class + word + ' ' else: continue documents.append(title_class) return documentsif __name__ == '__main__': documents = get_class() # 对文档进行处理 texts = [[word for word in document.lower().split()] for document in documents] # 构建词典 dictionary = corpora.Dictionary(texts) # 将用字符串表示的文档转换为用id表示的文档向量 corpus = [dictionary.doc2bow(text) for text in texts] # 基于“训练文档”计算一个TF-IDF“模型” tfidf = models.TfidfModel(corpus) corpus_tfidf = tfidf[corpus] # 建立lsi模型 lsi = models.LsiModel(corpus_tfidf, id2word=dictionary, num_topics=3) # 这里的topic数需要自行调整达到最好的效果 # 或者建立lda模型 # lda = models.LdaModel(copurs_tfidf, id2word=dictionary, num_topics=2) # 构建索引便于后面的查询 index = similarities.MatrixSimilarity(lsi[corpus]) # 进行查询 query = "某一篇文档" # 将其向量化 query_bow = dictionary.doc2bow(query.lower().split()) # 使用之前建立的lsi模型将向量映射topic空间 query_lsi = lsi[query_bow] # 计算查询与训练文档的余弦相似度 sims = index[query_lsi] # 进行排序即可看到效果 sort_sims = sorted(enumerate(sims), key=lambda item: -item[1])
参考资料:
1.gensim的官方文档
2.我爱自然语言处理(强烈推荐此系列文档)
阅读全文
0 0
- Ubuntu上使用gensim计算文档间的相似度
- 使用gensim计算文档的相似度
- gensim的LSI模型来计算文档的相似度
- gensim的LSI模型来计算文档的相似度
- gensim similarity计算文档相似度
- 用gensim对中文维基百科语料上的word2Vec相似度计算实验
- Python 文本挖掘:使用gensim进行文本相似度计算
- Python 文本挖掘:使用gensim进行文本相似度计算
- Python 文本挖掘:使用gensim进行文本相似度计算
- Python 文本挖掘:使用gensim进行文本相似度计算
- Python 文本挖掘:使用gensim进行文本相似度计算
- python使用gensim进行文本相似度计算
- Python 文本挖掘:使用gensim进行文本相似度计算
- python使用gensim进行文本相似度计算
- 基于gensim模块的中文句子相似度计算工具
- 用gensim doc2vec计算文本相似度
- gensim 中文文本相似度计算
- 计算文档的相似度
- js兼容性
- 多线程问题汇总
- Ubiquitous Religions (简单并查集)
- Yii (1.1)调用数据库
- jq绑定事件方法及区别
- Ubuntu上使用gensim计算文档间的相似度
- 常见的垃圾收集器
- HDU 1806 Frequent values(线段树+离散化+二分)
- vector用法
- hibernate整合spring异常处理
- AudioService
- Docker网络基础-yellowcong
- 集合框架——定义泛型接口
- mysql索引实例----第二章实战篇