检查 HashSet 中的多个关键字,并基于该关键字生成结果

Checking Multiple Keywords in a HashSet, and generating and outcome based on that

我有一个字符串,其中包含一个长段落。这段包含各种关键字,如“快乐”、“悲伤”、“失望”、“满意”等。在段落中搜索这些关键字后,我试图生成一个结果。

public static String fileReader() {
        JSONParser parser = new JSONParser();
        String paragraph = "";
        try {
            Object obj = parser.parse(new FileReader("file_Path"));
            JSONObject jsonobject = (JSONObject) obj;
            paragraph = (String) jsonobject.get("paragraph");
            return paragraph;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return paragraph;
    }

// adding the words of the paragraph into a hashset.

public static String sentiment() {
String input20 = fileReader();
Set<String> items = new HashSet<String>(Arrays.asList(input20.split(" ")));

//Array of Keywords
String arr[] = {"happy", "sad", "disappointed", "satisfied"};

if ((items.contains("happy")) || (items.contains("satisfied")) {
return "Positive";
} else if ((items.contains("sad")) || (items.contains("disappointed"))) {
return "Negative";
} else if ((items.contains("happy")) || (items.contains("satisfied")) && (items.contains("sad")) || (items.contains("disappointed"))) {
return "Mixed";
else {
return "Unknown";
}
}

现在,我想写一个 if-else 循环,这样我就可以根据各种条件给出输出。 条件: (1) 如果包含“Happy”、“Satisfied”或(其中任意 1),则输出为正。 (2) 如果包含“Sad”、“disappointed”或(其中任意 1),则输出为负数。 (3) 如果包含“Sad”、“Happy”,即(词的混合),混合作为输出。 (4) 其他未知。

有人可以帮我解决这个逻辑吗?我总是将输出作为我保留的第一个条件。

你没有使用关键字数组,所以我在下面的代码中忽略它。

如果段落包含 happysatisifed,您希望结果为 Positive ] 而不是单词 sad or 失望。因此,您需要更改第一个 if 条件。

阴性结果类似。您希望段落包含 saddisappointed 但不包含 happysatisfied.

简而言之,每个条件都需要考虑所有关键字,而不仅仅是其中的一些关键字。

考虑以下代码。

String input20 = "I am very happy about the application performance but I am disappointed how it shuts off sometimes";
Set<String> items = new HashSet<String>(Arrays.asList(input20.split(" ")));

//Array of Keywords (not used)
String arr[] = {"happy", "sad", "disappointed", "satisfied"};

String str;
if ((items.contains("happy") || items.contains("satisfied")) && !(items.contains("sad") || items.contains("disappointed"))) {
    str = "Positive";
} else if ((items.contains("sad") || items.contains("disappointed")) && !(items.contains("happy") || items.contains("satisfied"))) {
    str = "Negative";
} else if ((items.contains("happy") || items.contains("satisfied")) && (items.contains("sad") || items.contains("disappointed"))) {
    str = "Mixed";
}
else {
    str = "Unknown";
}
System.out.println("Outcome: " + str);