勇闯机器学习(第五关--中文文本特征提取)

news2024/9/22 5:39:02

以下内容皆为原创,制作实属不易,请点点关注赞赞❥(^_^)

第一关:机器学习概念和流程http://t.csdnimg.cn/IuHh4
第二关:数据集的使用http://t.csdnimg.cn/2jsdi
第三关:特征工程-字典特征提取http://t.csdnimg.cn/ZpMto
第四关:特征工程-文本特征提取http://t.csdnimg.cn/HSGhz

 

这一关,我们学习stop_words的用法和中文分词和特征提取。

一.停用词stop_words

        这个参数是CountVectorizer里面的参数,所谓停用词,就是不想看见的词。为什么不想看见?说明没有意义呗。有意义的我肯定想看啊。接下来看有无参数之前和之后的代码。

from sklearn.feature_extraction.text import CountVectorizer

def count_chinese_demo():
    #中文文本数据
    data = ['我 喜欢 你', '你 喜欢 我吗']

    # 实例化转换器类
    transfer = CountVectorizer()

    data_new = transfer.fit_transform(data)
    print("data_new\n", data_new)
    print("feature_name\n", transfer.get_feature_names_out())

if __name__ == "__main__":
    count_chinese_demo()

   

嗯嗯,有眼睛的可以看出来这个特征名字是“喜欢”、“我吗”。那我就感觉第二个词不是什么重要的特征,那我就用停用词stop_words。好,那我们继续看加了停用词的效果

transfer = CountVectorizer(stop_words=["我吗"])

 

        OK,家人们。这就看不见那个“我吗”这个特征词。



二.对中文jieba分词

        先给大家一个分词的官方解释地址:jieba · PyPI

        好吧,这翻译过来有点那个,解霸!!其实我第一次看见jieba,还看错了。

        简单来说,jieba库可以中文句子的主语、谓语、动词啥的都准确的分割出来,非常的牛掰,那我们接下来看看jieba库的效果。

        1.jieba库的效果展示

                没安装jieba库的,pip install jieba就可以了,很快的,几秒就可以了。

import jieba
data = "真正的勇气是一种精神的力量,人格的力量,智慧的力量。"
print(jieba.lcut(data))

 嗯嗯,可以看出来,jieba库还是有点东西的,有实力。

这次我们做个小改动,将分割好的元素传给列表,然后再用空格分割在一起,所以不需要我们一个一个去按空格了。还记得我们上次说,要是进行中文特征提取,中文是一个句子,返回的特征值就是整个句子,但是我们按好空格后(人为分词),返回的特征值就是一个个词。但是效率太慢了,所以这就是我们要使用jieba库的原因,提高了效率

from sklearn.feature_extraction.text import CountVectorizer
import jieba

def cut_words(text):
    text = " ".join(list(jieba.lcut(text)))
    print(text)

if __name__ == "__main__":
    cut_words("真正的勇气是一种精神的力量,人格的力量,智慧的力量。")

         2.对中文数据进行分词和特征提取

from sklearn.feature_extraction.text import CountVectorizer
import jieba

data = ["真正的勇气是一种精神的力量,人格的力量,智慧的力量。",
        "拥有了这种力量,我们就能独自越过困难堆成的高山;",
        "拥有这种力量,我们就能克服生活的磨难;拥有了这种力量,我们就能成为命运的主宰,始终扬起胜利的风帆。"]

# 定义空列表放置分词好后的元素。
data_new = []

for sent in data:
    # 使用jieba.cut后,将生成器转换为列表
    data_new.append(list(jieba.cut(sent)))

# 实例化一个转换器类
transfer = CountVectorizer()

# 调用fit_transform
data_final = transfer.fit_transform(data_new)

# 输出结果
print("data_new\n", data_final.toarray())
print("feature_name\n", transfer.get_feature_names_out())

 

我嘞个豆,怎么报错了,我真服了。好在还有其他方案。

from sklearn.feature_extraction.text import CountVectorizer
import jieba

