【问题标题】:Best approach to create a tag cloud from input text从输入文本创建标签云的最佳方法
【发布时间】:2011-10-07 09:23:16
【问题描述】:

我想知道从输入文本(在用户输入时)生成标签云的最佳方法是什么。例如,如果用户键入包含关键字“sci-fi, technology, effects”的故事文本,标签云将由每个关键字根据它们在每个故事中出现的频率按相关性排序形成。标签云将按降序显示并使用相同的字体大小,这不是显示算法,而是我应该实现的搜索算法。 我正在使用mysql和php。 我应该坚持 MATCH...AGAINST 条款吗?我应该实现标签表吗?

更多详情 我有一个包含很多故事的 mysql 表。当用户键入他/她自己的一个时,我想显示一个标签云,其中包含从输入文本中获取的最常见单词,这些单词出现在保存在我的数据库中的这组故事中。 标签云仅用于根据在所有用户输入的所有故事中出现的频率,向用户显示他/她输入的单词在他/她自己的故事中的相关性。

【问题讨论】:

    标签: php mysql text input tag-cloud


    【解决方案1】:

    我认为您需要做的第一件事是更清楚地定义您的标记系统的目的。您想简单地根据文本中出现频率最高的单词构建标签吗?这让我觉得设计时考虑到了搜索排名。

    ...或者您是否希望您的内容更好地组织,并且标签云是一种提供更好的用户体验并在内容之间创建更独特关系的方式(即,这两者都被标记为科幻,所以将它们显示在科幻类别中)。

    如果是前者,你可能不需要做任何事情,但:

    然后你只需要决定一个词必须出现多少次(百分比或数字),并将这些标签存储在一个表格中,显示标签和内容之间的联系。

    要实现“在用户输入时”部分,您只需要使用一些 jQuery 的 ajax 功能来不断调用构建标签列表的脚本(即在 keydown 上)。

    另一个选项(更好的用户体验)将包含许多相同的元素,但您必须考虑更多。我会考虑的一些事情:

    • 您想限制某些标签(也许您不想让任何人都可以创建新标签)?
    • 您将如何处理同义词
    • 如果您将支持多种语言
    • 如果您希望优先推荐现有标签(可能很接近)而不是推荐新标签

    一旦您完全定义了逻辑和用户体验,您就可以返回搜索算法。 MATCH 和 AGAINST 是不错的选择,但您可能会发现一个简单的 LIKE 就可以完成。

    祝你好运=)

    【讨论】:

    • 感谢您的回复卡尔文。我想我没有很好地解释我的问题。请参阅我的回答以了解有关此问题的说明。
    【解决方案2】:

    如果您希望在用户键入时生成标签云,您可以通过两种方式进行。

    • 直接从输入文本更新标签云
    • 将输入文本发送到后端(使用 ajax/comet 实时),然后保存、计算词频并返回数据,您可以从中生成云。

    我会使用前者,使用 jQuery 插件,例如 - http://plugins.jquery.com/plugin-tags/tag-cloud

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-26
      • 2021-05-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多