【问题标题】:Django: Filter Items similar to given ItemDjango:过滤与给定项目相似的项目
【发布时间】:2016-04-03 04:10:34
【问题描述】:

我有一个 django 后端(Postgre DB)。

假设一个给定的表,比如 A,有一个叫做“消息”的字符域。现在,我想做的是找到 A 中与给定实例的“消息”字段具有相似“消息”的所有项目。相似性将基于某种算法。 TL;DR 我想根据项目相似度查找项目。

问题分为三个部分:

  1. 我该怎么做?我可以实时完成(慢)还是必须预先计算表 A 中所有项目之间的相似性。(这可能会炸毁我的数据库)

  2. 如何找到“消息”字段之间的相似性?请注意,该项目更像是一个 400 字符的帖子,而不是一组关键字。我遇到了许多计算字符串距离的算法,但我认为这不会减少它。我认为 TF-IDF 后跟余弦相似度更合适。

  3. 如何在生产环境中实现上述目标?就像应该使用什么数据结构来优化请求响应时间和存储一样。

【问题讨论】:

  • 只是一个想法。用突出的关键词标记“消息”字段。然后搜索标签。
  • 这是个好主意。但是这个过程是自动化的。因此,我需要一种提取关键字的好方法。问题是“消息”可能是非标准英语。
  • Umm... 这个怎么样,如果我只考虑动词和名词的话,对于一个很长的消息,这将是一组合理的关键字。如果英语不标准,就没有捷径可走。
  • 感谢您的建议。我的数据集很大程度上是非标准英语
  • 你需要的叫做“全文搜索”,postgres 已经支持了,看这里postgresql.org/docs/9.4/static/textsearch.html,也有很多第三方搜索引擎,比如 sphinx sphinxsearch.com

标签: python django sentence-similarity


【解决方案1】:

这可能会奏效:

http://django-haystack.readthedocs.org/en/v2.4.1/searchqueryset_api.html#more-like-this

SearchQuerySet.more_like_this(self, model_instance)

您可以传入模型的一个实例,以获取类似的结果。

【讨论】:

    猜你喜欢
    • 2012-06-03
    • 2021-12-05
    • 2017-01-21
    • 1970-01-01
    • 1970-01-01
    • 2022-11-02
    • 2019-01-20
    • 2021-07-09
    • 1970-01-01
    相关资源
    最近更新 更多