git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/data-analysis/nlphub@164814 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
48edb1d2ee
commit
7f660e7377
|
@ -69,10 +69,6 @@ public class NLPHub extends HttpServlet {
|
||||||
private void doWork(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
|
private void doWork(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
|
||||||
token = Constants.getToken(request, devMode);
|
token = Constants.getToken(request, devMode);
|
||||||
try {
|
try {
|
||||||
System.out.println("annotations: " + request.getParameter("annotations"));
|
|
||||||
System.out.println("lang: " + request.getParameter("lang"));
|
|
||||||
System.out.println("plink: " + request.getParameter("plink"));
|
|
||||||
System.out.println("algs: " + request.getParameter("algs"));
|
|
||||||
|
|
||||||
String[] algs = request.getParameter("algs").split(",");
|
String[] algs = request.getParameter("algs").split(",");
|
||||||
for(int i=0; i<algs.length; i++) {
|
for(int i=0; i<algs.length; i++) {
|
||||||
|
|
|
@ -79,7 +79,8 @@ public class NLPUploader extends HttpServlet {
|
||||||
private void handleFreeText(HttpServletRequest request, HttpServletResponse response)
|
private void handleFreeText(HttpServletRequest request, HttpServletResponse response)
|
||||||
throws ServletException, IOException {
|
throws ServletException, IOException {
|
||||||
String freeText = request.getParameter("freetext");
|
String freeText = request.getParameter("freetext");
|
||||||
System.out.println("freeText: " + freeText);
|
freeText = freeText.replaceAll("[\\s]+", " ").trim();
|
||||||
|
|
||||||
byte[] content = freeText.getBytes("UTF-8");
|
byte[] content = freeText.getBytes("UTF-8");
|
||||||
String fileName = generateFileName();
|
String fileName = generateFileName();
|
||||||
PrintWriter writer = response.getWriter();
|
PrintWriter writer = response.getWriter();
|
||||||
|
@ -116,7 +117,6 @@ public class NLPUploader extends HttpServlet {
|
||||||
byte[] readBuffer = new byte[len];
|
byte[] readBuffer = new byte[len];
|
||||||
while (byteRead > -1) {
|
while (byteRead > -1) {
|
||||||
byteRead = fileContent.read(readBuffer, 0, len);
|
byteRead = fileContent.read(readBuffer, 0, len);
|
||||||
// System.out.println(byteRead);
|
|
||||||
if (byteRead > 0) {
|
if (byteRead > 0) {
|
||||||
System.arraycopy(readBuffer, 0, buffer, offset, byteRead);
|
System.arraycopy(readBuffer, 0, buffer, offset, byteRead);
|
||||||
offset += byteRead;
|
offset += byteRead;
|
||||||
|
@ -129,9 +129,12 @@ public class NLPUploader extends HttpServlet {
|
||||||
} else
|
} else
|
||||||
bufferedContent = buffer;
|
bufferedContent = buffer;
|
||||||
|
|
||||||
|
String stringContent = new String(bufferedContent);
|
||||||
|
stringContent = stringContent.replaceAll("[\\s]+", " ").trim();
|
||||||
|
|
||||||
ws.deleteFile(fileName, token);
|
ws.deleteFile(fileName, token);
|
||||||
|
|
||||||
if (!ws.uploadFile(bufferedContent, fileName, Constants.DEFAULT_DESCRIPTION, token)) {
|
if (!ws.uploadFile(stringContent.getBytes(), fileName, Constants.DEFAULT_DESCRIPTION, token)) {
|
||||||
writer.println(new JsonManager().getErrorJsonResponse(
|
writer.println(new JsonManager().getErrorJsonResponse(
|
||||||
"Error uploading file. A file called '" + fileName + "' is already in the workspace?"));
|
"Error uploading file. A file called '" + fileName + "' is already in the workspace?"));
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -0,0 +1,100 @@
|
||||||
|
package org.gcube.nlphub.nlp;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.apache.log4j.Logger;
|
||||||
|
import org.gcube.data.analysis.dataminermanagercl.server.dmservice.SClient;
|
||||||
|
import org.gcube.data.analysis.dataminermanagercl.shared.data.OutputData;
|
||||||
|
import org.gcube.data.analysis.dataminermanagercl.shared.data.computations.ComputationId;
|
||||||
|
import org.gcube.data.analysis.dataminermanagercl.shared.data.output.FileResource;
|
||||||
|
import org.gcube.data.analysis.dataminermanagercl.shared.data.output.MapResource;
|
||||||
|
import org.gcube.data.analysis.dataminermanagercl.shared.data.output.Resource;
|
||||||
|
import org.gcube.data.analysis.dataminermanagercl.shared.parameters.FileParameter;
|
||||||
|
import org.gcube.data.analysis.dataminermanagercl.shared.parameters.ListParameter;
|
||||||
|
import org.gcube.data.analysis.dataminermanagercl.shared.parameters.ObjectParameter;
|
||||||
|
import org.gcube.data.analysis.dataminermanagercl.shared.parameters.Parameter;
|
||||||
|
import org.gcube.data.analysis.dataminermanagercl.shared.parameters.ParameterType;
|
||||||
|
import org.gcube.nlphub.legacy.DataminerClient;
|
||||||
|
import org.gcube.nlphub.legacy.NlpHubException;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public class NLpLanguageRecognizer extends DataminerClient {
|
||||||
|
private Logger logger = Logger.getLogger(NLpLanguageRecognizer.class.getSimpleName());
|
||||||
|
private String sentence;
|
||||||
|
public final static String RECOGNIZER_ID = "org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.LANGUAGE_RECOGNIZER";
|
||||||
|
// private String service = "http://dataminer-prototypes.d4science.org/wps/";
|
||||||
|
// private String token = "df2cc5f5-63ee-48c1-b2a6-1210030c57b8-843339462";
|
||||||
|
|
||||||
|
public NLpLanguageRecognizer(String service, String token, String sentence) {
|
||||||
|
super(service, "", token);
|
||||||
|
this.sentence = sentence;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void run() throws NlpHubException {
|
||||||
|
try {
|
||||||
|
super.identifier = RECOGNIZER_ID;
|
||||||
|
super.init();
|
||||||
|
ObjectParameter inputParameter = new ObjectParameter();
|
||||||
|
inputParameter.setName("sentence");
|
||||||
|
inputParameter.setValue(sentence);
|
||||||
|
ArrayList<Parameter> parameters = new ArrayList<>();
|
||||||
|
parameters.add(inputParameter);
|
||||||
|
super.execute(parameters);
|
||||||
|
} catch (Exception e) {
|
||||||
|
logger.error(e.getLocalizedMessage());
|
||||||
|
throw new NlpHubException(e.getLocalizedMessage(), e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void retrieveOutput(ComputationId computationId, SClient sClient) {
|
||||||
|
try {
|
||||||
|
OutputData output = sClient.getOutputDataByComputationId(computationId);
|
||||||
|
Resource resource = output.getResource();
|
||||||
|
if (resource.isMap()) {
|
||||||
|
MapResource mapResource = (MapResource) resource;
|
||||||
|
for (String key : mapResource.getMap().keySet()) {
|
||||||
|
Resource r = mapResource.getMap().get(key);
|
||||||
|
if (r.isFile()) {
|
||||||
|
FileResource f = (FileResource) r;
|
||||||
|
String mimeType = f.getMimeType();
|
||||||
|
if (mimeType.equalsIgnoreCase("application/d4science")) {
|
||||||
|
String link = f.getUrl();
|
||||||
|
System.out.println("url: " + link);
|
||||||
|
String op = computationId.getOperatorId();
|
||||||
|
op = op.substring(op.lastIndexOf(".") + 1);
|
||||||
|
//testEndOfProcess(op + ":::" + link);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
logger.error(e.getLocalizedMessage());
|
||||||
|
//writeResponse(e.getLocalizedMessage(), false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
// String service = "http://dataminer-prototypes.d4science.org/wps/";
|
||||||
|
// String token = "df2cc5f5-63ee-48c1-b2a6-1210030c57b8-843339462";
|
||||||
|
// String sentence = "Per me si va nella città dolente";
|
||||||
|
//
|
||||||
|
// NLpLanguageRecognizer recognizer = new NLpLanguageRecognizer(service, token, sentence);
|
||||||
|
// try {
|
||||||
|
// recognizer.run();
|
||||||
|
// } catch (Exception x) {
|
||||||
|
// x.printStackTrace();
|
||||||
|
// }
|
||||||
|
/*
|
||||||
|
String test = "Anch'io ho voglia di dare il mio contributo\n alla causa";
|
||||||
|
String regularized = test.replaceAll("[\\s]+", " ");
|
||||||
|
System.out.println("Before: " + test + "\n" + "After: " + regularized);
|
||||||
|
regularized = test.replaceAll("[\\n]+", " ");
|
||||||
|
System.out.println("After: " + regularized);
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
}
|
|
@ -86,6 +86,7 @@ public class NlpNerRunner extends DataminerClient {
|
||||||
if (mimeType.equalsIgnoreCase("application/d4science")) {
|
if (mimeType.equalsIgnoreCase("application/d4science")) {
|
||||||
String link = f.getUrl();
|
String link = f.getUrl();
|
||||||
System.out.println("url: " + link);
|
System.out.println("url: " + link);
|
||||||
|
logger.debug("url: " + link);
|
||||||
String op = computationId.getOperatorId();
|
String op = computationId.getOperatorId();
|
||||||
op = op.substring(op.lastIndexOf(".") + 1);
|
op = op.substring(op.lastIndexOf(".") + 1);
|
||||||
testEndOfProcess(op + ":::" + link);
|
testEndOfProcess(op + ":::" + link);
|
||||||
|
@ -177,7 +178,7 @@ public class NlpNerRunner extends DataminerClient {
|
||||||
List<Parameter> parameters = new ArrayList<>();
|
List<Parameter> parameters = new ArrayList<>();
|
||||||
try {
|
try {
|
||||||
List<Parameter> inputParameters = super.getOperatorInputParameters();
|
List<Parameter> inputParameters = super.getOperatorInputParameters();
|
||||||
System.out.println("n. " + inputParameters.size());
|
//System.out.println("n. " + inputParameters.size());
|
||||||
for (Parameter p : inputParameters) {
|
for (Parameter p : inputParameters) {
|
||||||
switch (p.getTypology()) {
|
switch (p.getTypology()) {
|
||||||
case FILE:
|
case FILE:
|
||||||
|
|
|
@ -47,10 +47,12 @@
|
||||||
$("#ner-result-container").hide();
|
$("#ner-result-container").hide();
|
||||||
var lineTokens = manageCsvData(data);
|
var lineTokens = manageCsvData(data);
|
||||||
getAlgorithms(lineTokens);
|
getAlgorithms(lineTokens);
|
||||||
buildAnnotationsAndLanguages();
|
buildLanguageSelection();
|
||||||
|
buildLanguageList();
|
||||||
|
buildAnnotations();
|
||||||
resizeTable();
|
resizeTable();
|
||||||
resizeLogo();
|
resizeLogo();
|
||||||
buildLanguageList();
|
|
||||||
$("#back-ner-ui-button").click(function() {
|
$("#back-ner-ui-button").click(function() {
|
||||||
$("#ner-result-container").hide();
|
$("#ner-result-container").hide();
|
||||||
$("#ner-ui").show();
|
$("#ner-ui").show();
|
||||||
|
@ -200,10 +202,21 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
buildAnnotationsAndLanguages = function() {
|
buildAnnotationsAndLanguages = function() {
|
||||||
// extract data about languages and annotations in order to populate the proper
|
// extract data about languages and annotations in order to populate the proper
|
||||||
// controls in the page
|
// controls in the page
|
||||||
|
buildLanguageSelection();
|
||||||
|
buildAnnotations();
|
||||||
|
|
||||||
|
}*/
|
||||||
|
|
||||||
|
buildAnnotations = function() {
|
||||||
|
annotations = [];
|
||||||
|
var language = $("#language-select").val();
|
||||||
for (i in algorithms) {
|
for (i in algorithms) {
|
||||||
|
if(algorithms[i].lang.toLowerCase() != language.toLowerCase())
|
||||||
|
continue;
|
||||||
var annotationList = algorithms[i].annotations;
|
var annotationList = algorithms[i].annotations;
|
||||||
var a = annotationList.split(/\s|,/);
|
var a = annotationList.split(/\s|,/);
|
||||||
for (j in a) {
|
for (j in a) {
|
||||||
|
@ -220,7 +233,11 @@
|
||||||
annotations[annotations.length] = a[j];
|
annotations[annotations.length] = a[j];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
buildLanguageSelection = function() {
|
||||||
|
for (i in algorithms) {
|
||||||
var languageList = algorithms[i].lang;
|
var languageList = algorithms[i].lang;
|
||||||
var langs = languageList.split(/\s|,/);
|
var langs = languageList.split(/\s|,/);
|
||||||
for (j in langs) {
|
for (j in langs) {
|
||||||
|
@ -237,10 +254,9 @@
|
||||||
languages[languages.length] = langs[j];
|
languages[languages.length] = langs[j];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
setEventListeners = function() {
|
setEventListeners = function() {
|
||||||
$("#input-textarea").on("keyup", function() {
|
$("#input-textarea").on("keyup", function() {
|
||||||
if ($("#input-textarea").val() == "")
|
if ($("#input-textarea").val() == "")
|
||||||
|
@ -323,7 +339,13 @@
|
||||||
|
|
||||||
var algList = "";
|
var algList = "";
|
||||||
for (j in algorithms) {
|
for (j in algorithms) {
|
||||||
algList += encodeURI(algorithms[j].id) + ",";
|
if(algorithms[j].lang.toLowerCase().indexOf($("#language-select").val().toLowerCase()) >= 0) {
|
||||||
|
algList += encodeURI(algorithms[j].id) + ",";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(algList.length == 0) {
|
||||||
|
alert("Warning. No algorithm matching with selected language.");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
algList = algList.substring(0, algList.length - 1);
|
algList = algList.substring(0, algList.length - 1);
|
||||||
|
|
||||||
|
@ -337,14 +359,15 @@
|
||||||
type : "POST",
|
type : "POST",
|
||||||
async : true,
|
async : true,
|
||||||
success : function(data, stato) {
|
success : function(data, stato) {
|
||||||
//hideProgress();
|
|
||||||
textAreaEnable(true);
|
textAreaEnable(true);
|
||||||
$("#file-info").empty();
|
$("#file-info").empty();
|
||||||
if (typeof (data.response) != 'undefined') {
|
if (typeof (data.response) != 'undefined') {
|
||||||
var jsonOut = getOutputJson(data.message);
|
var jsonOut = getOutputJson(data.message);
|
||||||
} else if (typeof (data.error) != 'undefined') {
|
} else if (typeof (data.error) != 'undefined') {
|
||||||
|
hideProgress();
|
||||||
alert(data.message);
|
alert(data.message);
|
||||||
} else {
|
} else {
|
||||||
|
hideProgress();
|
||||||
alert("Unexpected response");
|
alert("Unexpected response");
|
||||||
}
|
}
|
||||||
resetExecuteButton();
|
resetExecuteButton();
|
||||||
|
@ -425,10 +448,16 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
showAnnotationList = function(list) {
|
showAnnotationList = function(list) {
|
||||||
|
var colorDisabled = "CCCCCC";
|
||||||
|
var color;
|
||||||
var colors = [];
|
var colors = [];
|
||||||
var annotations = list.split(",");
|
var annotations = list.split(",");
|
||||||
for (var i = 0; i < annotations.length; i++) {
|
for (var i = 0; i < annotations.length; i++) {
|
||||||
colors[colors.length] = randomRGB();
|
do {
|
||||||
|
color = randomRGB();
|
||||||
|
}
|
||||||
|
while(color == colorDisabled);
|
||||||
|
colors[colors.length] = color;
|
||||||
}
|
}
|
||||||
|
|
||||||
$("#result-params-div")
|
$("#result-params-div")
|
||||||
|
@ -437,6 +466,7 @@
|
||||||
var cb = "<input type='radio' name='foo' ";
|
var cb = "<input type='radio' name='foo' ";
|
||||||
if(!checkAnnotation(annotations[i])) {
|
if(!checkAnnotation(annotations[i])) {
|
||||||
cb += "disabled ";
|
cb += "disabled ";
|
||||||
|
colors[i] = colorDisabled;
|
||||||
}
|
}
|
||||||
cb += "named='" + annotations[i] + "' value='" + colors[i] + "' id='color-" + i + "' class='filled-in'>";
|
cb += "named='" + annotations[i] + "' value='" + colors[i] + "' id='color-" + i + "' class='filled-in'>";
|
||||||
cb += "<label for='color-" + i + "'><span style='font-weight:bold; color:#" + colors[i] + "'>"
|
cb += "<label for='color-" + i + "'><span style='font-weight:bold; color:#" + colors[i] + "'>"
|
||||||
|
@ -544,7 +574,6 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
mergeIndices = function(indices) {
|
mergeIndices = function(indices) {
|
||||||
// GESTIONE MULTIDIMENSIONALE DA FARE !!!!
|
|
||||||
var newIndices = []
|
var newIndices = []
|
||||||
if (indices.length <= 1)
|
if (indices.length <= 1)
|
||||||
newIndices = indices[0];
|
newIndices = indices[0];
|
||||||
|
@ -624,15 +653,23 @@
|
||||||
+ "</option>";
|
+ "</option>";
|
||||||
$("#language-select").append(opt);
|
$("#language-select").append(opt);
|
||||||
}
|
}
|
||||||
|
$("#language-select").on("change", function() {
|
||||||
|
selectAnnotationsByLanguage();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
selectAnnotationsByLanguage = function() {
|
||||||
|
buildAnnotations();
|
||||||
|
resizeTable();
|
||||||
|
}
|
||||||
|
|
||||||
textAreaEnable = function(enable) {
|
textAreaEnable = function(enable) {
|
||||||
if (enable == true)
|
if (enable == true)
|
||||||
$("#input-textarea").prop('disabled', false);
|
$("#input-textarea").prop('disabled', false);
|
||||||
else
|
else
|
||||||
$("#input-textarea").prop('disabled', true);
|
$("#input-textarea").prop('disabled', true);
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
purgeJson = function(json) {
|
purgeJson = function(json) {
|
||||||
console.log("purgeJson:before: " + json.length);
|
console.log("purgeJson:before: " + json.length);
|
||||||
var purged = json.replace(/\n/g, "\\\\n").replace(/\r/g, "\\\\r")
|
var purged = json.replace(/\n/g, "\\\\n").replace(/\r/g, "\\\\r")
|
||||||
|
@ -648,7 +685,7 @@
|
||||||
return purged;
|
return purged;
|
||||||
//return json.replace(/\\n/g, "\n");
|
//return json.replace(/\\n/g, "\n");
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
randomRGB = function() {
|
randomRGB = function() {
|
||||||
var letters = '0123456789ABCDEF';
|
var letters = '0123456789ABCDEF';
|
||||||
var color = '';
|
var color = '';
|
||||||
|
@ -680,7 +717,7 @@
|
||||||
<div class="col s12">
|
<div class="col s12">
|
||||||
<ul class="tabs">
|
<ul class="tabs">
|
||||||
<li class="tab col s3"><a href="#ner">NER</a></li>
|
<li class="tab col s3"><a href="#ner">NER</a></li>
|
||||||
<li class="tab col s3"><a href="#other">other</a></li>
|
<!-- <li class="tab col s3"><a href="#other">other</a></li> -->
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue