我是机器学习的新手,我在python中完成了一些项目。我正在寻找有关如何解决以下问题的建议,我认为这可以实现自动化。
组织中的数据质量团队中的用户每天都要获取已手动输入的公司名称列表(带地址),然后他必须搜索公司数据库以查找匹配结果,他的判断 - 即没有硬性规定。
输入的一个例子是:
公司名称,地址第1行,国家
其中,用户获取公司名称并将其输入搜索工具。在他被提供结果列表并且他选择最佳比赛但可能选择不选择任何比赛。搜索工具内置并与外部API通信,我可以访问源代码,因此我可以修改搜索工具来捕获输入,结果列表,我可以添加一个复选框以查看使用了哪个结果和一个复选框表示没有选择。因此,这将成为我标记的训练数据。
从判断结果中使用的列大致相同:
公司名称,地址第1行,国家
鉴于像Stack Overflow这样的公司名称,结果可能会返回Stack Overflow Ltd.,Stacking Overflowing Shelves Ltd.等。输入数据相当不错,因此结果通常会产生大约10个匹配,对于人类来说,它&# 39;相当明显的选择哪个。
我的想法是,如果有足够的训练数据,我可以直接使用搜索词调用API,然后从结果列表中选择适当的结果。
这可以通过ML实现吗?我一直在努力解决每次数据不同的事实。关于实现这一目标的最佳方法的想法是受欢迎的,特别是如何为模型构建数据以及使用何种分类器等。
答案 0 :(得分:5)
要将其框架化为ML问题,您可以学习相似度函数。
不是将“Acme Corp”分类为匹配目标类“Acme”(分类器),而是学习一个学习告诉“Acme Corp”类似于“Acme”但与“ABC Corp”不同的函数。 ”。
这通常被称为“相似性学习”,在您的情况下,可能更具体地“排名相似性学习”,因为您的目标不是学习将输出相似度值的函数,而是对潜在候选者进行排名。
但在使用完整ML算法之前,我首先要使用字符串距离度量,例如Levenshtein距离度量(非常常见且易于查找)。在积极和消极的例子中转换您的数据(一个积极的例子:Acme与Acme Corp匹配)。最简单的学习功能是找到最大化分数的编辑距离阈值。您还可以添加以下参数:“删除公司”,“删除有限公司”等,并找到最佳组合。
答案 1 :(得分:0)
我很高兴看到有些人正在研究类似的解决方案。
为此,我正在使用Fuzzywuzzy,但是我想创建一个推荐系统,根据现有信息为公司提供建议,但是由于您只有2个数据点,我建议以下内容:
准备2个独立的模糊查找脚本。一个代表公司名称,另一个代表地址。 选择最接近的结果,然后尝试查找各自对象的距离。 示例-地址1与地址2的匹配率为92%,请检查地址1的公司名称与地址2的公司名称的距离是多少。如果比赛足够好,那么您就找到了比赛。
我尝试实施此解决方案时犯的错误是仅编写了一个脚本,该脚本严重依赖于公司名称,后来又匹配了地址,这降低了我找到匹配项的机会。
谢谢