现在一个需求是当用户输入他的公司名称时,判断这个公司的关键名称(如深圳市腾讯计算机系统有限公司,北京市百度信息技术有限公司的核心关键名就是腾讯,百度);然后到他们给的表里面匹配是否有包含这个关键名称的公司(他们的表都是官方全称,但是怕用户输入的不完全一致)
于是我个人的想法是计算两个词的相似度来解决,但是对于这么多的数据感觉如果拆词一个一个计算会不会很低效率,或者这种需求还能用别的方法解决吗?
1
jugelizi 2016-01-18 20:59:23 +08:00
先分词
|
2
billlee 2016-01-18 21:28:26 +08:00
如果预先有关键名称的列表,那用 multiple string search 算法就可以了吧?
|
3
chlx 2016-01-18 21:30:36 +08:00
keyword: entity recognition
|
4
jsq2627 2016-01-18 22:00:14 +08:00 2
|
5
zenghsh3 2016-01-18 22:32:52 +08:00
可以尝试类似 TF-IDF 的思想,找出这个公司名和其他公司名相比的独特之处
|
7
v2wtf 2016-01-18 23:13:47 +08:00
先分词,然后把“科技、信息、公司”等等常见词组过滤掉,剩下的基本就是了
|
8
rock_cloud 2016-01-18 23:19:12 +08:00
借助搜索引擎?查股票代码或者直接搜索公司全称的简称?或者搜索公司名称+主页,然后看域名?
|
9
noli 2016-01-18 23:48:13 +08:00
https://zh.wikipedia.org/wiki/TF-IDF
以下摘自 维基百科: TF-IDF 的主要思想是:如果某个词或短语在一篇文章中出现的频率 TF 高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。 TF-IDF 实际上是: TF * IDF , TF 词频( Term Frequency ), IDF 逆向文件频率( Inverse Document Frequency )。 TF 表示词条在文档 d 中出现的频率。 IDF 的主要思想是:如果包含词条 t 的文档越少,也就是 n 越小, IDF 越大,则说明词条 t 具有很好的类别区分能力。 -- “腾讯”和“百度”肯定比起什么“公司”,“有限” 这类词语出现得少……然后,就是这样了。 |
10
EXDestroyer OP @jsq2627 原来有这种服务,正是我想要的!
|
11
ivvei 2016-01-19 15:05:14 +08:00
求测试类似这样的:
国际商业机器股份有限公司 巴伐利亚汽车制造厂 |
12
EXDestroyer OP |
13
ivvei 2016-01-20 13:14:06 +08:00
@EXDestroyer 嗯然后关键名是……?
|
14
EXDestroyer OP |