Repository navigation
Expand file tree
/
Copy pathUserSelectQueryWord.java
More file actions
348 lines (298 loc) · 16.2 KB
/
Copy pathUserSelectQueryWord.java
File metadata and controls
348 lines (298 loc) · 16.2 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
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
package UserSelectQueryWord;
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author Pallavi Karanth
*/
import java.io.*;
//import java.text.*;
import java.util.*;
import javax.servlet.*;
import org.apache.commons.lang.StringUtils.*;
import javax.servlet.http.*;
import WordSenseDisambiguator.*;
//import PreferredQueryWord.*;
public class UserSelectQueryWord extends HttpServlet {
public void init(ServletConfig config) throws ServletException {
super.init(config);
}
public void destroy() {
}
public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException
{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
//out.println("In UserSelectQueryWord");
// Get all parameters
String strStem = request.getParameter("StemmedQuery");
//out.println("Stemmed query as param is "+strStem);
String inputQuery = request.getParameter("Query");
//out.println("Input Query is "+inputQuery);
String interQuery = request.getParameter("InterimQuery");
//out.println("Intermediate Query after stop word removal is "+interQuery);
String userName = request.getParameter("UserName");
//out.println("User Name is "+userName);
String disambQuery = request.getParameter("DisAmbQuery");
//out.println("Disambiguated Query is "+disambQuery);
int lengthDisambQuery = disambQuery.length();
//out.println("Length of query is " +lengthDisambQuery);
String disambQuerySubStr = disambQuery.substring(1, lengthDisambQuery-1);
String disambQueryProper = disambQuerySubStr.trim();
//out.println("Proper disambiguated query is "+disambQueryProper);
int lenOfDisAmbQueryWords = disambQuery.split("\\,",-1).length;
String[] eachDisambQueryWord = new String[lenOfDisAmbQueryWords];
List<String> listDisambQueryWords = new ArrayList<String>();
eachDisambQueryWord = disambQueryProper.split(",");
/*for(int i = 0; i < lenOfDisAmbQueryWords; i++)
{
if(eachDisambQueryWord[i].isEmpty())
{
listDisambQueryWords.add("");
}
else
{
listDisambQueryWords.add(eachDisambQueryWord[i]);
}
//out.println("Each query word is "+eachDisambQueryWord[i]);
out.println("Each query word is "+listDisambQueryWords.get(i));
}*/
String ambigWordsList = request.getParameter("AmbWordsList");
//out.println("Ambiguous words list is "+ambigWordsList);
int lenAmbigWordsList = ambigWordsList.length();
//out.println("Length of ambig words list is "+lenAmbigWordsList);
// Removing [] brackets
String ambigWordsWithComma = ambigWordsList.substring(2, lenAmbigWordsList-2);
String ambigWordsWithCommaProper = ambigWordsWithComma.trim();
//out.println("List of ambig words with comma proper is "+ambigWordsWithCommaProper);
// need to remove extra [] brackets in case there are many lists within the list
// many query words are ambiguous
//ambigWordsWithCommaProper
/*String sample = "apple, mango], [banana, orange, arjuna], [orange,peepal";
List newSampleList = new ArrayList();
java.util.StringTokenizer tokenisedsampleWords = new java.util.StringTokenizer(sample,"]");
int lenNumTokens = tokenisedsampleWords.countTokens();
String[] tokenArr = new String[lenNumTokens];
int cter = 0;
while(tokenisedsampleWords.hasMoreElements())
{
String token = tokenisedsampleWords.nextToken();
out.println("Tokens are : "+token);
tokenArr[cter] = token;
cter++;
}
for(int i = 0; i < lenNumTokens; i++)
{
int sampleArrLen = tokenArr[i].split("\\,",-1).length;
String[] newArrayAmbigWords = new String[sampleArrLen];
newArrayAmbigWords = tokenArr[i].split(",");
Vector ambigWordsCleaned = new Vector();
out.println("Array " + i + " elements: ");
for(int j = 0; j < sampleArrLen;j++)
{
if(newArrayAmbigWords[j].isEmpty())
{
// Do nothing
}
else
{
//out.println("Each sample: "+samplearray[i]);
int idxBracketOpen = newArrayAmbigWords[j].indexOf("[");
//out.println("Index is "+idxBracketOpen);
if(idxBracketOpen > 0)
{
String newsample = newArrayAmbigWords[j].substring(idxBracketOpen+1, newArrayAmbigWords[j].length());
//out.println("New sample is "+newsample);
newArrayAmbigWords[j] = newsample;
}
int idxBracketClose = newArrayAmbigWords[j].indexOf("]");
//out.println("Index is "+idxBracketClose);
if(idxBracketClose > 0)
{
String newsample = newArrayAmbigWords[j].substring(0, newArrayAmbigWords[j].length()-1);
//out.println("New sample is "+newsample);
newArrayAmbigWords[j] = newsample;
}
out.println(newArrayAmbigWords[j]);
ambigWordsCleaned.add(newArrayAmbigWords[j]);
} // end of else
} // end of for j
newSampleList.add(ambigWordsCleaned);
}*/
int numAmbigWords = Integer.parseInt(request.getParameter("NumAmbigWords").trim());
String idxVector = request.getParameter("idxAmbig").trim();
//out.println("Idx Vector is "+idxVector);
int NumOfCommas = org.apache.commons.lang.StringUtils.countMatches(idxVector,",");
int numOfIndices = NumOfCommas + 1;
int Idx = 0;
boolean oneIndx = false;
boolean moreIndices = false;
int[] idxsArray = new int[numOfIndices];
String idxVectorWithCommaProper = "";
if(numOfIndices==1)
{
oneIndx = true;
moreIndices = false;
int LenIdxVector = idxVector.length();
Idx = Integer.parseInt(idxVector.substring(1, LenIdxVector-1));
idxVectorWithCommaProper = idxVector.trim();
// Not adding userOption here to list - not working as not inserting at correct index
//finalDisambiguatedQuery.add(Idx,userOptions[0]);
}
else if(numOfIndices==0)
{
// No ambiguous words in query .. we should not have come here .. some problem..
//out.println("No ambiguous words in query .. we should not have come here .. some problem..");
idxVectorWithCommaProper = idxVector.trim();
}
else if(numOfIndices>1)
{
oneIndx = false;
moreIndices = true;
int LenIdxVector = idxVector.length();
//out.println("Length of idx vector is "+LenIdxVector);
String idxVectorWithComma = idxVector.substring(1, LenIdxVector-1);
idxVectorWithCommaProper = idxVectorWithComma.trim();
//out.println("Proper Idx Vector with comma is "+idxVectorWithCommaProper);
String[] idxArrVector = idxVectorWithCommaProper.split(",");
//int[] idxsArray = new int[idxArrVector.length];
for(int i = 0; i < idxArrVector.length;i++)
{
idxsArray[i] = Integer.parseInt(idxArrVector[i].toString().trim());
//out.println("Each index element is "+idxArrVector[i]);
//out.println("Integer index element is "+idxsArray[i]);
}
}
//List newSampleListAmbigWords = new ArrayList();
String[][] newSampleListAmbigWords = new String[numAmbigWords][];
java.util.StringTokenizer tokenisedsampleWordsAmbig = new java.util.StringTokenizer(ambigWordsWithCommaProper,"]");
int lenNumTokensAmbig = tokenisedsampleWordsAmbig.countTokens();
String[] tokenArrAmbig = new String[lenNumTokensAmbig];
int counter = 0;
while(tokenisedsampleWordsAmbig.hasMoreElements())
{
String token = tokenisedsampleWordsAmbig.nextToken();
//out.println("Tokens are : "+token);
tokenArrAmbig[counter] = token;
counter++;
}
Vector ambigWordsLen = new Vector();
for(int i = 0; i < lenNumTokensAmbig; i++)
{
int sampleArrLen = tokenArrAmbig[i].split("\\,",-1).length;
String[] newArrayAmbigWords = new String[sampleArrLen];
newArrayAmbigWords = tokenArrAmbig[i].split(",");
//Vector ambigWordsCleaned = new Vector();
// Limitation - number of ambiguous words for a word - max - 20
String[] ambigWordsCleaned = new String[20];
int iterAmbigWords = 0;
//out.println("Array " + i + " elements: ");
for(int j = 0; j < sampleArrLen;j++)
{
if(newArrayAmbigWords[j].isEmpty())
{
// Do nothing
}
else
{
//out.println("Each sample: "+samplearray[i]);
int idxBracketOpen = newArrayAmbigWords[j].indexOf("[");
//out.println("Index is "+idxBracketOpen);
if(idxBracketOpen > 0)
{
String newsample = newArrayAmbigWords[j].substring(idxBracketOpen+1, newArrayAmbigWords[j].length());
//out.println("New sample is "+newsample);
newArrayAmbigWords[j] = newsample;
}
int idxBracketClose = newArrayAmbigWords[j].indexOf("]");
//out.println("Index is "+idxBracketClose);
if(idxBracketClose > 0)
{
String newsample = newArrayAmbigWords[j].substring(0, newArrayAmbigWords[j].length()-1);
//out.println("New sample is "+newsample);
newArrayAmbigWords[j] = newsample;
}
//out.println(newArrayAmbigWords[j]);
ambigWordsCleaned[iterAmbigWords] = newArrayAmbigWords[j];
iterAmbigWords++;
//ambigWordsCleaned.add(newArrayAmbigWords[j]);
} // end of else
} // end of for j
//newSampleListAmbigWords.add(ambigWordsCleaned);
newSampleListAmbigWords[i] = ambigWordsCleaned;
ambigWordsLen.add(iterAmbigWords);
}
//int numIndices = idxArray.length;
int numIndices = numAmbigWords;
// Read each of the ambiguous query words into array
// Limitation - number of words which can be ambiguous is limited to 20
String[] ambiguousQueryWordsArray = new String[20];
for(int i = 0; i < numAmbigWords; i++)
{
String ambigquerywordAsParam = request.getParameter("AmbigWord"+i).trim();
ambiguousQueryWordsArray[i] = ambigquerywordAsParam;
}
// HTML to take select user input
out.println("<html><head><title>User Select Query Word for resolving ambiguity</title>");
out.println("<script type = \"text/javascript\">function fnSubmit(){document.userOption.submit();}");
out.println("</script>");
out.println("</head>");
out.println("<body bgcolor=\"cornsilk\">");
out.println("<form name=\"userOption\" id=\"userOption\" action=\"GetUserOption\">");
out.println("<h2>Please resolve ambiguity in the following query words</h2>");
for(int i = 0; i < numIndices; i++)
{
out.println("<h3>Please choose one of the words as Query word for ambiguous term "+ambiguousQueryWordsArray[i]+"</h3><br/>");
out.println("<select name=\"AmbiguousWords"+i+"\" id=\"AmbiguousWords"+i+"\">");
String[] asStrList = newSampleListAmbigWords[i];
//out.println("First Ambiguous Word List: ");
int lenOfAmbgWords = Integer.parseInt(ambigWordsLen.get(i).toString());
//out.println("Length of list is "+lenOfAmbgWords);
for(int j = 0; j < lenOfAmbgWords; j++)
{
String a_strOption = asStrList[j];
//if(!asStrList[j].matches("null"))
//{
//out.println(asStrList[j]);
out.println("<option>"+a_strOption+"</option>");
//}
}
out.println("</select>");
}
out.println("<input type=\"hidden\" name=\"Query\" id=\"Query\" value=\""+inputQuery);
out.println("\"/>");
out.println("<input type=\"hidden\" name=\"InterimQuery\" id=\"InterimQuery\" value=\""+interQuery);
out.println("\"/>");
out.println("<input type=\"hidden\" name=\"StemmedQuery\" id=\"StemmedQuery\" value=\""+strStem);
out.println("\"/>");
out.println("<input type=\"hidden\" name=\"UserName\" id=\"UserName\" value=\""+userName);
out.println("\"/>");
out.println("<input type=\"hidden\" name=\"DisAmbQuery\" id=\"DisAmbQuery\" value=\""+disambQueryProper);
out.println("\"/>");
//out.println("<input type=\"text\" name=\"AmbWordsList\" id=\"AmbWordsList\" value=\""+allAmbigWords);
//out.println("\"/>");
out.println("<input type=\"hidden\" name=\"idxAmbig\" id=\"idxAmbig\" value=\""+idxVectorWithCommaProper);
out.println("\"/>");
out.println("<input type=\"hidden\" name=\"numIndices\" id=\"numIndices\" value=\""+numIndices);
out.println("\"/>");
out.println("<input type=\"submit\" name=\"submit\" id=\"submit\"/>");
out.println("</form></body></html>");
/*for(int i = 0; i < lenOfAmbigWordsList; i++ )
{
out.println("<option>");
out.println(ambigWordsProper)
}*/
}
public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException
{
doPost(request,response);
}
public static String removeCharAt(String s, int pos)
{
StringBuffer buf = new StringBuffer( s.length() - 1 );
buf.append( s.substring(0,pos) ).append( s.substring(pos+1) );
return buf.toString();
}
}