This commit is contained in:
Erik Perrone 2018-02-28 14:02:01 +00:00
parent 73ca1ce2eb
commit fb89b5ff89
4 changed files with 195 additions and 12 deletions

View File

@ -67,18 +67,27 @@ public class NLPMapper extends HttpServlet {
response.setCharacterEncoding("utf-8");
token = Constants.getToken(request, devMode);
String documentLink = request.getParameter("plink"); // link to text file (workspace)
System.out.println("documentLink\n: " + documentLink);
String toBeMap = request.getParameter("tobemap");
System.out.println("tobemap: " + toBeMap);
System.out.println("tobemap:\n" + toBeMap);
String[] tokens;
if(toBeMap.indexOf("|") > 0)
tokens = toBeMap.split("|");
tokens = toBeMap.split("\\|");
else {
tokens = new String[1];
tokens[0] = toBeMap;
}
String annotations = request.getParameter("annotations");
System.out.println("annotations\n: " + annotations);
String language = request.getParameter("lang");
PrintWriter writer = response.getWriter();
System.out.println("language\n: " + language);
System.out.println("tokens length: " + tokens.length);
for(int u=0; u<tokens.length; u++) {
System.out.println("[" + u + "] " + tokens[u]);
}
try {
String text = getDocument(documentLink);
@ -165,6 +174,5 @@ public class NLPMapper extends HttpServlet {
String link = ws.getPublicLink(fileName, token);
return link;
}
}

View File

@ -17,6 +17,7 @@
<script type="text/javascript" src="js/materialize.min.js"></script>
<script type="text/javascript" src="js/jquery.simple.websocket.min.js"></script>
<script type="text/javascript" src="js/jquery.uploadfile.min.js"></script>
<script type="text/javascript" src="js/merge.js"></script>
<!-- <script type="text/javascript" src="js/main.js"></script> -->
<!-- scripting code -->
<script type="text/javascript">
@ -228,7 +229,7 @@
if (a[j].length > 0) {
var thereIs = false;
for (k in annotations) {
if (annotations[k].toUpperCase == a[j].toUpperCase()) {
if (annotations[k].toUpperCase() == a[j].toUpperCase()) {
thereIs = true;
break;
}
@ -245,7 +246,7 @@
if (langs[j].length > 0) {
var thereIs = false;
for (k in languages) {
if (languages[k].toUpperCase == langs[j].toUpperCase()) {
if (languages[k].toUpperCase() == langs[j].toUpperCase()) {
thereIs = true;
break;
}
@ -387,6 +388,7 @@
parameters += "&plink=" + encodeURI(publicLink);
parameters += "&lang=" + $("#language-select").val();
parameters += "&tobemap=" + encodeURI(tobemap);
console.log(parameters);
$.ajax({
url : "/nlphub/nlphub-mapper-servlet?" + parameters,
@ -394,10 +396,15 @@
async : true,
success : function(data, stato) {
console.log(data);
$("#reset-upload").hide();
savedAnnotations = "";
publicLink = null;
showResult(data);
if((typeof (data.response) != "undefined") && (data.response.trim().toUpperCase() == "ERROR")) {
alert ("ERROR\n" + data.message);
}
else {
$("#reset-upload").hide();
savedAnnotations = "";
publicLink = null;
showResult(data);
}
},
error : function(richiesta, stato, errori) {
$("#reset-upload").hide();
@ -478,7 +485,7 @@
var indices = getIndices(annotation);
var indexedText = "";
if (indices.length == 0) {
if ((typeof (indices) == 'undefined' ) || (indices.length == 0)) {
indexedText = resultText;
indexedText = indexedText.replace(/\n/g, "<br>");
$("#result-text-div").append("<p>" + indexedText + "</p>");
@ -532,8 +539,10 @@
mergeIndices = function(indices) {
// GESTIONE MULTIDIMENSIONALE DA FARE !!!!
var newIndices = []
if (indices.length == 1)
if (indices.length <= 1)
newIndices = indices[0];
else
newIndices = mergeAll(indices);
return newIndices;
}

108
src/main/webapp/js/merge.js Normal file
View File

@ -0,0 +1,108 @@
mergeSegment = function(segment1, segment2) {
var merged = [];
if(segment1[0] <= segment2[0]) {
if(segment1[1] < segment2[0]) {
merged = [segment1, segment2];
}
else {
if(segment1[1] >= segment2[1])
merged = [segment1];
else
merged = [[segment1[0], segment2[1]]];
}
}
else {
if(segment2[1] < segment1[0]) {
merged = [segment2, segment1];
}
else {
if(segment2[1] >= segment1[1])
merged = [segment2];
else
merged = [[segment2[0], segment1[1]]];
}
}
return merged;
}
compareSegment = function(segment1, segment2) {
// inclusi o coincidenti
if((segment1[0] >= segment2[0]) && (segment1[1] <= segment2[1]))
return 0;
if((segment1[0] <= segment2[0]) && (segment1[1] >= segment2[1]))
return 0;
// esterni
if((segment1[1] < segment2[0]) || ((segment1[0] > segment2[1])))
return 1;
// intersecanti
return -1;
}
compareSegments = function(s1, s2) {
return (s1[0] - s2[0]);
}
cleanSegmentList = function(list) {
var cleaned = [];
for(var i=0; i<list.length; i++) {
if(cleaned.length == 0)
cleaned[cleaned.length] = list[i];
else {
var found = false;
for(var j=0; j<cleaned.length; j++) {
if(compareSegment(cleaned[j], list[i]) == 0) {
if(cleaned[j][0] > list[i][0])
cleaned[j] = list[i];
found = true;
break;
}
if(compareSegment(cleaned[j], list[i]) < 0) {
if(cleaned[j][0] <= list[i][0])
cleaned[j] = [cleaned[j][0], list[i][1]];
else
cleaned[j] = [list[i][0], cleaned[j][1]];
found = true;
}
}
if(!found) cleaned[cleaned.length] = list[i];
}
}
return cleaned;
}
compareSegmentList = function(list1, list2) {
if(list1.length != list2.length)
return false;
for(var i=0; i<list1.length; i++)
if((list1[i][0] != list2[i][0]) || (list1[i][1] != list2[i][1]))
return false;
return true;
}
mergeAll = function(indices) {
var m = [];
for(var i=0; i<indices[0].length; i++) {
for(var j=1; j<indices.length; j++) {
for(var k=0; k<indices[j].length; k++) {
var res = mergeSegment(indices[0][i], indices[j][k]);
for(var u=0; u<res.length; u++)
m[m.length] = res[u];
}
}
}
var end = false;
var counter = 1;
while(!end) {
var old = m.slice();
m = cleanSegmentList(m);
//console.log(m);
end = compareSegmentList(old, m);
if(counter == 100)
end = true;
}
return m.sort(compareSegments);
}

View File

@ -0,0 +1,58 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Merge TEST</title>
<script type="text/javascript" src="js/merge.js"></script>
<script type="text/javascript">
var indices = [
[[0,5], [7,9], [15,19]],
[[6,10]],
[[1,6], [9,16], [21,23]],
[[7,9], [12,13]]
];
//var newIndices = mergeIndices(indices);
//console.log(newIndices);
// answer is: [0,19], [21,23]
indices = [
[[7,19], [21,25]],
[[1,5], [18,22]]
];
//answer is: [1,5], [7,25]
indices = [
[[7,16], [21,25]],
[[1,5], [18,22]]
];
//answer is: [1,5], [7,16], [18,25]
indices = [
[[7,16], [21,25]],
[[1,5], [18,22]],
[[2,30]]
];
//answer is: [1,30]
indices = [
[[1,4], [5, 8], [21,25]],
[[1,5], [18,22]],
[[0,2], [11,15], [27,31]]
];
//answer is: [0,8],[11,15],[18,25],[27,31]
var mm = mergeAll(indices);
console.log(mm);
</script>
</head>
<body>
</body>
</html>