01、词的独热(one-hot)表示

想要利用计算机对自然语言进行处理,需要解决的第一件事便是自然语言的存储和计算问题。最自然和直观的方式便是采用String类型。在String类型的表示下,自然语言的处理往往是基于规则的方式——例如文本情感分类中(褒义或贬义),可以将“喜欢”、“优秀”等设置为褒义,“厌恶”、“蛮横”设置为贬义词,最简单的分类规则可以采用文本中褒义贬义词的个数对比——出现褒义词更多的句子是褒义,反之贬义。基于规则的做法极其依赖专家的经验总结,耗费大量人力物力,也受到专家经验和规则抽象能力的限制,为了解决这个问题,基于机器学习的向量表示方法应运而生。

One-Hot表示

词的独热表示是一种最简单最直接的词的向量化表示方式。主要步骤包含两步:

  • 对需要用到的文本中所有词进行编码(假设共用N个词),每个词有唯一的下标(0~N)。
  • 根据词下标 i 生成一个长度为N的向量,除了第i位为1外,其他位都为0。

下面举个简单的例子进行说明:

How are you?

Fine, thanks. And you?

I am fine, too.

忽略大小写,我们对不同的词进行编码:

word_dict = {0: 'am', 1: 'and', 2: 'are', 3: 'fine', 4: 'how', 5: 'i', 6: 'thanks', 7: 'too', 8: 'you'}

显然,根据不同词个数(9个),我们需要构建的One-Hot向量长度为9:

编码 One-Hot表示
am 0 [1, 0, 0, 0, 0, 0, 0, 0, 0]
and 1 [0, 1, 0, 0, 0, 0, 0, 0, 0]
are 2 [0, 0, 1, 0, 0, 0, 0, 0, 0]
fine 3 [0, 0, 0, 1, 0, 0, 0, 0, 0]
how 4 [0, 0, 0, 0, 1, 0, 0, 0, 0]
i 5 [0, 0, 0, 0, 0, 1, 0, 0, 0]
thanks 6 [0, 0, 0, 0, 0, 0, 1, 0, 0]
too 7 [0, 0, 0, 0, 0, 0, 0, 1, 0]
you 8 [0, 0, 0, 0, 0, 0, 0, 0, 1]

One-Hot表示 简要分析

优点:

  • 词向量生成方式简单、生成速度快。

缺点:

  • 每个词相互独立,无法计算词的相似度。
  • 容易导致数据稀疏问题,训练数据有限时无法学到足够的信息。

你可能感兴趣的:(自然语言处理,#,01,文本表示,自然语言处理,人工智能,nlp)