使用SharpNLP识别英语句子中的时态

时间:2013-04-03 13:28:45

标签: c# algorithm nlp sharpnlp

在我的作业中,我使用SharpNLP来定义词性,如名词,形容词,动词等。然后,我想根据时态的类型对句子进行分类,首先在这种情况下,以PAST TENSE为例。

让我看看我的代码..

        listSentence = ParseInput(allInput);

        foreach (string word in listSentence[0].Split(separator))
            if (word.Trim() != "")
                listWord.Add(word);  

        string[] lWord = listWord.ToArray();
        string[] lPOS = this.NLP.PosTagTokens(lWord);

allInput =“我昨天很忙。”

说实话, listSentence [0] 包含“我昨天很忙”。
然后在 string [] lWord中分成“I”,“was”,“busy”,“yesterday”
然后我使用SharpNLP,运行良好,以便 string [] lPOS 包含{“NN”,“VBD”,“JJ”,“NN”} 这应该被认为是真的 基于该输出,我很困惑如何识别为PAST TENSE - TRUE或FALSE。

说明:

NN:名词,单数或质量
VBD:动词,过去时 VBP:动词,非第三人称单数礼物
VBZ:动词,第3人单数礼物
VBG:动词,动名词或现在分词
VBN:动词,过去分词
JJ:形容词
PRP:人称代词

如果allInput =“我昨天很忙”
string [] lPOS = {“PRP”,“VBP”,“JJ”,“NN”}
那应该被认为是假的

如果allInput =“他们昨天很忙”
string [] lPOS = {“PRP”,“VBP”,“JJ”,“NN”}
那应该被认为是假的

如果allInput =“明天我很忙”
string [] lPOS = {“PRP”,“VBD”,“JJ”,“NN”}
那应该被认为是假的

先生,请帮帮我。给我一些想法,并根据上面的所有输出来识别过去时。 让我通过你的例子来学习。非常感谢。 :):)

1 个答案:

答案 0 :(得分:0)

目标存在一个基本矛盾。 解析器在语法(结构)级别运行。但是你想要根据语义(含义)进行分类。
根据解析器,BUCKETS过去时态,因为从句法上讲,过去时有一个动词。但是,最后一个单词的语义使它成为一个语义错误的句子。

在我看来,为了您的目标,I was busy tomorrow是现在时,I am busy yesterday已过去。