浅谈文本词向量转换的机制embedding

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gshengod/article/details/79530955

首先感谢大家对上一篇文章的关注吧,建议看这篇文章前先看下上一篇我推送的《20行代码实现电影评论情感分析》,上篇文章其实留了个坑,不过不一定坑到大家,因为可能90%的同学可能不会去认真读一遍代码,或者去跑一下程序。上文说道关于文本词向量转换的embedding相关的内容,其实是没有详细说明的,那这一篇我尝试着去解释一些,说的不对的还望各位大神指正,我也是自学的,没人一起讨论,可能有理解不到位的地方。


其实机器学习算法,无非是矩阵的加减乘除,对于文本string型的数据,必然需要把这类数据转成数值型的向量,才能方便计算。文本转词向量就是起到这样的作用,当然,方法有很多,这里我们提到的机制有点类似于算法word2vector,它会把文本转成带有语意的向量。


什么是带有语意的向量?就拿上一篇推送里出现的tflearn.embedding它起到的作用说起。它其实是通过大量的语句分析挖掘出词语之间的相似度,举个简单的例子,假设有大量的语句中都出现“美女喜欢帅哥”、“美女喜欢好看的男人”,那么算法会挖掘出“帅哥”和“好看的男人”可能是相似的语意,于是可以通过向量表示,以下向量纯属yy,为了举例:

美女=[3,5,7]

帅哥=[5,3,9]

好看的男人=[5.1,2.9,9]


“帅哥”和“好看的男人”会被用距离更近的向量表示起来。另外,向量间的距离也可能会建立联系,比方说“北京”是“中国”的首都,“巴黎”是“法国”的首都,那么向量:|中国|-|北京|=|法国|-|巴黎|


通过embedding函数把所有词向量距离计算出来后,其实每句话就可以通过词向量组装成矩阵,简单的方式是第一行是第一个词向量,第二行是第二个。那么两句话的语意相似度就可以通过简单的矩阵减法计算啦,感谢收看。


上一篇《20行代码实现电影评论情感分析》代码地址,我只放了一点点测试数据,完整的数据大家自己去IMDB下吧:https://github.com/jimenbian/sentiment-analysis

猜你喜欢

转载自blog.csdn.net/gshengod/article/details/79530955