如何使用 java 获取多个单词的上位词

how can i get hypernyms of multiple words using java

我想在 java.

中使用 WordNet 词典获取多个单词的“hypernyms

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

所以如果我们有以下的话 1) 苹果
2) 香蕉
3) 肝炎
4) 树
5) 芒果

期望的输出是 感觉 1:

苹果:--(果皮为红色或黄色或绿色,果肉甜至酸酥脆白)

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

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

=> 食物,固体食物 --(任何用作营养来源的固体物质(与液体相对);"food and drink")

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

=> substance, matter -- (有质量并占据space; "an atom is the smallest indivisible unit of matter")

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

=> 实体 --(被感知、已知或推断具有其独特存在(生命或非生命)的事物)

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

=> 生殖结构 --(植物的生殖部分)

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

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

=> natural object --(自然发生的物体;不是人造的)

=>整体,单元--(被视为单个实体的部分的组合;"how big is that part compared to the whole?";"the team is a unit")

=> object, physical object --(有形可见的实体;可以投射影子的实体;"it was full of rackets, balls and other objects")

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

=> 实体 --(被感知、已知或推断具有其独特存在(生命或非生命)的事物)

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

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

=> 生殖结构 --(植物的生殖部分)

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

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

=> natural object --(自然发生的物体;不是人造的)

=>整体,单元--(被视为单个实体的部分的组合;"how big is that part compared to the whole?";"the team is a unit")

=> object, physical object --(有形可见的实体;可以投射影子的实体;"it was full of rackets, balls and other objects")

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

=> 实体 --(被感知、已知或推断具有其独特存在(生命或非生命)的事物)

使用Wordnet.

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

可以通过Set存储所有Hypernyms然后迭代来完成。

什么是上位

答案:一个具有广泛含义的词构成一个类别,其中具有更具体含义的词属于该类别;一个上级。例如color是red的上位词。

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

首先 你必须将单词存储在一个数组中,其余代码如下。如果有人需要整个代码,那么 he/she 可以联系我 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]);