2 Pertanyaan: Sinkronisasi Wordnet menggunakan perl

pertanyaan dibuat di Tue, Aug 16, 2011 12:00 AM

Saya memasang Wordnet :: Kemiripan dan Wordnet :: QueryData sebagai cara mudah untuk menghitung skor konten konten informasi dan probabilitas yang datang dengan modul-modul ini. Tapi saya terjebak pada masalah mendasar ini: diberi kata, mencetak dan kata-kata yang mirip dengannya - yang seharusnya tidak sulit untuk diulang melalui sinkronisasi dan melakukan join.

menggunakan perintah wn dan memipisnya dengan jumlah keseluruhan tr, sort | uniq saya bisa mendapatkan semua kata-kata:

 
 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

tapi itu agak jahat, dan perlu dibersihkan lebih lanjut.

Seperti apa skrip saya di bawah ini, dan yang ingin saya dapatkan adalah semua kata dalam 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";

OUTPUT:

 
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";
    }

}

OUTPUT:

 
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

P.S. Saya belum pernah menulis perl sebelumnya, tetapi telah melihat skrip perl sejak pagi - dan sekarang dapat memahami hal-hal dasar. Hanya perlu tahu apakah ada cara yang lebih bersih untuk melakukan ini menggunakan api docs - tidak dapat mengetahui dari api atau arsip grup pengguna.

Perbarui:

Saya pikir saya akan puas dengan:

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

sed batuan!

    

7
  1. Berikan beberapa input /output sampel dan Anda akan mendapatkan jawaban yang lebih baik dengan lebih cepat.
    2011-08-15 22: 21: 14Z
  2. Terima kasih atas tipnya @TLP: D .. menambahkan beberapa hal!
    2011-08-15 22: 45: 09Z
  3. Output Anda sepertinya tidak ada hubungannya dengan kucing.
    2011-08-15 23: 00: 08Z
  4. ya ... salahku. diedit.
    2011-08-15 23: 04: 22Z
  5. Oleh, pada sebagian besar kasus sederhana, sed a | sed b biasanya dapat digabungkan menjadi skrip sed sed -e a -e b tunggal.
    2011-08-21 17: 57: 58Z
2 Jawaban                              2                         

Saya pikir Anda akan menemukan hepful berikut ...

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

Apa kata N yang paling mirip dengan X, menurut WordNet?

Data ini berupaya menjawab pertanyaan itu, di mana kesamaan itu didasarkan tindakan dari WordNet :: Kesamaan. http://wn-similarity.sourceforge.net

-------------- data kata kerja

File-file ini dibuat dengan menggunakan WordNet :: Similarity versi 2.05 WordNet 3.0. Mereka menunjukkan semua kesamaan kata kerja-kata kerja berpasangan yang ditemukan di WordNet sesuai dengan langkah-langkah path, wup, lch, lin, res, dan jcn. Path, wup, dan lch berbasis path, sedangkan res, lin, dan jcn berbasis pada konten informasi.

Pada 15 Maret 2011, pengukuran berpasangan untuk semua kata kerja menggunakan keenam langkah-langkah di atas tersedia, masing-masing dalam file .tar mereka sendiri. Setiap * .tar file dinamai WordNet-kata kerja-kata kerja-MEASURE-pairs.tar, dan kira-kira 2,0 - 2,4 GB dikompresi. Di masing-masing file .tar ini Anda akan menemukan 25.047 file, satu untuk setiap arti kata kerja. Setiap file terdiri dari 25.048 baris, di mana setiap baris (kecuali yang pertama) berisi arti kata kerja WordNet dan kesamaan dengan arti yang ditampilkan dalam file tertentu. Perbuatan matematika di sini, Anda menemukan bahwa setiap file .tar berisi sekitar 625.000.000 nilai kesamaan berpasangan. Perhatikan bahwa ini simetris (sim (A, B) = sim (B, A)) sehingga Anda memiliki lebih dari 300 juta nilai unik.

-------------- kata benda data

Pada 19 Agustus 2011, pengukuran berpasangan untuk semua kata benda menggunakan path ukuran tersedia. File ini bernama WordNet-noun-noun-path-pairs.tar. Itu sekitar 120 GB terkompresi. Dalam file ini Anda akan menemukan 146.312 file, satu untuk setiap notidak masuk akal. Setiap file terdiri dari 146.313 baris, di mana setiap baris (kecuali yang pertama) berisi WordNet sense kata benda dan kesamaan dengan sense yang ditampilkan dalam hal itu mengajukan. Melakukan perhitungan matematika di sini, Anda menemukan bahwa setiap file .tar berisi sekitar 21.000.000.000 nilai kemiripan berpasangan. Perhatikan ini simetris (sim (A, B) = sim (B, A)) sehingga Anda memiliki sekitar 10 miliar nilai-nilai unik.

Saat ini kami menjalankan wup, res, dan lesk, tetapi tidak memiliki perkiraan tanggal ketersediaan.

    
4
2011-08-22 14: 15: 26Z
  1. Oke ..Apakah Anda Prof. Predersen dari UMN? Saya tidak benar-benar tahu bagaimana mengendalikan kegembiraan saya - /saya penggemar: D. Dan saya akan merasa terhormat mengubah ini sebagai jawaban yang benar! Woot!
    2011-08-22 16: 06: 13Z
  2. Saya tidak berpikir ada orang yang mau menyamar sebagai saya, jadi ya, ini saya. :) Tolong jangan ragu untuk bertanya lebih lanjut melalui milis kami atau langsung - kami cukup cepat untuk sampai ke sana, dan saya benar-benar hanya menemukan pertanyaan di sini secara tidak sengaja. wn-similarity.sourceforge.net untuk detail lebih lanjut.
    2011-08-22 21: 46: 21Z
  3. Saya berharap saya memiliki akses ke ini sebelumnya ... dengan tenggat waktu semakin dekat, bertanya-tanya apakah saya bisa menyelesaikannya. (Lari ke penasihat: P)
    2011-08-23 16: 36: 03Z

Masukkan ini skrip, ucapkan sinonim.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 

Dari skrip perl Anda

 
system("/path/synonym.sh","kittens");
system("/path/synonym.sh","cats");
    
0
2011-08-21 13: 06: 35Z
  1. Saya dihadapkan dengan tantangan yang sama, tetapi saya tidak bisa menjalankannya. Saya membuat file synonym.sh, dan memasukkan kedua perintah itu dalam Script Perl.
    2013-10-17 01: 12: 00Z
sumber ditempatkan sini