2013-06-24 3 views
0

Я использую JWNL (1.4.1 rc2). Учитывая глагол, мне нужно найти «родственные» существительные. Например, учитывая глагол: bear Я хочу существительное birth.Получение всех существительных, связанных с глаголом в WordNet с использованием JWNL

Я вижу это через онлайн-интерфейс WordNet: http://wordnetweb.princeton.edu/perl/webwn?o2=&o0=1&o8=1&o1=1&o7=&o5=&o9=&o6=&o3=&o4=&s=bear&i=8&h=000100000000000000000#c. Как это будет сделано в JWNL.

ответ

1

Вы можете использовать Synset для каждого смысле этого слова, а затем распечатать слово в каждом Synset следующим образом:

 
IndexWord indexWord = proc.lookupBaseForm(POS.VERB,"bear"); 
int senseNum = 0; 
for(Synset synset: indexWord.getSenses()){ 
    senseNum++; 
    System.out.println("For sense: " + senseNum + " (" + synset.getGloss()+")"); 
    Word[] words = synset.getWords(); 
    for(Word word: words){ 
     System.out.println("\t"+word.getLemma()+"("+word.getPOS()+")"); 
    } 
} 

, который поможет вам это:

 
For sense: 1 (have; "bear a resemblance"; "bear a signature") 
    bear([POS: verb]) 
For sense: 2 (cause to be born; "My wife had twins yesterday!") 
    give_birth([POS: verb]) 
    deliver([POS: verb]) 
    bear([POS: verb]) 
    birth([POS: verb]) 
    have([POS: verb]) 
For sense: 3 (put up with something or somebody unpleasant; "I cannot bear his constant criticism"; "The new secretary had to endure a lot of unprofessional remarks"; "he learned to tolerate the heat"; "She stuck out two years in a miserable marriage") 
    digest([POS: verb]) 
    endure([POS: verb]) 
    stick_out([POS: verb]) 
    stomach([POS: verb]) 
    bear([POS: verb]) 
    stand([POS: verb]) 
    tolerate([POS: verb]) 
    support([POS: verb]) 
    brook([POS: verb]) 
    abide([POS: verb]) 
    suffer([POS: verb]) 
    put_up([POS: verb]) 
For sense: 4 (move while holding up or supporting; "Bear gifts"; "bear a heavy load"; "bear news"; "bearing orders") 
    bear([POS: verb]) 
For sense: 5 (bring forth, "The apple tree bore delicious apples this year"; "The unidentified plant bore gorgeous flowers") 
    bear([POS: verb]) 
    turn_out([POS: verb]) 
For sense: 6 (take on as one's own the expenses or debts of another person; "I'll accept the charges"; "She agreed to bear the responsibility") 
    bear([POS: verb]) 
    take_over([POS: verb]) 
    accept([POS: verb]) 
    assume([POS: verb]) 
For sense: 7 (contain or hold; have within; "The jar carries wine"; "The canteen holds fresh water"; "This can contains water") 
    hold([POS: verb]) 
    bear([POS: verb]) 
    carry([POS: verb]) 
    contain([POS: verb]) 
For sense: 8 (bring in; "interest-bearing accounts"; "How much does this savings certificate pay annually?") 
    yield([POS: verb]) 
    pay([POS: verb]) 
    bear([POS: verb]) 
For sense: 9 (have on one's person; "He wore a red ribbon"; "bear a scar") 
    wear([POS: verb]) 
    bear([POS: verb]) 
For sense: 10 (behave in a certain manner; "She carried herself well"; "he bore himself with dignity"; "They conducted themselves well during these difficult times") 
    behave([POS: verb]) 
    acquit([POS: verb]) 
    bear([POS: verb]) 
    deport([POS: verb]) 
    conduct([POS: verb]) 
    comport([POS: verb]) 
    carry([POS: verb]) 
For sense: 11 (have rightfully; of rights, titles, and offices; "She bears the title of Duchess"; "He held the governorship for almost a decade") 
    bear([POS: verb]) 
    hold([POS: verb]) 
For sense: 12 (support or hold in a certain manner; "She holds her head high"; "He carried himself upright") 
    hold([POS: verb]) 
    carry([POS: verb]) 
    bear([POS: verb]) 
For sense: 13 (be pregnant with; "She is bearing his child"; "The are expecting another child in January"; "I am carrying his child") 
    have_a_bun_in_the_oven([POS: verb]) 
    bear([POS: verb]) 
    carry([POS: verb]) 
    gestate([POS: verb]) 
    expect([POS: verb]) 

Но это весь глагол, так как мы ищем глаголы. Если вы хотите получить существительное (как видно из веб-версии), вы должны сделать еще несколько шагов.

Это называется «морфосемантические» связанные слова, которые определены в this file, как указано в Wordnet website. Вы можете создать свой собственный код для извлечения морфосемантически связанных слов, используя отображение, доступное в этом файле.

Поскольку это дополнительный файл за пределами стандартного дистрибутива WordNet, к сожалению, я считаю, что это не реализовано в JWNL, поэтому, вероятно, лучше всего, если вы можете просто создать простой код для получения сопоставления. Во-первых, вы можете преобразовать файл xls в CSV-файл с помощью любой программы для работы с электронными таблицами, такой как Excel. Тогда вам нужно будет получить ключ ощущения от этого чувства. К сожалению, JWNL (1.4.1 rc2) не имеет простого метода для получения ключа ощущения. Однако он включен в JWNL (1.4 rc3), который является методом getSenseKey(lemma) в классе Synset. Таким образом, если вы обновление до JWNL 1.4_rc3, вы можете сделать:

HashMap<String,ArrayList<String>> relatedWords = loadMorphosemanticFile(); 
... 
relatedWords.get(word.getSynset().getSenseKey(word.getLemma())) 

, который будет возвращать Список_массивов, состоящий из: birth%1:28:00::, birth%1:22:00:: и birth%1:11:00::, когда слово в смысле 2 bear (ключ медведь смысле birth % 2: 29: 01 :: родилась: «У моей жены были близнецы вчера!»), У которой есть ключ к ощущению% 2: 29: 00 ::, как видно на выходе с использованием JWNL 1.4 rc3 ниже:

 
For sense: bear%2:29:01:: (cause to be born; "My wife had twins yesterday!") 
    give_birth (give_birth%2:29:00::) 
    deliver (deliver%2:29:01::) 
    bear (bear%2:29:01::) 
    birth (birth%2:29:00::) 
    have (have%2:29:00::) 

Я получил это очень хорошие ресурсы от GrepCode

+0

WordNet 3.0 Standoff файлы: http://wordnet.princeton.edu/wordnet/download/standoff/ – myahya

+0

Вы помещаете этот комментарий в качестве примечания к себе? – justhalf

+0

Нет. Такая же ссылка в вашем сообщении - это https one, она не работает всегда. Stackoverflow не разрешает изменения с менее чем 6-значными изменениями. – myahya