2021-07-29

此外也对用户画像这个主题进行了实践

获取数据:在我们的实际开发中,原始数据是通过在数据库中获取,本文为了方便通过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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、什么是用户画像? 男,31岁,已婚,收入1万以上,爱美食,团购达人,喜欢红酒配香烟。 这样一串描述即为用户画像...
    T_129e阅读 3,777评论 2 0
  • 自学python的数据分析,爬虫后,花了几天时间学习Flask做了一个简单的股票查询网页。本想着加入其它的分析板...
    z_c988阅读 5,631评论 0 0
  • 一、前言 大家好,首先说明的是,这是一篇技术文,也是一篇not技术文,今天分享的是,当我获取了微信小程序英文取名的...
    大禹编程扛把子阅读 4,511评论 0 1
  • 表情是什么,我认为表情就是表现出来的情绪。表情可以传达很多信息。高兴了当然就笑了,难过就哭了。两者是相互影响密不可...
    Persistenc_6aea阅读 127,188评论 2 7
  • 16宿命:用概率思维提高你的胜算 以前的我是风险厌恶者,不喜欢去冒险,但是人生放弃了冒险,也就放弃了无数的可能。 ...
    yichen大刀阅读 11,292评论 0 4