在stanford解析器中查找名词和动词

时间:2010-10-04 11:44:34

标签: java nlp stanford-nlp

我需要找出一个单词是动词还是名词,还是两者都是

例如,单词是“search”它既可以是名词也可以是动词,但是stanford解析器会为它提供NN标记。

有没有什么方法可以让stanford解析器给出“搜索”既是名词又是动词?

我现在使用的代码

public static String Lemmatize(String word) {
    WordTag w = new WordTag(word);
    w.setTag(POSTagWord(word));
    Morphology m = new Morphology();
    WordLemmaTag wT = m.lemmatize(w);

    return wT.lemma();
}

或者我应该使用任何其他软件来做到这一点?请建议我 提前谢谢

3 个答案:

答案 0 :(得分:8)

Stanford Parser根据上下文统计猜测单词的词性标记。你应该真正传入一个完整的句子,以确定在该句中,“搜索​​”是名词还是动词。

您只需获取完整的解析器即可获得词性标注。 Stanford POS Tagger就够了;它还包括Morphology类,但它也考虑了上下文。

如果您想要所有英语单词可以使用的词性标签,而不提供上下文,那么WordNet可能是更好的选择。它有几个Java接口,包括JWNLJWI

答案 1 :(得分:3)

WordNet就是你想要的。它为英语词典提供了一个API,可能包含词性,同义词,词义,上位词/下词关系等。

有关优秀的纯Java WordNet API,请参阅Yawni

答案 2 :(得分:1)

斯坦福大学的解析器在句子的上下文中解析单词。要使用“搜索”的例子,在任何给定的句子中,“搜索​​”将是名词或动词,但不是同一句子中的名词和动词。

您正在寻找的是字典查找。我找到了几个可以为您提供所需信息的在线词典。以下是 Free Online Dictionary 中“搜索”一词的示例。

事实证明,“搜索”可以是名词,动词,不及物动词和及物动词。

我找不到一个应用程序编程接口(API),它会提供与您在Free Online Dictionary网页上找到的相同类型的信息。如果您的词汇表列表有限,您可以构建自己的API。