【发布时间】:2016-04-03 04:10:34
【问题描述】:
我有一个 django 后端(Postgre DB)。
假设一个给定的表,比如 A,有一个叫做“消息”的字符域。现在,我想做的是找到 A 中与给定实例的“消息”字段具有相似“消息”的所有项目。相似性将基于某种算法。 TL;DR 我想根据项目相似度查找项目。
问题分为三个部分:
我该怎么做?我可以实时完成(慢)还是必须预先计算表 A 中所有项目之间的相似性。(这可能会炸毁我的数据库)
如何找到“消息”字段之间的相似性?请注意,该项目更像是一个 400 字符的帖子,而不是一组关键字。我遇到了许多计算字符串距离的算法,但我认为这不会减少它。我认为 TF-IDF 后跟余弦相似度更合适。
如何在生产环境中实现上述目标?就像应该使用什么数据结构来优化请求响应时间和存储一样。
【问题讨论】:
-
只是一个想法。用突出的关键词标记“消息”字段。然后搜索标签。
-
这是个好主意。但是这个过程是自动化的。因此,我需要一种提取关键字的好方法。问题是“消息”可能是非标准英语。
-
Umm... 这个怎么样,如果我只考虑动词和名词的话,对于一个很长的消息,这将是一组合理的关键字。如果英语不标准,就没有捷径可走。
-
感谢您的建议。我的数据集很大程度上是非标准英语
-
你需要的叫做“全文搜索”,postgres 已经支持了,看这里postgresql.org/docs/9.4/static/textsearch.html,也有很多第三方搜索引擎,比如 sphinx sphinxsearch.com
标签: python django sentence-similarity