# 定义数据
data = ["真正的勇气是一种精神的力量,人格的力量,智慧的力量。",
        "拥有了这种力量,我们就能独自越过困难堆成的高山;",
        "拥有这种力量,我们就能克服生活的磨难;拥有了这种力量,我们就能成为命运的主宰,始终扬起胜利的风帆。"]

# 实例化一个转换器类,使用jieba进行分词
# tokenizer 应该是一个函数,该函数接受一个字符串并返回一个单词列表。
# analyzer: 这是 CountVectorizer 的一个参数,用于指定如何分析文本。analyzer 可以有三个选项:
#'char': 将文本分割为字符。
# 'char_wb': 将文本分割为字符,但考虑单词边界。
# 'word': 将文本分割为单词,这是默认选项。
transfer = CountVectorizer(analyzer='word', tokenizer=jieba.cut)

# 调用fit_transform
data_final = transfer.fit_transform(data)

# 输出结果
print("data_new\n", data_final.toarray())
print("feature names\n", transfer.get_feature_names_out())

 这个效果不是太好啊,因为里面还包括标点符号。所以我们还要用stop_words=【】。

transfer = CountVectorizer(analyzer='word', tokenizer=jieba.cut, stop_words=[",","。",";" ]) 

 

虽然麻烦了一点,但是还是解决了,你说是不是。当然现在只是还没找到解决办法,等找到解决办法,我再跟大家分享。

今天主要跟大家分享了stop_words的用法和用sklearn结合jieba库对中文数据进行特征提取

感谢大家的观看,祝愿大家的生活顺顺利利,生活不止工作,陪陪自己的家人。大家拜拜~ 

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[数据集][目标检测]铁轨缺陷检测数据集VOC+YOLO格式4020张4类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):4020 标注数量(xml文件个数):4020 标注数量(txt文件个数):4020 标注…

高性能web服务器2——Nginx概述

Nginx 概述 Nginx 是一款广泛使用的高性能 Web 和反向代理服务器,以其出色的并发处理能力和低内存消耗而闻名。自 2004 年首次发布以来,Nginx 已经成为许多企业和组织的首选 Web 服务器和负载均衡解决方案。本文将对 Nginx 进行一个全面的概述&#xff…

探索Qotom Q51251OPS迷你电脑:功能与广泛应用

Qotom Q51251 OPS(开放可插拔规范)迷你电脑是一款设计紧凑且功能强大的设备,旨在满足不同领域的多样化需求。基于英特尔Core i5-12450H Alder Lake H处理器,这款设备不仅具备出色的计算性能,还提供了丰富的连接选项&am…

电路板中的MARK点

什么是mark点,什么情况下有mark点 Mark点的种类 局部mark点:针对那些 引脚数量众多 引脚间距非常紧凑的元器件 比如说QFT封装 BGA封装 MARK点的作用 不论是 拼版还是全局mark 一般都会放上2-3个点 第三个mark点一般用于比较大的电路板或者是比较大的拼…

接口加密解决方案,Python的各种加密实现!

01、前言 在现代软件开发中,接口测试已经成为了不可或缺的一部分。随着互联网的普及,越来越多的应用程序都采用了接口作为数据传输的方式。接口测试的目的是确保接口的正确性、稳定性和安全性,从而保障系统的正常运行。 在接口测试中&…

TXT 记录解析怎么做?

在当今数字化的时代,网络技术的应用越来越广泛,而域名系统(DNS)则是网络通信中至关重要的一部分。TXT 记录作为 DNS 中的一种记录类型,有着特定的用途和解析方法。 那么,TXT 记录解析究竟该怎么做呢&#…

学习node.js 七 http 模块

目录 http模块 创建http服务器 反向代理 代码实现 邮件服务 案例实现: 动静分离 代码实现 http模块 “http” 模块是 Node.js 中用于创建和处理 HTTP 服务器和客户端的核心模块。它使得构建基于 HTTP 协议的应用程序变得更加简单和灵活。 创建 Web 服务…

