首页 > 如何高效的提取一个公司全称中的关键名(如腾讯)?

如何高效的提取一个公司全称中的关键名(如腾讯)?

现在一个需求是当用户输入他的公司名称时,判断这个公司的关键名称(如深圳市腾讯计算机系统有限公司,北京市百度信息技术有限公司的核心关键名就是腾讯,百度);然后到他们给的表里面匹配是否有包含这个关键名称的公司(他们的表都是官方全称,但是怕用户输入的不完全一致)

于是我个人的想法是计算两个词的相似度来解决,但是对于这么多的数据感觉如果拆词一个一个计算会不会很低效率,或者这种需求还能用别的方法解决吗?


感觉过滤掉 “北京市”、“北京”、“上海市”、“上海”、“信息”、“科技”、“有限公司”、“股份”……等这些关键词之后基本就只剩下公司名称关键字了


如果要是追求速度和准确的的话需要用倒排表。
不是很精确可以用模糊查找或者你说的中文分词去查也行,分词效率还可以,有成熟的类库。


对比‘相似度’是一种办法,所谓相似度实际上可以理解为'关联度',这个可以使用tf-idf等算法实现计算。但这种方法不能解决词本身不关联的情况,如 淘宝-阿里巴巴,这二者用tf-idf是没有任何关联的。

更好一点的办法是用关联搜索,如Lucene系列的搜索引擎就有对应的more like this search。使用关联搜索的好处是如 百度,腾讯等例子可以使用引擎本身的支持完成关联匹配,而剩下的如上文说的淘宝-阿里巴巴的case就得自己去建立同义词库了。

使用上面说的关联搜索方法实际上是基于倒排的召回,在召回上很可能面临召回多个结果的问题。如'百度'可能召回 百度技术,也会召回 百度烤肉 这样的case。为了得到更精准的结果,就得在前端实现控制,让用户选择一个,类似于搜索的suggest一样。


命名实体识别?


这叫模糊匹配


之前做这种需求都是 根据用户的输入Ajax到后端返回备选项,然后点击备选项,才将相关信息插入到 form 中的相关字段的Value中

【热门文章】
【热门文章】