7

これらのモジュールに付属する情報コンテンツのスコアと確率を計算する簡単な方法として、 Wordnet ::SimilarityWordnet::QueryDataをインストールしました。しかし、私はこの基本的な問題に固執しています。単語が与えられたら、それに類似したn個の単語を出力します。これは、シンセットを繰り返し処理して実行することは難しくありませんjoin

コマンドを使用し、wnそれをたくさんのパイプでつなぐと、trすべてsort | uniqの単語を取得できます。

 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ドキュメントを使用してこれを行うためのよりクリーンな方法があるかどうかを知る必要があります-APIまたはユーザーグループのアーカイブから理解できませんでした。

アップデート:

私は次のように解決すると思います:

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

sed rocks!

4

2 に答える 2

4

私はあなたが次のような大げさなものを見つけると思います...

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

WordNetによると、Xに最も類似しているN個の単語は何ですか?

このデータは、類似性がWordNet::Similarityの測定値に基づいているという質問に答えることを目的としています。http://wn-similarity.sourceforge.net

--------------動詞データ

これらのファイルは、WordNet3.0を使用してWordNet::Similarityバージョン2.05で作成されました。これらは、パス、wup、lch、lin、res、およびjcnの測定値に従って、WordNetで見つかったすべてのペアワイズ動詞-動詞の類似性を示しています。path、wup、およびlchはパスベースですが、res、lin、およびjcnは情報コンテンツに基づいています。

2011年3月15日の時点で、上記の6つのメジャーを使用したすべての動詞のペアワイズメジャーが利用可能であり、それぞれが独自の.tarファイルに含まれています。各*.tarファイルはWordNet-verb-verb-MEASURE-pairs.tarという名前で、約2.0〜2.4GB圧縮されています。これらの各.tarファイルには、動詞の意味ごとに1つずつ、25,047個のファイルがあります。各ファイルは25,048行で構成されており、各行(最初の行を除く)には、WordNetの動詞の意味と、その特定のファイルで取り上げられている意味との類似性が含まれています。ここで計算を行うと、各.tarファイルに約625,000,000のペアワイズ類似度値が含まれていることがわかります。これらは対称であるため(sim(A、B)= sim(B、A))、3億を少し超える一意の値があることに注意してください。

--------------名詞データ

2011年8月19日の時点で、パスメジャーを使用したすべての名詞のペアワイズメジャーが利用可能です。このファイルの名前はWordNet-noun-noun-path-pairs.tarです。約120GB圧縮されています。このファイルには、名詞の意味ごとに1つずつ、146,312個のファイルがあります。各ファイルは146,313行で構成されており、各行(最初の行を除く)には、WordNetの名詞の意味と、その特定のファイルで取り上げられている意味との類似性が含まれています。ここで計算を行うと、各.tarファイルに約21,000,000,000のペアワイズ類似度値が含まれていることがわかります。これらは対称であるため(sim(A、B)= sim(B、A))、約100億の一意の値があることに注意してください。

現在、wup、res、leskを実行していますが、利用可能になる予定の日付はまだありません。

于 2011-08-22T14:15:26.133 に答える
0

これはスクリプトです、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");
于 2011-08-21T13:06:35.790 に答える