【问题标题】:How to use Stanford CoreNLP POS-tags to retrieve synsets from WordNet?如何使用 Stanford CoreNLP POS-tags 从 WordNet 中检索同义词集?
【发布时间】:2015-10-23 16:33:02
【问题描述】:

我在 Eclipse 和斯坦福 CoreNLP 中使用 Java。我想知道如何使用斯坦福 CoreNLP 生成的 POS 标签,从 WordNet 中检索标记词的同义词集。 (我在 POS 标记之前对句子进行了标记)

由于 WordNet 有 POS 标记的同义词集,我假设它可以完成。我也查了一些教程,但没有什么太大帮助。

【问题讨论】:

  • 首先,我想从所有标记的单词中过滤掉名词、动词和形容词,然后将它们用于上述目的。
  • 所以,我解决了它。由于 WN 使用 Penn Treebank 表示法,我编写了一个方法来获取每个相关标签的同义词集。
  • 我不确定您使用 Penn Treebank 表示法的 WN 是什么意思;但根据另一个线程,我的建议是实现 Lesk 算法的一个变体,或者看看最常见的基线是否工作得足够好,是否有用。

标签: java stanford-nlp wordnet pos-tagger


【解决方案1】:

以下代码获取 searchWord+POS 标签的所有同义词集,然后从中打印它们的注释。您可以更改 POS.NOUN 以搜索其他形式的搜索词:

public int stackoverflow(String searchWord) throws IOException {
        String s = null;
        IDictionary dict = dicitionaryFactory();
        try {

            IIndexWord idxWord = dict.getIndexWord(searchWord, POS.NOUN);
            for (int i = 0; i < idxWord.getWordIDs().size(); i++) {
            IWordID wordID = idxWord.getWordIDs().get(i); // ist meaning
            edu.mit.jwi.item.IWord word = dict.getWord(wordID);
            edu.mit.jwi.item.ISynset synset = word.getSynset();
            List<edu.mit.jwi.item.IWord> words;
            System.out.println(synset.getGloss());

            }
            return -1;
        } catch (Exception e) {
            return -2;
        }
    }

【讨论】:

    猜你喜欢
    • 2017-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多