【问题标题】:Docs for java ws4j libraryjava ws4j 库的文档
【发布时间】:2013-06-18 10:15:07
【问题描述】:

我正在编写一个使用 Java 进行抄袭检测的​​项目,在这种情况下,第一步我需要执行以下任务:

输入文件(txt、.pdf、.doc)

将文件内容转换为文本

将停用词标记化为 n-gram

处理文本上的文本相似性算法

报告抄袭检测迹象

我通过自己编码完成了这些步骤,但现在我觉得它缺乏很多性能,所以我开始在我的工作中使用可用的 API es, 有没有与ws4j library 合作过的人?有任何可用的文档或帮助吗?我不能重复使用它。这正是我想要的,看看demo

【问题讨论】:

    标签: java api information-retrieval wordnet ws4j


    【解决方案1】:

    除了您可以在网站上看到的内容外,我找不到任何文档。我建议您首先查看code(使用 SVN 或 git 来查看)。请注意,您需要二进制发行版,因为源代码不完整。

    简单的教程适用于大多数情况。您可能已经在源代码中找到了它:

    double s = rc.calcRelatednessOfWords("jump", "stand");
    

    如果您想比较特定的同义词集,您必须先创建一个Concept。最常见的“跳跃”示例:

    String word = "jump";
    List<Synset> synsets = WordNetUtil.wordToSynsets(word, POS.v);
    Synset mysynset = synsets.get(0);       
    Concept co = new Concept(mysynset.getSynset(), POS.v, mysynset.getName(), mysynset.getSrc());
    

    该库实际上并不像在线演示那样工作。为了使用同义词的典型表示法,我使用我自己的实用程序方法。因此比较特定的同义词集如下所示:

    Concept stand = new Concept(getSynset("stand#v#1"), POS.v);
    Concept jump = new Concept(getSynset("jump#v#1"), POS.v);
    double score = compare(comparer, co, stand);
    // done!    
    
    // utility
    private static double compare(RelatednessCalculator comparer, Concept one,
            Concept other) throws Exception {
        Relatedness res = comparer.calcRelatednessOfSynset(one, other);
        if(StringUtils.isNotBlank(res.getError()))
        {
            throw new Exception ("WordNET similiarity for " + one + " and " + other + " failed with this error: "+ res.getError() + "\n" + res.getTrace());
        }
        return res.getScore();
    }
    
    /**
     * 
     * @param wordnetword a string of the format lemma#pos#num. E.g. jump#v#1 or house#n#2
     * @return a synset identifier for WS4J
     */
    private static Concept getSynset(String wordnetword) {
        String[] parts = StringUtils.split(wordnetword, "#");
        String lemma = parts[0];
        POS mypos = POS.valueOf(parts[1]);
        int index = Integer.parseInt(parts[2]) - 1;
        List<Synset> synsets = WordNetUtil.wordToSynsets(lemma, mypos);
        Synset synset = synsets.get(index);
        String synstring = synset.getSynset();
        return new Concept(synstring, mypos, lemma, synset.getSrc());
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-04
      • 2016-11-09
      • 1970-01-01
      • 2020-06-16
      • 2017-01-06
      相关资源
      最近更新 更多