我搜集了两种方法来实现,一种方法基于theano,另一种方法基于tensorflow。
方法一参考:
【1】https://github.com/ryankiros/skip-thoughts
【2】https://blog.csdn.net/qq_33373858/article/details/83928249
方法二参考:
【3】https://github.com/tensorflow/models/tree/master/research/skip_thoughts#encoding-sentences
方法一详解:
- 从github【1】上下载skip-thoughts的代码。
- 根据【1】中要求安装依赖库。(theano不用必须是Theano 0.7,我的1.0.4也可以)
- 在下好的文件目录下添加data文件夹。
- 根据作者提供的链接,下载所需文件,并全部存放到data目录***意这里的pkl文件下载地址发生了一些错误,只能下载txt文件,可以在作者github的issue中找新的link.
- 修改skipthoughts.py文件内的路径:
- 在data同目录下新建文件测试:(encoder.py),得到4800维向量。
使用上述方法可以提取个别sentence的特征,但是如果需要提取大量文本特征时,上述方法使用的cpu太费时间了,而且theano使用GPU加速有些麻烦,我还没有实现。
方法二详情:
1.首先,在【3】中下载skip-thoughts的代码。
2.然后,安装必需的依赖库:
3.下载的skip-thoughts可以放在tensorflow的模型文件examples下面,也可以直接使用,接下来介绍直接使用的方法。
4.新建自己的工程,将下载的skip-thoughts-master更名为skip-thoughts之后放在工程文件夹下。在skip-thoughts文件夹下新建pre-trained文件夹用于保存预训练模型,将下载的skip-thoughts的预训练模型(需要下单向和双向的两个文件)解压缩之后放在该目录下。
5.写自己的测试文件:
这里需要注意的是,checkpoint的路径文件只写到500008.
6.在encoder_manager.py的前面添加使用的GPU:
7.如果使用的是单向的,则只需要在测试文件中加入单向预训练模型:
如果使用的是双向的,则需要加入两个预训练模型,也需要调用两次load_model:
8.run测试文件。