自然语言查询处理

时间:2014-02-03 01:32:22

标签: c# nlp artificial-intelligence

我有一个NLP(自然语言处理应用程序)运行,它给我一个解析句子的树,问题是我应该如何继续。

What is the time
\-SBAR - Suborginate clause
  |-WHNP - Wh-noun phrase
  | \-WP - Wh-pronoun
  |  \-What
  \-S - Simple declarative clause
   \-VP - Verb phrase
     |-VBZ - Verb, 3rd person singular present
     | \-is
     \-NP - Noun phrase
       |-DT - Determiner
       | \-the
       \-NN - Noun, singular or mass
         \-time

应用程序有一个内置的javascript解释器,并试图将短语转换为一个简单的函数,如

function getReply() {
   return Resource.Time();
}

在基本术语中,what = request = create function,是将返回的对象,并且时间会引用时间,现在只需要为此创建一个简单的解析器就很容易了但是我们还有什么是现在是时候了,还是知道现在几点了。随着项目的发展,我需要能够根据英语进一步发展。

来源是C#.Net 4.5

提前感谢。

1 个答案:

答案 0 :(得分:1)

据我所知,使用依赖解析树会更有帮助。通常,问题的提问方式是有限的(我的意思是统计上显着的变化是有限的 ......可能会出现人们通常不使用的极端情况),并通过像什么何时其中为什么如何< / em>的

依赖性解析将使您能够在查询中提取名义主题以及直接和间接对象。通常,这些将表达查询的基本意图。考虑两个等效查询的示例:

  1. 现在几点?
  2. 你知道现在几点吗?
  3. 他们的依赖关系解析结构如下:

    root(ROOT-0, What-1)
    cop(What-1, is-2)
    det(time-4, the-3)
    nsubj(What-1, time-4)
    

    aux(know-3, Do-1)
    nsubj(know-3, you-2)
    root(ROOT-0, know-3)
    dobj(is-7, what-4)
    det(time-6, the-5)
    nsubj(is-7, time-6)
    ccomp(know-3, is-7)
    

    两者都是什么 - 查询,并且都包含“时间”作为名义主题。后者还包含“你”作为名义主题,但我认为可以根据启发式删除“你知道吗”,“你能告诉我”等表达方式。

    您会发现Stanford Parser对此方法很有帮助。如果你想在工作中看到更多的例子,他们也有this online demo