C# 自然语言查询处理

C# 自然语言查询处理,c#,nlp,artificial-intelligence,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 pre

我有一个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函数是返回的对象,time将引用time,现在很容易为它制作一个简单的解析器,但是我们也有现在的时间,或者你知道现在是什么时间吗。我需要它能够进一步发展的基础上的英语作为项目将增长

源代码是C#.Net 4.5


提前感谢。

据我所知,使用依赖关系解析树将更有用。通常,一个问题的提问方式是有限的(我的意思是统计上显著的变化是有限的……可能会有一些人们通常不使用的极端情况),并通过诸如谁、什么、何时、何地、为什么和如何等词来表达

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

  • 几点了
  • 你知道现在几点了吗
  • 它们的依赖项解析结构如下所示:

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

    两者都是什么查询,都包含“时间”作为名义主题。后者也包含“你”作为一个名词性主题,但我认为“你知道吗”、“你能告诉我吗”等表达可以基于启发式删除


    您将发现此方法非常有用。如果你想在工作中看到更多的例子,它们也有。

    如果你问如何识别语义等价的问题,如“现在几点了?”和“你知道现在几点了吗?”,那么这是一个相当困难的问题。解决一般情况需要相当多的研究工作(在实际的可部署编码工作开始之前)。是的,我正在重写一个基于AIML的人工智能引擎,已经开发了2年多,问题是研究已经完成,但是我仍然不知道解决这个问题的最好方法是什么。谢谢你的及时回复。我会尽力回答。我怀疑任何答案,因此将能够提供一个很好的解决这个问题的一般性,但对于简单的查询,让我尝试帮助:谢谢,任何将开始启动它将是好的,因为它必须有一个稳定的基础上,它是基于。“自然语言查询处理”的问题是“疯狂的紫色”。但是说真的,你首先要问的是什么?谢谢,我使用的不是斯坦福德解析器,而是一个经过修改/重写的OpenNLP,但是你确实激发了一个想法,我可以查询到。恐怕OpenNLP没有依赖解析。证实了我的恐惧。对不起,这是OpenNLP的翻译,但我相信它确实如此。如果不是的话,那就是清单上的一个额外任务。哈哈,我知道,我想要一些简单的东西,我可以从中工作,称之为赤裸裸的,就像在这个问题中,只是需要一个开始的地方。
    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)