使用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

方法一詳解:

  1. 從github【1】上下載skip-thoughts的代碼。
  2. 根據【1】中要求安裝依賴庫。(theano不用必須是Theano 0.7,我的1.0.4也可以)
  3. 在下好的文件目錄下添加data文件夾。
  4. 根據作者提供的鏈接,下載所需文件,並全部存放到data目錄下。注意這裏的pkl文件下載地址發生了一些錯誤,只能下載txt文件,可以在作者github的issue中找新的link.
  5. 修改skipthoughts.py文件內的路徑:
  6. 在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測試文件。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章