前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >从零到一构建AI项目实战教程第五篇:文本向量化与词嵌入

从零到一构建AI项目实战教程第五篇:文本向量化与词嵌入

原创
作者头像
china马斯克
发布2025-01-15 08:26:54
发布2025-01-15 08:26:54
2310
举报

文本向量化是将文本数据转换为数值向量的过程,是自然语言处理(NLP)领域的一项关键技术。通过将非结构化的文本数据转换为结构化的数值向量,可以使机器学习算法高效地处理和理解文本信息。本文将详细介绍文本向量化的几种方法,包括词袋模型、TF-IDF、Word2Vec和BERT,并附带相关示例。

一、词袋模型(Bag of Words)

词袋模型是最简单的文本向量化方法,它将文本表示为一个词汇的集合,不考虑词汇的顺序和上下文。每个词汇在向量中对应一个维度,该维度的值表示词汇在文本中出现的次数。

示例

假设有两个文本:

  1. "John likes to watch movies, Mary likes too."
  2. "John also likes to watch football games."

构建词典:{"John":1, "likes":2, "to":3, "watch":4, "movies":5, "also":6, "football":7, "games":8, "Mary":9, "too":10}

根据上述词典,两个文本的向量表示分别为:

  1. [1, 2, 1, 1, 1, 0, 0, 0, 1, 1]
  2. [1, 1, 1, 1, 0, 1, 1, 1, 0, 0]
二、TF-IDF(Term Frequency-Inverse Document Frequency)

TF-IDF是一种改进的文本向量化方法,它考虑了词汇在文本中的频率以及词汇在整个文档集合中的逆文档频率。TF-IDF能够更准确地反映词汇在文本中的重要性。

示例

假设有文档集合D = {d1, d2, d3},其中:

  • d1: "The sky is blue."
  • d2: "The sun is bright."
  • d3: "The sun in the sky is bright."

计算词汇“sun”的TF-IDF值:

  • TF(sun, d1) = 0, TF(sun, d2) = 1/3, TF(sun, d3) = 1/4
  • IDF(sun) = log(N/df(sun)) = log(3/2)
  • TF-IDF(sun, d1) = 0, TF-IDF(sun, d2) = (1/3) * log(3/2), TF-IDF(sun, d3) = (1/4) * log(3/2)
三、Word2Vec

Word2Vec是一种词嵌入方法,利用深度学习技术将词汇映射到低维向量空间中,同时保留词汇之间的语义关系。Word2Vec主要包括CBOW(Continuous Bag of Words)和Skip-Gram两种模型。

示例

CBOW模型

目标是通过上下文预测中心词。假设输入上下文为“The cat sits”,预测中心词为“on”。

  1. 将上下文词的one-hot编码输入到隐藏层(无激活函数)。
  2. 计算上下文词的平均向量,作为隐藏层的输出。
  3. 将隐藏层的输出通过Softmax回归得到词汇表中每个词的概率分布。
  4. 最大化目标词的概率,更新权重矩阵。

Skip-Gram模型

目标是通过中心词预测上下文词。假设输入中心词为“cat”,预测上下文词为“The”、“sits”。

  1. 将中心词的one-hot编码输入到隐藏层(无激活函数)。
  2. 计算中心词的向量表示,作为隐藏层的输出。
  3. 将隐藏层的输出通过多个Softmax回归得到上下文词的概率分布。
  4. 最大化上下文词的概率,更新权重矩阵。
四、BERT(Bidirectional Encoder Representations from Transformers)

BERT是一种基于Transformer的动态词嵌入方法,能够根据上下文动态生成词向量。BERT使用多层Transformer编码器处理输入序列,通过掩码语言模型(MLM)和下一个句子预测(NSP)两个预训练任务来捕捉深层上下文信息。

示例

假设句子为“The bank is on the river bank”。

  1. 使用BERT模型对句子进行编码。
  2. 句子中的第一个“bank”会被映射到金融领域的向量表示,而第二个“bank”会被映射到地理领域的向量表示。
  3. BERT的输出向量可以用于各种下游任务,如文本分类、情感分析等。

BERT的具体使用步骤(以bert-serving为例):

  1. 下载预训练模型(如BERT-Base, Uncased)。
  2. 安装bert-serving-server和bert-serving-client。
  3. 启动BERT服务:bert-serving-start -model_dir /path/to/your/model -num_worker=4
  4. 使用BERT客户端进行编码:
代码语言:txt
复制
from bert_serving.client import BertClient
bc = BertClient()
sentences = ['The bank is on the river bank']
vectors = bc.encode(sentences)
print(vectors)

输出向量的长度为768(对于BERT-Base模型)。

总结

文本向量化与词嵌入是自然语言处理领域的基础技术,通过不同的方法将文本转换为数值向量,使得机器学习算法能够高效地处理和理解文本信息。词袋模型和TF-IDF方法简单直观,但忽略了词汇之间的语义关系。Word2Vec和BERT等词嵌入方法则能够捕捉词汇之间的语义联系,提供更高质量的文本表示。根据具体应用场景和任务需求,选择合适的文本向量化方法,是提升NLP系统性能的关键。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、词袋模型(Bag of Words)
  • 二、TF-IDF(Term Frequency-Inverse Document Frequency)
  • 三、Word2Vec
  • 四、BERT(Bidirectional Encoder Representations from Transformers)
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档