高性能企业WEB服务器

一:nginx的编译安装: 1.1官方源下载地址: https://nginx.org/en/download.html 1.1.1下载编译所需要的软件: [rootnginx nginx-1.24.0]# dnf install gcc pcre-devel zlib-devel openssl-devel -y 编译: 验证版本及编…

DHU 二维数组 阵列

输出范例给的不工整 思路及代码 写的不优雅 分为三部分 枚举输出 n 1-11 规律求出 n > 12 的矩阵 输出需要的矩阵&#xff0c;把每一行存成一个字符串&#xff0c;方便左右对齐 #include<iostream> #include<cmath> #include<iomanip> #include&l…

C++ 设计模式(4. 建造者模式)

建造者模式&#xff08;也被成为生成器模式&#xff09;&#xff0c;是一种创建型设计模式&#xff0c;软件开发过程中有的时候需要创建很复杂的对象&#xff0c;而建造者模式的主要思想是将对象的构建过程分为多个步骤&#xff0c;并为每个步骤定义一个抽象的接口。具体的构建…

计算机毕业设计 公寓出租系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…

消防认证-火灾显示盘GB 17429-2011

一、消防认证 消防认证是指消防产品符合国家相关技术要求和标准&#xff0c;且通过了国家认证认可监督管理委员会审批&#xff0c;获得消防认证资质的认证机构颁发的证书&#xff0c;消防产品具有完好的防火功能&#xff0c;是住房和城乡建设领域验收的重要指标。 二、认证依据…

软考高项—项目采购管理总结

采购管理包括规划采购管理、实施采购和控制采购3个过程。 管理领域管理过程定义作用频率项目采购管理规划采购管理记录项目采购决策、明确采购方法&#xff0c;及识别潜在卖方的过程。确定是否从项目外部获取货物和服务&#xff0c;如果是&#xff0c;则还要确定将在什么时间、…

运维学习————nginx2-配置详解及负载均衡

目录 一、配置文件详解 1.1、结构 1.2、重要配置解释 1.3、详细配置 全局配置 Events HTTP 服务器配置 server虚拟主机配置 location URL匹配配置 1.4、完整配置 二、负载均衡 2.1、概念 2.2、集群规划及实现 2.3、具体实现 2.3.1、克隆 2.3.2、修改tomcat1配…

【python】Python中的日志模块logging使用技巧与应用实战

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

软件设计师全套备考系列文章5 -- 数据结构的基本概念与算法

软考-- 软件设计师&#xff08;5&#xff09;-- 数据结构的基本概念与算法 文章目录 软考-- 软件设计师&#xff08;5&#xff09;-- 数据结构的基本概念与算法前言一、基本概念二、算法 前言 考试时间&#xff1a;每年5月、11月&#xff0c;软件设计师每年都会开考。 考试条件…

【Linux修行路】文件系统之缓冲区

目录 ⛳️推荐 一、先看现象 二、用户缓冲区的引入 三、用户缓冲区的刷新策略 四、为什么要有用户缓冲区 五、现象解释 ⛳️推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站 一、…

BUG——imx6u开发_结构体导致的死机问题(未解决)

简介&#xff1a; 最近在做imx6u的linux下裸机驱动开发&#xff0c;由于是学习的初级阶段&#xff0c;既没有现成的IDE可以使用&#xff0c;也没有GDB等在线调试工具&#xff0c;只能把代码烧写在SD卡上再反复插拔&#xff0c;仅靠卑微的亮灯来判断程序死在哪一步。 至于没有使…

新加坡服务器托管:数字化引擎,企业托管的未来明星

在新加坡这片充满活力的土地上&#xff0c;托管服务正逐渐成为企业数字化转型与国际化战略的重要支撑。凭借其独特的地理位置、完善的基础设施、严格的法规环境以及政府对科技创新的积极推动&#xff0c;新加坡不仅成为了亚太地区的经济枢纽&#xff0c;也成为了全球企业托管业…