python数据分析与挖掘学习笔记_小说文本数据挖掘part2
Posted 小胖子小胖子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python数据分析与挖掘学习笔记_小说文本数据挖掘part2相关的知识,希望对你有一定的参考价值。
接上一节。 注:本文的所有路径都才用的是相对路径,读者请自行换成自己的绝对路径,保证文件可读取。
要进行文本挖掘,需要引入gensim这个工具包,需要用到其中的语料库,模型,相似度等包。
from gensim import corpora, models, similarities # corpora语料库
import jieba
from collections import defaultdict
import urllib.request
1. 读取文档
上一节讲过两种读取文档的方法,第二种可以保证编码正确。
对于python3,如果有编码问题,首先在文件头加 # coding:utf-8
#d1=open(doc1).read()
#d2=open(doc2).read()
d1 = urllib.request.urlopen("http://127.0.0.1/gcd.html").read().decode("utf-8", "ignore")
d2 = urllib.request.urlopen("http://127.0.0.1/ljm.html").read().decode("utf-8", "ignore")
2. 对要计算的多篇文档进行分词
data1 = jieba.cut(d1)
data2 = jieba.cut(d2)
3. 对要计算的多本小说数据分别整理成指定格式,方便后续进行计算
data11 = ""
for item in data1:
data11 += item+" "
data21 = ""
for item in data2:
data21 += item+" "
4. 计算出词语的频率
documents = [data11, data21]
texts = [[word for word in document.split()]
for document in documents]
frequency = defaultdict(int)
for text in texts:
for token in text:
frequency[token] += 1
5、(可选)过滤掉频率低的词语
texts=[[word for word in text if frequency[token]>3]
for text in texts]
这句是过滤掉频率小于3的词语,可以根据实际情况该步骤可选
6. 通过语料库建立词典
dictionary = corpora.Dictionary(texts)
dictionary.save("./new_dict.txt")
也可以将该字典存储到本地
7. 读取用户当前关注的小说的数据
仍然是类似第一步读取文件数据,并分割文本,做相似处理
doc3 = "./d3.txt"
d3 = open(doc3).read()
data3 = jieba.cut(d3)
data31 = ""
for item in data3:
data31 += item+" "
8. 将用户当前关注的小说的数据通过doc2bow转化为稀疏向量
new_doc = data31
new_vec = dictionary.doc2bow(new_doc.split())
9. 对稀疏向量进行进一步处理,得到新语料库
corpus = [dictionary.doc2bow(text) for text in texts]
corpora.MmCorpus.serialize("./d3.mm", corpus)
10. 将新语料库通过tfidf model进行处理,得到tfidf
tfidf = models.TfidfModel(corpus)
11. 通过token2id得到特征数
featureNum=len(dictionary.token2id.keys())
12. 稀疏矩阵相似度计算,从而建立索引
index=similarities.SparseMatrixSimilarity(tfidf[corpus],num_features=featureNum)
13. 分别得到用户当前关注的小说与小说库中各小说的相似度结果
sim=index[tfidf[new_vec]]
根据得出的相似度,就可以选择相似度高的作品,推荐给读者。
这里有一个概念的对比, 协同过滤和基于内容推荐的区别。
我也是今天才注意到这个问题。
这里有一个知乎的提问,大家可以阅读一下,体会一下区别。
https://www.zhihu.com/question/19971859
以上是关于python数据分析与挖掘学习笔记_小说文本数据挖掘part2的主要内容,如果未能解决你的问题,请参考以下文章
python数据分析与挖掘学习笔记-交通路标自动识别实战与神经网络算法
python数据分析与挖掘学习笔记-交通路标自动识别实战与神经网络算法