1

我想在 java 中使用 WordNet 字典获取多个单词的“上位词”。

**什么是上位词?**具有广泛含义的词构成具有更具体含义的词所属的类别;一个上级。例如,颜色是红色的上位词。

因此,如果我们有以下单词 1) 苹果
2) 香蕉
3) 肝炎
4) 树
5) 芒果

期望的输出是 感觉 1:

苹果:--(果皮红色或黄色或绿色,果肉甜到酸脆的白色果肉)

=> 可食用的水果——(种子植物的可食用生殖体,尤其是具有甜肉的植物)

=> 农产品、绿色商品、绿色杂货、园艺车——(为市场种植的新鲜水果和蔬菜)

=> 食物,固体食物——(任何用作营养来源的固体物质(与液体相反);“食物和饮料”)

=> 固体——(在常温常压下为固体的物质)

=> 物质,物质——(具有质量并占据空间的物质;“原子是最小的不可分割的物质单位”)

=> 物理实体--(具有物理存在的实体)

=> 实体 -- (被感知、已知或推断具有自己独特存在(有生命或无生命)的实体)

=> 果实——(种子植物成熟的生殖体)

=> 生殖结构——(植物参与其繁殖的部分)

=> 植物器官——(植物或真菌的功能和结构单位)

=> 植物部分,植物结构——(植物或真菌的任何部分)

=> 自然物体——(自然产生的物体;不是人造的)

=> 整体,单位——(被视为单个实体的部分组合;“与整体相比,该部分有多大?”;“团队是一个单位”)

=> object, physical object --(有形可见的实体;可以投下阴影的实体;“里面装满了球拍、球和其他物体”)

=> 物理实体--(具有物理存在的实体)

=> 实体 -- (被感知、已知或推断具有自己独特存在(有生命或无生命)的实体)

=> pome, false fruit -- (一种肉质水果(苹果或梨或相关水果),有种子室和外部肉质部分)

=> 果实——(种子植物成熟的生殖体)

=> 生殖结构——(植物参与其繁殖的部分)

=> 植物器官——(植物或真菌的功能和结构单位)

=> 植物部分,植物结构——(植物或真菌的任何部分)

=> 自然物体——(自然产生的物体;不是人造的)

=> 整体,单位——(被视为单个实体的部分组合;“与整体相比,该部分有多大?”;“团队是一个单位”)

=> object, physical object --(有形可见的实体;可以投下阴影的实体;“里面装满了球拍、球和其他物体”)

=> 物理实体--(具有物理存在的实体)

=> 实体 -- (被感知、已知或推断具有自己独特存在(有生命或无生命)的实体)

4

3 回答 3

1

什么是上位词

回答:具有广泛含义的词构成具有更具体含义的词所属的类别;一个上级。例如,颜色是红色的上位词。

我列出了用于提取上位词树的代码...它将为您提供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;
    }

首先,您必须将单词存储在数组中,其余代码如下。如果有人需要整个代码,那么他/她可以通过我的邮箱与我联系 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]);
于 2018-06-11T09:59:13.800 回答
0

可以通过使用 Set 存储所有上位词然后迭代来完成。

于 2018-04-27T03:21:29.223 回答
-1

使用Wordnet

Wordnet 可以通过其Java API使用 Java 访问。在继续 API 之前,首先了解其门户上的 wordnet 库的结构。

于 2018-04-25T05:21:22.763 回答