LASER-句子嵌入

下载

最好是Linux环境,Windows没有试。

老师直接下载邮件附件的LASER压缩包(里面包括了已经下载好的模型)即可,直接Extract here。解压出来为LASER文件夹,文件夹的位置即为其安装位置,后面环境变量会用到。文件夹内部内容为下图:
image.png

安装环境依赖

  1. python 3.6, numpy
  2. pytorch 1.0(这个老师应该装了吧?)

    1
    2
    cpu版本: conda install pytorch-cpu torchvision-cpu(我用的Anaconda,且环境是虚拟机,所以用的是这个命令)
    gpu版本: pip install torch torchvision
  3. Faiss(需要把镜像源换成 mirrors.ustc.edu.cn/ubuntu/ 才能正常下载)

    1
    pip install faiss
  4. jieba,中文分词器

    1
    pip install jieba

其他必要步骤

添加环境变量

1
2
3
4
5
6
vim .bashrc

在文件末尾添加,双引号内为LASER的安装目录
LASER="/home/desmon/LASER"

source .baserc

测试结果

因为老师只需要得到句子的嵌入和两个句子之间的相似度,这里我只介绍在embed文件夹中如何使用其预训练模型(其他的我也没试过,囧)。

  1. 进入tasks/embed文件夹,将要计算相似度的句子写成文件,如下图input文件(这里举例为中文,也可以多个句子,每个句子要自成一行)。
    image.png
  2. 命令:input-file和output-file即我们对应的输入输出文件,由于输出的格式为二进制,所以之后要处理。而LANGUAGE则为对应的语言,如 中文对应cmn, 英文对应eng,法语对应fr等等。

    1
    2
    3
    bash ./embed.sh INPUT-FILE LANGUAGE OUTPUT-FILE

    例如:bash ./embed.sh input cmn output
  3. 将二进制输出可视化,对应embed文件夹里的main.py,老师需要将里面的output改为自己设置的输出名字。

1
2
3
4
5
6
7
import numpy as np
from sklearn.metrics.pairwise import cosine_similarity

dim = 1024
X = np.fromfile("output",dtype=np.float32,count=-1)
X.resize(X.shape[0]//dim, dim)
print(cosine_similarity(X))

修改正确后直接运行此py文件,即可得到对应的余弦相似度矩阵。