-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathHackathonMain.java
More file actions
149 lines (130 loc) · 4.03 KB
/
HackathonMain.java
File metadata and controls
149 lines (130 loc) · 4.03 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
package com.verizon.hachathon;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@SuppressWarnings("unused")
public class HachathonMain {
private static List<String> negativeWordList = new ArrayList<String>();
private static List<String> businessWordList = new ArrayList<String>();
private static List<String> neutralWordList = new ArrayList<String>();
public static void main(String[] args) {
System.out.println("Hello Hachathon");
HackathonUtil hackathonUtil = new HackathonUtil();
negativeWordList = hackathonUtil.addNegativeWord();
businessWordList = hackathonUtil.addBusinessWord();
neutralWordList = hackathonUtil.addNeutralTerms();
String lineStr = "";
String outputFileName = "C:\\Users\\Administrator\\Desktop\\DataHackathon\\icI-Team_Out.txt";
String inputFileName = "C:\\Users\\Administrator\\Desktop\\DataHackathon\\HackathonInput.txt";
try {
PrintWriter pw = new PrintWriter(new FileWriter(outputFileName));
FileReader fr = new FileReader(inputFileName);
BufferedReader br = new BufferedReader(fr);
while ((lineStr = br.readLine()) != null){
String resultStr=new HachathonMain().parseLine(lineStr);
System.out.println( resultStr +" "+lineStr);
pw.println(resultStr);
}
pw.flush();
pw.close();
fr.close();
} catch (Exception e) {
System.out.println("Exception: " + e);
}
}
public String parseLine(String lineStr) throws Exception {
String resultStr = "Positive";
if (lineStr.length() > 0) {
// check for business pattern
if (!checkForBusinessPattern(lineStr)) {
return "Neutral";
}
if (checkForNegative(lineStr)) {
resultStr = "Negative";
} else if (checkForNeutral(lineStr)) {
resultStr = "Neutral";
}
}
return resultStr;
}
public boolean checkForBusinessPattern(String lineStr) {
lineStr=lineStr.toLowerCase();
for (String businessWord : businessWordList) {
String regEx = businessWord;
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(lineStr); // get a matcher object
if (m.find()) {
return true;
}
}
return false;
}
public boolean checkForNegative(String lineStr) {
if (checkForQuestionAndCaps(lineStr)) {
return true;
}
int count = 0;
for (String str : negativeWordList) {
String REGEX = "\\b" + str + "\\b";
Pattern p = Pattern.compile(REGEX);
Matcher m = p.matcher(lineStr); // get a matcher object
if (m.find()) {
return true;
}
}
return false;
}
public boolean checkForQuestionAndCaps(String lineStr) {
// check for three consecutive capital words
String regExpression ="(\\s[A-Z]+\\s[A-Z]+\\s[A-Z]+\\s[A-Z]+\\s)";
Pattern pt = Pattern.compile(regExpression);
Matcher matcher = pt.matcher(lineStr); // get a matcher object
if (matcher.find()) {
return true;
}
// convert all into small
lineStr = lineStr.toLowerCase();
if (lineStr.contains("why ") || lineStr.contains("where ")
|| lineStr.contains("nothing ")) {
return true;
}
if (lineStr.contains("but")) {
String[] tmpStr = lineStr.split("but");
for (String negWord : negativeWordList) {
String regEx = "\\b" + negWord + "\\b";
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(lineStr); // get a matcher object
if (m.find()) {
return true;
}
}
}
///parse the feedback in general
for (String negWord : negativeWordList) {
String regEx = "\\b" + negWord + "\\b";
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(lineStr); // get a matcher object
if (m.find()) {
return true;
}
}
return false;
}
public boolean checkForNeutral(String lineStr) {
///parse the feedback in general
for (String neutralWord : neutralWordList) {
String regEx = "\\s"+ neutralWord;
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(lineStr); // get a matcher object
if (m.find()) {
return true;
}
}
return false;
}
}