从文本到向量:揭秘词向量转换的奥秘与实践
从文本到向量:揭秘词向量转换的奥秘与实践
在自然语言处理(NLP)的世界里,计算机处理的是数字和向量,而人类交流使用的是文本语言。如何让计算机理解文本语义并进行分析处理呢?词向量转换便是其中的关键一环。本文将结合实际代码案例,带大家深入了解词向量转换的原理、流程及应用。
一、为什么需要词向量转换?
文本数据对于人类来说是直观且富有意义的,但计算机并不能直接理解“苹果”“快乐”这些词语的含义。为了让计算机能够处理文本,我们需要将文本中的词语、句子转化为计算机能够理解的数值形式,即向量。通过词向量转换,每个词语都可以用一个多维向量来表示,向量中的数值反映了词语的语义信息,这样计算机就可以基于这些向量进行各种分析任务,如文本分类、情感分析、机器翻译等。
二、数据读取与预处理
在进行词向量转换之前,我们首先需要读取和预处理文本数据。在代码中,我们使用pandas
库读取了存储在本地的差评和优质评价文本文件。
import pandas as pd
cp_content = pd.read_table(r".\差评.txt",encoding='gbk')
yzpj_content = pd.read_table(r".\优质评价.txt",encoding='gbk')
这里使用read_table
函数将文本文件读取为DataFrame
格式,方便后续对数据进行处理。同时,根据文件的实际编码格式指定encoding
参数,确保数据能够正确读取。
三、使用jieba
分词
中文文本不同于英文,词语之间没有天然的分隔符,因此需要进行分词操作。jieba
是一个强大的中文分词工具,在代码中我们使用它对差评和优质评价进行分词处理。
import jieba
#对差评分词
cp_segments = []
contents = cp_content.content.values.tolist()
for content in contents:results = jieba.lcut(content)if len(results) > 1:cp_segments.append(results)cp_fc_results = pd.DataFrame({'content':cp_segments})
cp_fc_results.to_excel('cp_fc_results.xlsx',index=False)#对优质评价分词
yzpj_segments = []
contents = yzpj_content.content.values.tolist()
for content in contents:results = jieba.lcut(content)if len(results) > 1:yzpj_segments.append(results)yzpj_fc_results = pd.DataFrame({'content': yzpj_segments})
yzpj_fc_results.to_excel('yzpj_fc_results.xlsx',index=False)
通过jieba.lcut
方法,将每个文本内容切分成词语列表,然后将分词结果存储到新的DataFrame
中并保存为Excel文件。在这个过程中,我们还过滤掉了分词后结果长度小于等于1的情况,因为这类结果可能没有实际意义。
四、移除停用词
在文本中,存在一些如“的”“了”“是”等对语义表达贡献较小的词语,这些词语被称为停用词。为了减少数据噪声,提高后续分析的准确性,我们需要移除这些停用词。
#导入停用词库
stopwords = pd.read_csv(r"C:\CODE\机器学习\TF-IDF算法\红楼梦\StopwordsCN.txt",encoding='utf8',engine='python',index_col=False)
#定义除去停用词函数
def drop_stopwords(contents, stopwords):segments_clean = []for content in contents:line_clean = []for word in content:if word in stopwords:continueline_clean.append(word)segments_clean.append(line_clean)return segments_clean
#调用除去停用词函数
contents = cp_fc_results.content.values.tolist()
stopwords = stopwords.stopword.values.tolist()
cp_fc_contents_clean_s = drop_stopwords(contents, stopwords)contents = yzpj_fc_results.content.values.tolist()
yzpj_fc_contents_clean_s = drop_stopwords(contents, stopwords)
首先,我们从本地文件中读取停用词列表,然后定义drop_stopwords
函数,该函数遍历每个词语列表,将不在停用词列表中的词语保留下来,最后分别对差评和优质评价的分词结果进行停用词移除操作。
五、词向量转换与朴素贝叶斯分类
(一)数据标签添加与合并
为了进行文本分类任务,我们需要给每个数据添加标签,1代表差评,0代表优质评价,然后将两者合并。
cp_train = pd.DataFrame({'segments_clean':cp_fc_contents_clean_s, 'label':1})
yzpj_train = pd.DataFrame({'segments_clean':yzpj_fc_contents_clean_s, 'label':0})
pj_train = pd.concat([cp_train, yzpj_train])
pj_train.to_excel('pj_train.xlsx',index = False)
(二)数据切分
使用sklearn
库中的train_test_split
函数将数据切分为训练集和测试集,包括训练集特征、测试集特征、训练集标签和测试集标签。
from sklearn.model_selection import train_test_splitx_train, x_test, y_train, y_test = \
train_test_split(pj_train['segments_clean'].values,pj_train['label'].values, random_state = 0)
(三)词向量转换
这里我们使用CountVectorizer
来将文本转换为词向量。CountVectorizer
会统计每个词语在文本中出现的次数,从而构建词向量矩阵。
words = []
for line_index in range(len(x_train)):words.append(' '.join(x_train[line_index]))from sklearn.feature_extraction.text import CountVectorizervec = CountVectorizer(max_features=4000, lowercase=False, ngram_range=(1,3))
vec.fit(words)
我们首先将训练集的词语列表合并为字符串形式,然后实例化CountVectorizer
对象,设置max_features
表示选取出现频率最高的4000个词语,lowercase=False
表示不将文本转换为小写,ngram_range=(1,3)
表示考虑1 - 3个连续词语的组合。最后使用fit
方法对数据进行拟合,学习词语的词汇表。
(四)朴素贝叶斯分类
使用MultinomialNB
(多项式朴素贝叶斯)分类器进行文本分类。
from sklearn.naive_bayes import MultinomialNB,ComplementNB
classifier = MultinomialNB(alpha = 0.1)
classifier.fit(vec.transform(words), y_train)train_pr = classifier.predict(vec.transform(words))from sklearn import metrics
print(metrics.classification_report(y_train, train_pr))test_words = []
for line_index in range(len(x_test)):test_words.append(' '.join(x_test[line_index]))test_pr = classifier.predict(vec.transform(test_words))
print(metrics.classification_report(y_test, test_pr))
首先实例化MultinomialNB
分类器并设置alpha
参数,然后使用fit
方法对训练数据进行训练。接着对训练集和测试集分别进行预测,并使用classification_report
函数评估分类结果,输出精确率、召回率、F1值等指标。
运行结果如下
词向量转换是自然语言处理中不可或缺的基础环节,它为后续的各种文本分析任务奠定了坚实的基础。通过本文的介绍和代码实践,相信大家对词向量转换有了更清晰的认识。在实际应用中,我们还可以尝试不同的词向量转换方法(如TF-IDF、Word2Vec等)和优化策略,以获得更好的处理效果。
相关文章:
从文本到向量:揭秘词向量转换的奥秘与实践
从文本到向量:揭秘词向量转换的奥秘与实践 在自然语言处理(NLP)的世界里,计算机处理的是数字和向量,而人类交流使用的是文本语言。如何让计算机理解文本语义并进行分析处理呢?词向量转换便是其中的关键一环…...
在 Windows 中安装 Pynini 的记录
#工作记录 概述 Pynini 是一个用于加权有限状态文法编译的 Python 库,广泛应用于自然语言处理(NLP)领域。以下记录旨在用于回顾和帮助大家在 Windows 系统中安装 Pynini。 安装思路: 优先用conda虚拟环境 或 在python3.12的vir…...
美丽天天秒链动2+1源码(新零售商城搭建)
什么是链动21模式? 链动21主要是建立团队模式,同时快速提升销量。是目前成员中速度最快的裂变模式。链动21模式合理合规,同时激励用户 公司的利润分享机制,让您在享受购物折扣的同时,也能促进并获得客观收益。 链动21模…...
目标检测中的损失函数(三) | SIoU WIoUv1 WIoUv2 WIoUv3
🚀该系列将会持续整理和更新BBR相关的问题,如有错误和不足恳请大家指正,欢迎讨论!!! SCYLLA-IoU(SIoU)来自挂在2022年arxiv上的文章:《SIoU Loss: More Powerful Learnin…...
51、【OS】【Nuttx】【OSTest】参数解析:参数处理过程
背景 接上两篇 blog: 49、【OS】【Nuttx】【OSTest】参数解析:测试项 50、【OS】【Nuttx】【OSTest】参数解析:函数定义 getopt_common 来看 getopt_common 的实现过程 首先校验输入参数是否为空,如果没有输入参数࿰…...
python实现基于Windows系统计算器程序
Python实现Windows系统计算器程序(含高级功能) 下面我将介绍如何使用Python创建一个功能完整的Windows风格计算器程序,包含基本运算和高级数学功能。 1. 使用Tkinter实现基础计算器 import tkinter as tk from tkinter import ttk import …...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(14):かもしれません (~た・~ない)ほうがいいです
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(14):かもしれません &(~た・~ない)ほうがいいです 1、前言(1)情况说明(2)工程师…...
AI Rack架构高速互连的挑战:损耗设计与信号完整性的设计框架
在AI驱动的时代,系统设计已经从单一PCB的视角,逐步转向以整个rack为单位来考量。 对于信号完整性而言,焦点以不再局限于单一PCB上的损耗,而是扩展到芯片与芯片之间的端到端互连损耗(end-to-end interconnect loss&…...
React useCallback函数
应用场景:父组件向子组件传递函数类型的props时...
【CTFer成长之路】XSS的魔力
XSS闯关 level1 访问url: http://c884a553-d874-4514-9c32-c19c7d7b6e1c.node3.buuoj.cn/level1?usernamexss 因为是xss,所以对传参进行测试,修改?username1,进行访问 会发现username参数传入什么,welcome之后就…...
多模态RAG演进-MRAG1.0->MRAG2.0->MRAG3.0
MRAG1.0 MRAG1.0是MRAG框架的初始阶段,通常被称为“伪MRAG”。它是对RAG范式的简单扩展,支持多模态数据。MRAG1.0通过利用现有的基于文本的检索和生成机制,实现了从RAG到MRAG的平稳过渡。 MRAG1.0的架构包括三个关键组件: 文档解…...
超预期!淘宝闪购提前开放全国全量,联合饿了么扭转外卖战局
饿了么由守转攻。 作者|景行 编辑|杨舟 淘宝饿了么,终于落子,“淘宝闪购”,横空出世,仅仅2天,业务加速。 4月30日上午,当外卖战场陷入沉寂时,淘宝宣布将即时零售业务“小时达”升级为“淘宝闪…...
Proxmox VE 8.4 显卡直通完整指南:NVIDIA 2080 Ti 实战
背景: PCIe Passthrough 技术允许虚拟机直接访问物理GPU设备,绕过宿主机系统,从而获得接近原生性能的图形处理能力. 参照:从Proxmox VE开始:安装与配置指南。在R740服务器完成了proxmox的安装,并且安装了一…...
算法技巧——打表
什么是打表? 打表,是一个信息学专用术语,意指对一些题目,通过打表技巧获得一个有序表或常量表,来执行程序某一部分,优化时间复杂度。这种算法也可用于在对某种题目没有最优解法时,用来得到分数的…...
JavaScript基础-逻辑运算符
在JavaScript编程中,逻辑运算符用于判断表达式的真假,并根据结果执行特定的操作。掌握逻辑运算符是理解条件控制结构的关键之一。本文将详细介绍JavaScript中的三种主要逻辑运算符:&&(逻辑与)、||(…...
P20:Inception v3算法实战与解析
🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 使用InceptionV3实现天气识别 一、模型结构 Inception v3是Google团队在2015年提出的第三代Inception模型,属于卷积神经网络(CNN&…...
C++ - 数据容器之 list(创建与初始化、元素访问、容量判断、元素遍历、添加元素、删除元素)
一、创建与初始化 引入 <list> 并使用 std 命名空间 #include <list>using namespace std;创建一个空 list list<int> my_list;创建一个包含 5 个元素,每个元素初始化为 0 的 list list<int> my_list(5);创建一个包含 5 个元素…...
deepseek 技巧整理
1、导出word 和excel 功能,在使用以下提示词。 请帮我列出减肥期间可以吃的水果,并分析该水果含有的营养元素,以表格的形式星现。1.要以html的方式输出 2.要可以直接运行 3.页面要提供可以直接下载word和excel功能...
柔性PZT压电薄膜多维力传感器在微创手术机器人的应用
随着医疗技术的迅速发展,微创手术机器人正在成为外科手术的重要助手。与传统开放式手术相比,微创手术创伤小、恢复快、感染率低,对手术器械的精细操控性和感知能力提出了更高要求。多维力传感器作为机器人“触觉”的核心部件,对提…...
Java学习手册:Spring Boot 自动配置与快速开发
一、Spring Boot 自动配置概述 Spring Boot 的自动配置是其核心特性之一,它能够根据项目的依赖和配置自动地进行 Spring 应用程序的配置。自动配置的工作流程如下: SpringBootApplication 注解 :这是自动配置的起点,它是一个组合…...
ValueError: expected sequence of length 8 at dim 2 (got 0)
问题描述 在PyCharm中使用强化学习运行Python代码时报错ValueError: expected sequence of length 8 at dim 2 (got 0)。 问题原因 实际上原因就是gym中的env对象的reset、step等方法的返回值作了改动 解决方法 1、第一步: 将代码块中的(记得改的需…...
AI赋能新媒体运营:效率提升与能力突破实战指南
AI赋能新媒体运营:效率提升与能力突破实战指南 在信息爆炸的新媒体时代,运营人员面临着内容产出压力大、数据分析复杂、用户互动需求高等多重挑战。AI技术的迅猛发展为新媒体运营带来了革命性的变革可能。本文将为您揭示如何利用AI工具提升工作效率、培…...
单词规律(简单)
思路和同构字符串那道题一样。、但是这道题要注意的地方就是,检查 pattern 和 s 的单词数量是否一致以及在进行字符串比较的时候应该用equals来进行比较,而不能用“!”,“!”比较的是对象引用而非内容。 class Soluti…...
QGraphicsView QGraphicsScene QGraphicsItem 的关系
在Qt的图形视图框架中,QGraphicsView、QGraphicsScene和QGraphicsItem 三者协同工作,构成一个分层的结构,用于高效管理和显示复杂的图形界面。以下是它们的关系和职责的详细说明: 1. 核心角色 类名职责类比QGraphicsItem场景中的…...
re题(52)BUUCTF-[FlareOn5]Minesweeper Championship Registration
BUUCTF在线评测 jadx打开if条件就是flag...
c++环境和vscode常用的一些有用插件
环境 WSL需要安装cmake 编译器g14 应该是包含了所有std:c23把好像包含部分c26 vscode 需要插件cmake vscode clangd 方便提示吧 File Watch 插件目的在保存.h/.cpp文件时候自动执行vscode 的cmake吧 error lens 方便每次显示错误和警告的提示懒得每次点击去看错误 Edit Sugge…...
UE自动索敌插件Target System Component
https://www.fab.com/zh-cn/listings/9088334d-3bde-4e10-a937-baeb780f880f 一个完全用 C 编写的 UE插件,添加了对简单相机锁定/瞄准系统的支持。它最初在蓝图中开发和测试,然后转换并重写为 C 模块和插件。 特征: 可通过一组可在…...
从括号匹配看栈:数据结构入门的实战与原理
在计算机科学的世界里,数据结构是程序员的 “瑞士军刀”,不同的数据结构适用于不同的场景,能高效解决各类问题。其中,栈作为一种简单却强大的数据结构,在很多实际应用中发挥着关键作用。今天,我们就通过一个…...
ReLU函数及其Python实现
ReLU函数及其Python实现 文章目录 ReLU函数及其Python实现1. ReLU函数定义2. Python实现3. 在深度学习中的应用总结 1. ReLU函数定义 ReLU(Rectified Linear Unit,修正线性单元)函数是深度学习中常用的激活函数之一。它的定义非常简单&#…...
Rain World 雨世界 [DLC 解锁] [Steam Epic] [Windows SteamOS]
Rain World 雨世界 [DLC 解锁] [Steam & Epic] [Windows & SteamOS] 需要有游戏正版基础本体,安装路径不能带有中文,或其它非常规拉丁字符; DLC 版本 至最新全部 DLC 后续可能无法及时更新文章,具体最新版本见下载文件说明…...
n8n 工作流画布上下左右移动的操作方法
n8n 工作流画布上下左右移动的操作方法 1. n8n 工作流画布上下移动2. n8n 工作流画布左右移动3. n8n 工作流画布扩大和缩小4. n8n 工作流画布缩放到适合 1. n8n 工作流画布上下移动 鼠标滚轮向上滚动是向上移动鼠标滚轮向下滚动是向下移动 2. n8n 工作流画布左右移动 按照Shi…...
Linux 常用命令合集
一、用户权限管理 切换管理员身份 sudo su:普通用户临时获取 root 权限,需输入当前用户密码。管理员提示符:root主机名:路径#。退出管理员:exit,返回普通用户状态。 以管理员身份执行命令 sudo 命令 参数:…...
B站Michale_ee——ESP32_IDF SDK——FreeRTOS_7 流数据缓冲区、消息缓冲区
一、Stream Buffer流数据缓冲区 流数据缓冲区用来处理像音频之类的流数据; 1.API简介 (1)创建流数据缓冲区 (2)向流数据缓冲区中发送数据 (3)从流数据缓冲区中接收数据 2.示例代码及运行结果…...
HCL(HashiCorp Configuration Language)是一种结构化配置语言
HCL(HashiCorp Configuration Language)是一种结构化配置语言,语法简洁且可读性强,广泛用于 Docker Buildx Bake、Terraform、Nomad 等工具的配置。以下是其核心语法规则和示例: 1. 基础结构 HCL 使用 块(…...
k9s 一个基于终端的 Kubernetes 集群管理工具(TUI)
k9s 是一个基于终端的 Kubernetes 集群管理工具(TUI),通过快捷键和交互式命令快速操作资源。以下是其核心用法和常见场景: 1. 基本命令 启动 k9s k9s # 默认连接当前 kubeconfig 配置的集群k9s -n <namespace> # 指定命…...
高等数学-第七版-下册 选做记录 习题10-1
1. 4. 5....
DBeaver连接人大金仓数据库V9
1、官网下载驱动jdbc 打开官网地址,找到下面的V9R1-JDBC,点击后面的下载即可,保存到本地 2、解压最新版的驱动程序 3、把***_JDBC文件夹内的驱动程序复制到DBeaver安装目录下的plugins文件夹里 4、打开dbeaver程序,增加kingbase…...
跟韩学AiOps系列之2025学MySQL系列_如何在MySQL中开启和提交事务?!
跟韩学AiOps系列之2025学MySQL系列_如何在MySQL中开启和提交事务?! 文章目录 一、事务的基本操作1. 开启事务2. 执行事务内操作3. 提交事务4. 回滚事务 二、验证示例(适用于 MySQL 5.7)步骤 1:准备测试表和数据步骤 2:…...
【KWDB 创作者计划】利用KWDB解决工业物联网场景中的海量数据管理难题的思考
利用KWDB解决工业物联网场景中的海量数据管理难题 一、什么是KWDB?二、工业物联网场景中的数据管理痛点2.1 数据量大且增长迅速2.2 数据多样性2.3 实时性需求2.4 数据分析复杂性 三、KWDB 的技术优势与架构解读3.1 时间序列数据的高效管理3.2 高吞吐写入性能3.3 灵活…...
分享国产AI工作流集成数据库完成业务处理
在现代企业应用中,业务流程的自动化和数据管理是提高效率的关键。Taskflow 作为一个强大的任务流管理工具,可以通过集成数据库实现复杂业务逻辑的处理。本文将分享如何利用 Taskflow 集成数据库,优化业务流程,并展示一个实际案例。…...
【每日八股】复习 Redis Day5:集群(上)
文章目录 复习昨日内容缓存雪崩、击穿、穿透的问题描述及解决方案如何保证数据库和缓存的一致性普通方案进阶方案 如何保证缓存删除一定成功?针对业务一致性要求高的场景,如何确保缓存与数据库的一致性?如何避免缓存失效?如何实现…...
linux进程的复制和替换
Linux 进程的复制与替换 一、主函数参数 在 C 语言里,main 函数能够接收参数,其标准形式如下: int main(int argc, char* argv[], char* envp[]);argc:代表命令行参数的数量,为整数类型。argv:是一个字符…...
【质量管理】现代TRIZ问题识别中的功能分析——相互接触分析
在文章【质量管理】现代TRIZ中问题识别中的功能分析——组件分析-CSDN博客中我们知道了如何对产品进行组件分析,那么组件分析出来有什么作用呢?组件分析就是为了接下来相互接触分析使用的。 什么是相互接触 相互接触分析是功能分析的一部分,…...
一种快速计算OTA PSRR的方法(Ⅱ)
1.仿真验证 1.1仿真设置 1.1.1 Test-bench原理 1.1.2 管子参数设置 为了公平地比较性能,设置所有OTA 的输入晶体管M1和M2为相同的gm和偏置电流1uA。 具体晶体管宽长比设置参见5.参考资料中的论文2。 1.2仿真验证 1.2.1 CM OTA 1)小信号参数 M1 M…...
【C++】通过红黑树封装map和set
前言: 通过之前的学习,我们已经学会了红黑树和map、set。这次我们要实现自己的map和set,对,使用红黑树进行封装! 当然,红黑树内容这里就不在赘述,我们会复用红黑树的代码,所以先将…...
【Java IO流】字节输入流FileInputStream、字节输出流FileOutputStream
目录 0.前言 1.FileInputStream 1.1 概述 1.2 构造方法 1.3 成员方法 1.4 FileInputStream读取文件案例演示 2.FileOutputStream 2.1 概述 2.2 构造方法 2.3 成员方法 2.4 写入文本文件案例演示 3.FileInputStream FileOutputStream拷贝文件 0.前言 本文讲解的是…...
信息收集新利器:SSearch Chrome 插件来了
SSearch 下载地址 SSearch 😣用途 每次谷歌语法搜索时还得自己写,我想省事一点,弄了一个插件,先加了几个常用的语法,点击后会跳转到对应搜索页面,也可以直接在搜索框微调 后续也会加些其他语法 &#…...
【AI面试准备】AI误判案例知识库优化方案
面试题:建立内部知识库:收集AI误判案例训练领域专属模型。 在回答关于“建立内部知识库收集AI误判案例训练领域专属模型”的面试问题时,建议从以下结构化框架展开,既能体现专业性,又能展现解决问题的系统性和实际落地…...
从零开始讲DDR(8)——AXI 接口MIG 使用(1)
一、前言 在之前的系列文章中,我们已经讨论过了MIG ip的接口内容,配置方式和modelsim独立仿真相关的内容,因此,本文对于之前已经讨论过的相关内容只做简单描述,着重介绍AXI 接口MIG使用上与普通ui接口的不同之处。感兴…...
字符和编码(python)
位数:英文字符使用 1 个字节表示,中文字符通常使用 3 个字节。示例:汉字 “汉” 的 UTF-8 编码是 \xE6\xB1\x89。优点:兼容 ASCII,广泛用于网络传输和文件存储。 Python 中的字符串类型 在 Python 中,字…...