【问题标题】:Getting all nouns related to a verb in WordNet using JWNL使用 JWNL 在 WordNet 中获取与动词相关的所有名词
【发布时间】:2013-06-24 12:23:32
【问题描述】:

我正在使用 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 中完成。

【问题讨论】:

    标签: java nlp wordnet


    【解决方案1】:

    您可以对单词的每个意义使用Synset,然后打印出每个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:动词])

    但这都是动词,因为我们正在查找动词。如果你想得到名词(如网络版所示),你应该做一些进一步的步骤。

    它被称为“形态语义”相关词,在this file 中定义,如Wordnet website 中所述。您可以创建自己的代码,使用该文件上可用的映射来提取词素相关的词。

    由于这是标准 WordNet 发行版之外的附加文件,遗憾的是我相信 JWNL 中没有实现,所以最好创建一个简单的代码来获取映射。首先,您可以使用任何电子表格程序(例如 Excel)将 xls 文件转换为 CSV 文件。然后你需要得到那个感觉的感觉键。不幸的是,JWNL (1.4.1 rc2) 没有简单的方法来获取感知密钥。但是,它包含在 JWNL (1.4 rc3) 中,这是 Synset 类中的方法 getSenseKey(lemma)。所以,假设你升级到 JWNL 1.4_rc3,你可以这样做:

    HashMap<String,ArrayList<String>> relatedWords = loadMorphosemanticFile();
    ...
    relatedWords.get(word.getSynset().getSenseKey(word.getLemma()))
    

    当单词在bear的意义2中为birth时,将返回一个Arraylist,包括:birth%1:28:00::birth%1:22:00::birth%1:11:00::(意义关键bear%2:29:01:: , 因为要出生;“我的妻子昨天生了双胞胎!”),它的意义键是birth%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::)

    我从GrepCode得到了这个非常好的资源

    【讨论】:

    • 您是否将这条评论作为自己的注释?
    • 没有。您帖子中的相同链接是 https 链接,它并不总是有效。 Stackoverflow 不允许进行少于 6 个字符更改的编辑。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-26
    相关资源
    最近更新 更多