使用perl的Wordnet语法集

使用perl的Wordnet语法集,perl,wordnet,Perl,Wordnet,我安装了和,作为计算这些模块附带的信息内容分数和概率的简单方法。但我被困在这个基本问题上:给定一个单词,打印n个与之类似的单词-这应该不难,因为迭代语法集并执行连接 使用wn命令并将其与大量tr,sort | uniq进行配管,我可以得到所有单词: wn cat -synsn | grep -v Sense | tr '=' ' ' | tr '>' ' ' | tr '\t' ' ' | tr ',' '\n' | sort | uniq 输出 8 senses of cat

我安装了和,作为计算这些模块附带的信息内容分数和概率的简单方法。但我被困在这个基本问题上:给定一个单词,打印n个与之类似的单词-这应该不难,因为迭代语法集并执行
连接

使用
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
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";
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#n1…8中的所有单词

脚本

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

}
输出:

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

脚本

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

附言。 我以前从未编写过perl,但从早上开始就开始研究perl脚本,现在可以理解基本内容了。只需要知道是否有更干净的方法使用api文档来实现这一点-无法从api或用户组存档中找到

更新:

我想我会满足于:

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

塞德岩石

这是一个脚本,比如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");

我想你会发现下面的内容很好

根据WordNet,N个与X最相似的单词是什么

这些数据试图回答这个问题,相似性是基于什么 来自WordNet::相似度的度量

--------------动词数据 这些文件是使用WordNet::Similarity 2.05版创建的 WordNet 3.0。它们显示了所有发现的成对动词相似性 在WordNet中,根据路径、wup、lch、lin、res和jcn度量。 路径、wup和lch基于路径,而res、lin和jcn基于路径 关于信息内容

截至2011年3月15日,所有动词使用六个 上述措施都是可用的,每个措施都在各自的.tar文件中。每个*.tar 文件名为WordNet-verb-verb-MEASURE-pairs.tar,约为 2.0-2.4 GB压缩。在每个.tar文件中都可以找到 25047个文件,每个动词意义一个。每个文件由25048行组成, 其中每一行(第一行除外)都包含WordNet动词词义和 与特定文件中的意思相似。做 通过这里的数学计算,您会发现每个.tar文件包含大约62500000 成对相似值。请注意,这些是对称的(sim(A,B) =sim(B,A)),因此您有3亿多个唯一值

--------------名词数据 截至2011年8月19日,对使用路径的所有名词进行成对测量 措施是可行的。此文件名为WordNet-Non-Non-path-pairs.tar。 它的压缩容量约为120 GB。在这个文件中,您可以找到 146312个文件,每个名词意义一个。每个文件包括 146313行,其中每行(第一行除外)包含一个WordNet 名词意义及其与该词的相似性 文件在这里进行计算,您会发现每个.tar文件都包含 大约2100000000个成对相似性值。注意这些 是对称的(sim(A,B)=sim(B,A)),所以大约有100亿 独特的价值观

我们目前正在运行wup、res和lesk,但没有
预计供应日期尚未确定

给出一些示例输入/输出,您将更快地得到更好的答案。感谢@TLP:D.的提示。。添加了一些东西!不过,您的输出似乎与CAT无关。顺便说一句,在大多数简单的情况下,
sed a | sed b
通常可以组合成一个
sed
script
sed-e a-e b
。好的……您是UMN的Predersen教授吗?我真的不知道如何控制我的兴奋-/我的大粉丝:D。我很荣幸能将此更改为正确答案!呜!我想没有人会费心模仿我,所以是的,是我。:)请不要犹豫,通过我们的邮件列表或直接询问进一步的问题-我们很快就能找到这些问题,我真的只是在这里偶然发现了这个问题。想知道更多细节,我希望我能早点知道。。。截止日期快到了,不知我能否完成。(跑向顾问:P)我也面临着类似的挑战,但我无法让它发挥作用。我创建了synonym.sh文件,并在Perl脚本中输入了这两个命令。