当前位置: 首页 > news >正文

NLP基础知识 - 向量化

NLP基础知识 - 向量化

目录

NLP基础知识 - 向量化

  • NLP基础知识 - 向量化
    • 目录
    • 什么是向量化?
    • 为什么需要向量化?
    • 常见的向量化方法
      • 1. 词袋模型(Bag of Words, BoW)
      • 2. TF-IDF(词频-逆文档频率)
      • 3. 词嵌入(Word Embedding)
      • 4. 句子嵌入(Sentence Embedding)


什么是向量化?

向量化是自然语言处理(NLP)领域的核心步骤之一。它的目标是将文本数据转换为数学形式(向量),使其能够被机器学习模型处理。

在实际操作中,文本中的单词或句子被表示为一个高维空间中的点,这些点可以捕捉文本之间的语义关系。向量化是 NLP 中将非结构化数据结构化的关键环节。


为什么需要向量化?

  • 机器学习模型输入要求:机器学习模型只能处理数值数据,因此需要将文本数据转换为数字形式。
  • 捕捉语义关系:向量化允许模型捕捉单词、短语和句子之间的语义关系,例如同义词或相似词。
  • 简化文本计算:数学向量便于执行计算,例如相似度度量(余弦相似度、欧氏距离等)。

常见的向量化方法

1. 词袋模型(Bag of Words, BoW)

词袋模型是最简单的向量化方法之一。它将文本中的单词表示为特征,并统计每个单词的出现次数。

from sklearn.feature_extraction.text import CountVectorizercorpus = ["我喜欢自然语言处理","自然语言处理很有趣","机器学习和深度学习都是AI的组成部分"
]# 创建词袋模型
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(corpus)# 显示结果
print("词袋模型特征:", vectorizer.get_feature_names_out())
print("词袋模型矩阵:\n", X.toarray())

2. TF-IDF(词频-逆文档频率)

TF-IDF是一种改进的词袋模型,它不仅考虑单词出现的次数,还考虑单词在整个语料库中的重要性。

from sklearn.feature_extraction.text import TfidfVectorizer# 创建TF-IDF模型
tfidf_vectorizer = TfidfVectorizer()
X_tfidf = tfidf_vectorizer.fit_transform(corpus)# 显示结果
print("TF-IDF特征:", tfidf_vectorizer.get_feature_names_out())
print("TF-IDF矩阵:\n", X_tfidf.toarray())

3. 词嵌入(Word Embedding)

(1) Word2Vec
Word2Vec是通过神经网络学习单词的稠密向量表示,能够捕捉到单词之间的语义关系。

from gensim.models import Word2Vecsentences = [["自然语言处理", "是", "人工智能", "的一部分"],["机器学习", "是", "NLP", "的重要组成"],["深度学习", "提升", "了", "AI", "的性能"]
]# 训练Word2Vec模型
model = Word2Vec(sentences, vector_size=100, window=5, min_count=1, workers=4)# 显示单词向量
print("单词 '自然语言处理' 的向量表示:", model.wv['自然语言处理'])

(2) GloVe
GloVe(Global Vectors for Word Representation)是一种基于统计的词嵌入方法,利用词共现矩阵进行建模。

4. 句子嵌入(Sentence Embedding)

句子嵌入是基于句子而非单词的向量化方法,能够捕捉句子级别的语义。

(1) 使用预训练模型(如BERT)
BERT(Bidirectional Encoder Representations from Transformers)是一种基于Transformer的预训练模型,能够生成上下文相关的向量。

from transformers import BertTokenizer, BertModel
import torch# 加载BERT模型
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
model = BertModel.from_pretrained('bert-base-uncased')# 输入句子
sentence = "Natural language processing is fun!"
inputs = tokenizer(sentence, return_tensors='pt')# 生成句子嵌入
outputs = model(**inputs)
sentence_embedding = outputs.last_hidden_state.mean(dim=1)print("句子嵌入向量:", sentence_embedding)

