先讲一个故事,自从《相似词查询:玩转腾讯 AI Lab 中文词向量》发布后,AINLP公众号后台查询相似词的信息还是蛮多的。前段时间的一天,发现一个女生id频繁的查询相似词,近乎每分钟都在操作(这里要说明一下,腾讯公众号后台是可以看到用户最近二十条消息记录的,信息会保留5天)。然后第二天这个id依然很规律的在查询相似词,作为偶尔玩玩爬虫、也弄弄网站的程序员,第一反应会不会是程序模拟操作,但是观察下来虽然很规律, 查询频率不像是机器所为,另外貌似到了晚上10点之后这个id就停止查询了。然后到了第3天,依然发现这个id在查询,所以我没有忍住,回复了一句:请确认是否是人工查询?如果这个id没有反馈,依然我行我素的查询,我可能就准备拉黑这个id了。但是她很快回复了一句:是人工查询;我有点好奇的追问了一句:为什么不通过程序直接加载和查询腾讯词向量呢?岂不更方便。她回复:不懂程序,不会,然后大概追加了一句:我在做一个课程设计,需要积攒一批相似词,所以通过AINLP公众号这个功能手动查询了一批词,抱歉带来困扰,感谢背后的程序员。
这个回复让我突然有一种释然,也很开心,觉得做了一件有意义的事情,在52nlp微博的简介里,有两句话:Make something people want; A blog for fools written by fools。第一句话“Make something people want”, 大概就是做用户想用或者有用的东西,这句话我忘了什么时候看到的,因为它触动了我,所以记录在微博简介里了,不过google后发现是硅谷孵化器YC的“口头禅”。
关于word2vec词语相似度,这里早期写过几篇相关的文章:《中英文维基百科语料上的Word2Vec实验》、《维基百科语料中的词语相似度探索》,《相似词查询:玩转腾讯 AI Lab 中文词向量》对于熟悉word2vec,熟悉gensim的同学来说,使用这份腾讯AI Lab的词向量其实很简单,只要有个内存大一些的机器(实际加载后貌似用了12G左右的内存),大概就可以通过几行python代码进行查询了:
from gensim.models.word2vec import KeyedVectors
wv_from_text = KeyedVectors.load_word2vec_format(file, binary=False)
但是这个世界大家并不都是程序员,即使是程序员也有很多同学不了解word2vec, 不知道gensim,所以这个word2vec相似词在线查询功能突然变得有点意思,有那么一点用了。其实,当时给AINLP后台聊天机器人加这个技能点的时候,还想过是否有用或者有必要,不过,经历了开头这件事,并且发现后台有越来越多不同领域查询词的时候,我能感知这件事还是很有意义的,特别对于那些不懂程序的同学来说。不过关于这份腾讯词向量相似词在线查询接口,虽然借助了gensim,但是在线服务的时候并不是基于gensim,用了一些trick,对于高并发也没有太多压力,所以对于开头这个小姑娘的持续查询操作,并不介意,还很欢迎,我介意的是机器恶意查询。
当然,还是有很多同学熟悉词向量,熟悉word2vec,也熟悉gensim的接口,所以发现有部分同学很自然的加了查询操作:相似度 词1 词2,期待AINLP后台相似词查询功能能给出两个值词语相似度,这个需求还是很自然的,所以昨晚,我花了一点时间,把这个接口也加上了,感兴趣的同学可以关注AINLP公众号:
然后后台对话操作,例如这样,选择计算AI和人工智能的相似度,AI和NLP的相似度:
输入的格式如下:相似度 词1 词2,关于词语相似值,稍微说明一下,这里的相似度值是基于2个词语的200维向量计算的余弦相似度,介于0到1之间,越接近1说明相似度越高,懂得同学请忽略。
感兴趣的同学可以拿起你的手机,通过微信在AINLP公众号后台把玩这份中文的腾讯词向量,查查相似词、算算相似度,如果有很有意思的用处,也非常欢迎在这里留言。
最后推荐七牛云老大许式伟新鲜出炉的架构课,首次完整架构分析,我这次心动并且行动了: