我正在用户和搜索引擎之间架起一座桥梁,而不是搜索引擎。我的部分增值将推断出查询的意图。跟踪号,股票代码或地址的意图相当明显。如果我可以对查询进行分类,那么我可以决定用户是否需要查看搜索结果。当然,如果我不能,那么他们会看到搜索结果。我目前正在设计这个推理引擎。
我正在写一个解析器;它应该采用任何给定的标记并为其分配一个类别。以下是一些理论上的英语例子:
我知道每种情况都很可能需要特定处理,但我不知道从哪里开始。
理想情况下,我最终会得到一些简单的东西:
queryCategory = magicCategoryFinder( query )
>print queryCategory
>"SOMECATEGORY or a list"
答案 0 :(得分:3)
自然语言解析是一个复杂的主题。这里的问题之一是确定一个单词是什么取决于上下文和隐含的知识。此外,您对单词并不那么感兴趣,因为您在单词组中。考虑一下,“纽约市”是一个地方,但它的三个词,其中两个(新的和城市的)有其他含义。
你也必须考虑歧义,这又是上下文和隐含知识的来源。例如,JAVA是(或曾经)是Sun Microsystems的股票代码。它也是一种编程语言,一个地方,并具有与咖啡相关的意义。你怎么分类呢?您需要知道使用它的上下文。
如果你能够可靠地解决这个问题,你可以让自己变得非常富有。
无论如何,这有什么帮助?
答案 1 :(得分:3)
要了解“标记”(您正在尝试做的事情的术语),我建议您使用NLTK's tag module。更一般地说,NLTK,自然语言工具包,是一个优秀的工具包(基于Python编程语言),用于自然语言处理领域的实验和学习(是否适用于给定的生产应用程序可能是一个不同的问题,特别是如果所述应用程序需要对大量数据进行非常高速的处理 - 但是,你必须先行走才能运行! - 。)。
答案 2 :(得分:1)
你正碰到今天计算机科学中最难的问题之一......从英语语境中确定语义。这是经典的文本挖掘问题,并进入一些非常高级的主题。我认为我会建议更多地考虑你的问题,看看你是否可以a)没有分类或b)可能利用结构信息,如文档位置或某些东西给你一个提示(是城市或地名或未确定)可能还有一些查找表可以提供帮助。即股票代码很容易创建一个非常完整的查找。您可以考虑下载CIA world factbook以查找城市......等等。
答案 3 :(得分:1)
正如其他人已经指出的那样,这是一项异常艰巨的任务。经典测试是一对句子:
可以做到 - 但它确实明显非平凡。
答案 4 :(得分:1)
虽然对消除歧义可能没什么帮助,但您可以使用Cyc。它是一个庞大的数据库,其中包含用于AI应用程序的的东西(虽然我没有听过任何成功案例)。