jieba数据库(f.read和f.readlines数据类型)

j01词频的统计

在这里插入图片描述

f.read()和f.readlines()数据类型

  • 前者是字符串类型,后者是列表类型;而jieba.lcut(‘str’)

lcut()和lcut(,True)的区别

  • jieba.lcut()函数返回精确模式,输出的分词能够完整且不多余地组成原始文本;jieba.lcut(,True)函数返回全模式,输出原始文本中可能产生的所有词组,冗余性太大
  • 以本人代码和书上参考答案说明二者的具体区别:
import jieba
dk = {}
with open('data.txt','r',encoding='utf8') as f:
    words = f.read()
    print(type(words))
    word1 = jieba.lcut(words,True) #因为word是str类型,所以可以直接用jieba函数,同时如果使用lcut(word)得到的统计结果将会不同。
    for word in word1:
        if len(word) == 2:
            dk[word] = dk.get(word,0) + 1
dp = list(dk.items())
dp.sort(key= lambda x:int(x[1]), reverse = True)

for i in range(10):
        print(dp[i][0],dp[i][1],end='\n')
<class 'str'>
大学 21
设计 20
美国 16
清华 15
学生 14
教授 12
课程 11
一个 10
国大 8
计算 8
import jieba
dk = {}
with open('data.txt','r',encoding='utf8') as f:
    sl = f.readlines() 
    print(type(sl))
for s in sl:
    k=jieba.lcut(s, cut_all = True)
    for wo in k:
        if len(wo)==2:
           dk[wo] = dk.get(wo,0) + 1

dp = list(dk.items())
dp.sort(key= lambda x:int(x[1]), reverse = True)

for i in range(10):
   print("{}:{}".format(dp[i][0],dp[i][1]))
<class 'list'>
大学:21
设计:20
美国:16
清华:15
学生:14
教授:12
课程:11
一个:10
国大:8
计算:8

j02分词去重

在这里插入图片描述

写入文件的错误方式#f.write(word,end=‘\n’)

import jieba   #导入中文分词库
f = open('out1.txt','w')   #以写的方式打开out1.txt文件
fi = open("data.txt","r",encoding="utf-8") #以读的方式打开data.txt文件
#使用jieba.lcut()对data.txt文件读出字符串进行中文分词,返回列表lst
lst = jieba.lcut(fi.read())
s = set(lst)    #使用set函数将列表lst转换为集合,实现元素去重  
s1 = sorted(s) #将列表按字符顺序排序
ls = list(s1)    #将集合重新变成列表ls
for item in ls:        #遍历去重后ls每一个元素
    if len(item) >=3:
    	#f.write(word,end='\n')
        f.write(item + "\n")  #将符合条件的字符串写入out1.txt中
fi.close()  #关闭文件fi
f.close()   #关闭文件f

字符串分词

在这里插入图片描述

import jieba
s ='''人工智能是包括十分广泛的科学,
它由不同的领域组成,如机器学习,计算机视觉等等,
总的说来,人工智能研究的一个主要目标是使机器能够胜任
一些通常需要人类智能才能完成的复杂工作。但不同的时代、
不同的人对这种“复杂工作”的理解是不同的。'''

ls = jieba.lcut(s)
print(ls)

1 结巴库jieba的导入
2 jieba.lcut()函数是分词的精确模式,返回一个列表类型。

jieba分词

在这里插入图片描述

import jieba
Tempstr = input()
ls = jieba.lcut(Tempstr)
print(ls)

中文词数统计

在这里插入图片描述

import jieba

# s = '“工业互联网”实施的方式是通过通信、控制和计算技术的交叉应用,建造一个信息物理系统,促进物理系统和数字系统的融合。'
s = input()
s = s.replace(',','').replace('。','').replace('、','').replace('“','').replace('”','')
k = jieba.lcut(s)
for i in k:
    print(i, end= "/ ")
print("\n中文词语数是:{}".format(len(k)))
  1. 用 jieba 分词处理词汇统计
  2. 要处理掉输入的各种标点符号,用replace()函数
  3. 用字典保存各个词出现次数