相关文章:

NLP基础知识 - 向量化

NLP基础知识 - 向量化 目录 NLP基础知识 - 向量化 NLP基础知识 - 向量化目录什么是向量化?为什么需要向量化?常见的向量化方法1. 词袋模型(Bag of Words, BoW)2. TF-IDF(词频-逆文档频率)3. 词嵌入&#x…...

JAVA学习笔记_MySQL进阶

文章目录 存储引擎InnoDB引擎MyISAM引擎Memory存储引擎的选择 索引索引数据结构Btree(多路平衡查找树)BTreeHash索引为什么InnoDQB存储引擎采用Btree索引结构 索引分类思考题 索引语法索引性能分析慢查询日志show profiesexplain 索引的使用规则最左前缀法则索引失效SQL提示覆盖…...

ffmpeg: stream_loop报错 Error while filtering: Operation not permitted

问题描述 执行ffmpeg命令的时候,报错:Error while filtering: Operation not permitted 我得命令如下 ffmpeg -framerate 25 -y -i /data/workerspace/mtk/work_home/mtk_202406111543-l9CSU91H1f1b3/tmp/%08d.png -stream_loop -1 -i /data/workerspa…...

Vue.use()和Vue.component()

当很多页面用到同一个组件,又不想每次都在局部注册时,可以在main.js 中全局注册 Vue.component()一次只能注册一个组件 import CcInput from /components/cc-input.vue Vue.component(CcInput);Vue.use()一次可以注册多个组件 对于自定义的组件&#…...

javaweb 04 springmvc

0.1 在上一次的课程中,我们开发了springbootweb的入门程序。 基于SpringBoot的方式开发一个web应用,浏览器发起请求 /hello 后 ,给浏览器返回字符串 “Hello World ~”。 其实呢,是我们在浏览器发起请求,请求了我们…...

[Visual studio] 性能探测器

最近发现VS的profile还是很好用的, 可以找到项目代码的瓶颈,比如发现CPU的每一个函数的时间占比,分析代码耗时分布,和火焰图一样的效果 如何使用 1. 打开你的项目,调整成release状态 2. 点击调试->性能探测器 3…...

【漫话机器学习系列】017.大O算法(Big-O Notation)

大 O 表示法(Big-O Notation) 大 O 表示法是一种用于描述算法复杂性的数学符号,主要用于衡量算法的效率,特别是随着输入规模增大时算法的运行时间或占用空间的增长趋势。 基本概念 时间复杂度 描述算法所需的运行时间如何随输入数…...

IntelliJ IDEA中设置激活的profile

在IntelliJ IDEA中设置激活的profile,可以通过以下步骤进行: 通过Run/Debug Configurations设置 打开Run/Debug Configurations对话框: 在IDEA的顶部菜单栏中,选择“Run”菜单,然后点击“Edit Configurations...”或者…...

Qt 的信号槽机制详解:之信号槽引发的 Segmentation Fault 问题拆析(上)

