ESIM
一、项目查询
- 直接通过论文名称查找相关论文对应的源码
- 对应论文:Enhanced LSTM for Natural Language Inference
- GitHub源码:ymx10086/ESIM: Implementation of the ESIM model for natural language inference with PyTorch (github.com)
二、项目学习
-
python文件架构
- setup.py:
setuptools是 distutils 增强版,不包括在标准库中。其扩展了很多功能,能够帮助开发者更好的创建和分发 Python 包。大部分 Python 用户都会使用更先进的 setuptools 模块。 - setup.py,是模块分发与安装的指导文件。
-
from setuptools import setup, find_packages setup( name="mytest", version="1.0", author="wangbm", author_email="wongbingming@163.com", description="Learn to Pack Python Module", url="http://iswbm.com/", packages=find_packages(), # 安装过程中,需要安装的静态文件,如配置文件、service文件、图片等 data_files=[ ('', ['conf/*.conf']), ('/usr/lib/systemd/system/', ['bin/*.service']), ], # 希望被打包的文件 package_data={ '':['*.txt'], 'bandwidth_reporter':['*.txt'] }, # 不打包某些文件 exclude_package_data={ 'bandwidth_reporter':['*.txt'] } )
- setup.py:
- 工具包:
三、算法结构
数据集:斯坦福大学自然语言推理(SNLI)数据集

ESIM框架主要包括三个模块,包括input encoding,local inference modeling 和 inference composition。
- input encoding:主要通过word embeding+BiLSTM。
- 通过word embeding进行初始编码
- 通过BiLSTM在当前语境下进行重新编码,提取特征
-

- local inference modeling:
- 第一步需要将两句话进行对齐操作,此处使用soft_align_attention。首先将计算两个句子词向量之间的相似度,得到二维相似矩阵。
- 通过得到的相似度矩阵,互相生成彼此加权后的句子,维度保持不变(从b中选取于ai相关的部分来表示ai,从a中选取与bi相关的部分来表示bi)
-
Enhancement of local inference information:现在a的每个单词有两个vector表示,b亦然,再对两个vector分别做element-wise的减法与乘法,并把它们 concat 到一起,得到维度为原来四倍长的vector。(体现一种差异性,更利用后面的学习)
- inference composition:
- 在卷积神经网络中通常会在相邻的卷积层之间加入一个池化层,池化层可以有效的缩小参数矩阵的尺寸,从而减少最后连接层的中的参数数量。所以加入池化层可以加快计算速度和防止过拟合的作用。
- 用 BiLSTM 提取上下文信息,同时使用 MaxPooling 和 AvgPooling 进行池化操作
- 最后用一个全连接层输出标签
效果好的原因:考虑了两个句子之间相似度的计算时的交互训练,使得训练过程中注意提取两个句子之间的交互特征

浙公网安备 33010602011771号