首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用dkpro语义相似度与uby

使用dkpro语义相似度与uby
EN

Stack Overflow用户
提问于 2017-03-03 19:16:40
回答 1查看 181关注 0票数 0

我想用dkpro相似性(https://dkpro.github.io/dkpro-similarity/)计算字符串之间的相似度,它的工作原理如下:

代码语言:javascript
运行
复制
import org.dkpro.similarity.algorithms.api.SimilarityException;
import org.dkpro.similarity.algorithms.api.TextSimilarityMeasure;
import org.dkpro.similarity.algorithms.lsr.LexSemResourceComparator;
import org.dkpro.similarity.algorithms.lsr.gloss.GlossOverlapComparator;
import org.dkpro.similarity.algorithms.lsr.path.JiangConrathComparator;
import org.dkpro.similarity.algorithms.lsr.path.LeacockChodorowComparator;
import org.dkpro.similarity.algorithms.lsr.path.LinComparator;
import org.dkpro.similarity.algorithms.lsr.path.ResnikComparator;
import org.dkpro.similarity.algorithms.lsr.path.WuPalmerComparator;

import de.tudarmstadt.ukp.dkpro.lexsemresource.LexicalSemanticResource;
import de.tudarmstadt.ukp.dkpro.lexsemresource.core.ResourceFactory;
import de.tudarmstadt.ukp.dkpro.lexsemresource.exception.LexicalSemanticResourceException;
import de.tudarmstadt.ukp.dkpro.lexsemresource.exception.ResourceLoaderException;
import learninggoals.analysis.controller.settingtypes.SimilarityAlgorithm;



public class SemResourceComparator implements WordsComparator{
private LexicalSemanticResource resource;
private LexSemResourceComparator comparator;

//en lang
public SemResourceComparator(String resourcetype, SimilarityAlgorithm algorithm, String lang) {

        try {
            resource = ResourceFactory.getInstance().get(resourcetype, lang);
        } catch (ResourceLoaderException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        try {
        switch(algorithm){
        /*case ESA://this is vector
            comparator = new GlossOverlapComparator(resource, false);
            break;*/
        case GLOSSOVERLAP:          

            comparator = new GlossOverlapComparator(resource, false);
            break;
        case JIANG_CONRATH:
            comparator = new JiangConrathComparator(resource, resource.getRoot());
            break;
        case LEACOCK_CHODOROW:
            comparator = new LeacockChodorowComparator(resource);
            break;
        case LIN:
            comparator = new LinComparator(resource, resource.getRoot());
            break;
        case RESNIK:
            comparator = new ResnikComparator(resource, resource.getRoot());
            break;
        case WUPALMER:
            comparator = new WuPalmerComparator(resource, resource.getRoot());
            break;
        default:
            break;

        }
        } catch (LexicalSemanticResourceException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

}

@Override
public double compareWords(String w1, String w2) {

   try {
    return comparator.getSimilarity(resource.getEntity(w1), resource.getEntity(w2));
} catch (SimilarityException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} catch (LexicalSemanticResourceException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
   return 0;
}

我用这门课是这样的

代码语言:javascript
运行
复制
double intermscore = comparator.compareWords(word1, word2);

我使用LexicalSemanticResource作为比较资源,它可以是wordnet,wikipedia,germanet等。现在我注意到我需要的所有资源都在uby (https://www.ukp.tu-darmstadt.de/data/lexical-resources/uby/https://github.com/dkpro/dkpro-uby/blob/master/de.tudarmstadt.ukp.uby.lmf.api-asl/src/main/java/de/tudarmstadt/ukp/lmf/api/Uby.java)。

我的问题是:我能否用来自uby的资源替换资源,这样我就不必每次需要新资源时再次包含新资源了吗?因此,我不想使用ResourceFactory.getInstance().get("wordnet"),而是想使用uby资源,所以像新的Uby().getLexicalResource("wordnet")之类的东西--但是来自uby的词汇资源与我现在用于语义比较的LexicalSemanticResource不一样。因此:我不使用例如LexicalSemanticResource字网,我想使用来自uby的字网作为比较器。有办法这样做吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-06 18:45:01

目前没有办法做到这一点。Uby资源和LSR资源不兼容。

曾经有过改变的计划,但是这个问题已经有一段时间了:https://github.com/dkpro/dkpro-similarity/issues/39

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42586764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档