当前位置:   article > 正文

python---酒店评价数据分析_根据附件文件对酒店评价数据进行分析,本题使用jieba库中的lcut函数对数据进行分词

根据附件文件对酒店评价数据进行分析,本题使用jieba库中的lcut函数对数据进行分词

描述‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

根据附件文件对酒店评价数据进行分析,本题使用jieba库中的lcut函数对数据进行分词。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

import jieba‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

test_str = '武汉理工大学是一所世人仰慕的大学' result = jieba.lcut(test_str) # 参数是字符串,结果是将字符串切分为词的列表 print(result) # ['武汉理工大学', '是', '一所', '世人', '仰慕', '的', '大学']‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

文件数据每行包括评论属性和评论内容两个数据,其中评论属性中’1‘代表好评,’0‘代表差评。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

要求实现以下功能:‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

文件编码格式为GBK,读取函数示例如下:‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

with open('comment.csv', 'r', encoding='GBK') as f: ls=[i.strip().split(',',maxsplit=1) for i in f.readlines()[1:]]‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

输入n‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

  1. 如果n为’总评‘,分别输出该文件评论总数,好评条数,差评条数,输出格式参照示例一。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

  2. 如果n为’平均‘,输出该文件中所有评论内容的平均长度(不需要排除字母,标点符号和数字),输出四舍五入后的整数,输出格式参照示例二。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

  3. 如果n为’好评‘,对文件中所有好评进行词频分析,并输出词频出现最多的前15个词以及出现次数,输出格式参照示例三‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

  4. 如果n为’差评‘,对文件中所有差评进行词频分析,并输出词频出现最多的前15个词以及出现次数,输出格式参照示例四‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

注:3,4两项功能中统计的词语,要求长度不小于2,不是数字组成,并且不是排除词.‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

#排除词 ex=['不错','比较','可以','感觉','没有', '我们','就是','还是','非常','但是', '不过','有点','一个','一般','下次', '携程','不是','晚上','而且','他们', '什么','不好','时候','知道','这样', '这个','还有','总体','位置','客人', '因为','如果','这里','很多','选择', '居然','不能','实在','不会','这家', '结果','发现','竟然','已经','自己', '问题','不要','地方','只有','第二天', '酒店','房间','虽然']‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

  1. 如果n非以上输入,输出’无数据‘,格式参照示例五

输入输出示例‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

示例只是输出格式示例,其中数据均与题目无关!‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

示例 1‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

  1. 输入:
  2. 总评
  3. 输出:
  4. 总评论: 8888
  5. 好评: 6666
  6. 差评: 2222

示例 2‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

  1. 输入:
  2. 平均
  3. 输出:
  4. 86

示例 3‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

  1. 输入:
  2. 好评
  3. 输出:
  4. 好像: 1000
  5. 也许: 901
  6. 早餐: 817
  7. 偶尔: 749
  8. 环境: 694
  9. 设施: 669
  10. 无论: 596
  11. 价格: 495
  12. 干净: 428
  13. 程序: 419
  14. 服务员: 337
  15. 免费: 269
  16. 交通: 206
  17. 餐厅: 162
  18. 性价比: 154

示例 4‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

  1. 输入:差评
  2. 输出:
  3. 恶劣: 857
  4. 服务: 788
  5. 前台: 766
  6. 服务员: 681
  7. 早餐: 632
  8. 宾馆: 632
  9. 胡说: 502
  10. 价格: 432
  11. 退房: 344
  12. 老虎: 324
  13. 电话: 319
  14. 态度: 317
  15. 卫生间: 315
  16. 点评: 214
  17. 方便: 204

示例 5‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

  1. 输入:
  2. 1234
  3. 输出:
  4. 无数据
  1. import jieba
  2. def dosomething(start, end):
  3. counts = {}
  4. k = start
  5. while k < end:
  6. words = jieba.lcut(ls[k][1])
  7. for word in words:
  8. if len(word) < 2 or word in ex or word.isdigit():
  9. continue
  10. else:
  11. counts[word] = counts.get(word, 0) + 1
  12. k += 1
  13. items = list(counts.items())
  14. items.sort(key=lambda x: x[1], reverse=True)
  15. for m in range(15):
  16. word, count = items[m]
  17. print('{}: {}'.format(word, count))
  18. with open('comment.csv', 'r', encoding='GBK') as f:
  19. ls = [i.strip().split(',', maxsplit=1) for i in f.readlines()[1:]]
  20. ex = ['不错', '比较', '可以', '感觉', '没有', '我们', '就是', '还是', '非常', '但是', '不过', '有点', '一个', '一般', '下次',
  21. '携程', '不是', '晚上', '而且', '他们', '什么', '不好', '时候', '知道', '这样', '这个', '还有', '总体', '位置', '客人',
  22. '因为', '如果', '这里', '很多', '选择', '居然', '不能', '实在', '不会',
  23. '这家', '结果', '发现', '竟然', '已经', '自己', '问题', '不要', '地方', '只有', '第二天', '酒店', '房间', '虽然']
  24. n = input()
  25. good = 0
  26. total = len(ls)
  27. sums = 0
  28. if n in ["好评", "差评", "总评", "平均"]:
  29. for i in ls:
  30. if i[0] == '1':
  31. good += 1
  32. if n == "总评":
  33. print("总评论:", total)
  34. print("好评:", good)
  35. print("差评:", total - good)
  36. elif n == "平均":
  37. for i in ls:
  38. sums += len(i[1])
  39. print(sums // total)
  40. elif n == "好评":
  41. dosomething(0, good)
  42. elif n == "差评":
  43. dosomething(good, total)
  44. else:
  45. print("无数据")

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/379816
推荐阅读
相关标签
  

闽ICP备14008679号