SoftLexicon
最后更新于
最后更新于
paper : Simplify the Usage of Lexicon in Chinese NER
source: ACL 2020
code: SoftLexicon
提出了一个简单而有效的方法将词汇信息纳入字符表示。这种方法避免了设计复杂的序列建模结构,并且对于任何NER模型,它只需要细微地调整字符表示层来引入词典信息。
所提出的方法可转移到不同的序列标记架构,并可以很容易地与预训练模型结合,如BERT。
模型结构如下:
纯粹基于字符的NER模型的问题是它不能利用单词信息。为了解决这个问题,本文提出了SoftLexicon方法
它不只保留每个字符在进行分词后的一个分词结果,而是使用词典获得的所有可能的分词结果。
B:当前字为词的词首;
M:当前字在词的中间;
E:当前字为词的词尾;
S:当前自独立可以成词的词:
PS:这种挂词方式就很好的解决了WC-LSTM的挂词中的信息确实缺陷,对于"人和药店",会被挂到每个字的不同set中
在获得每个字符的{B,M,E,S}词集之后,每个词集被压缩成一个固定维度的向量。同时本文探索了实现这种压缩的两种实现方法。
直观的方式是进行平均
然而这种方法表现并不佳,同时为了保持计算效率,本文没有选择像注意力这样的动态加权算法。
相反,本文建议使用每个单词的频率来表示它的权重。(由于一个单词的出现频率是一个可以离线获取的静态值,这样可以大大加快每个单词权重的计算)
全局平均
其中,
最后一步,是将四个集合的embedding组合成一个固定维的特征,并将其添加到每个字符表示中:
优点
法没有造成信息损失,同时又可以引入word embedding;
模型无关,可以适配于其他序列标注框架。
为了保留分词信息,匹配到的词中的每个字符都被分类到 {B,M,E,S}中。对于每个字符,这四个集合被认为为:
其中$S$提供关于词汇的集合,贡献了单词的embedding
让表示词典中词在统计数据中出现的频率,词的加权表示如下:
同时如果被另一个与词典匹配的子序列覆盖,则w的频率不会增加。(这防止了较短单词的频率总是小于覆盖它的较长单词的频率的问题)
用表示中文句子,其中表示第个字。
为上述表示的加权函数。