【论文学习】《Lexical Sememe Prediction
2021-03-11 本文已影响0人
三方斜阳
《基于协同过滤和矩阵分解的义原预测》
数据预处理:

hownet.txt 是义原文件: 词:义原1,义原2 ... 义原n
提出三种预测义原的方法:
1. SPWE:Sememe Prediction via Word Embeddings
- 基于词嵌入的义原预测
- 基本思想:相似的词具有相似的义原,所以采用预训练的词向量计算词语的相似度,与被预测的词最相似的那几个词的义原,作为候选。根据评分函数留下推荐义原:
评分函数
是余弦相似度,
是代表义原
是否是词
的义原标注情况,评分函数
分值越高,词
越有可能被推荐义原.
-
复现结果(部分):
SPWE
2. SPSE : Sememe Prediction with Sememe Embeddings
- 基于义原嵌入的 义原预测
- 基本思想:把词和义原同时投影到相同的语义空间,根据知网中的词和义原的共现矩阵学习义原嵌入.
- 实际操作:
-
义原-义原矩阵:根据 hownet.txt 文件统计所有的词和对应的义原,根据义原与义原之间的共现频率计算点互信息,产生义原-义原矩阵,由义原之间的点互信息来定义
点互信息
python Sememe_PMI_Matrix_Generator.py hownet.txt PMI.txt
PMI.txt : 义原-义原矩阵:

- 词-义原矩阵:通过 hownet.txt 文件构造 词-义原矩阵,[word_size,sememe_size],矩阵元素全为0/1,当词 i 具有 义原 j 时,矩阵对应位置标1,否则置0
-
损失函数:
loss function
损失函数的两个部分分别是分解矩阵 M(词-义原矩阵)和 P(义原-义原矩阵),分解义原-义原矩阵针对每个义原,会得到两个独立的义原嵌入,因为义原嵌入通过分解这两个矩阵得到,所以可以把词和义原同时编码到同一个语义空间; -
训练细节:
其中因为词-义原矩阵非常稀疏,一个词通常用2-5个义原来表示,于是矩阵分解的过程中,对于 词-义原 矩阵中的0元素,用0.5% 的概率来分解,对于非0元素,总是对其进行分解,这样可以更加关注词-义原对 -
预测义原:
预测的时候,一个义原嵌入由训练分解得到的两个独立义原嵌入相加,然后直接计算目标词和每个义原嵌入的余弦相似度,得到推荐义原.
-
复现结果(部分):
SPSE
3. SPASE: Sememe Prediction with Aggregated Sememe Embeddings
- 基于聚合义原嵌入的义原预测
- 基于每个词嵌入是它的义原嵌入之和,将固定好的词嵌入矩阵
分解为 词-义原矩阵
和 义原-义原矩阵
,矩阵定义参见SPSE模型,可以简单表示为:
是词
的集合,
代表义原
对词
的标记情况,取值为 0/1.
- 训练的时候,初始化义原嵌入矩阵,误差值等于:固定的词嵌入与该词对应的所有义原嵌入之和的差值,然后反向传播更新参数,最后得到训练好的义原嵌入. 预测时候,直接计算目标词和所有义原嵌入的余弦相似度,排序得到推荐义原.
- SPASE 模型的优势在于利用了知网中义原的定义:义原是词的语义组成成分,在模型中,每个义原被认定为是一小部分的语义单元,所有的词能用多个语义单元的组合来表示,也就是说,义原组成了一个有意义的语义单元;但是,因为词嵌入固定且数量比义原多得多,难以训练,义原嵌入有限的参数和过度简化的“直接相加”假设可能会限制模型效果.