有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

BabelNet中的java域限制

我试图将BabelNet查询的结果限制在特定(Babel)域。为此,我试图找到一种方法来比较synset的域和我需要的域(地理)。然而,我很难获得正确的输出,因为尽管两个字符串匹配,但它仍然给我错误的输出。我在这里肯定做错了什么,但我没有主意了

经过多次试验,以下代码为我提供了与所需输出最接近的结果:

public class GeoRestrict {
    
    public static void main(String[] args) throws IOException {
        String file = "/path/to/file/testdata.txt";
        BabelNet bn = BabelNet.getInstance();
        BufferedReader br = new BufferedReader(new FileReader(file));
        String word = null;
        
        while ((word = br.readLine()) != null) {
            BabelNetQuery query = new BabelNetQuery.Builder(word)
                    .build();
                    
            List<BabelSynset> wordSynset = bn.getSynsets(query);

            for (BabelSynset synset : wordSynset) {
                BabelSynsetID id = synset.getID();
                System.out.println("\n" + "Synset ID for " + word.toUpperCase() + " is: " + id);

                
                HashMap<Domain, Double> domains = synset.getDomains();
                Set<Domain> keys = domains.keySet();
                String keyString = domains.keySet().toString();            
                
                List<String> categories = synset.getDomains().keySet().stream()
                        .map(domain -> ((BabelDomain) domain).getDomainString())
                        .collect(Collectors.toList());
                
                
                for (String category : categories) {
                    if(keyString.equals(category)) {
                        System.out.println("The word " + word + " has the domain " + category);
                    } else {
                        System.out.println("Nada! " + category);
                    }
                }
            }
        }
         br.close();
    }
}

输出如下所示:

Synset ID for TURIN is: bn:00077665n
Nada! Geography and places

关于如何解决这个问题有什么想法吗


共 (1) 个答案

  1. # 1 楼答案

    我发现了自己的错误。为了完整起见,我将其发布

    BabelDomain需要声明和指定(在while循环之前),如下所示:

    BabelDomain domain = BabelDomain.GEOGRAPHY_AND_PLACES;