Java BabelNet 2.5路径索引配置中出错

Java BabelNet 2.5路径索引配置中出错,java,word-sense-disambiguation,Java,Word Sense Disambiguation,按照本文和中的所有步骤,我已经在Eclipse中为Windows配置了BabelNet 它工作正常,从BabelNet加载所有synset。然后它需要knowldgeBasePathIndex并开始加载。在第一个链接中,规定如下: 它开始运行,但失败了,因为它在尝试加载知识库时找不到称为“路径索引”的内容。路径索引的位置可以通过在config/knowledge.var.properties中放置一行来指定: knowledge.graph.pathIndex=C:/Program Files/

按照本文和中的所有步骤,我已经在Eclipse中为Windows配置了BabelNet

它工作正常,从BabelNet加载所有synset。然后它需要knowldgeBasePathIndex并开始加载。在第一个链接中,规定如下:

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

我对此有两个疑问:

  • BabelNet 3.0中没有knowledge.var.properties文件。所以,我换成了BabelNet 2.5

  • BabelNet 2.5中没有数据文件夹,但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);
    }
    
    publicstaticvoid消歧(集合词、知识库知识库、知识图记分器记分器)
    {
    尝试
    {
    BabelNet bn=BabelNet.getInstance();
    System.out.println(“带有英文单词的synset:“bank\”);
    List synsets=bn.getSynsets(Language.EN,“bank”);
    for(BabelSynset-synset:synset)
    {
    System.out.print(“=>(“+synset.getId()+”)源:“+synset.getSynsetSource()+”;WN-synset:“+synset.getWordNetOffsets()+”;\n感官(EN):{”);
    for(BabelSense sense:synset.getsense(Language.EN))
    System.out.print(sense.toString()+);
    System.out.println(“}\n-----”);
    Map relatedSynsets=synset.getRelatedMap();
    对于(IPInter relationType:relatedSynsets.keySet())
    {
    List relationSynsets=relatedSynsets.get(relationType);
    for(BabelSynset relationSynset:relationSynset)
    {
    System.out.println(“EDGE”+relationType.getSymbol()+“”+relationSynset.getId()+“”+relationSynset.toString(Language.EN));
    }
    }
    System.out.println(“----”);
    KnowledgeGraphFactory工厂=KnowledgeGraphFactory.getInstance(kb);
    KnowledgeGraph kGraph=factory.getKnowledgeGraph(文字);
    地图得分=记分员得分(kGraph);
    for(字符串概念:scores.keySet())
    {
    double score=分数。获取(概念);
    for(单词:kGraph.wordsForConcept(概念))
    添加标签(概念、分数);
    }
    for(单词:单词)
    {
    System.out.println(“\n\t”+word.getWord()+”--ID“+word.getId()+”=>SENSE-DISTRIBUTION:”);
    for(ScoredItem标签:word.getLabels())
    {
    System.out.println(“\t[”+label.getItem()+”]:“+Strings.format(label.getScore());
    }
    }
    }
    }
    捕获(ioe异常ioe)
    {
    System.out.println(“故障:+ioe.getMessage());
    } 
    }
    公共静态void main(字符串[]args){
    列表语句=数组.asList(新词[]{新词(“银行”,“n”,Language.EN”)、新词(“奖金”,“n”,Language.EN”)、新词(“支付”,“v”,Language.EN”)、新词(“股票”,“n”,Language.EN”);
    消除歧义(句子,KnowledgeBase.BABELNET,KnowledgeGraphScorer.DEGREE);
    }
    
    BabelNet API 2.5.1中不推荐使用知识工厂,“预编译索引束v2.5.1”不是该工厂的必要索引。在BabelNet 1.1之后,我们还没有发布“BabelNet路径索引”

    水务署的任务请使用(babelfy.org)