Ruotian Ma, et.al, “Simplify the Usage of Lexicon in Chinese NER”, ACL 2020
1 简介
这篇文章想要简化 lattice-lstm,抛弃复杂的结构,创造了极其简单的,只需要修改输入 embedding 的,结合词级别信息的方法。如此简单的方法却能 SOTA,这是我不敢相信的。这个方法他的普适性很强,下载好 gigaword 和 ctd 那两个文件,以后所有的 seq 模型输入,都可以这样改一下,引入词级别的信息。只要是和实体相关的任务,应该都会有帮助吧?
2 方法
作者设计了两种提取一个字的词级别信息的方式:
ExSoftword Feature

拿图中的中山西路举例,上下两行圆角框框是两种匹配(类似分词)的结果。以下面的一个结果为例,山这个字,在“中山”,“中山西”,“山西路”这三个词中分别作为开始(B)、中间(M)、结尾(E)出现,那么它的特征向量就是 $\{1,1,1,0,0\}$,这里五个位置就代表 BMESO 的 POS tagging。同理,“西”的就是 $\{0,0,1,0,0\}$。
这种特征表示的方法并不好:比如“西”作为 M 出现在“中山西路”和“山西路”两次,这就没有在向量中体现出来。
SoftLexicon

这种方法对于每个字都定义了四个集合,分别代表这个字作为 B/M/E/S 在哪些词中出现。如图所示,“山”在“山西”中作为开头,因此“山”的 B 集合就是 {“山西”}。如果这个字没有作为某种 POS 在词中出现,就定义这个字的这个 POS 的集合为 {“None”}。
通过给集合里每个词的词向量加权求和,得到集合的向量,拼接四个向量,就得到了这个字的词级别特征表示。这里加权求和的“权”是词语在语料中的词频。
得到字的词级别特征向量之后,直接拼接到字向量之后,后面可以输入任意 NER 的模型使用。
3 实验结果
- 速度是 Lattice-LSTM 的两倍多(batch size = 1……)
- 所有数据集都比 Lattice-LSTM 强
4 结论
这个方法简单的有点不可置信,甚至给我一种穿越回 2016 年的感觉。我用他的代码跑了 cluener,f1 只有 73,比 lstm+crf 的 70 还是好了不少
你好,他的论文代码您在哪里找到的啊,我怎么没有找到,您能给一下链接吗
https://github.com/v-mipeng/LexiconAugmentedNER