如何在保持有效性的同时自动标记文本?

时间:2009-06-27 22:56:54

标签: performance tags tagging

假设我有一百万个标签和一个需要为这些以及可能的新标签解析的文本。这里的标签数量只是一个例子来说明我的思考问题 - 太多以线性方式循环,太多不能留在内存等。

不知怎的,我想不出一个占地面积小(并且保持快速)的解决方案。我知道人们不得不期待权衡取舍,但我认为我忽视了一些概念。

这对于智能标记(“Michael Jackson”=“艺术家”等)尤其有用,因为应用的标记可能不是文本本身的一部分。

除了进行单词黑名单,热门标签的缓存和大量的SQL查询之外,最有效的方法是什么呢?

(有趣的是,我自己要标记这个问题:-))

由于评论空间有限,请在此处添加一些想法:

  • 我同意使用整数哈希可以提高速度。好主意。
  • 哈希不会解决迭代问题(在针对标签列表检查单词或单词组合时循环遍历每个哈希/标签)
  • 要优化问题:假设文本如“hello world”。本文有3个潜在的标签(“你好”,“世界”和“你好世界”)。标签列表可能只包含“hello”,但解析后可能会添加“world”或“hello world”,这意味着这些标签不会应用于文本。

问题:

  • 假设书本大小的文本,迭代所有组合(如“Nine Inch Nails”但让我们假设组合限制为4个单词)将它们与数据库中的标记进行比较需要很长时间,即使假设使用整数哈希
  • 标签列表可能很长,因此迭代存储的标签也可能很慢。
  • 标签更新意味着对文本进行额外的全文搜索 - 取决于文本的数量及其长度,这可能是数据库杀手并且根本没有效率?
  • 如何自动找到“相关”新标签? (在一篇关于音乐的文章中再次出现“Nine Inch Nails” - 但“发布一首新歌”并不会成为一个好标签)。尽管如此,这可能是一个问题。

1 个答案:

答案 0 :(得分:1)

对传入文本中的每个单词进行哈希处理,并使用它来匹配要匹配的标记的哈希值。您可以使用数据库来存储和查找哈希值,这样您就不必在内存中执行此操作。