字符串统计

在这里插入图片描述

import jieba
s = input() # 请输入一个中文字符串,包含逗号和句号
s = s.replace(",","").replace("。","")
n = len(s)
k=jieba.lcut(s)
m = len(k)
for i in k:
   print(i, end= "/ ")
print("\n中文词语数为{}。".format(m))
print("中文字符数为{}。".format(n))

jieba分词统计

在这里插入图片描述

import jieba                                #导入中文分词库jieba
import turtle as t                          #导入turtle库,并给turtle去一个别名t

def drawCircle(x,y,radius,color,name):          #自定义函数drawCircle,包含了5个参数
    t.pencolor(color)                           #设置绘圆的颜色,color是一个必选参数,调用函数时可以设置为'red'、'blue'...
    t.penup()                                   #绘图笔提前起来,表示不落下去绘图,      
    t.goto(x, y)                                #将笔的坐标定位到(x,y),x,y都是必选参数
    t.write(name, font=('Arial', 10, 'normal')) #在当前的(x,y),写上name内容,文字属性由font决定。name是必选参数
    t.seth(-90)                                 #将绘图方向设置为-90度方向
    t.pendown()                                 #绘图笔放下,表示落下去绘图,有颜色啦:)
    t.circle(radius)                            #按半径为radius绘制圆形
    return t.pos()                              #返回t.pos()当前的位置,例如:(-300.00,0.00)

dws = {}                                            #定义一个字典,注意不是集合哦
with open('lizhi.txt', 'r',encoding="utf-8") as f:  #用with语句以只读方式打开lizhi.txt文件
    for l in f.readlines():                         #遍历列表f.readlines()中的每一个元素
        ws = jieba.lcut(l.strip('\n'))              #去掉行字符串最后的"\n"不可显示换行符,
                                                    #使用jieba.lcut(str)函数进行中文分词,返回一个列表
        for w in ws: 
            if len(w) >= 2:                         #统计词语长度>=2 的词语出现频次
               dws[w] = dws.get(w,0) + 1            #逐步构建字典dws,词语:次数的键值对
                                                    #如果w在dws的keys中,则键值+1,如果w不在dws的keys中,则构建健值对dws[w] = 0 + 1

dls = list(dws.items())                             #将dws.items()转换为列表并赋值给dls,形如[("abc",10),("edf","12"),...],目前是无序的
dls.sort(key = lambda x:x[1], reverse= True)        #对dls进行排序,按列表元素中索引为1,这行代码考试时会给出。但一定要理解。


x,y = -300,0                                        #设置初始坐标位置        
for i in range(10):                                 #根据统计结果绘制图形
    print(dls[i][0],dls[i][1])                      #输出结果
    x,y = drawCircle(x,y,dls[i][1]*4 ,'red',dls[i][0]+str(dls[i][1]))  #调用绘图函数实现绘图
    x +=  dls[i][1] * 8                             #改变x初始位置,y值不变
t.done()

词频统计

在这里插入图片描述

import jieba                    #导入中文分词库,这是必考点
with open("sgld.txt","r",encoding ="utf-8")as f:  #使用with语句以只读方式打开文件
    lssgld = f.readlines()                        #按行读取文件构建lssgld列表
 
d = {}                                  #定义空字典
for ls in lssgld: 
    ls = ls.replace("\n","")            #数据清洗:去掉每一行最后的换行符
    for c in "。,:”“ ":                       #中文分词前,将中文逗号、中文句号、中文冒号、中文引号,英文空格替换为空字符
        ls = ls.replace(c, "")      #使用字符串函数replace将
    wordlist = jieba.cut(ls)        #对每行进行中文分词
    for word in wordlist:   
        d[word] = d.get(word,0) + 1   #构建字典

ls = list(d.items())
ls.sort(key=lambda x:x[1], reverse = True)  #列表排序

for i in range(5):
    a = ls[i][0]
    print("{}".format(a),end = "、")      #出现次数前5的词

jieba分词中cut和lcut的区别
counts[word]=counts.get(word,0)+1

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值