我正在使用 JWNL (1.4.1 rc2)。给定一个动词,我需要找到“相关”的名词。例如,给定动词:bear
我想要名词birth
。
我可以通过 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 中完成。
我正在使用 JWNL (1.4.1 rc2)。给定一个动词,我需要找到“相关”的名词。例如,给定动词:bear
我想要名词birth
。
我可以通过 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 中完成。
可以使用Synset
for each 词义,然后打印出 each 中的词,Synset
如下:
IndexWord indexWord = proc.lookupBaseForm(POS.VERB,"bear"); int senseNum = 0; for(Synset synset: indexWord.getSenses()){ 感测号++; System.out.println("对于感觉:" + senseNum + " (" + synset.getGloss()+")"); Word[] words = synset.getWords(); for(字词:字){ System.out.println("\t"+word.getLemma()+"("+word.getPOS()+")"); } }
这将为您提供:
意义:1(有;“有相似之处”;“有签名”) 熊([POS:动词]) 意义:2(导致出生;“我妻子昨天生了双胞胎!”) give_birth([POS: 动词]) 交付([POS:动词]) 熊([POS:动词]) 出生([POS:动词]) 有([POS:动词]) 意义:3(忍受不愉快的事情或某人;“我不能忍受他不断的批评”;“新秘书不得不忍受很多不专业的言论”;“他学会了忍受高温”;“她突出了两个多年的悲惨婚姻”) 摘要([POS:动词]) 忍受([POS:动词]) stick_out([POS:动词]) 胃([POS:动词]) 熊([POS:动词]) 立场([POS:动词]) 容忍([POS:动词]) 支持([POS:动词]) 布鲁克([POS:动词]) 遵守([POS:动词]) 受苦([POS:动词]) put_up([POS:动词]) 意义:4(举起或支持移动;“收礼物”;“负重”;“负新闻”;“负命令”) 熊([POS:动词]) 意义:5(提出,“苹果树今年结出美味的苹果”;“不明植物开出绚丽的花朵”) 熊([POS:动词]) 转出([POS:动词]) 意义:6(承担他人的费用或债务;“我接受指控”;“她同意承担责任”) 熊([POS:动词]) 接管([POS:动词]) 接受([POS:动词]) 假设([POS:动词]) 意义:7(盛装或盛装;有内;“罐中盛酒”;“食堂盛装淡水”;“此罐盛水”) 持有([POS:动词]) 熊([POS:动词]) 携带([POS:动词]) 包含([POS:动词]) 意义:8(引入;“计息账户”;“这个储蓄凭证每年支付多少?”) 产量([POS:动词]) 支付([POS:动词]) 熊([POS:动词]) For sense: 9 (have on one's person;“他戴着红丝带”;“带着伤疤”) 磨损([POS:动词]) 熊([POS:动词]) 意义:10(以某种方式行事;“她表现得很好”;“他有尊严”;“他们在这些困难时期表现得很好”) 表现([POS:动词]) 无罪([POS:动词]) 熊([POS:动词]) 驱逐出境([POS:动词]) 行为([POS:动词]) 比较([POS:动词]) 携带([POS:动词]) 意义:11(拥有权利、头衔和职位;“她拥有公爵夫人的头衔”;“他担任州长近十年”) 熊([POS:动词]) 持有([POS:动词]) 意义:12(以某种方式支撑或保持;“她高昂着头”;“他挺直身子”) 持有([POS:动词]) 携带([POS:动词]) 熊([POS:动词]) 意义:13(怀孕;“她怀了他的孩子”;“一月份又要生孩子了”;“我怀了他的孩子”) have_a_bun_in_the_oven([POS:动词]) 熊([POS:动词]) 携带([POS:动词]) 妊娠([POS:动词]) 期望([POS:动词])
但这都是动词,因为我们正在查找动词。如果你想得到名词(如网络版所示),你应该做一些进一步的步骤。
它被称为“形态语义”相关词,在此文件中定义,如Wordnet 网站所述。您可以创建自己的代码,通过使用该文件上可用的映射来提取词素相关的单词。
由于这是标准 WordNet 分发之外的附加文件,遗憾的是我相信 JWNL 中没有实现,所以最好创建一个简单的代码来获取映射。首先,您可以使用任何电子表格程序(例如 Excel)将 xls 文件转换为 CSV 文件。然后你需要得到那个感觉的感觉键。不幸的是,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()))
这将返回一个 Arraylist,其中包含:birth%1:28:00::
, birth%1:22:00::
, 并且birth%1:11:00::
当这个词birth
在bear
(sense key bear%2:29:01::, cause to bebirth; "我的妻子昨天生了双胞胎!") 的意义上 2 时,它有sense keybirth%2:29:00::,如下面使用 JWNL 1.4 rc3 的输出所示:
意义:bear%2:29:01::(因为要出生;“我妻子昨天生了双胞胎!”) give_birth (give_birth%2:29:00::) 交付(交付%2:29:01::) 熊(熊%2:29:01::) 出生 (birth%2:29:00::) 有 (有%2:29:00::)