大量行业数据、渠道流向数据在清洗的过程中,面临着诸多极大耗费人力的问题。在数据来源多样且格式不统一的情况下,人工匹配曾让很多信息员闻之色变。即使在人工智能和机器学习的时代下,由于各种原因导致的匹配误差,带来了名称缺失、重复等问题依然在影响数据展现质量。
本期极客栏目,未名企鹅的高级架构师Joseph对于医药数据管理中的短文本高效匹配技术,给出了很多实用的建议。
NLP短文本匹配(中文组织机构名称)
01
需求分析
业务需要对大量医疗机构相关的短文本进行匹配,如“济南市明水眼科医院股份有限公司” 与 “济南市明水眼科医院” 这类短语言或名词进行匹配。
已知匹配数据量特别巨大,因此对匹配性能有较高的要求。
分析数据源后,得知其中不仅存在文本格式上的匹配,还有语义匹配的需求。
02
匹配方案
汇总需求我们需要实现以下几个功能目标
- 文本语言形式匹配
- 文本语义匹配
- 可以处理大量数据
因为文本形式上的匹配,有很多方案可以采用,其中Elasticsearch 搭载中文分词器,配合TF/IDF的算法 即可以实现有效的文本语言形式上的匹配。
其中需要关注的问题有分词器的分词粒度问题,我们叫做“分词深度”,机构名称匹配,因为输入串已经是一个命名实体。例如 “济南市明水眼科医院股份有限公司” , 如果使用普通的分词模型,越优秀越能识别出 “济南市明水眼科医院股份有限公司” 本身就是一个实体, 无需再分,但这和需求相背。分词方案可能因分词粒度太粗而无法理解其中隐含的关系,导致识别失败。因此我们需要更细粒度的定制化分词。值得庆幸的是ES上的IK词库有这种能力,进行最大化分词。机器学习的LAC模型也可以做分词和实体识别,但也会遇到分词深度的问题,可以通过后期训练到达目的,但是可能需要大量数据集。