获取动词时态 java
Get tense of verb java
我正在使用 simpleNLG 查找动词的实际时态。但我似乎做错了,它没有给出动词的时态,而是将其转换为现在时:/
public class TenseWas
{
public static void main(String[] args)
{
String word = "ate";
Lexicon lexicon=Lexicon.getDefaultLexicon();
NLGFactory nlgFactory=new NLGFactory(lexicon);
Realiser realiser=new Realiser(lexicon);
SPhraseSpec p=nlgFactory.createClause();
p.setVerb(word);
if(p.getVerb().getFeature(Feature.TENSE) == (Tense.PAST))
{
System.out.println("past");
}
if(p.getVerb().getFeature(Feature.TENSE) == (Tense.FUTURE))
{
System.out.println("future");
}
if(p.getVerb().getFeature(Feature.TENSE) == (Tense.PRESENT))
{
System.out.println("Present");
}
String output=realiser.realiseSentence(p);
System.out.println(output);
}
}
这是控制台中显示的内容:
吃。
调用 getFeature()
不会告诉您您设置的动词是什么时态,它会回显您为呈现从句而设置的从句时态。你这样使用它:
p.setSubject("Foo");
p.setVerb("eat");
p.setObject("bar");
p.setFeature(Feature.TENSE, Tense.PAST);
String output = realiser.realiseSentence(p);
System.out.println(output); // "Foo ate bar"
为未来的程序员回答这个问题。
正如@Bohemian 指出的那样,simplenlg 不是用来对动词的动词时态进行分类的,它是一个实现引擎,用于将 'sentence' 的抽象表示转换为实际的句子。
如果您查看 simplenlg 使用的词典 xml 'database' 库,它包含动词和名词等的注释版本。它在 https://github.com/simplenlg/simplenlg/blob/master/src/main/resources/default-lexicon.xml 中。仅供参考,您可以使用其他词典 xml 数据库。
<word>
<base>sleep</base>
<category>verb</category>
<id>E0056246</id>
<present3s>sleeps</present3s>
<intransitive/>
<past>slept</past>
<pastParticiple>slept</pastParticiple>
<presentParticiple>sleeping</presentParticiple>
<transitive/>
</word>
所以要回答你的问题,你不应该使用 simplenlg 来获取动词的时态,而应该使用其他 NLP/'smarter' 库来做 'verb' 或单词分类,例如 Parts of CoreNLP 或 OpenNLP 中的 Speech Tagger,这是关于它们的信息,
我正在使用 simpleNLG 查找动词的实际时态。但我似乎做错了,它没有给出动词的时态,而是将其转换为现在时:/
public class TenseWas
{
public static void main(String[] args)
{
String word = "ate";
Lexicon lexicon=Lexicon.getDefaultLexicon();
NLGFactory nlgFactory=new NLGFactory(lexicon);
Realiser realiser=new Realiser(lexicon);
SPhraseSpec p=nlgFactory.createClause();
p.setVerb(word);
if(p.getVerb().getFeature(Feature.TENSE) == (Tense.PAST))
{
System.out.println("past");
}
if(p.getVerb().getFeature(Feature.TENSE) == (Tense.FUTURE))
{
System.out.println("future");
}
if(p.getVerb().getFeature(Feature.TENSE) == (Tense.PRESENT))
{
System.out.println("Present");
}
String output=realiser.realiseSentence(p);
System.out.println(output);
}
}
这是控制台中显示的内容:
吃。
调用 getFeature()
不会告诉您您设置的动词是什么时态,它会回显您为呈现从句而设置的从句时态。你这样使用它:
p.setSubject("Foo");
p.setVerb("eat");
p.setObject("bar");
p.setFeature(Feature.TENSE, Tense.PAST);
String output = realiser.realiseSentence(p);
System.out.println(output); // "Foo ate bar"
为未来的程序员回答这个问题。
正如@Bohemian 指出的那样,simplenlg 不是用来对动词的动词时态进行分类的,它是一个实现引擎,用于将 'sentence' 的抽象表示转换为实际的句子。
如果您查看 simplenlg 使用的词典 xml 'database' 库,它包含动词和名词等的注释版本。它在 https://github.com/simplenlg/simplenlg/blob/master/src/main/resources/default-lexicon.xml 中。仅供参考,您可以使用其他词典 xml 数据库。
<word>
<base>sleep</base>
<category>verb</category>
<id>E0056246</id>
<present3s>sleeps</present3s>
<intransitive/>
<past>slept</past>
<pastParticiple>slept</pastParticiple>
<presentParticiple>sleeping</presentParticiple>
<transitive/>
</word>
所以要回答你的问题,你不应该使用 simplenlg 来获取动词的时态,而应该使用其他 NLP/'smarter' 库来做 'verb' 或单词分类,例如 Parts of CoreNLP 或 OpenNLP 中的 Speech Tagger,这是关于它们的信息,