NLP基础知识 - 向量化

NLP基础知识 - 向量化

目录

NLP基础知识 - 向量化

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

什么是向量化?

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

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


为什么需要向量化?

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

常见的向量化方法

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

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

python 复制代码
from sklearn.feature_extraction.text import CountVectorizer

corpus = [
    "我喜欢自然语言处理",
    "自然语言处理很有趣",
    "机器学习和深度学习都是AI的组成部分"
]

# 创建词袋模型
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(corpus)

# 显示结果
print("词袋模型特征:", vectorizer.get_feature_names_out())
print("词袋模型矩阵:\n", X.toarray())

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

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

python 复制代码
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是通过神经网络学习单词的稠密向量表示,能够捕捉到单词之间的语义关系。

python 复制代码
from gensim.models import Word2Vec

sentences = [
    ["自然语言处理", "是", "人工智能", "的一部分"],
    ["机器学习", "是", "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的预训练模型,能够生成上下文相关的向量。

python 复制代码
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)
相关推荐
cver1236 分钟前
塑料可回收物检测数据集-10,000 张图片 智能垃圾分类系统 环保回收自动化 智慧城市环卫管理 企业环保合规检测 教育环保宣传 供应链包装优化
人工智能·安全·计算机视觉·目标跟踪·分类·自动化·智慧城市
jz_ddk12 分钟前
[科普] AI加速器架构全景图:从GPU到光计算的算力革命
人工智能·学习·算法·架构
idaretobe19 分钟前
宝龙地产债务化解解决方案二:基于资产代币化与轻资产转型的战略重构
人工智能·web3·去中心化·区块链·智能合约·信任链
摆烂工程师26 分钟前
教你如何从GPT-5 切换到 GPT-4o。Plus 用户切换 GPT-4o 旧模型的入口在哪里?
人工智能·chatgpt·程序员
Lee_Serena36 分钟前
bert学习
人工智能·深度学习·自然语言处理·bert·transformer
仪器科学与传感技术博士1 小时前
Matplotlib库:Python数据可视化的基石,发现它的美
开发语言·人工智能·python·算法·信息可视化·matplotlib·图表可视化
小王爱学人工智能1 小时前
svm的一些应用
人工智能·机器学习·支持向量机
极限实验室1 小时前
喜报!极限科技 Coco AI 荣获 2025 首届人工智能应用创新大赛全国一等奖
人工智能
啾啾Fun1 小时前
PyTorch 核心三件套:Tensor、Module、Autograd
人工智能·pytorch·python
双向331 小时前
医疗健康Agent:诊断辅助与患者管理的AI解决方案
人工智能