使用skip-thoughts提取句子特征
我搜集了两种方法来实现,一种方法基于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测试文件。
【使用skip-thoughts提取句子特征】
推荐阅读
- 由浅入深理解AOP
- 【译】20个更有效地使用谷歌搜索的技巧
- mybatisplus如何在xml的连表查询中使用queryWrapper
- MybatisPlus|MybatisPlus LambdaQueryWrapper使用int默认值的坑及解决
- MybatisPlus使用queryWrapper如何实现复杂查询
- iOS中的Block
- Linux下面如何查看tomcat已经使用多少线程
- 使用composer自动加载类文件
- android|android studio中ndk的使用
- 使用协程爬取网页,计算网页数据大小