3

我正在编写用户和搜索引擎之间的桥梁,而不是搜索引擎。我的部分附加价值将是推断查询的意图。跟踪号、股票代码或地址的意图相当明显。如果我可以对查询进行分类,那么我可以决定用户是否甚至需要查看搜索结果。当然,如果我不能,那么他们会看到搜索结果。我目前正在设计这个推理引擎。

我正在写一个解析器;它应该接受任何给定的令牌并为其分配一个类别。以下是一些理论英语示例:

  • “丹佛”是 USCITY 和 PLACENAME
  • "aapl" 是 NASDAQSYMBOL 和 STOCKTICKERSYMBOL
  • “555 555 5555”是美国电话号码

我知道这些情况中的每一个很可能都需要特定的处理,但是我不确定从哪里开始。

理想情况下,我最终会得到一些简单的东西,例如:

queryCategory = magicCategoryFinder( query )

    >print queryCategory
    >"SOMECATEGORY or a list"
4

5 回答 5

3

自然语言解析是一个复杂的话题。这里的问题之一是确定一个词是什么取决于上下文和隐含的知识。此外,您对单词的兴趣不如单词组的兴趣。考虑一下,“纽约市”是一个地方,但它的三个词,其中两个(新和城市)具有其他含义。

您还必须考虑歧义,这又是上下文和隐含知识的来源。例如,JAVA 是(或曾经是)Sun Microsystems 的股票代码。它也是一种编程语言,一个地方,并具有与咖啡相关的意义。你是怎么分类的?您需要知道使用它的上下文。

如果你能可靠地解决这个问题,你就能让自己变得非常富有。

无论如何,这一切有什么帮助?

于 2010-01-28T03:21:28.580 回答
3

要了解“标记”(您正在尝试做的事情的艺术术语),我建议使用NLTK 的标记模块。更一般地说,NLTK,自然语言工具包,是一个优秀的工具包(基于 Python 编程语言),用于自然语言处理领域的实验和学习(它是否适合给定的生产应用程序可能是另一个问题,尤其是。如果所述应用程序需要对大量数据进行非常高速的处理——但是,您必须先步行才能运行!-)。

于 2010-01-28T03:27:16.563 回答
1

您遇到了当今计算机科学中最困难的问题之一……从英语上下文中确定语义。这是经典的文本挖掘问题,涉及一些非常高级的主题。我认为我建议您更多地考虑您的问题,看看您是否可以a)不进行分类或b)也许利用诸如文档位置之类的结构信息来给您提示(城市或地名或未确定的),也许还有一些查找表可以提供帮助。即股票代码很容易创建一个非常完整的查找。您可以考虑下载 CIA 世界概况以查找城市……等等。

于 2010-01-28T03:22:34.473 回答
1

正如其他人已经指出的那样,这是一项异常艰巨的任务。经典的测试是一对句子:

  1. 时光如箭,飞逝。
  2. 果蝇像香蕉一样。
在第一句话中,“苍蝇”是动词。第二,它是名词的一部分。在第一个中,“like”是一个副词,但在第二个中,它是一个动词。上下文也没有使这特别容易理清——“时间”和“水果”(通常都是名词)之间没有明显的区别。同样,“箭头”和“香蕉”都是通常的名词。

它可以做到——但它确实非常重要。

于 2010-01-28T03:32:43.063 回答
1

尽管它可能对消除歧义没有多大帮助,但您可以使用Cyc。这是一个庞大的数据库,其中包含旨在用于 AI 应用程序的事物(尽管我没有听说过任何成功案例)。

于 2010-01-28T03:33:42.843 回答