这意味着:
1、解析文本的时候,每一个令牌(字词的NLP术语)更多的是影响文本的整体分析。
2、生成文本的时候,每一个被选出来的令牌才能影响结果。
换句话说,在文本当中,字符和令牌才是占据主要成分的元素,和像素不同。
好了,那我们是如何处理文本的呢?
在一个严格的解析系统中,我们需要用数值格式来表示文本,提示为向量形式。现在我们还是要继续理解很简单的向量表示,而未来则可以处理更为复杂的表达了。
我们来以几个词组为例:
1. Turn on the lights(开灯)
2. Power on the lights(打开灯的电源)
3. What time is it?(现在几点?)
4. What is the current time?(当前时间是几点?)
我们需要做的是创建一个叫词典的东西。换句话说,我们想要将现有的词组用特有的令牌技术来创建一个词汇表。然后,我们需要对信息做一些隐式预处理,去掉标点符号等。最后,我们给每一个唯一码赋予其各自的索引,从而生成自己的词汇向量:
0 turn
1 on
2 the
3 lights
4 power
5 what
6 time
7 is
8 it
9 current
由于每一个字代表一个索引,因此我们可以使用反向散列数据结构来得到每个单词的索引,然后无论是否每一个字都是给定文本,我们都可以将这些字表示为一系列的布尔值(布尔值:是“真”True或“假”False中的一个)。比如,上述例句就可以表示为:
1. { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0 }
2. { 0, 1, 1, 1, 1, 0, 0, 0, 0, 0 }
3. { 0, 0, 0, 0, 0, 1, 1, 1, 1, 0 }
4. { 0, 0, 1, 0, 0, 1, 1, 1, 0, 1}
有了这些向量,我们可以使用向量点积得到一个粗略的相似度计算。所谓点积,就是接受在实数R上的两个向量并返回一个实数值标量的二元运算。
小编推荐阅读