【Python数据挖掘入门】2.2文本分析-中文分词(jieba库cut方法/自定义词典load_userdict/语料库分词)

news/2024/4/25 23:15:56/文章来源:https://blog.csdn.net/momomuabc/article/details/129243106

中文分词就是将一个汉字序列切分成一个一个单独的词。例如:
在这里插入图片描述
另外还有停用词的概念,停用词是指在数据处理时,需要过滤掉的某些字或词。
在这里插入图片描述

一、jieba库

安装过程见:https://blog.csdn.net/momomuabc/article/details/128198306
jieba库的基础与实例:https://blog.csdn.net/momomuabc/article/details/128219592

jieba库基础功能

1.分词函数jieba.cut

import jiebafor i in jieba.cut("我爱python"):print(i,end=' ')#利用end参数取消换行
--输出
我 爱 python 

2.向词库添加词jieba.add_word()
如果想添加一些专业词汇进入词库,可以使用jieba.add_word()函数
例如:

import jiebaseg_list=jieba.cut("真武七截阵和天罡北斗阵哪个更厉害呢?")
for i in seg_list:print(i,end=" ")
--此时输出
真武 七截阵 和 天罡 北斗 阵 哪个 更 厉害 呢 ? 
--可以看到真武七截阵和天罡北斗阵两个专业词汇被拆分开了,那么进行词组添加
jieba.add_word("真武七截阵")
jieba.add_word("天罡北斗阵")
seg_list=jieba.cut("真武七截阵和天罡北斗阵哪个更厉害呢?")
for i in seg_list:print(i,end=" ")
--再次输出后,可以看到真武七截阵和天罡北斗阵已经被识别为单独的词
真武七截阵 和 天罡北斗阵 哪个 更 厉害 呢 ?

3.导入词库jieba.load_userdict()
当需要大量导入专业词汇时,使用jieba.add_word()一个个添加会过于麻烦,可以使用jieba.load_userdict()方法将词库一次性导入。
词库中的单词需已每行一个词的方式保存,例如:
在这里插入图片描述

jieba.load_userdict("D:\\2.2 中文分词\\2.2\\金庸武功招式.txt")

二、文章分词

1.搭建语料库

上一节已经导入了语料库:https://blog.csdn.net/momomuabc/article/details/129183499
代码如下:

import os
import os.path#读取文件路径
import codecs#转换文件读取格式
import pandasfilePaths = []#设置存储文件路径的变量
fileContents = []#存储文件内容的变量
for root, dirs, files in os.walk("D:\SogouC.mini\Sample"):#os.walk()返回文件的目录,子目录,文件名,详情见上篇for name in files:filePath = os.path.join(root, name)#将目录和子目录拼接为目前的文件路径filePaths.append(filePath)#将文件路径存入路径变量f = codecs.open(filePath, "r", "utf-8")#以utf-8的格式打开当前路径下的文件fileContent = f.read()#读取文件内容f.close()#关闭文件fileContents.append(fileContent)#将文件内容存入内容变量       
#将文件路径和内容存入DataFrame中
corpos=pandas.DataFrame({"filePath":filePaths,"fileContent":fileContents
}
)

2.语料库分词

分词后需要注明,每个分词的来源,因此需要取上面的corpos对象里的filepath,并对filecontent进行分词。

import jieba
Path=[]
segments=[]
for index,row in corpos.iterrows():#返回corpos的内容filepath=row["filePath"]#取其中的filepath字段segs=jieba.cut(row["fileContent"])#取其中的filecontent字段,并进行分词for seg in segs:#将分词后的内容遍历segments.append(seg)#存入segmentsPath.append(filepath)#同时存储filepath
segmentDataFrame=pandas.DataFrame(#将分词结果存为数据框{"filepath":Path,"segment":segments}
)

iterrow()方法可以返回所有的行索引index,以及该行的所有内容row。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_74737.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数字IC手撕代码--小米科技(除法器设计)

前言: 本专栏旨在记录高频笔面试手撕代码题,以备数字前端秋招,本专栏所有文章提供原理分析、代码及波形,所有代码均经过本人验证。目录如下:1.数字IC手撕代码-分频器(任意偶数分频)2.数字IC手撕…

原始GAN-pytorch-生成MNIST数据集(代码)

