2

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

让我看看我的代码..

        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"} 那应该被识别为 TRUE 基于该输出,我很困惑如何识别为过去时 - TRUE 或 FALSE。 解释 :





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

如果 allInput = "我昨天很忙"
string[] lPOS = {"PRP", "VBP", "JJ", "NN"}
那应该被识别为 FALSE

if allInput = "他们昨天很忙"
string[] lPOS = {"PRP", "VBP", "JJ", "NN"}
那应该被识别为 FALSE

if allInput = "I was busy tomorrow"
string[] lPOS = {"PRP", "VBD", "JJ", "NN"}
那应该被识别为 FALSE

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

4

1 回答 1

0

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

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

于 2015-07-06T09:02:34.400 回答