关键词匹配优化(第0篇)—— 问题和思路
程序员文章站
2022-07-09 20:09:10
工作中遇到一个需求,规范人为输入的特定词汇,大概有100多个词汇。类似下面的情况(关键词比地名复杂一些) 之前是用if else处理的,伪代码如下: 因为我的工作是写Excel插件的,这一百多个 else if 太影响运行效率了,而且维护起来也很不方便,增加词汇也困难。 这两天找了一些相关的知识,打 ......
工作中遇到一个需求,规范人为输入的特定词汇,大概有100多个词汇。类似下面的情况(关键词比地名复杂一些)
之前是用if else处理的,伪代码如下:
string tempstr; if(tempstr.contains("海淀") && tempstr.contains("北京") ) { return "北京市海淀区"; } else if(tempstr.contains("山东") && tempstr.contains("威海") ) { return "山东省威海市"; } ……//等等一共两百多个else,内容也比较复杂,甚至还有正则匹配之类的 else { return "匹配失败"; }
因为我的工作是写excel插件的,这一百多个 else if 太影响运行效率了,而且维护起来也很不方便,增加词汇也困难。
这两天找了一些相关的知识,打算对这部分进行优化,用nlp中的tf-idf方法进行关键词相似度的计算。
整个流程大致是:在数据库中建立关键词映射表,在插件启动时读取为字典,在使用时如果查询不到,就计算相似度并上传到映射表。