开发者学堂课程【高校精品课-华东师范大学 - Python 数据科学基础与实践:文本相似性实验2】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/1067/detail/15505
文本相似性实验2
内容介绍:
一、简介
二、词的相似性
三、文本相似性
一、简介
现在看一下中文的例子,中文数据下面有一个文件,大家应该在D盘或者E盘上面建一个目录,比如叫iPython,下面再放我们课程的名字,ipython下面可以放自己找的一些例子和项目,然后数据放在相似性数据下面;还有data程序这个文件,老师建议大家安装一个程序叫Notepad++,它就是一个编辑器,比记事本强大,然后用它打开一下,就是打开了原始数据,里面是一篇篇文章,我们把它放在data数据里面,有时候可以用它看一些数据、改代码。
前面做的国王、女王的语料数据就是text8,后面还要做的电子小说案例放在book目录下。
二、词的相似性
接下来看代码,加载数据simdata/data.txt,就是Python位置打开的文件的函数,要注意编码utf-8。读进来以后是jieba.cut,它就去分词,分好词的结果放在data里面,这是一个列表;join函数括号里面放的是一个列表或者原子,它把列表里的每个元素用空格装起来。现在运行一下代码,正在做jieba分词处理,因为这个数据还有内容,所以需点时间去做一下。
做好了可以显示一下data,它的内容比较多,就是把文本分成词了;内容很多,所以老师把它注释掉。
接下来把刚分好词的内容保存到文件里,再用分好词的语料去构建词向量。
如果要做词向量,一定要用分好词的语料;英文语料自然就隔开使用,不需要做处理,而中文要先分好词,用空格隔开再给word2vec.Text8函数去做语料处理,把它处理变成需要的语料模式,再去训练词向量,这个300位的词向量,需要点时间去训练一下。做好的词向量模型可以把它保存,方便以后使用。
还有另外一种保存方式,用C语言的一种支持格式——二进制的格式保存(binary=2),保存好以后可以用load加载。接下来里面显示的是经济管理学部的学科论文,看一下经济的词向量,这是300位的词向量,然后查中文的相似性。
这些就是和经济相似的。
三、文本相似性
接下来的实验内容是文本相似性,文本是很多词构在一起。
这里给大家介绍一个工具叫text2vec,它整个把文字转成向量,是一个文本向量化的工具;它可以做词向量、句子向量,我们关键是要用它的句子向量。
这里面的粒度可以到字词、句子、整篇文章,在text2vec里面全部把模做好了,另外它可以直接调词向量,不需要我们先训练了,因为这个工具用到的腾讯AI实验室,里面有大规模的高质量的数据,还有800万的中文词,所以它已经训练好,直接调用就可以。
如果我们想自己做,可以用gensim包里面的word2vec,它里面也有doc2vec,但平时用的不是很多,如果有兴趣可以去用一下,它可以把整篇文章、一个段落转成词向量。那么text2vec做的是一句话的词向量,它把句子里面的所有词向量做平均值,所有单词词嵌入就是词向量,它是求平均值的。
前面讲的一个中文的词向量,比如300位,那么一句话里面也分词,分完词这句话里含有很多词,但这句话的词向量还是300位,因为它是把每一个词的词向量求平均值,再判断两个句子的词嵌入(词向量)之间的相似度,就是相似度计算。
如果更复杂一点,可以用词移距离(Word Mover`s Distance),就是使两个文本间的词向量,测量其中一个文中的词向量,然后它的语义空间移到另外一个文本单词所需要的最短距离。因为向量是在空间里面,向它移动、靠近的时候需要最短距离。