【Python练习题】用 jieba (结巴)分词,计算字符串
2019-05-30 本文已影响0人
小象解答编程练习题
【问题1】用 jieba 分词,计算字符串 s 中的中文词汇个数,不包括中文标点符号。显示输分词后的结果,用”/ ”分隔,以及中文词汇个数。示例如下:
输入:
工业互联网”实施的方式是通过通信、控制和计算技术的交叉应用,建造一个信息物理系统,促进物理系统和数字系统的融合。
输出:
工业/ 互联网/实施/ 的/ 方式/是/ 通过/ 通信/控制/ 和/ 计算技术/的/ 交叉/ 应用/建造/ 一个/ 信息/物理/ 系统/ 促进/物理/ 系统/ 和/数字/ 系统/ 的/融合/
中文词语数是:27
问题2:在问题1的基础上,统计分词后的词汇出现的次数,用字典结构保存。显示输出每个词汇出现的次数,以及出现次数最多的词汇。如果有多个词汇出现次数一样多,都要显示出来。示例如下:##
继续输出:
控制: 1
物理: 2
通信: 1
交叉: 1
互联网: 1
和: 2
是: 1
计算技术: 1
一个: 1
的: 3
数字: 1
促进: 1
信息: 1
方式: 1
建造: 1
应用: 1
系统: 3
通过: 1
实施: 1
融合: 1
工业: 1
出现最多的词是(的 系统):3 次
【解题思路】
1. 用 jieba 分词处理词汇统计
2. 要处理掉输入的各种标点符号,用到replace()
3. 用字典保存各个词出现次数
4. 要遍历字典的键值对,找到最大的值,及其对应的键
import jieba
from collections import Counter
n = 0
s = "工业互联网实施的方式是通过通信、控制和计算技术的交叉应用建造一个信息物理系统,促进物理系统和数字系统的融合。"
# 标点符号都去掉
s = s.replace("、", "")
s = s.replace(",", "")
s = s.replace("。", "")
j = jieba.lcut(s) # 拆分若干词组
dic = Counter(j) # 若干词组转换成字典统计数量
# dic.keys()
st = set(j) # 词组列表转换成无序但是不重复的Set集合为准备dict字典的键值调用
print("/".join(j)) # j集合用反斜杠相连
for i in st: # 遍历Set集合,集合元素就是字典的key值
n = n+dic.get(i) # 统计个数
print(i+":"+str(dic.get(i)))
print("总个数:"+str(n))
ltb6w2017(vx).jpg