html tool

2017年10月20日星期五

转:人物画像python


https://www.waitig.com/%E5%88%A9%E7%94%A8python%E6%90%AD%E5%BB%BA%E7%94%A8%E6%88%B7%E7%94%BB%E5%83%8F%E7%B3%BB%E7%BB%9F.html

[popexizhi:
安装依赖
sudo pip install wordcloud
 sudo pip install jieba
 sudo pip install scipy
 sudo pip install matplot
 sudo pip install matplotlib
 sudo apt-get install python-tk
设置分析文件 test.txt, 字体文件Simfang.ttf,原始图像alice.png 就可以使用了:)
感觉这个是个很不错的关键词出现概率后的展示方式,可以尝试使用其他的数据分析使用。
]
步骤为:获取数据–>分析数据–>生成用户画像–>网站实现
获取数据:在我们的实际开发中,原始数据是通过在数据库中获取,本文为了方便通过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()

没有评论:

发表评论