用gensim包做中文文本的推荐
一、gensim是generate similar的简写,叫做普遍相似。对于gensim这个包建议新手直接使用anaconda工具进行集中安装
二、gensim包中做文本推荐要使用的几个重要的模块
1、corpora 语料库(将文本文档转为文档向量(基于词频和tfidf的文档向量))
from gensim import corpora
import jieba
sentences = ["我喜欢吃土豆","土豆是个百搭的东西","我不喜欢今天雾霾的北京"]
texts=[]
for doc in sentences:
words.append(list(jieba.cut(doc)))#分词
print words
dictionary = corpora.Dictionary(words)
print dictionary
print dic.token2id
{'\xe5\x8c\x97\xe4\xba\xac': 12, '\xe6\x90\xad': 6, '\xe7\x9a\x84': 9, '\xe5\x96\x9c\xe6\xac\xa2': 1, '\xe4\xb8\x8d': 10, '\xe4\xb8\x9c\xe8\xa5\xbf': 4, '\xe5\x9c\x9f\xe8\xb1\x86': 2, '\xe9\x9c\xbe': 14, '\xe6\x98\xaf': 7, '\xe4\xb8\xaa': 5, '\xe9\x9b\xbe': 13, '\xe7\x99\xbe': 8, '\xe4\xbb\x8a\xe5\xa4\xa9': 11, '\xe6\x88\x91': 3, '\xe5\x90\x83': 0}
#可以看到字符串为'\xe5\x8c\x97\xe4\xba\xac'(词)的编号为12,\xe4\xbb\x8a\xe5\xa4\xa9的编号为11....一共有15个词,编号从0到14
corpus = [dictionary.doc2bow(text) for text in words]
print corpus
[[(0, 1), (1, 1), (2, 1), (3, 1)], [(2, 1), (4, 1), (5, 1), (6, 1), (7, 1), (8, 1), (9, 1)], [(1, 1), (3, 1), (9, 1), (10, 1), (11, 1), (12, 1), (13, 1), (14, 1)]]
#这是一个镶嵌的列表,第一个子列表[(0, 1), (1, 1), (2, 1), (3, 1)]表示sentence中的第一个字符串的对应的文本向量,第二个子列表对应对应了第二个字符串的文本向量.....其中例如第一个子列表中(0,1)表示编号为0的词出现了一次........
#对curpus进行tfidf变换