2

所以!

我在 PHP 中工作,并且有大量的分类/标签列表,比如大约 100,000 个。

可以在 Zazzle.com 的产品下列出的大量标签中找到类似的标签列表。

我正在尝试根据单词、相似字符串和特异性之间的关系,以编程方式将此列表组织成一个分层菜单。

我玩弄了 levenshtein 函数、similar_text、搜索 sub_str(ings)、使用普林斯顿 WordNet 数据库等,但就是无法破解这个问题。本质上,我正在尝试从这个数据库中构建一个本体,该数据库的层次从非常一般到非常具体。它不一定是完美的,但我已经用完了简单的关键词来搜索以及如何以编程方式进行此操作的想法,但仍然有一些相似的顺序。

例如:如果我使用 sub_str,我可能会以 Dog->Dogma、Dogra 等结尾。

如果我使用 levenshtein 或类似的文本,我最终可能会发现 Bog、Log、Cog 和 Dog 都非常密切相关。

该数据库或分类法(如果您愿意的话)也在不断变化,因此至少部分分析必须即时完成。好消息是只需要提供一个级别的结果。例如,Dog 等查询的邻近结果可能是 small dog、large dog、red dog、blue dog、canine 等。

我知道这是一个可怕的问题,但是有没有人至少知道我应该采取哪些步骤、我可以使用的任何有用的功能、研究查询、方法等?

感谢您的时间。


到目前为止,对于以编程方式将标签组织到本体中,我有两个建议。

  1. 查找标签的共同出现以将它们组织成组。我相信这个想法是,如果标签一起出现,它们可能是相关的。

  2. 使用算法词干将词的多种形式/派生/词根减少为词干。这应该会减少脚本需要筛选的标签数量......除了可能根据根词干识别相似的标签。

4

1 回答 1

1

如果您有整个句子或至少不仅仅是单个单词,您可能需要查看潜在语义分析

不要被数学吓到,一旦你掌握了它背后的基本概念,它就相当简单了:

  • 创建数据的(高维)术语文档矩阵
  • 必不可少的步骤:将您巨大的稀疏矩阵转换为低维(奇异值分解
  • 然后可以通过低维模型中的向量指定每个 [标签/术语的集合]
  • 这两个向量之间的(余弦)相似度可以很好地衡量标签的相似性,即使它们可能不是同一个词干(您可能会发现 dog 和 barking 相关)
  • 术语文档矩阵的良好输入至关重要

关于这个[和其他 IR 主题](免费电子书)的优秀读物:Introduction to Information Retrieval
看看这本书,它写得很好,对我的 IR 论文有很大帮助。

于 2012-12-14T07:58:25.163 回答