java - BabelNet 2.5路径索引配置错误

标签 java word-sense-disambiguation

按照此 page 中的所有步骤进行操作和 this ,我已经在 Eclipse 中为 Windows 配置了 BabelNet。

它工作正常并加载来自 BabelNet 的所有同义词集。然后它需要knowldgeBasePathIndex并开始加载。在第一个链接中指定如下:

这开始运行,但失败,因为在尝试加载知识库时找不到称为“路径索引”的东西。可以通过在 config/knowledge.var.properties 中添加一行来指定路径索引的位置: knowledge.graph.pathIndex=C:/Program Files/BabelNet/data

我对此有两个疑问:

  1. BabelNet 3.0 中没有knowledge.var.properties 文件。所以,我切换到 BabelNet 2.5。

  2. BabelNet 2.5 中没有 data 这样的文件夹,但 BabelNet 3.0 中有一个。然而,它们仍然没有路径索引。

因此程序停止运行。

有人可以就此提供建议吗?

谢谢。

程序在这里:

public static void disambiguate(Collection<Word> words, KnowledgeBase kb, KnowledgeGraphScorer scorer) 
    {
        try
        {
        BabelNet bn = BabelNet.getInstance();
        System.out.println("SYNSETS WITH English word: \"bank\"");
        List<BabelSynset> synsets = bn.getSynsets(Language.EN, "bank");
        for (BabelSynset synset : synsets)
        {
        System.out.print(" =>(" + synset.getId() + ") SOURCE: " + synset.getSynsetSource() +"; WN SYNSET: " + synset.getWordNetOffsets() +";\n SENSES (EN): { ");
        for (BabelSense sense : synset.getSenses(Language.EN))
        System.out.print(sense.toString()+" ");
        System.out.println("}\n -----");
        Map<IPointer, List<BabelSynset>> relatedSynsets = synset.getRelatedMap();
        for (IPointer relationType : relatedSynsets.keySet()) 
        {
        List<BabelSynset> relationSynsets = relatedSynsets.get(relationType);
        for (BabelSynset relationSynset : relationSynsets) 
        {
        System.out.println(" EDGE " + relationType.getSymbol() +" " + relationSynset.getId() +" " + relationSynset.toString(Language.EN));
        }
        }
        System.out.println(" -----");
        KnowledgeGraphFactory factory = KnowledgeGraphFactory.getInstance(kb);
        KnowledgeGraph kGraph = factory.getKnowledgeGraph(words);
        Map<String, Double> scores = scorer.score(kGraph);
        for (String concept : scores.keySet()) 
        {
        double score = scores.get(concept);
        for (Word word : kGraph.wordsForConcept(concept))
        word.addLabel(concept, score);
        }
        for (Word word : words) 
        {
        System.out.println("\n\t" + word.getWord() + " -- ID " + word.getId() +" => SENSE DISTRIBUTION: ");
        for (ScoredItem<String> label : word.getLabels()) 
        {
        System.out.println("\t [" + label.getItem() + "]:" +Strings.format(label.getScore()));
        }
        }
        }
        }
        catch(IOException ioe)
        {
            System.out.println("Trouble: " + ioe.getMessage());
        } 
}
public static void main(String[] args) {
List<Word> sentence = Arrays.asList(new Word[]{new Word("bank", ’n’,     Language.EN), new Word("bonus", ’n’, Language.EN),new Word("pay", ’v’, Language.EN), new Word("stock", ’n’, Language.EN)});
disambiguate(sentence, KnowledgeBase.BABELNET, KnowledgeGraphScorer.DEGREE);
}

最佳答案

BabelNet API 2.5.1 中已弃用知识工厂,并且“预编译索引包 v2.5.1”不是该工厂的必要索引。 BabelNet 1.1 之后我们还没有发布“BabelNet 路径索引”。

对于 WSD 任务,请使用 Babelfy (babelfy.org)

关于java - BabelNet 2.5路径索引配置错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29151096/

相关文章:

java - 正则表达式过滤所有内部括号表达式

Java MySQL JDBC 内存泄漏

java - 使用 gson 解析 JSONObject

nlp - 如何提取某个单词的各种含义

nlp - 如何消除 Conceptnet 中的单词歧义

nlp - 我想创建一个系统,我给出一个句子,系统会吐出与我给出的输入句子含义相似的句子

python - 使用 WordNet 进行词义消歧。如何选择与相同含义相关的单词?

java - ResultSet 无法与 Java 中的PreparedStatement 一起使用

java - Java中unicode值的序列与正则表达式的匹配