-
+
- NER + +
Named Entity Recognition
+ + + + + + + + +-
+
-
+ Algorithms+ +
+
+
-
+ Annotations+ +
+
Named Entity Recognition
+ + + + + + + + +" + localText + "
"); + + buildAlgortihmList(); + buildAnnotationList(jsonContent.output.annotations); +} + +/* + * Build the list of radio-button controls with the annotations + */ +buildAnnotationList = function(list) { + var colorDisabled = "CCCCCC"; + var color; + var colors = []; + var annotations = list.split(","); + for (var i = 0; i < annotations.length; i++) { + do { + color = randomRGB(); + } while (color == colorDisabled); + colors[colors.length] = color; + } + + $("#result-params-div").append(""); + + var firstRadio = true; + for (var i = 0; i < annotations.length; i++) { + var cb = ""; + cb += ""; + cb += "
"; + $("#algorithm-params-div").append(cb); + + } + + $("#algorithm-params-div :checkbox").change(function () { + //buildCheckedAlgs(); + rewriteText($("#colored-annotations :checked")[0].value); + }); +} + +/* + * Utility function + */ +findNameByAlgorithmId = function(id) { + for(i in algorithms) { + if(algorithms[i].id.substr(algorithms[i].id.lastIndexOf(".")+1) == id) + return algorithms[i].name; + } + return id; +} + +/* + * Utility function + */ +countSubstringOccurrencies = function(string, substring) { + var occurrencies = 0; + var index = 0; + var s = string; + while (index >= 0) { + index = s.indexOf(substring); + if (index >= 0) { + occurrencies++; + s = s.substring(index + 1); + } + } + return occurrencies; +} + + +/* + * Utility + */ + +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]; +} + +/* + * Write the html paragraph containing the text highlighted on annotation value
+ */
+rewriteText = function(color) {
+ if(color.startsWith("#"))
+ color = color.substring(1);
+
+ $("#result-text-div").empty();
+ var complemetar = 0xFFFFFF - eval("0x" + color);
+ 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;
+ showProgress();
+ $(".hidden-div").show();
+ window.setTimeout(function() {
+ var indices = getIndices();
+ $(".hidden-div").hide();
+
+ $("#result-header-right").empty();
+ $("#result-header-right").append("" + checkedAnnotation + " occurs " + indices.length + " times.");
+
+ if(indices.length != 0) {
+ var indexedText = "";
+
+ if ((typeof (indices) == 'undefined') || (indices.length == 0)) {
+ indexedText = resultText;
+ indexedText = indexedText.replace(/\n/g, "
");
+ indexedText = indexedText.replace(//g, ">");
+ $("#result-text-div").append("
" + indexedText + "
"); + return; + } + + var t = 0; + var offset = 0; + for (var i = 0; i < indices.length; i++) { + var index = indices[i]; + var start = index[0]; + var end = index[1]; + indexedText += resultText.substring(t, start); + + var colored = "" + + resultText.substring(start, end) + ""; + indexedText += colored; + t = end; + } + if (t < resultText.length) + indexedText += resultText.substring(t); + + indexedText = indexedText.replace(/\n/g, "" + indexedText + "
"); + } + else { + $("#result-text-div").append("" + resultText + "
"); + } + }, 50); +} + +filterAlgorithmsByAnnotation = function() { + if($("#result-params-div input[type=radio]:checked").length < 1) + return; + var annotation = $("#result-params-div input[type=radio]:checked")[0].getAttribute("named"); + var algs = $("#algorithm-params-div input[type=checkbox]"); + for(var i=0; i< algs.length; i++) { + var named = $("#algorithm-params-div input[type=checkbox]")[i].getAttribute("named"); + var annList = algIndexedArray[named].annotations; + if(annList.indexOf(annotation) >= 0) { + $($("#algorithm-params-div input[type=checkbox]")[i]).prop("checked", true); + } + else { + $($("#algorithm-params-div input[type=checkbox]")[i]).prop("checked", false); + } + } +} + + +/* + * Find if the annotation is present in the json + */ +checkAnnotation = function(annotation) { + for (var i = 0; i < jsonContent.output.result.length; i++) { + var entities = jsonContent.output.result[i].entities; + for (var j = 0; j < entities.length; j++) { + a = entities[j][annotation]; + if (typeof a != 'undefined') { + if(a.length > 0) + return true; + } + } + } + return false; +} + +/* + * Retrieve the annotation indices from the json + */ +getIndices = function() { + var checkedAlgs = $("#algorithm-params-div input[type=checkbox]:checked"); + var indices = []; + // get indices + for (var i = 0; i < jsonContent.output.result.length; i++) { + // filter on algorithm + var found = false; + for(var j=0; j