我看现在搜索越来越智能了,不是单纯的关键字匹配了。 搜索“我饿了”,有饭店,有美食。就算原来没有关键词“我,饿”。 搜索“头疼”,推荐的是医院,或医生。
不知道这种功能,应该怎么实现呢?用 Rails 和 Postgres,能完成不?
聚类的,加人工同义词剪枝
复杂一点可以加上语义分析。就是在特定的环境下理解对话的含义。比如“头疼”在求医过程应该是医生或者科室,而朋友聊天也许就是个感叹
简单就是分词后有关联的词作关联处理
这种要做自然语言理解了。搜索 nlu。主要是文本分类和关键词抽取。
@nikoloss @geniusfox @maomao @teddyinfi 那各位的思路,就是要自然语言做处理,“我饿了”,然后把“我”,“饿”之类这种关键词次提取出来。 然后数据库就得手动设置,例如“饭店信息”和“饿”关联起来。 这样处理的话,那就需要人工调整关键词和信息的匹配了,那工作量不就非常的大,而且总有遗漏的。 例如,平常的人,都会搜“我饿了”,但是有一天,有个人搜索“I am hungry”那就会出现数据不匹配的情况,那到时候,就在手动增加,就需要这样相关操作才行了。
要用机器学习的一些算法来训练模型了。新增的样本就添加训练数据,重新训练模型。
这就是聚类要解决的,就是你只需要提供大量的文本,并把其中的几个文本标注成“找美食”,“看病”等 tag。机器会根据你最开始标注的几条进行归类,然后在这个过程中,你在稍微干预一下,让它分类的更加准确。这样训练出来的 output 叫做“模型”。把模型带到线上,碰到新的文本,只需要放到模型里面跑,它就会 output 一个 tag,比如“看病”。
这就要涉及到那些公司说的大数据了,自动关联什么的