文章目录原始GAN生成MNIST数据集1. Data loading and preparing2. Dataset and Model parameter3. Result save path4. Model define6. Training7. predict原始GAN生成MNIST数据集 原理很简单,可以参考原理部分原始GAN-pytorch-生成MNIST数据集(原理&am…

记一次线上es慢查询导致的服务不可用

现象 某日线上业务同学反馈订单列表查询页面一直loding,然后提示请求超时,几分钟之后恢复正常 接到报障之后,马上根据接口URL,定位到了请求链路,发现是es查询超时,这里我们的业务订单表数据是由几百万的&a…

如何基于MLServer构建Python机器学习服务

文章目录前言一、数据集二、训练 Scikit-learn 模型三、基于MLSever构建Scikit-learn服务四、测试模型五、训练 XGBoost 模型六、服务多个模型七、测试多个模型的准确性总结参考前言 在过去我们训练模型,往往通过编写flask代码或者容器化我们的模型并在docker中运行…

Python学习笔记202302

1、numpy.empty 作用:根据给定的维度和数值类型返回一个新的数组,其元素不进行初始化。 用法:numpy.empty(shape, dtypefloat, order‘C’) 2、logging.debug 作用:Python 的日志记录工具,这个模块为应用与库实现了灵…

C# Sqlite数据库加密

sqlite官方的数据库加密是收费的,而且比较贵。 幸亏微软提供了一种免费的方法。 1 sqlite加密demo 这里我做了一个小的demo演示如下: 在界面中拖入数据库名、密码、以及保存的路径 比如我选择保存路径桌面的sqlite目录,数据库名guigutool…

Verilog 学习第五节(串口接收部分)

小梅哥串口部分学习part2 串口通信接收原理串口通信接收程序设计与调试巧用位操作优化串口接收逻辑设计串口接收模块的项目应用案例串口通信接收原理 在采样的时候没有必要一直判断一个clk内全部都是高/低电平,如果采用直接对中间点进行判断的话,很有可能…

Linux 红帽9.0 本地源 与 网络源 搭建

本次我们使用的是 redhat 9.0 版本,是redhat 的最新版本,我们一起来对其进行 本地仓库 和 网络仓库的搭建部署~!!关于 本地仓库( 本地源 ),和 网络仓库 ( 网络源 )&#…

ESP32蓝牙配网

注意********menuconfig 配置(必须打开蓝牙我这是C2所以使用NimBLE )可以直接从demo的配置文件拷贝 Component config ---> Bluetooth ---> NimBLE - BLE only Component config ---> Bluetooth ---> NimBLE Options ---> Enable blufi…

计算结构体大小

计算结构体大小 目录计算结构体大小一. 结构体内存对齐1. 简介2. 嵌套结构体二. offsetof三. 内存对齐的意义四. 修改默认对齐数一. 结构体内存对齐 以字节(bety)为单位 1. 简介 对于结构体成员在内存里的存储,存在结构体的对齐规则&#…

Vue下载安装步骤的详细教程(亲测有效) 1

目录 一、【准备工作】nodejs下载安装(npm环境) 1 下载安装nodejs 2 查看环境变量是否添加成功 3、验证是否安装成功 4、修改模块下载位置 (1)查看npm默认存放位置 (2)在 nodejs 安装目录下,创建 “node_global…

Java查漏补缺(14)数据结构剖析、一维数组、链表、栈、队列、树与二叉树、List接口分析、Map接口分析、Set接口分析、HashMap的相关问题

Java查漏补缺(14)数据结构剖析、一维数组、链表、栈、队列、树与二叉树、List接口分析、Map接口分析、Set接口分析、HashMap的相关问题本章专题与脉络1. 数据结构剖析1.1 研究对象一:数据间逻辑关系1.2 研究对象二:数据的存储结构…

Laravel框架04:视图与CSRF攻击

Laravel框架04:视图与CSRF攻击一、视图概述二、变量分配与展示三、模板中直接使用函数四、循环与分支语法标签五、模板继承、包含1. 继承2. 包含六、外部静态文件引入七、CSRF攻击概述八、从CSRF验证中排除例外路由一、视图概述 视图存放在 resources/views 目录下…

MyBatis学习笔记(七) —— 特殊SQL的执行

7、特殊SQL的执行 7.1、模糊查询 模糊查询的三种方式: 方式1:select * from t_user where username like ‘%${mohu}%’ 方式2:select * from t_user where username like concat(‘%’,#{mohu},‘%’) 方式3:select * from t_u…

收集分享一些AI工具第三期(网站篇)

感谢大家对于内容的喜欢,目前已经来到了AI工具分享的最后一期了,目前为止大部分好用的AI工具都已经介绍给大家了,希望大家可以喜欢。 image-to-sound-fx (https://huggingface.co/spaces/fffiloni/image-to-sound-fx) 图片转换为相对应的声音…

2.27 junit5常用语法

一.了解junitjunit是一个开源的java单元测试框架,java方向使用最广泛的单元测试框架.所需要的依赖<dependencies><!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java --><dependency><groupId>org.seleniumhq.selenium&l…

笔记本触摸板没反应怎么办?处理方法看这些

触摸板在笔记本电脑中是非常重要的一部分&#xff0c;很多用户都会选择使用触摸板代替鼠标。然而&#xff0c;有时你可能会发现&#xff0c;你的笔记本电脑触摸板没反应&#xff0c;无法正常使用。这对于日常使用来说是非常困扰的&#xff0c;但不用担心&#xff0c;我们将在这…

react源码解析10.commit阶段

在render阶段的末尾会调用commitRoot(root);进入commit阶段&#xff0c;这里的root指的就是fiberRoot&#xff0c;然后会遍历render阶段生成的effectList&#xff0c;effectList上的Fiber节点保存着对应的props变化。之后会遍历effectList进行对应的dom操作和生命周期、hooks回…

【数据结构】知识点总结(C语言)

线性表、栈和队列、串、数组和广义表、树和二叉树、图、查找、排序线性表线性表&#xff08;顺序表示&#xff09;线性表是具有相同特性元素的一个有限序列&#xff0c;数据元素之间是线性关系&#xff0c;起始元素称为线性起点&#xff0c;终端元素称为线性终点。线性表的顺序…

sed 功能详解

介绍sedsed是一种流编辑器&#xff0c;它一次处理一行内容&#xff0c;把当前处理的行存储在临时缓冲区中&#xff08;buffer&#xff09;,称为"模式空间"&#xff0c;接着sed命令处理缓冲区中的内容&#xff0c;处理完成后&#xff0c;把缓冲区的内容送往屏幕&#…