Qt 的信号槽机制详解:之因信号槽误用引发的 Segmentation Fault 问题拆析(上) 前言一. 信号与槽的基本概念信号(Signal)槽(Slot)连接信号与槽 二. 信号槽机制的实现原理元对象系统(M…...

uniapp中实现APP调用本地通知栏通知、震动、本地提示音或者mp3提醒

要在uniapp中实现APP调用本地通知栏通知、震动和本地提示音或者mp3提醒,你可以使用uni-app提供的原生API和插件来实现。 通知栏通知: 你可以使用uni-app的原生API uni.showToast() 或者 uni.showModal() 来实现通知栏通知的功能。可以在需要发送通知的地…...

ADB 上传文件并使用脚本监控上传百分比

有个需求,需要测试 emmc的外部连续写入性能,使用 ADB 上传一个巨大的文件。并且在上传到一定值时进行干预。 因此但是 adb push 命令本身会 block 运行并且不返回进度,因此需要一个额外的监控脚本。 上传脚本: echo off setloc…...

【数据库】PostgreSQL(持续更新)

目录 K8S 部署基本使用高级特性 K8S 部署 # pg.yaml --- apiVersion: v1 kind: PersistentVolume metadata:name: tv-postgres-pvnamespace: locallabels:storage: tv-postgres-pv spec:accessModes:- ReadWriteOncecapacity:storage: 50Gi # 按需修改,需要保持与…...

overleaf中出现TeX capacity exceeded PDF object stream buffer=5000000的原因和解决方案

在插入pdf 配图后,编译出错提示信息如图,很可能的一个原因是pdf文件大小太大了,最好压缩一下,压缩到1MB以内。...

pyqt5冻结+分页表

逻辑代码 # -*- coding: utf-8 -*- import sys,time,copy from PyQt5.QtWidgets import QWidget,QApplication, QDesktopWidget,QTableWidgetItem from QhTableWidgetQGN import Ui_QhTableWidgetQGN from PyQt5.QtCore import Qt from PyQt5 import QtCore, QtGui, QtWidgets…...

一起学Git【第四节:添加和提交文件】

通过前三节的学习,基本上对Git有了初步的了解,下面开始进行文件的添加和提交的流程。 这里主要涉及四个命令: git init 创建仓库git status查看仓库状态git add添加至暂存区git commit提交文件之前已经使用过git init命令了,此处不再具体讲解。参照一起学Git【第二节:创建…...

【鸿蒙实战开发】HarmonyOS集成高德地图定位实现

背景 随着HarmoneyOS 应用的井喷式增长,各大厂商也都加快了自己原生应用鸿蒙化的脚步,今天使用高德打车的时候忽然间想到高德在鸿蒙上有没有实现呢?打开next bate 版本的手机发现高德已经上架了,但是功能还不是特别完善。那么几乎每个应用都…...

ECharts散点图-气泡图,附视频讲解与代码下载

引言: ECharts散点图是一种常见的数据可视化图表类型,它通过在二维坐标系或其它坐标系中绘制散乱的点来展示数据之间的关系。本文将详细介绍如何使用ECharts库实现一个散点图,包括图表效果预览、视频讲解及代码下载,让你轻松掌握…...

python操作Elasticsearch执行增删改查

文章目录 基本操作更多查询方法1. 查询全部数据2. 针对某个确定的值/字符串的查询:term、match3. 在多个选项中有一个匹配,就查出来:terms4. 数值范围查询:range5. 多个条件同时触发 bool6. 指定返回值个数 size7. 返回指定列 _so…...

学习C++:关键字

关键字: 作用:关键字是C预先保留的单词(标识符) 在定义变量或者常量时候,不要用关键字 不要用关键字给变量或者常量起名称...

FFmpeg在python里推流被处理过的视频流

链式算法处理视频流 视频源是本地摄像头 # codinggbk # 本地摄像头直接推流到 RTMP 服务器 import cv2 import mediapipe as mp import subprocess as sp# 初始化 Mediapipe mp_drawing mp.solutions.drawing_utils mp_drawing_styles mp.solutions.drawing_styles mp_holis…...

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…...

Linux 文件类型,目录与路径,文件与目录管理

文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...

IGP(Interior Gateway Protocol,内部网关协议)

IGP(Interior Gateway Protocol,内部网关协议) 是一种用于在一个自治系统(AS)内部传递路由信息的路由协议,主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...

UE5 学习系列(三)创建和移动物体

这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

前端导出带有合并单元格的列表

// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...

【磁盘】每天掌握一个Linux命令 - iostat

目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理

引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...

大数据学习(132)-HIve数据分析

​​​​🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言&#x1f4…...

C/C++ 中附加包含目录、附加库目录与附加依赖项详解

在 C/C 编程的编译和链接过程中,附加包含目录、附加库目录和附加依赖项是三个至关重要的设置,它们相互配合,确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中,这些概念容易让人混淆,但深入理解它们的作用和联…...