一、基础小结
三种分词模式:
import jieba
seg_str = "世界上一成不变的东西,只有“任何事物都是在不断变化的”这条真理。"
print("/".join(jieba.lcut(seg_str))) # 精简模式,返回一个列表类型的结果
print("/".join(jieba.lcut(seg_str, cut_all=True))) # 全模式,使用 'cut_all=True' 指定
print("/".join(jieba.lcut_for_search(seg_str))) # 搜索引擎模式
#输出
世界/上/一成不变/的/东西/,/只有/“/任何事物/都/是/在/不断/变化/的/”/这/条/真理/。
世界/上/一成/一成不变/不变/的/东西///只有///任何/任何事物/何事/事物/都/是/在/不断/变化/的///这条/真理//
世界/上/一成/不变/一成不变/的/东西/,/只有/“/任何/何事/事物/任何事物/都/是/在/不断/变化/的/”/这/条/真理/。
二、牛刀小试
1、从键盘输入一个中文字符串变量 s,内部包含中文逗号和句号。
问题1:计算字符串 s 中的中文字符个数,不包括中文逗号和句号字符。示例如下:
输入:没有人不爱惜他的生命,但很少人珍视他的时间。
输出:中文字符数为20。
问题2:用 jieba 分词后,显示分词的结果,用”/”分隔。并显示输出分词后的中文词语的个数,不包含逗号和句号。示例如下:
输入:没有人不爱惜他的生命,但很少人珍视他的时间。
输出:没有/ 人/ 不/ 爱惜/ 他/ 的/ 生命/ 但/ 很少/ 人/ 珍视/ 他/ 的/ 时间/
中文词语数为14
import jieba
s = input() # 请输入一个中文字符串,包含逗号和句号
s=s.replace(',','')
s=s.replace('。','')
n=len(s)
ls1 =jieba.lcut(s)
m =len(ls1)
for i in ls1:
print(i,end='/ ')
print("\n中文词语数为{}。".format(m))
print("中文字符数为{}。".format(n))
2、
问题1:用 jieba 分词,计算字符串 s 中的中文词汇个数,不包括中文标点符号。显示输出分词后的结果,用”/ ”分隔,以及中文词汇个数。
问题2:在问题1的基础上,统计分词后的词汇出现的次数,用字典结构保存。显示输出每个词汇出现的次数,以及出现次数最多的词汇。如果有多个词汇出现次数一样多,都要显示出来。
import jieba
# s = '“工业互联网”实施的方式是通过通信、控制和计算技术的交叉应用,建造一个信息物理系统,促进物理系统和数字系统的融合。'
s = input("请输入一个中文字符串,包含逗号和句号:")
s = s.replace(',','').replace('。','').replace('、','').replace('“','').replace('”','')
k=jieba.lcut(s)
d1 = {}
maxc = 0
wo = ''
for i in k:
print(i, end= "/ ")
d1[i] = d1.get(i,0) + 1
print("\n中文词语数是:{}".format(len(k)))
for key in d1:
if maxc < d1[key]:
wo = key
maxc = d1[key]
elif maxc == d1[key]:
wo += ' ' + key
print("{}: {}".format(key,d1[key]))
print("出现最多的词是({}):{} 次".format(wo, maxc))