您的位置:首页 > 编程语言 > Python开发

[Airbnb] 用Python统计含有中文评论的行,用词云图进行可视化

2020-08-04 17:55 218 查看

统计含有中文的行,使用jieba库分词后用词云图进行展示

一、数据来源

  1. 数据来源:https://tianchi.aliyun.com/competition/entrance/231715/information
  2. 采用了reviews_detail.csv表的数据。该表记录了短租房评论相关的内容和作者信息;
  3. 使用了python3.7.1,pycharm社区版2019.2。

二、数据读取

导入模块

import pandas as pd
import re

读取数据

io3 = 'D:/PythonProject/(天池)短租数据集分析/数据集-明细版/reviews_detail/reviews_detail.csv'
data = pd.read_csv(io3)
reviews_detail_df = pd.DataFrame(data)
# 提取评论内容,且需要转换成字符串类型
reviews_detail_df_c = reviews_detail_df['comments'].astype(str)
print(reviews_detail_df_c.head(30))

如下输出的部分评论内容,发现含有英文和中文评论。目前,我想对中文评论进行分析。

三、统计含有中文的行

接下来,利用正则表达式进行匹配,网上找到的中文的编码范围(貌似并没有包含全部)是:\u4e00-\u9fa5。

# 统计含有中文的记录行
reviews_detail_df_cc = []
for i in range(len(reviews_detail_df_c)):
if re.match(r'(.*[\u4E00-\u9FA5]+)|([\u4E00-\u9FA5]+.*)', reviews_detail_df_c.loc[i]):
reviews_detail_df_cc.append(reviews_detail_df_c.loc[i])
print('含有中文的记录数为:{}'.format(len(reviews_detail_df_cc)))
print(pd.Series(reviews_detail_df_cc).head())

结果如下。

四、分词及可视化

相关模块

import jieba
import wordcloud

jieba库的三种分词模式:

  1. 精确模式
    jieba.cut(s)
    ,将句子最精确地切开,适合文本分析;
  2. 全模式
    jieba.cut(s, cut_all = True)
    ,输出所有可能成词的词语,但是可能存在歧义;
  3. 搜索引擎模式
    jieba.cut_for_search(s)
    ,在精确模式的基础上,对长词再次切分。
# 将list中的元素用空格进行分割
reviews_detail_df_cc_1 = " ".join(reviews_detail_df_cc)
# 分词
cc_ret = jieba.lcut(reviews_detail_df_cc_1)
cc_ret_1 = " ".join(cc_ret)
# 生成词云图
c_cloud = wordcloud.WordCloud(font_path="msyh.ttc",  # 微软雅黑字体
width=1000,
height=700,
background_color="white",
max_words=80  # 最大显示词数
)
c_cloud.generate(cc_ret_1)
c_cloud.to_file('D:/PythonProject/(天池)短租数据集分析/Comment_wordcloud.jpg')

效果如下,发现“干净”、“整洁”、“方便”、“热情”等词语出现频率居多。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