【问题标题】:Determining what a word "is" - categorizing a token确定一个词“是”什么——对标记进行分类
【发布时间】:2010-01-28 03:12:15
【问题描述】:

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

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

  • “denver”是 USCITY 和 PLACENAME
  • “aapl”是纳斯达克符号和股票代码
  • “555 555 5555”是美国电话号码

我知道这些情况很可能都需要具体处理,但我不确定从哪里开始。

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

queryCategory = magicCategoryFinder( query )

    >print queryCategory
    >"SOMECATEGORY or a list"

【问题讨论】:

  • 你能编辑这个以包含一个实际的问题吗?
  • 让我想起了 Wolfram Alpha 锣表演...
  • 艺术:你对这其中的哪一部分有问题?
  • 已编辑。克里斯 - 我正在努力解决的部分是分类部分。蛮力解决方案(大量查找)似乎不太理想。也许这是唯一的解决方案 - 在大量先前分类的数据中查找每个标记。

标签: search parsing token


【解决方案1】:

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

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

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

这些到底有什么用?

【讨论】:

  • (+1) 比我更详细地描述了为什么这是一个难题。
  • 该问题不要求消除歧义。正如您在示例中看到的那样,它允许输出多个类别,因此 Java 可以同时成为一种语言、一种咖啡、一个岛屿和一个股票代码。
  • 我正在对搜索查询进行分类。我的研究表明,高百分比(60% 以上)的查询有些明确,如果我可以正确分类它们,那么我可以提供一个在某些情况下跳过搜索结果页面的搜索引擎。最好的例子是 UPS 跟踪号。有人“搜索”这样一个数字的可能性极低。股票代码(如果明确的话)是相似的,并且行车路线、地址等......在不明确的情况下,我可以简单地呈现常规搜索结果。
  • Max S - 确切地说,如果可能,我系统的更高级别部分将根据分类确定消歧。
  • 只是想我会提到搜索引擎实际上是在将您带到结果页面的业务;)(当然,除非您谈论的是内部或非商业的东西)跨度>
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

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

      可以做到——但这确实是果断不平凡的。

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          猜你喜欢
          • 2012-10-04
          • 1970-01-01
          • 2022-08-23
          • 1970-01-01
          • 1970-01-01
          • 2020-03-16
          • 1970-01-01
          • 2011-04-12
          • 1970-01-01
          相关资源
          最近更新 更多