此外也对用户画像这个主题进行了实践
获取数据:在我们的实际开发中,原始数据是通过在数据库中获取,本文为了方便通过test.txt文件读取数据;
分析数据:在该步骤中,我们需要对读取的数据进行切割,并提取关键词及计算关键词的权重,这里我们我们利用Python的一个中文分词工具jieba,如果还没安装的可以使用pip安装(安装命令为:pip install jieba);
生成用户画像:在这个步骤中,我们需要把获得关键词生成云词图,这里借用wordcloud生成云词图(如果还没安装可以通过命令pip install wordcloud进行安装)
# -*- coding: utf-8 -*-
__author__ = 'heroli'
#wordcloud生成中文词云
from wordcloud import WordCloud
import jieba
# 词频计算
import jieba.analyse as analyse
from scipy.misc import imread
import os
from os import path
import matplotlib.pyplot as plt
class WC(object):
# 绘制词云
def draw_wordcloud(self):
#读入一个txt文件
comment_text = open('static/test.txt','r').read()
#结巴分词,生成字符串,如果不通过分词,无法直接生成正确的中文词云
cut_text = " ".join(jieba.cut(comment_text))
result = jieba.analyse.textrank(cut_text, topK=1000, withWeight=True)
# 生成关键词比重字典
keywords = dict()
for i in result:
keywords[i[0]] = i[1]
d = path.dirname(__file__) # 当前文件文件夹所在目录
color_mask = imread("static/images/alice.png") # 读取背景图片
cloud = WordCloud(
#设置字体,不指定就会出现乱码
font_path="./fonts/Simfang.ttf",
# font_path=path.join(d,'simsun.ttc'),
width=200,
height=200,
#设置背景色
background_color='white',
#词云形状
mask=color_mask,
#允许最大词汇
max_words=2000,
#最大号字体
max_font_size=40
)
word_cloud = cloud.generate(cut_text)# 产生词云
word_cloud.to_file("static/images/user_img.jpg") #保存图片
# 显示词云图片
# plt.imshow(word_cloud)
# plt.axis('off')
# plt.show()
if __name__ == '__main__':
wc = WC()
wc.draw_wordcloud()
网站实现:网站通过flask实现,Flask是一个使用python编写的轻量级 Web 应用框架。由于其简单易学,非常适合与编写轻量级的web应用,故本文选择flask进行网站的实现。代码比较简单,下面为主要代码:
# -*- coding:utf-8 -*-
from flask import Flask
from flask import render_template
import userWordCould
app = Flask(__name__)
@app.route('/')
def all():
return '开启探索用户画像的大门'
@app.route('/portrait/')
@app.route('/portrait/<name>')
def portrait(name=None):
wc = userWordCould.WC()
wc.draw_wordcloud()
return render_template('portrait.html', name=name)
if __name__ == '__main__':
app.run(debug=True,host='127.0.0.1')
以下为html代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>用户画像</title>
</head>
<body>
<div class="body">
<img src="{{ url_for('static', filename='images/user_img.jpg') }}">
</div>
<style>
.body{
margin: 0 auto;
text-align: center;
}
.body img{
margin: 0 auto;
text-align: center;
}
</style>
</body>
</html>
应用实现完毕,项目结构如下:
进入项目文件夹,启动项目:
python portrait.py
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
* Restarting with stat
* Debugger is active!
* Debugger PIN: 263-119-555
然后再浏览器打开http://127.0.0.1:5000/portrait地址即可看到上面的用户画像效果页面。
————————————————
版权声明:本文为CSDN博主「文宇肃然」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wenyusuran/article/details/81132940