在用人工智能尤其是深度学习技术来进行自然语言处理时,关键的第一步是要将语言文本进行数字化,然后才能送入神经网络进行下一步的计算,在形成了文档模型和拆分的单词模型后就可以进行很多进一步的处理。
目前比较可行也是最常用的将文本数字化的技术是向量化技术,即将文本转化为由一串数字组成的向量。这里的向量与数学中的向量稍有区别,在计算机中向量可以看作是一个一维数组。
语言中的单词、句子和文章都可以进行向量化,向量化的结果分别称为“单词向量”、“句子向量”和“文章(或文档)向量”,语言元素向量化之后的结果应该存在一定的联系(或关系),这种联系往往是以“向量距离”来表现的,距离越近说明关系越紧密,这时候也称之为“关系强度越大”。有时候也往往从另一个角度即“相似度”来考量两个向量的关系,一般来说,相似度越高说明两个向量距离越近。从语言的角度上来说,越相似的两个语言元素向量化之后其向量距离应该越近,相似度也越高;经常一起出现的两个语言元素之间的向量距离应该比不常一起出现的要更近,相似度要更高。
向量距离有各种计算方式,像我们常见到的计算向量之间余弦相似度的算法,就是最常使用的计算向量距离的方法之一。
人们对单词、文档的向量化已经进行了很多研究,出现了用于单词向量化(word2vec)、文档向量化(doc2vec)的很多方法。目前常用的方法是:首先对一批文章(称作训练素材)进行清理后对系统进行训练,训练完毕后会生成一个模型,利用该模型就可以生成单词向量或文章向量,并可用于进一步的高级应用。这种方法显然对训练素材的要求比较高,一般要求内容清楚、格式规范,并且与将要应用的领域在内容和风格上都比较贴近。
下面将以Go语言为示例介绍训练向量模型以及生成文章向量的方法,其中使用到了github.
转载请注明:http://www.0431gb208.com/sjslczl/1274.html