【问题标题】:How to build a conceptual search engine?如何构建概念搜索引擎?
【发布时间】:2011-04-29 13:33:12
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: python search lucene nlp lsa


    【解决方案1】:

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

    第 1 步。停止。

    第 2 步。让某些东西发挥作用。

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

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

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

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

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

    【讨论】:

    • 从简单开始的好点。不过,在这种情况下,我正在构建的应用程序的潜在客户已经拥有“正常”的搜索引擎。我有理由相信一个更智能的引擎可以增加有形的价值,这就是为什么我想知道在我开始制作“我也是”产品之前解决它是否是一个可行的问题。
    • @DevX:请放慢速度。 “更智能的引擎”是一回事。先建立那个。集成是您最不必担心的事情。在你让“更智能的引擎”工作之后,把它留到最后。我会重复一遍,因为您似乎没有阅读它:在您获得一些工具经验并解决基本问题之后,可以将集成留到最后。
    【解决方案2】:

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

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

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

    然后重复输入单词的所有组合,即“big cat”、“big cat”、“huge cats”巨大的 cat”等。

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

    至于概念,比如猫也是动物——这就是它变得棘手的地方。它从来没有真正奏效过,否则 Google 会返回概念匹配,但它没有这样做。

    【讨论】:

    • 首先使用规范化的好主意。 NLTK 库/WordNet 肯定可以用来执行此操作。我不会认为概念标记不切实际,因为谷歌还没有这样做。谷歌处理数十亿页的开放式查询。对它们进行概念搜索会打开一堆蠕虫,此外,用户通常只对前 10 个答案感兴趣。也就是说,一般搜索者想要高准确度。不过,对于我的应用程序来说,广度是结果质量的一个重要特征。我不想错过任何可能相关的内容。
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-25
        • 1970-01-01
        • 2013-12-16
        • 2010-09-22
        • 1970-01-01
        相关资源
        最近更新 更多