检查 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) 其他未知。
有人可以帮我解决这个逻辑吗?我总是将输出作为我保留的第一个条件。
你没有使用关键字数组,所以我在下面的代码中忽略它。
如果段落包含 happy 或 satisifed,您希望结果为 Positive ] 而不是单词 sad or 失望。因此,您需要更改第一个 if
条件。
与阴性结果类似。您希望段落包含 sad 或 disappointed 但不包含 happy 或 satisfied.
简而言之,每个条件都需要考虑所有关键字,而不仅仅是其中的一些关键字。
考虑以下代码。
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);
我有一个字符串,其中包含一个长段落。这段包含各种关键字,如“快乐”、“悲伤”、“失望”、“满意”等。在段落中搜索这些关键字后,我试图生成一个结果。
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) 其他未知。
有人可以帮我解决这个逻辑吗?我总是将输出作为我保留的第一个条件。
你没有使用关键字数组,所以我在下面的代码中忽略它。
如果段落包含 happy 或 satisifed,您希望结果为 Positive ] 而不是单词 sad or 失望。因此,您需要更改第一个 if
条件。
与阴性结果类似。您希望段落包含 sad 或 disappointed 但不包含 happy 或 satisfied.
简而言之,每个条件都需要考虑所有关键字,而不仅仅是其中的一些关键字。
考虑以下代码。
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);