导语
本文是sCool后续的一篇工作,发表在KDD 2016上,当时更多的使用的是特征工程,即手动寻找各类特征提供给机器学习模型。
- 会议:KDD 2016
- 链接:www.kdd.org/kdd2016/pap…
1 简介
在这篇文章中定义这个归一化任务就是一种Entity linking的工作。只不过这个是属于特定的领域的一个entity linking。论文里对此给出了定义:假设所有的实体集合为E,公司的原始名称的集合记做Q,其中每一个公司的名称q都可以记做(n_i, l_i)。
n_i就是机构的名称,l_i是地理位置信息,如果一个机构的原始名称中没有地理位置信息,那么这个字段也可以为空。然后,机构归一化的任务就可以被定义为要找到这样一个映射函数,将一个原始机构名映射到一个实体,这里实体可以为空,即不在我们的实体集合中。
2 方法
整个系统的搭建和运行共分为四步。分别是索引步骤、检索步骤、排序步骤和验证步骤。
2.1 索引
在索引阶段,系统同样搭建一个Lucene搜索引擎,其中每个document是经过calibration处理的。所谓的calibration处理就是对一个字符串做预处理,包括字母小写化,去除特殊符号等。
在一个新的测试样例来到时,可以在这个搜索引擎上进行搜索。这里在系统的搜索步骤中,CompanyDepot系统使用了Lucene中聚合搜索功能。分别在不同的字段使用不同的搜索方式。最终搜索引擎返回了N0个结果。
2.2 检索
在N0个结果的基础上,我们用一些规则分别提取出N1到N4四个子集构成N个最终结果。这些结果比如N1代表Top 10的返回记录、N2代表使用编辑距离计算返回结果与输入之后的最相似的N2个结果,等等。
2.3 重排序
在完成检索步骤之后,第三步是进行重排序。这里使用了排序学习的方法。其中使用了45个自定义的特征。这些特征分为以下三大类。
- Query-feature:表示输入的待归一化的原始名称的特征,比如输入名称的字符数、单词数等
- Query-entity feature:表示输入的待归一化的原始名称和返回的搜索结果里的实体之间的一些关联特征,比如Lucene对每一条返回结果的打分,原始名称和返回的搜索结果中是否包含一样的地理位置信息。
- Entity feature:表示对于这些实体的先验知识,比如一个实体在知识库中拥有的mapping数量等。
使用排序学习对原始的搜索结果进行重排序。
2.4 验证
最后一步就是验证步骤,用于确定排序学习得到的第一个结果是否可信,如果这一步认为可信,就直接输出结果。否则,输出为空。
3 实验
在论文中,作者也用了一个不用机器学习算法的启发式算法作为baseline,它和机器学习的算法一样,使用同样的index和retrieval步骤,只不过在rank阶段,这个启发式算法通过一些基础的规则来进行判断输出。同时,该方法也用来为机器学习方法生成训练数据。
除了准确率和覆盖率外,这里的衡量指标又新加了一个SuccessRate和F1-score来综合评判。实验结果如下:
作者同时进行了消融实验,对比了一下各类特征对结果的影响:可以看到Entity的feature会相对query feature更重要一些。
4 总结
本文解决机构规范化任务,提出了一个名为CompanyDepot的系统,该系统包含基于机器学习的方法CompanyDepot-ML和启发式方法CompanyDepot-H,分三步完成任务:实体检索、重新排序和验证。实验结果表明了该系统的有效性、鲁棒性和泛化能力。