Синнетов Wordnet с использованием Perl - PullRequest
7 голосов
/ 16 августа 2011

Я установил Wordnet :: Сходство и Wordnet :: QueryData в качестве простого способа вычисления оценки и вероятности информационного контента, который поставляется с этими модулями.Но я застрял в этой основной проблеме: задав слово, выведите n слов, похожих на него - что не должно быть сложно, если перебирать синтаксис и делать join.

с помощью команды wn иЯ могу получить все слова:

 wn cat -synsn | grep -v Sense | tr '=' ' ' | tr '>' ' ' | tr '\t' ' ' | tr ',' '\n' | sort | uniq

ВЫВОД

8 senses of cat                                                         
adult female
adult male
African tea
Arabian tea
big cat
bozo
cat
cat
CAT
Caterpillar
cat-o'-nine-tails
 computed axial tomography
computed tomography
computerized axial tomography
computerized tomography
CT
excitant
felid
      feline
      gossip
gossiper
gossipmonger
guy
hombre
kat
khat
      man
newsmonger
qat
quat
rumormonger
rumourmonger
      stimulant
stimulant drug
Synonyms/Hypernyms (Ordered by Estimated Frequency) of noun cat
      tracked vehicle
true cat
      whip
      woman
X-radiation
      X-raying

, но это довольно неприятнои нуждается в дальнейшей уборке.

Ниже показан мой сценарий, и я хочу получить все слова в cat # n1 ... 8.

СКРИПТ

use WordNet::QueryData;

my $wn = WordNet::QueryData->new( noload => 1);

print "Senses: ", join(", ", $wn->querySense("cat#n")), "\n";
print "Synset: ", join(", ", $wn->querySense("cat", "syns")), "\n";
print "Hyponyms: ", join(", ", $wn->querySense("cat#n#1", "hypo")), "\n";

ВЫХОД:

Senses: cat#n#1, cat#n#2, cat#n#3, cat#n#4, cat#n#5, cat#n#6, cat#n#7, cat#n#8
Synset: cat#n, cat#v
Hyponyms: domestic_cat#n#1, wildcat#n#3

СКРИПТ

use WordNet::QueryData;
my $wn = WordNet::QueryData->new;

foreach $word (qw/cat#n/) {

    @senses = $wn->querySense($word);

    foreach $wps (@senses) {
            @gloss = $wn -> querySense($wps, "syns");
            print "$wps : @gloss\n";
    }

}

ВЫХОД:

cat#n#1 : cat#n#1 true_cat#n#1
cat#n#2 : guy#n#1 cat#n#2 hombre#n#1 bozo#n#2
cat#n#3 : cat#n#3
cat#n#4 : kat#n#1 khat#n#1 qat#n#1 quat#n#1 cat#n#4 Arabian_tea#n#1 African_tea#n#1
cat#n#5 : cat-o'-nine-tails#n#1 cat#n#5
cat#n#6 : Caterpillar#n#2 cat#n#6
cat#n#7 : big_cat#n#1 cat#n#7
cat#n#8 : computerized_tomography#n#1 computed_tomography#n#1 CT#n#2 computerized_axial_tomography#n#1 computed_axial_tomography#n#1 CAT#n#8

PS Я никогда раньше не писал perl, но с утра изучал скрипты perl - и теперь могу понять основные вещи.Просто нужно знать, есть ли более чистый способ сделать это, используя api docs - не могу понять из архивов api или группы пользователей.

Обновление:

Я думаю, что я согласен с:

 wn cat -synsn | sed '1,6d' |sed 's/Sense [[:digit:]]//g' | sed 's/[[:space:]]*=> //' | sed '/^$/d'

седые камни!

Ответы [ 2 ]

4 голосов
/ 22 августа 2011

Я думаю, вы найдете следующую информацию ...

http://marimba.d.umn.edu/WordNet-Pairs/

Каковы N наиболее похожих слов на X, согласно WordNet?

Эти данные пытаются ответить на этот вопрос, где сходство основано на меры из WordNet :: Сходство. http://wn -similarity.sourceforge.net

-------------- данные глагола

Эти файлы были созданы с помощью WordNet :: Сходство версии 2.05 с использованием WordNet 3.0. Они показывают все найденные парные сходства глаголов в WordNet в соответствии с параметрами path, wup, lch, lin, res и jcn. Path, wup и lch основаны на пути, в то время как res, lin и jcn основаны по содержанию информации.

По состоянию на 15 марта 2011 г. попарные меры для всех глаголов с использованием шести вышеуказанные меры доступны, каждый в своем собственном файле .tar. Каждый * .tar Файл называется WordNet-глагол-глагол-MEASURE-pair.tar и составляет около 2,0 - 2,4 ГБ сжатых. В каждом из этих файлов .tar вы найдете 25,047 файлов, по одному на каждое значение глагола. Каждый файл состоит из 25 048 строк, где каждая строка (кроме первой) содержит смысл глагола WordNet и сходство со смыслом, указанным в этом конкретном файле. дела математика здесь, вы обнаружите, что каждый файл .tar содержит около 625 000 000 попарные значения подобия. Обратите внимание, что они симметричны (sim (A, B) = sim (B, A)), поэтому у вас есть чуть более 300 миллионов уникальных значений.

-------------- данные существительного

По состоянию на 19 августа 2011 года попарные меры для всех существительных, использующих путь мера доступны. Этот файл называется WordNet-существительное-путь-пары.tar. Это примерно 120 ГБ сжатых. В этом файле вы найдете 146 312 файлов, по одному на каждый смысл существительного. Каждый файл состоит из 146 313 строк, где каждая строка (кроме первой) содержит WordNet смысл существительный и сходство со смыслом, показанным в этом конкретном файл. Делая здесь математику, вы обнаружите, что каждый файл .tar содержит около 21 000 000 000 парных значений подобия. Обратите внимание, что эти симметричны (сим (A, B) = сим (B, A)), поэтому у вас есть около 10 миллиардов уникальные ценности.

В настоящее время мы запускаем wup, res и lesk, но не имеем предполагаемая дата доступности пока.

0 голосов
/ 21 августа 2011

Поместите это скрипт, скажем synonym.sh

wn $1 -synsn | sed '1,6d' |sed 's/Sense [[:digit:]]//g' | sed 's/[[:space:]]*=> //' | sed '/^$/d' | sed 's/ //g' | grep -iv $1 | tr '\n' ',' 
wn $1 -synsv | sed '1,6d' |sed 's/Sense [[:digit:]]//g' | sed 's/[[:space:]]*=> //' | sed '/^$/d' | sed 's/ //g' | grep -iv $1 | tr '\n' ',';echo 

Из вашего скрипта Perl

system("/path/synonym.sh","kittens");
system("/path/synonym.sh","cats");
...