【面筋】NER技巧
文章目录
- 【面筋】NER技巧
-
- trick 1:领域词典匹配
- trick 2:规则抽取
- trick 3:词向量选取:词向量 or 字向量?
- trick 4:特征提取器 如何选择?
- trick 5:专有名称 怎么 处理?
- trick 6:标注数据 不足怎么处理?
- trick 7:嵌套命名实体识别怎么处理
- trick 8:为什么说 「词汇增强」 方法对于中文 NER 任务有效?
- trick 9:NER实体span过长怎么办?
- trick 10: NER 标注数据噪声问题?
- trick 11: 给定两个命名实体识别任务,一个任务数据量足够,另外一个数据量很少,可以怎么做?
- trick 12: NER 标注数据不均衡问题?
- 参考资料
trick 1:领域词典匹配
- 场景:对于某些 常见短语,可以 采用 词典匹配 的方式。
- 方法:构建一个 常见短语 的 词典,比如 药物、疾病等,然后采用 flashtext 进行 关键词匹配;
- 优点:
- 能够准确的挖掘出 常见短语;
- 效率更快
- 缺点:
- 对于有些 嵌套实体,如果 长实体未包含在词典中,那么将匹配到 短实体;
- 词典收集工作量大
trick 2:规则抽取
- 场景:对于一些 规定句式,可以 采用 规则匹配 的方式。
- 方法:构建一些 规则模板库,比如
“<PER> 去|到|抵达|经过 <LOC>”、“<drug> 能够|可以 治疗 <disease>”
等; - 优点:
- 对于某些固定句式,这种方法匹配度高;
- 效率快;
- 缺点:
- 会出现干扰词,eg:
“<PER> 去|到|抵达|经过|访 <LOC>”
抽取"特朗普和第一夫人访华"
-> (特朗普和第一夫人,<PER>
)、(华,<LOC>
); - 需要手工制定规则;
- 会出现干扰词,eg:
trick 3:词向量选取:词向量 or 字向量?
- 词向量
- 方式:首先对句子进行分词,然后训练 所有词语 的 向量表示,最后利用 这些 词向量 训练模型;
- 优点:
- 能够 帮助 模型 学习 句子中 词汇关系;
- 缺点:
- OOV 问题(out of vocabulary 超出词表之外的词);
- 维护成本高;
- 如果分词效果不好,那么词向量的质量 将受影响;
- 字向量
- 方式:首先对句子按字切分,然后训练 所有字的 向量表示,最后利用 这些 字向量 训练模型;
- 优点:
- 解决了 词向量的 OOV 问题;
- 减少人工维护成本;
- 不用分词;
- 在训练数据质量较差的时候(比如口语化较多,错别字较多,简称缩写较多等),采用字向量的效果好于词向量;
- 缺点:
- 学不出 词语间 的 关系;
- 解决方法:
- 利用 具有 双向 的 特征提取器 能够 缓解 该功能,eg: bilstm、bert 等;
trick 4:特征提取器 如何选择?
- 短句子:
- 模型:LSTM、BiLSTM、CNN、IDCNN
- 优点:
- 在句子较短的情况下, 模型能够 捕获 句子中词语间的依赖关系
- 长句子:
- 模型:Bert:应该说纯attention网络,用来解决长距离依赖问题;BERT的预训练模型有长度限制,需要注意;
- 优点:
- 在句子较长的情况下, 由于 LSTM、BiLSTM、CNN、IDCNN 会出现 长距离依赖问题,所以性能下降;
trick 5:专有名称 怎么 处理?
如果专有名称,不是要识别的实体,可以把它替换成特殊的token提高学习效率;例如,如果要抽取的实体是数字,可以把所有数字替换成0;
- 场景:#1机组1A锅炉磨煤机故障,#2机组2C炉磨煤机故障。 实体是磨煤机。
- 方法:在训练ner模型时,可以将一类专业名词改写成一个符号表示