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



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

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)如果包含"快乐"、"满意";或者(任意1)输出为正。(2)如果包含"悲伤"、"失望";或者(任意1)负输出。(3)如果包含"Sad", "Happy",即(混合词),混合作为输出。(4)其他未知。

有谁能帮我解释一下这个逻辑吗?我总是把输出作为我保留的第一个条件。

您没有使用关键字数组,因此我在下面的代码中忽略了它。

如果段落包含happysatisfactory而不包含,则希望结果为Positive悲伤。因此,您需要更改第一个if条件。

阴性结果同样如此。你希望段落包含悲伤失望,但不包含快乐满意

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

考虑下面的代码:

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);

最新更新