确定单词“是” - 对令牌进行分类

时间:2010-01-28 03:12:15

标签: search parsing token

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

我正在写一个解析器;它应该采用任何给定的标记并为其分配一个类别。以下是一些理论上的英语例子:

  • “denver”是USCITY和PLACENAME
  • “aapl”是NASDAQSYMBOL和STOCKTICKERSYMBOL
  • “555 555 5555”是USPHONENUMBER

我知道每种情况都很可能需要特定处理,但我不知道从哪里开始。

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

queryCategory = magicCategoryFinder( query )

    >print queryCategory
    >"SOMECATEGORY or a list"

5 个答案:

答案 0 :(得分:3)

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

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

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

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

答案 1 :(得分:3)

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

答案 2 :(得分:1)

你正碰到今天计算机科学中最难的问题之一......从英语语境中确定语义。这是经典的文本挖掘问题,并进入一些非常高级的主题。我认为我会建议更多地考虑你的问题,看看你是否可以a)没有分类或b)可能利用结构信息,如文档位置或某些东西给你一个提示(是城市或地名或未确定)可能还有一些查找表可以提供帮助。即股票代码很容易创建一个非常完整的查找。您可以考虑下载CIA world factbook以查找城市......等等。

答案 3 :(得分:1)

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

  1. 时间过得像箭一样。
  2. 果蝇像bananna。
在第一句中,“苍蝇”是动词。在第二个中,它是名词的一部分。在第一个中,“like”是一个副词,但在第二个中它是一个动词。上下文并没有让这一点特别容易理解 - “时间”和“水果”(通常都是名词)之间没有明显的区别。同样,“arrow”和“bananna”通常都是名词。

可以做到 - 但它确实明显非平凡。

答案 4 :(得分:1)

虽然对消除歧义可能没什么帮助,但您可以使用Cyc。它是一个庞大的数据库,其中包含用于AI应用程序的的东西(虽然我没有听过任何成功案例)。