【知识图谱】零基础理论——动手学关系抽取:TextCNN&LSTM
代码文件释义
BasicModule.py:基类
BruceCNN.py:继承基类
embedding.py:单独抽了个类
config:配置文件
dataset:数据集处理文件
process:预处理文件
trainer:训练文件
utils:工具类
vocab:词汇的类
relation:十个关系
test.csv:测试集
train.csv:训练集
predict:预测脚本
run.py:整个代码的运行脚本
知识图谱
实体、属性与关系
知识图谱与人工智能
关系抽取
CNN
后面必须加flatten,把二维图像变成一维信息
TextCNN(文本序列的卷积)
【原创】文本分类算法TextCNN原理详解(一)
[NLP] TextCNN模型原理和实现
卷积核大小可以不一样,但必须一次扫每行
RNN
推荐一篇特别精彩的文章:
循环神经网络 – Recurrent Neural Network | RNN
为什么需要RNN
无论取“最好、的、人工智能、科普、网站、是”都不能得到预测结果,得把前面所有的词连在一起得到
RNN存在短期记忆
LSTM——只保留重要信息
长短期记忆网络 – Long short-term memory | LSTM
详解 LSTM
控制LSTM细胞状态的三个门
第一个开关,负责控制继续保存长期状态c;
第二个开关,负责控制把即时状态输入到长期状态c;
第三个开关,负责控制是否把长期状态c作为当前的LSTM的输出。
如何在算法中实现这三个开关?
方法:用 门(gate)
定义:gate 实际上就是一层全连接层,输入是一个向量,输出是一个 0到1 之间的实数向量。
公式为:
gate 如何进行控制?
方法:用门的输出向量按元素乘以我们需要控制的那个向量
原理:门的输出是 0到1 之间的实数向量,
当门输出为 0 时,任何向量与之相乘都会得到 0 向量,这就相当于什么都不能通过;
输出为 1 时,任何向量与之相乘都不会有任何改变,这就相当于什么都可以通过。
f是sigmoid函数