我想使用Java中的WordNet词典获得多个单词的“ hypernyms”。
**什么是上位词?**一个具有广泛含义的单词构成了一个具有更具体含义的单词的类别;上级例如,颜色是红色的上影。
因此,如果我们有以下话1)苹果2)香蕉3)肝炎4)树5)芒果
期望的输出是Sense 1:
Apple:-(果皮为红色或黄色或绿色,果肉酸甜的白色,口感清脆)
=>食用水果-(种子植物的可食用生殖体,特别是果肉甜的一种)
=>农产品,绿色商品,绿色食品杂货,园林卡车-(为市场种植的新鲜水果和蔬菜)
=>食物,固体食物-(用作营养来源的任何固体物质(相对于液体);“食物和饮料”)]
=>固体-(在室温和压力下为固体的物质)
=>物质,物质-(具有质量并占据空间的物质;“原子是物质中最小的不可分割的单位”)]
=>物理实体-(具有物理存在的实体)
=>实体-((被感知或已知或推断具有自己独特的存在(生命或非生命)的实体)
=>水果-(种子植物的成熟生殖体)
=>生殖结构-(涉及植物繁殖的部分)
=>植物器官-(植物或真菌的功能和结构单元)
=>植物部分,植物结构-(植物或真菌的任何部分)
=>自然物体-(自然发生的物体;不是由人制造的)
=>整体,单位-(被视为一个整体的零件的组合;“该零件与整体相比有多大?”;“团队是一个单位”)]
=>对象,物理对象-(一个有形和可见的实体;可以投射阴影的实体;“它充满了球拍,球和其他对象”)]
=>物理实体-(具有物理存在的实体)
=>实体-((被感知或已知或推断具有自己独特的存在(生命或非生命)的实体)
=>梨,假果-(多肉水果(苹果或梨或相关水果),具有种子室和外部肉质部分)
=>水果-(种子植物的成熟生殖体)
=>生殖结构-(涉及植物繁殖的部分)
=>植物器官-(植物或真菌的功能和结构单元)
=>植物部分,植物结构-(植物或真菌的任何部分)
=>自然物体-(自然发生的物体;不是由人制造的)
=>整体,单位-(被视为一个整体的零件的组合;“该零件与整体相比有多大?”;“团队是一个单位”)]
=>对象,物理对象-(一个有形和可见的实体;可以投射阴影的实体;“它充满了球拍,球和其他对象”)]
=>物理实体-(具有物理存在的实体)
=>实体-((被感知或已知或推断具有自己独特的存在(生命或非生命)的实体)
然后使用Set来存储所有的Hyperny,然后遍历。
什么是hypernyms?
答案:具有广义含义的单词构成了具有更具体含义的单词所属的类别;上级例如,颜色是红色的上影。
我正在列出提取上位词树的代码...它将为您提供WordNet 3.0词典中存在的任何单词的详细树。
调用此方法
private static ArrayList<String> getHypernymTerm( PointerTargetNodeList ptnl,
ArrayList<String> parent2, String str )
throws JWNLException{
ArrayList<String> parent = parent2;
if ( !str.equals("entity") ) {
for (Iterator<?> itr = ptnl.iterator(); itr.hasNext();) {
PointerTargetNode node = (PointerTargetNode) itr.next();
Synset synset = node.getSynset();
String term = synset.getWord(0).getLemma();
parent.add(term);
PointerTargetNodeList targets = new PointerTargetNodeList(synset.getTargets(PointerType.HYPERNYM) );
if (targets.size() > 0) {
parent = getHypernymTerm( targets, parent, term);
}
}
}
return parent;
}
将所有单词中的First都存储在数组中,其余代码如下。如果有人需要完整的验证码,则他/她可以通过g.mail与我联系g.mail:nabeelraza174
for(int a = 0 ; a < strArray.length ; a++){
FRUIT[a] = Dictionary.getInstance().getIndexWord(POS.NOUN, hyp[a]);
}
for(int b = 0 ; b < FRUIT.length ; b++){
ArrayList<String> arrayList = new ArrayList<String>();
arrayList.add(hyp[b]);
PointerTargetTree printlist= demonstrateListOperation(FRUIT[b]);
//printlist.print();
PointerTargetNodeList ppt = printlist.getRootNode().getChildTreeList();
string is ArrayList type
ListClass temp = new ListClass();
temp.string_list = getHypernymTerm(ppt, arrayList, hyp[b]);