Information on algorithm visible in popup window.
git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/data-analysis/nlphub@167061 82a268e6-3cf1-43bd-a215-b396298e98cfmaster
After Width: | Height: | Size: 6.5 KiB |
@ -0,0 +1,12 @@
|
||||
log4j.rootLogger=DEBUG, A1
|
||||
log4j.appender.A1=org.apache.log4j.ConsoleAppender
|
||||
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
|
||||
|
||||
# Print the date in ISO 8601 format
|
||||
log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
|
||||
|
||||
# Print only messages of level TRACE or above in the package org.gcube
|
||||
log4j.logger.org.gcube=TRACE
|
||||
log4j.logger.org.gcube.application.framework.core.session=INFO
|
||||
log4j.logger.org.gcube.common.scope.impl.DefaultScopeProvider=ERROR
|
||||
log4j.logger.com.netflix.astyanax.connectionpool.impl.CountingConnectionPoolMonitor=ERROR
|
@ -0,0 +1,8 @@
|
||||
log4j.rootLogger=INFO,stdout
|
||||
log4j.logger.com.endeca=INFO
|
||||
# Logger for crawl metrics
|
||||
log4j.logger.com.endeca.itl.web.metrics=INFO
|
||||
|
||||
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
|
||||
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
|
||||
log4j.appender.stdout.layout.ConversionPattern=%p\t%d{ISO8601}\t%r\t%c\t[%t]\t%m%n
|
@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE xml>
|
||||
<configuration>
|
||||
|
||||
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
|
||||
<encoder>
|
||||
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{0}: %msg%n</pattern>
|
||||
</encoder>
|
||||
</appender>
|
||||
|
||||
|
||||
<logger name="org.gcube" level="INFO" />
|
||||
<logger name="org.gcube.vremanagement.smartexecutor" level="TRACE" />
|
||||
<logger name="org.gcube.dataharvest" level="TRACE" />
|
||||
|
||||
<root level="WARN">
|
||||
<appender-ref ref="STDOUT" />
|
||||
</root>
|
||||
|
||||
</configuration>
|
@ -0,0 +1,36 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" metadata-complete="true" version="3.0">
|
||||
<display-name>NLPHub</display-name>
|
||||
<welcome-file-list>
|
||||
<welcome-file>index.html</welcome-file>
|
||||
<welcome-file>index.htm</welcome-file>
|
||||
<welcome-file>index.jsp</welcome-file>
|
||||
<welcome-file>default.html</welcome-file>
|
||||
<welcome-file>default.htm</welcome-file>
|
||||
<welcome-file>default.jsp</welcome-file>
|
||||
</welcome-file-list>
|
||||
<servlet>
|
||||
<servlet-name>NLPServlet</servlet-name>
|
||||
<servlet-class>org.gcube.nlphub.NLPHub</servlet-class>
|
||||
</servlet>
|
||||
<servlet-mapping>
|
||||
<servlet-name>NLPServlet</servlet-name>
|
||||
<url-pattern>/nlphub-servlet</url-pattern>
|
||||
</servlet-mapping>
|
||||
<servlet>
|
||||
<servlet-name>NLPUploader</servlet-name>
|
||||
<servlet-class>org.gcube.nlphub.NLPUploader</servlet-class>
|
||||
</servlet>
|
||||
<servlet-mapping>
|
||||
<servlet-name>NLPUploader</servlet-name>
|
||||
<url-pattern>/nlphub-uploader-servlet</url-pattern>
|
||||
</servlet-mapping>
|
||||
<servlet>
|
||||
<servlet-name>NLPMapper</servlet-name>
|
||||
<servlet-class>org.gcube.nlphub.NLPMapper</servlet-class>
|
||||
</servlet>
|
||||
<servlet-mapping>
|
||||
<servlet-name>NLPMapper</servlet-name>
|
||||
<url-pattern>/nlphub-mapper-servlet</url-pattern>
|
||||
</servlet-mapping>
|
||||
</web-app>
|
@ -0,0 +1,71 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Colors</title>
|
||||
<script type="text/javascript">
|
||||
|
||||
var hexLetters = '0123456789ABCDEF';
|
||||
|
||||
enhanceColor = function(color) {
|
||||
var c = eval("0x" + color);
|
||||
var hi = Math.round(c / 16);
|
||||
if (hi < 15) {
|
||||
hi += Math.round((15 - hi) / 1.5);
|
||||
}
|
||||
if (hi > 15)
|
||||
hi = 15;
|
||||
return '' + hexLetters[hi] + hexLetters[c % 16];
|
||||
}
|
||||
|
||||
randomRGB = function() {
|
||||
var color = '';
|
||||
var couple = '';
|
||||
for (var i = 0; i < 3; i++) {
|
||||
//do {
|
||||
couple = '' + hexLetters[Math.floor(Math.random() * 10)]
|
||||
+ hexLetters[Math.floor(Math.random() * 16)];
|
||||
// for (j = 0; j < 2; j++) {
|
||||
// couple += letters[Math.floor(Math.random() * 16)];
|
||||
// }
|
||||
//} while ((255 - parseInt("0x" + couple)) < 128)
|
||||
color += couple;
|
||||
}
|
||||
|
||||
return color;
|
||||
}
|
||||
|
||||
changeColor = function() {
|
||||
var color = randomRGB();
|
||||
var complemetar = 0xFFFFFF - eval("0x" + color.substring(1));
|
||||
var complement = complemetar.toString(16);
|
||||
var R = enhanceColor(complement.substring(0, 2));
|
||||
var G = enhanceColor(complement.substring(2, 4));
|
||||
var B = enhanceColor(complement.substring(4));
|
||||
complement = "#" + R + G + B;
|
||||
var span = document.getElementsByTagName("SPAN");
|
||||
span[0].setAttribute("style", "color:#" + color + "; font-weight:bold;");
|
||||
span[1].setAttribute("style", "color:#" + color + "; background:"
|
||||
+ complement + "; font-weight:bold;");
|
||||
}
|
||||
|
||||
testReplace = function() {
|
||||
var text = "<< Text between >>";
|
||||
text = text.replace(/</g, "<");
|
||||
text = text.replace(/>/g, ">");
|
||||
console.log(text);
|
||||
document.getElementById("between-text").innerHtml = text;
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body onload="testReplace()">
|
||||
<div>
|
||||
<span>TEST COLORE</span>
|
||||
</div>
|
||||
<div>
|
||||
<span>TEST COLORE + SFONDO</span>
|
||||
</div>
|
||||
<div id="between-text">
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,456 @@
|
||||
[type="checkbox"]+label {
|
||||
margin-right: 15px !important;
|
||||
}
|
||||
|
||||
.my-textarea {
|
||||
border: 1px solid #555;
|
||||
-webkit-border-radius: 5px;
|
||||
-moz-border-radius: 5px;
|
||||
border-radius: 5px;
|
||||
padding: 4px;
|
||||
height: 100px;
|
||||
}
|
||||
|
||||
pre {
|
||||
padding: 5px;
|
||||
margin: 5px;
|
||||
}
|
||||
|
||||
.string {
|
||||
color: green;
|
||||
}
|
||||
|
||||
.number {
|
||||
color: darkorange;
|
||||
}
|
||||
|
||||
.boolean {
|
||||
color: blue;
|
||||
}
|
||||
|
||||
.null {
|
||||
color: magenta;
|
||||
}
|
||||
|
||||
.key {
|
||||
color: red;
|
||||
}
|
||||
|
||||
.column {
|
||||
margin-left: 1px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.half-width {
|
||||
width: 48%;
|
||||
}
|
||||
|
||||
.margin-left-10px {
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
.margin-right-10px {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.clearfix::after {
|
||||
content: "";
|
||||
clear: both;
|
||||
display: table;
|
||||
}
|
||||
|
||||
.fixed-height {
|
||||
min-height: 200px;
|
||||
}
|
||||
|
||||
.margin-3 {
|
||||
margin: 2px;
|
||||
}
|
||||
|
||||
.text-align-left {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.text-align-right {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.align-left {
|
||||
float: left;
|
||||
width: 80%;
|
||||
}
|
||||
|
||||
.align-left-33 {
|
||||
float: right;
|
||||
width: 33%;
|
||||
}
|
||||
|
||||
.centered {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
.full-width {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.vscrollable {
|
||||
height: 220px;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
.ajax-file-upload {
|
||||
float: left;
|
||||
margin: 10px;
|
||||
color: white;
|
||||
background-color: #4CAF50; /*!important;*/
|
||||
padding: 0.6rem;
|
||||
text-transform: uppercase;
|
||||
vertical-align: middle;
|
||||
border-radius: 2px;
|
||||
display: inline-block;
|
||||
box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
#execute-button {
|
||||
margin: 10px;
|
||||
color: white;
|
||||
padding: 0.6rem;
|
||||
text-transform: uppercase;
|
||||
vertical-align: middle;
|
||||
border-radius: 2px;
|
||||
display: inline-block;
|
||||
box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.green-button {
|
||||
margin: 10px;
|
||||
background-color: #4CAF50;
|
||||
color: white;
|
||||
padding: 0.6rem;
|
||||
text-transform: uppercase;
|
||||
vertical-align: middle;
|
||||
border-radius: 2px;
|
||||
display: inline-block;
|
||||
box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
#reset-upload {
|
||||
color: white;
|
||||
background-color: #4CAF50;
|
||||
padding: 0.2rem;
|
||||
text-transform: uppercase;
|
||||
vertical-align: middle;
|
||||
border-radius: 2px;
|
||||
display: inline-block;
|
||||
box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.ajax-file-upload-statusbar {
|
||||
height: 1.3em;
|
||||
width: 100% !important;
|
||||
/*display: none !important;*/
|
||||
}
|
||||
|
||||
.ajax-upload-dragdrop {
|
||||
float: right;
|
||||
border: solid 1px #dfdfdf;
|
||||
width: 200px !important;
|
||||
}
|
||||
|
||||
#file-info {
|
||||
/*float: right;
|
||||
margin-left: 10px;*/
|
||||
}
|
||||
|
||||
.ajax-file-upload-progress {
|
||||
height: 2em !important;
|
||||
}
|
||||
|
||||
.full-width-bar {
|
||||
width: 100%;
|
||||
border-bottom: solid 1px gray;
|
||||
}
|
||||
|
||||
.title-box {
|
||||
width: 69%;
|
||||
float: right;
|
||||
padding-left: 3em;
|
||||
}
|
||||
|
||||
.logo {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#logo-image {
|
||||
width: 200px;
|
||||
height: auto;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.ajax-file-upload-container {
|
||||
display: none !important;
|
||||
float: right;
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
select {
|
||||
display: block;
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
.hidden-div {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.progress-circular-div {
|
||||
position: absolute;
|
||||
z-index: 100;
|
||||
border: solid 1px gray;
|
||||
padding: 10px;
|
||||
background: white;
|
||||
/*width:300px;
|
||||
height:300px;*/
|
||||
margin:0 auto;
|
||||
left:50%;
|
||||
top:50%;
|
||||
transform: translate(-50%, -50%);
|
||||
}
|
||||
|
||||
#progress-caption {
|
||||
margin-top: 3px;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
.float-right-div {
|
||||
float: right;
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
.left-side {
|
||||
float: left;
|
||||
width: 78%;
|
||||
border: 1px solid silver;
|
||||
height: 60vh;
|
||||
margin: 2px;
|
||||
}
|
||||
|
||||
.right-side {
|
||||
float: left;
|
||||
width: 20%;
|
||||
border: 1px solid silver;
|
||||
height: 60vh;
|
||||
margin: 2px;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
#ner-result-accordion {
|
||||
height: 60vh;
|
||||
margin: 2px;
|
||||
}
|
||||
|
||||
.left-side-half {
|
||||
float: left;
|
||||
width: 49%;
|
||||
height: 3vh;
|
||||
margin: 1px;
|
||||
}
|
||||
|
||||
.right-side::after {
|
||||
content: "";
|
||||
clear: both;
|
||||
display: table;
|
||||
}
|
||||
|
||||
.left-side-half::after {
|
||||
content: "";
|
||||
clear: both;
|
||||
display: table;
|
||||
}
|
||||
|
||||
|
||||
.header-side {
|
||||
float: left;
|
||||
width: 100%;
|
||||
margin-top: 1px;
|
||||
margin-bottom: 1px;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
@media (max-width: 600px) {
|
||||
.left-side {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
.right-side {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
.left-side-half {
|
||||
height: 4vh;
|
||||
}
|
||||
}
|
||||
|
||||
@media (width: 600px) {
|
||||
.left-side {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
.right-side {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
.left-side-half {
|
||||
height: 4vh;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 430px) {
|
||||
.left-side {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
.right-side {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
.left-side-half {
|
||||
height: 6vh;
|
||||
}
|
||||
}
|
||||
|
||||
@media (width: 430px) {
|
||||
.left-side {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
.right-side {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
.left-side-half {
|
||||
height: 6vh;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 300px) {
|
||||
.left-side {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
.right-side {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
.left-side-half {
|
||||
height: 8vh;
|
||||
}
|
||||
}
|
||||
|
||||
@media (width: 300px) {
|
||||
.left-side {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
.right-side {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
.left-side-half {
|
||||
height: 8vh;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@media (max-width: 250px) {
|
||||
.left-side {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
.right-side {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
.left-side-half {
|
||||
height: 10vh;
|
||||
}
|
||||
}
|
||||
|
||||
@media (width: 250px) {
|
||||
.left-side {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
.right-side {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
.left-side-half {
|
||||
height: 10vh;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#algorithm-param_div {
|
||||
font-size: 12px !important;
|
||||
}
|
||||
|
||||
#result-text-div {
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
#result-params-div {
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
.collapsible-body {
|
||||
padding-left: 2px !important;
|
||||
padding-right: 2px !important;
|
||||
}
|
||||
|
||||
.collapsible-header {
|
||||
color: white;
|
||||
background-color: #4CAF50;
|
||||
}
|
||||
|
||||
/*
|
||||
input[type="checkbox"]:not(:checked){
|
||||
position: unset !important;
|
||||
opacity: unset !important;
|
||||
padding: 3px;
|
||||
}
|
||||
|
||||
input[type="checkbox"]:checked {
|
||||
position: unset !important;
|
||||
opacity: unset !important;
|
||||
padding: 3px;
|
||||
}
|
||||
*/
|
||||
|
||||
.input-field label {
|
||||
pointer-events: auto;
|
||||
}
|
||||
|
||||
.collapsible {
|
||||
-webkit-box-shadow: none !important;
|
||||
-moz-box-shadow: none !important;;
|
||||
box-shadow: none !important;;
|
||||
}
|
||||
/*
|
||||
#result-params-div input[type="checkbox"]:not(:checked){
|
||||
position: unset !important;
|
||||
opacity: unset !important;
|
||||
padding: 3px;
|
||||
}
|
||||
|
||||
#result-params-div input[type="checkbox"]:checked {
|
||||
position: unset !important;
|
||||
opacity: unset !important;
|
||||
padding: 3px;
|
||||
}
|
||||
*/
|
@ -0,0 +1,18 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>External Test</title>
|
||||
<script type="text/javascript">
|
||||
externalTest = function() {
|
||||
var link = "http://data.d4science.org/SCs1TC9zdDYzYm1LSWsrWUNQdHk3MXo3YzBtWStMUEJHbWJQNStIS0N6Yz0";
|
||||
//link = "http://www.dropbox.com/s/cnyzf1bc3b5onj3/italian-text-4.txt?dl=0";
|
||||
//link = "https://goo.gl/QgT25h";
|
||||
location.href="index.jsp?input=" + encodeURIComponent(link);
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body onload="externalTest()">
|
||||
|
||||
</body>
|
||||
</html>
|
After Width: | Height: | Size: 31 KiB |
After Width: | Height: | Size: 180 KiB |
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 93 KiB |
After Width: | Height: | Size: 178 KiB |
After Width: | Height: | Size: 27 KiB |
@ -0,0 +1,152 @@
|
||||
<%@ page import="org.gcube.nlphub.legacy.Constants" %>
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<!-- input=http%3A%2F%2Fws1-clarind.esc.rzg.mpg.de%2Fdrop-off%2Fstorage%2F1513257926038.txt&lang=en&analysis=const-parsing -->
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1" />
|
||||
<title>NLPHub v1.2</title>
|
||||
<link href="https://fonts.googleapis.com/icon?family=Material+Icons"
|
||||
rel="stylesheet" />
|
||||
<!--Import materialize.css-->
|
||||
<link type="text/css" rel="stylesheet" href="css/materialize.min.css"
|
||||
media="screen,projection" />
|
||||
<link type="text/css" rel="stylesheet" href="css/custom.css" />
|
||||
<!-- jQuery library -->
|
||||
<script
|
||||
src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
|
||||
<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/main.js"></script>
|
||||
<script type="text/javascript" src="js/merge.js"></script>
|
||||
<script type="text/javascript">
|
||||
var activePage = "Named Entity Recognition";
|
||||
var inputFile = '<%= ((request.getParameter(Constants.INPUT_FILE_PARAMETER) == null) ? "" : "" + request.getParameter(Constants.INPUT_FILE_PARAMETER)) %>';
|
||||
var gCubeToken = '<%= ((request.getParameter(Constants.TOKEN_PARAMETER) == null) ? "" : "" + request.getParameter(Constants.TOKEN_PARAMETER)) %>';
|
||||
var scheme = '<%= request.getScheme() %>';
|
||||
</script>
|
||||
</head>
|
||||
<body style="padding: 0 15px;">
|
||||
|
||||
<div class="logo">
|
||||
<img id="logo-image" src="img/nlphub-logo-3.png">
|
||||
</div>
|
||||
|
||||
<!-- the "main-div" contains all tabs and contents -->
|
||||
<div class="main-div">
|
||||
<!-- tabs div: each tab must refer a page div -->
|
||||
<div class="col s12">
|
||||
<ul class="tabs">
|
||||
<li class="tab col s3"><a href="#ner" onclick="activePage='Named Entity Recognition'">NER</a></li>
|
||||
<!-- <li class="tab col s3"><a href="#other" onclick="activePage='Other'">other</a></li>-->
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<!-- "ner" div: contains the name entity recognizer interface -->
|
||||
<div id="ner">
|
||||
<div id="ner-ui">
|
||||
<p class="flow-text">Named Entity Recognition</p>
|
||||
<fieldset>
|
||||
<legend>Language selection</legend>
|
||||
<div class="row">
|
||||
<div class="clearfix">
|
||||
<div class="column half-width">
|
||||
<p class="margin-3 text-align-right"></p>
|
||||
</div>
|
||||
<div class="column half-width">
|
||||
<select id="language-select" class="margin-3 align-left">
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend>Input text</legend>
|
||||
<div class="row">
|
||||
<div class="clearfix">
|
||||
<div class="column margin-right-10px">
|
||||
<p>Drag a .TXT file on the Upload box, or select a file from your PC, or paste a text.</p>
|
||||
</div>
|
||||
<div class="column margin-left-10px">
|
||||
<div class="centered full-width" id="fu-container">
|
||||
<div class="waves-effect waves-light darken-1"
|
||||
id="upload-button">Upload text file</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="input-field col s12">Write or paste a text in the text area (<span style="color:red;">max 4000 characters</span>)
|
||||
<textarea maxlength="4000" id="input-textarea" class="my-textarea" rows="8"
|
||||
placeholder="paste your text here"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
|
||||
<fieldset>
|
||||
<legend>Annotations (deselect those you don't want to be reported)</legend>
|
||||
<div class="vscrollable">
|
||||
<table id="annotations-table">
|
||||
</table>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<!-- this is the "execute button" -->
|
||||
<div style="text-align: center; padding: 5px;">
|
||||
<a id="execute-button">Analyse</a>
|
||||
</div>
|
||||
</div>
|
||||
<!-- this is the main result container -->
|
||||
<div id="ner-result-container">
|
||||
<div id="result-header" class="header-side">
|
||||
<div class="left-side-half" id="result-header-left"></div>
|
||||
<div class="left-side-half" id="result-header-right"></div>
|
||||
</div>
|
||||
<div></div>
|
||||
<div class="left-side" id="result-text-div"></div>
|
||||
<div class="right-side">
|
||||
<ul class="collapsible" data-collapsible="accordion" id="ner-result-accordion">
|
||||
<li>
|
||||
<div class="collapsible-header waves-effect waves-teal">Algorithms</div>
|
||||
<div class="collapsible-body" id="algorithm-params-div"></div>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<div class="collapsible-header waves-effect waves-teal">Annotations</div>
|
||||
<div class="collapsible-body" id="result-params-div"></div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div style="text-align: left;">
|
||||
<div class="green-button float-right-div" id="back-ner-ui-button">back</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- end "#ner" -->
|
||||
|
||||
<div id="#other"></div>
|
||||
|
||||
<!-- this section is used only for the operation progress indicator -->
|
||||
<div class="hidden-div progress-circular-div">
|
||||
<div class="preloader-wrapper big active">
|
||||
<div class="spinner-layer spinner-blue-only">
|
||||
<div class="circle-clipper left">
|
||||
<div class="circle"></div>
|
||||
</div>
|
||||
<div class="gap-patch">
|
||||
<div class="circle"></div>
|
||||
</div>
|
||||
<div class="circle-clipper right">
|
||||
<div class="circle"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="progress-caption">In progress</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
<!-- end "#main-div" -->
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,106 @@
|
||||
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]);
|
||||
}
|
||||
|
||||
/**
|
||||
* mergeAll: merge indices
|
||||
* parameters: indices = Array of Array of indices (index = [start, end])
|
||||
* Example: indices = [[[1,2], [4,5]], [[0,5], [7,11]]];
|
||||
*/
|
||||
|
||||
mergeAll = function(indices) {
|
||||
var m = [];
|
||||
|
||||
// first of all: creates a 1-dimension array with all data
|
||||
for(var i=0; i<indices.length; i++) {
|
||||
m = m.concat(indices[i]);
|
||||
}
|
||||
|
||||
//
|
||||
// second step: sort the array
|
||||
// for our purposes a segment is 'lower than' another segment if the left value of the segment
|
||||
// is lower than the left value of the other segment. In other words:
|
||||
// [a, b] < [c, d] if a < c
|
||||
//
|
||||
m = m.sort(compareSegments);
|
||||
|
||||
var m2 = [];
|
||||
|
||||
//
|
||||
// merging procedure:
|
||||
// the procedure uses the functions:
|
||||
// [1] 'compareSegment'.
|
||||
// when two segment are equals or included compareSegment returns 0
|
||||
// when two segment are intersecting compareSegment returns -1
|
||||
// when two segment are external (no intersection) compareSegment returns 1
|
||||
//
|
||||
// [2] 'mergeSegment'
|
||||
// returns the "union" of two segments
|
||||
//
|
||||
var current = m[0];
|
||||
for(var i=0; i<m.length; i++) {
|
||||
var cfr = compareSegment(current, m[i]);
|
||||
switch(cfr) {
|
||||
case 0:
|
||||
case -1:
|
||||
// if segments are the same or intersected the result is the merged segment
|
||||
current = mergeSegment(current, m[i])[0];
|
||||
break;
|
||||
default:
|
||||
// if segments are external mergeSegment produce two segments: the first is ready to be stored in the output vector
|
||||
// the second is to be compared with others
|
||||
var s = mergeSegment(current, m[i]);
|
||||
m2[m2.length] = s[0];
|
||||
current = s[1];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(m2.length == 0) {
|
||||
m2[0] = current;
|
||||
}
|
||||
else if((current[0] != m2[m2.length-1][0]) || (current[1] != m2[m2.length-1][1]))
|
||||
m2[m2.length] = current;
|
||||
return m2;
|
||||
}
|
@ -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]
|
||||
|
||||
indices1 = [
|
||||
[[7,19], [21,25]],
|
||||
[[1,5], [18,22]]
|
||||
];
|
||||
//answer is: [1,5], [7,25]
|
||||
|
||||
indices2 = [
|
||||
[[7,16], [21,25]],
|
||||
[[1,5], [18,22]]
|
||||
];
|
||||
//answer is: [1,5], [7,16], [18,25]
|
||||
|
||||
indices3 = [
|
||||
[[7,16], [21,25]],
|
||||
[[1,5], [18,22]],
|
||||
[[2,30]]
|
||||
];
|
||||
//answer is: [1,30]
|
||||
|
||||
indices4 = [
|
||||
[[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 indices = indices4;
|
||||
var mm = mergeAll(indices);
|
||||
|
||||
console.log(mm);
|
||||
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
</body>
|
||||
</html>
|
@ -1,5 +1,5 @@
|
||||
#Generated by Maven
|
||||
#Tue Mar 27 17:00:52 CEST 2018
|
||||
#Wed Apr 11 13:35:30 CEST 2018
|
||||
version=0.0.1-SNAPSHOT
|
||||
groupId=org.gcube
|
||||
artifactId=nlphub
|
||||
|