【自然语言处理】P1 对文本编码(One-Hot 与 TF-IDF)

目录

对文本编码,目标是将自然语言文本表示为向量,从而便于继续处理和分析文本数据。三种常用对文本编码方法如下:

独热表示(One-hot)

独热表示(One-hot encoding)将句子中的每个单词转换为一个固定长度的二进制向量,其中每个向量表示句子中单词的独热编码。这个过程通常包括建立词库、独热编码两个步骤:

bash 复制代码
# 以这两个句子建立独热表示:
Time flies like an arrow.
Fruit flies like a banana.
  1. 建立词库:首先建立一个词库,包含两个句子中出现所有的单词。一般来说,词库中所有字符小写,且不包含逗号等标点字符。
bash 复制代码
# 上述两个句子的词库为:
{time, fruit, flies, like, a, an, arrow, banana}
  1. 独热编码:对于句子中每个单词,创建一个二进制向量,其长度等于词库的大小。在这个向量中,单词在词库中的位置对应一个1,其余位置都是0。这样,每个单词都得到了唯一的独热编码。
bash 复制代码
# 两个句子的独热编码为:
Time flies like an arrow.
[1, 0, 1, 1, 0, 1, 1, 0]

Fruit flies like a banana.
[0, 1, 1, 1, 1, 0, 0, 1]

独热编码可以确保每个单词都有一个唯一的向量表示,但它的缺点在于,没有捕捉到单词之间的任何语义关系。


TF-IDF

TF-IDF(Term Frequency-Inverse Document Frequency)用于评估一个词对于一个文档集合中一个文档的重要程度。

计算 TF-IDF,我们需要遵循以下五个步骤:

  1. 分词(Tokenization):将文本分解为单词或词组。
  2. 创建文档频率(DF)表:记录每个词在整个文档集合中出现的文档数量。
  3. 计算词频(TF):对于每个词,计算它在每个文档中的出现次数除以该文档的总词数。
  4. 计算逆文档频率(IDF) :使用公式 I D F = log ⁡ N N D F IDF = \log_N \frac{N}{DF} IDF=logNDFN 来计算,其中 N N N 是文档集合的大小, D F DF DF 是词的文档频率。
  5. 计算TF-IDF:将 TF 和 IDF 相乘得到 TF-IDF 值。

e . g . e.g. e.g. 假设我们有以下文档集合:

bash 复制代码
文档1:"The quick brown fox jumps over the lazy dog."
文档2:"The quick brown fox jumps over the lazy dog again."
文档3:"The quick brown fox jumps over the lazy dog for the third time."

我们将使用这些句子来计算词 "fox" 的 TF-IDF 值,五个步骤如下:

  1. 分词
bash 复制代码
文档1:["The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog."]
文档2:["The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog", "again."]
文档3:["The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog", "for", "the", "third", "time."]
  1. 创建 DF 表

    • "fox" 在 文档1、2、3中都出现了,所以 DF = 3。
  2. 计算 TF

    • 文档1中 "fox" 的 TF = 1/9 = 0.1111
    • 文档2中 "fox" 的 TF = 1/10 = 0.1
    • 文档3中 "fox" 的 TF = 1/12 = 0.0833
  3. 计算 IDF

    • I D F = l o g N ( N D F ) IDF = log_N (\frac N {DF}) IDF=logN(DFN)
    • 假设整个文档集合的大小 N = 1000,那么 I D F = l o g 1000 ( 1000 3 ) ≈ 1.5849 IDF = log_{1000} (\frac {1000} 3) ≈ 1.5849 IDF=log1000(31000)≈1.5849
  4. 计算 TF-IDF

    • 文档1中 "fox" 的 TF-IDF = 0.1111 * 1.5849 ≈ 0.176
    • 文档2中 "fox" 的 TF-IDF = 0.1 * 1.5849 ≈ 0.1585
    • 文档3中 "fox" 的 TF-IDF = 0.0833 * 1.5849 ≈ 0.132

因此,词 "fox" 在文档1、文档2和文档3中的 TF-IDF 值分别是 0.176、 0.1585 和 0.132。

TF-IDF值越高,意味着这个词在对应文档中的重要性越高。


此外

此外,还有很多其他对文本编码方法,如:

[1] RNN、LSTM 深度学习模型通过训练,可以捕捉文本中长期依赖关系,并生成能够反映文本含义的复杂向量表示。

[2] 注意力机制 使模型能够关注输入序列中不同部分,帮助模型集中在最重要的单词或词组上,从而生成更有效的向量表示。

[3] 词嵌入方法如 Word2VecGloVe 将单词映射到连续向量空间,相似的单词会有相似的向量表示。能够有效捕捉单词的语义和句法关系。

这些方法都将在后续博文中单独介绍。


发布:2024/2/2

版本:第一版

如有任何疑问,请联系我,谢谢!

相关推荐
正在走向自律8 分钟前
AI写作(二)NLP:开启自然语言处理的奇妙之旅(2/10)
人工智能·自然语言处理·ai写作
Jurio.20 分钟前
【SPIE出版,EI稳定检索】2024年信号处理与神经网络应用国际学术会议(SPNNA 2024,12月13-15日)
图像处理·人工智能·深度学习·神经网络·机器学习·计算机视觉·信号处理
zy01010123 分钟前
使用 IDEA 创建 Java 项目(二)
java·人工智能·intellij-idea
液态不合群28 分钟前
Spring AI 再更新:如何借助全局参数实现智能数据库操作与个性化待办管理
数据库·人工智能·spring
ApiHug1 小时前
ApiSmart-QWen2.5 coder vs GPT-4o 那个更强? ApiSmart 测评
java·人工智能·ai·llm·通义千问·apihug·apismart
灰哥数据智能1 小时前
DB-GPT系列(五):DB-GPT六大基础应用场景part2
数据库·人工智能·python·sql·gpt·abi
微学AI1 小时前
MathGPT的原理介绍,在中小学数学教学的应用场景,以及代码样例实现
人工智能·python·大模型·mathgpt
小馒头学python1 小时前
机器学习中的分类:决策树、随机森林及其应用
人工智能·python·决策树·随机森林·机器学习·分类
fanxbl9571 小时前
LVQ 神经网络的 MATLAB 函数详解
人工智能·神经网络·matlab
qq_273900231 小时前
torch.stack 张量维度的变化
人工智能·pytorch·深度学习