2011-05-12 6 views
7

자바 기반 앱에서 워드 넷을 사용해야합니다. 내가 원하는 :Wordnet 유사성 : JAWS, JWNL 또는 Java WN : 유사성?

  • 검색 synset을

    내 애플은 RDF 그래프를 사용

synset을 사이

  • 찾기 유사성/관련성 나는 Wordnet는와 SPARQL 엔드 포인트가 알고 있지만, 그런 것 같아요 데이터 세트의 로컬 사본을 갖는 것이 낫습니다. 너무 큽니다.

    내가 찾은 다음 항아리 :

    내 앱에 대해 무엇을 권하고 싶습니까?

    일부 바인딩을 통해 Java 응용 프로그램의 Perl 라이브러리를 사용할 수 있습니까?

    감사합니다. Mulone

  • 답변

    12

    사용하기 쉽기 때문에 JAWS를 일반적인 단어 네트워크에 사용합니다. 그러나 유사성 메트릭의 경우 here에있는 라이브러리를 사용합니다. 또한 사전 처리 된 WordNet 및 코퍼스 데이터가 포함 된 this 폴더를 다운로드해야 작동 할 수 있습니다. 이 표현 synset을 각각의 가능한 조합 사이의 유사성 점수를 보여, 다음과 같이 인쇄됩니다

    JWS ws = new JWS("./lib", "3.0"); 
    Resnik res = ws.getResnik(); 
    TreeMap<String, Double> scores1 = res.res(word1, word2, partOfSpeech); 
    for(Entry<String, Double> e: scores1.entrySet()) 
        System.out.println(e.getKey() + "\t" + e.getValue()); 
    System.out.println("\nhighest score\t=\t" + res.max(word1, word2, partOfSpeech) + "\n\n\n"); 
    

    : 코드는 프로젝트 폴더에 다른 소위 "lib 디렉토리"에 해당 폴더를 배치 가정이처럼 사용할 수 있습니다 단어에 의해 비교 될 :

    hobby#n#1,gardening#n#1 2.6043996588901104 
    hobby#n#2,gardening#n#1 -0.0 
    hobby#n#3,gardening#n#1 -0.0 
    highest score = 2.6043996588901104 
    

    당신이 중 어떤 감각을 지정할 수있는 방법이있다/두 단어 : 당신이해야합니다, 그래서 res(String word1, int senseNum1, String word2, partOfSpeech) 등 불행히도, 소스 문서, JavaDoc을하지 않습니다 수동으로 검사하십시오. 소스는 here에서 다운로드 할 수 있습니다.

    가능한 알고리즘은 다음과 같습니다

    JWSRandom(ws.getDictionary(), true, 16.0);//random number for baseline 
    Resnik res = ws.getResnik(); 
    LeacockAndChodorowlch = ws.getLeacockAndChodorow(); 
    AdaptedLesk adLesk = ws.getAdaptedLesk(); 
    AdaptedLeskTanimoto alt = ws.getAdaptedLeskTanimoto(); 
    AdaptedLeskTanimotoNoHyponyms altnh = ws.getAdaptedLeskTanimotoNoHyponyms(); 
    HirstAndStOnge hso = ws.getHirstAndStOnge(); 
    JiangAndConrath jcn = ws.getJiangAndConrath(); 
    Lin lin = ws.getLin(); 
    WuAndPalmer wup = ws.getWuAndPalmer(); 
    

    또한, JAR 파일을 가지고 당신을 필요로 MIT의 JWI

    +0

    하나의주의 사항. http://www.cogs.susx.ac.uk/users/drh21/에서 패키지를 얻으면 11.02 대신 베타 11.01을 얻을 수 있습니다. –

    +0

    @mj_ : 왜 11.01이지 11.02가 아니겠습니까? – damned

    +0

    위의 코드는 서로 다른 synsets 사이의 유사성을 제공합니까 ?? – Noor

    0

    JAWS 또는 JWNL 중 하나가 synsets 사이의 유사성을 계산하는 방법을 제공하는지 확실하지 않지만 synsets 검색에 모두 시도했지만 JAWS를 사용하기가 쉽습니다. 간단히 말해서 :

    // Specifying the Database Directory 
        System.setProperty("wordnet.database.dir", "C:/WordNet/2.1/dict/"); 
    

    내가 JWNL의 file_properties.xml 요구 사항보다 더 쉽게 이해할 수있었습니다.

    1

    유사한 wordForms 다음은 자세한 내용은 찾을 수 JAWS의 기능이있다 :

    공개 AdjectiveSynset [] getSimilar()는 WordNetException을 던집니다. 체크 아웃 할 수있는 링크는 다음과 같습니다. this link it details cont thails details th 당신이 사용할 수 있습니다.