5

我想构建一个能够将查询映射到概念的内部搜索引擎(我有一个非常大的数千个 XML 文件集合)。例如,如果我搜索“大猫”,我希望排名靠前的结果也能返回带有“大猫”的文档。但我可能也有兴趣让它返回“巨大的动物”,尽管相关性分数要低得多。

我目前正在阅读 Python 中的自然语言处理一书,似乎 WordNet 有一些可能被证明有用的单词映射,但我不确定如何将其集成到搜索引擎中。我可以使用 Lucene 来做到这一点吗?如何?

从进一步的研究来看,“潜在语义分析”似乎与我正在寻找的内容相关,但我不确定如何实现它。

关于如何完成这项工作的任何建议?

4

4 回答 4

9

我不确定如何将其集成到搜索引擎中。我可以使用 Lucene 来做到这一点吗?如何?

步骤 1. 停止。

第 2 步。做点什么

第 3 步。到那时,您将更多地了解 Python 和 Lucene 以及其他工具以及可能集成它们的方式。

不要从尝试解决集成问题开始。软件总是可以集成的。这就是操作系统的作用。它集成了软件。有时您想要“更紧密”的集成,但这绝不是要解决的第一个问题。

要解决的第一个问题是让您的搜索或概念事物或任何它作为一个愚蠢的旧命令行应用程序工作。或者通过传递文件或使用操作系统管道或其他东西将应用程序组合在一起。

稍后,您可以尝试弄清楚如何使用户体验无缝。

但不要从整合开始,也不要因为整合问题而停滞不前。将集成放在一边,然后开始工作。

于 2010-10-23T13:56:42.217 回答
1

这是一个非常困难的问题,无法以始终产生足够结果的方式解决。我建议坚持一些非常简单的原则,这样结果至少是可预测的。我认为你需要两件事:一些基本的形态引擎和同义词词典。

每当搜索查询到达时,对于每个单词,您

  1. 寻找文字匹配
  2. 使用形态引擎“规范化/规范化”单词,即使其单数、第一形式等并查找匹配项
  3. 寻找单词的同义词

然后对输入单词的所有组合重复,即“大猫”、“大猫”、“巨大的猫”、“巨大的猫”等。

事实上,您还需要以规范形式(单数形式、第一形式等)与文字形式一起存储索引数据。

至于概念,比如猫也是动物——这就是它变得棘手的地方。它从来没有真正起作用,因为否则谷歌会已经返回概念匹配,但它没有这样做。

于 2010-10-23T12:48:54.467 回答
1

首先,我同意这里的大部分建议,即开始缓慢,首先构建这个宏伟计划的零碎部分,设计一个最小的第一个产品并从那里继续。其次,如果您想在 Lucene 中使用一些 Wordnet 功能,可以使用contrib 包将 Lucene 查询与 Wordnet 连接起来。我不知道它是否被移植到 pylucene。祝你好运,在外面小心点。

于 2010-10-23T20:50:55.247 回答
0

首先,编写一段python代码,当你输入苹果时,它会返回菠萝、橙子、木瓜。通过关注语义网络的“是”关系。然后继续跟有关系等等。

我认为最后,您可能会获得相当足够的代码用于学校项目。

于 2010-10-23T14:10:50.107 回答