Il software per l'estrazione automatica di riferimenti legislativi e giurisprudenziali da testi in lingua italiana


Descrizione

Il software open-source IGSG Linkoln 3, sviluppato presso l'Istituto di Informatica Giuridica e Sistemi Giudiziari (IGSG) del Consiglio Nazionale delle Ricerche (CNR), consente l'identificazione automatica dei frammenti di testo che rappresentano citazioni ad atti giuridici all'interno di testi scritti in lingua italiana, sia piatti che precedentemente annotati.

   

Caratteristiche

Inoltre Linkoln:

Repository, Web Demo & Download

Contatti

Screenshots

 

Esempio di utilizzo della libreria (Test.java)

public class Test {

 public static void main(String[] args) {
	
  System.out.println("\n" + Linkoln.getInfo() + "\n");
		  
  String text = "...ai sensi dell'articolo 17, comma 3, della legge 23 agosto 1988, n. 400, su proposta dei Ministri competenti...";
		
  //Crea un oggetto LinkolnDocument a partire da una String
  LinkolnDocument linkolnDocument = LinkolnDocumentFactory.createLinkolnDocument(text);
  
  //Altri tipi di input (String o File, InputType ed encoding diversi):
  //Carica una String, input piatto arricchito con annotazioni html/xml-like:
  //LinkolnDocument linkolnDocument = LinkolnDocumentFactory.createLinkolnDocument(text, InputType.HYBRID_TEXT);
  //Crea un oggetto LinkolnDocument a partire da un File, inputType documento HTML con encoding windows-1252:
  //LinkolnDocument linkolnDocument = LinkolnDocumentFactory.createLinkolnDocumentFromFile("input.html", InputType.HTML_DOCUMENT, "windows-1252");

  //Esegue l'analisi
  if( !Linkoln.run(linkolnDocument)) {

   System.out.println("Linkoln error - service " + linkolnDocument.getFailure() + " failed.");

  } else {

   //Se necessario, itera e analizza tutti i riferimenti estratti tramite gli oggetti LinkolnReference
   int count = 0;
   for(LinkolnReference reference : linkolnDocument.getReferences()) {
			
    count++;
    System.out.println("\n\t" + count + ") " + reference + " text=\"" + reference.getText() + "\"");
		
    //Se necessario, itera sugli eventuali identificatori ed URL del riferimento
    for(Identifier identifier : reference.getIdentifiers()) {
     System.out.println("\t\t" + identifier.getType().toString() + ": " + identifier.getCode() + " URL: " + identifier.getUrl());
    }
				
    //Segna alcuni riferimenti come "da ignorare" nelle successive richieste di output, ad esempio:
				
    //Ignora tutti i riferimenti giurisprudenziali...
    if(reference.getRefType().equals("caselaw")) reference.skip();
				
    //...eccetto quelli emanati dalla Corte Costituzionale
    if(reference.getAuthority() != null && reference.getAuthority().equals("CORTE_COST")) reference.unskip();
				
    //Ignora i riferimenti a Gazzetta Ufficiale
    if(reference.getDocType() != null && reference.getDocType().equals("GU")) reference.skip();
   }
			
   //Richieste di output (LKN, HTML, JSON, CSV)
			
   //Ignora le annotazioni relative alle segnalazioni (warnings)
   //linkolnDocument.skipWarnings(true);
			
   //Ignora i riferimenti per i quali non è stato possibile generare una URL
   //linkolnDocument.skipRefsWithoutUrl(true);

   //Genera l'output LKN
   System.out.println("\n\n OUTPUT-LKN:\n\n" + linkolnDocument.getLinkolnAnnotatedText());

   //Configura e genera l'output HTML (vedi HtmlConf.java)
   Map htmlConf = new HashMap();
   htmlConf.put(HtmlConf.ADD_HEADER, false);
   htmlConf.put(HtmlConf.ADD_ARTIFICIAL_SPACES, false);
   htmlConf.put(HtmlConf.ADD_BR_TAGS, false);
   System.out.println("\n\n OUTPUT-HTML:\n\n" + linkolnDocument.getHtmlAnnotatedText(htmlConf));
			
   //Genera l'output JSON e CSV
   System.out.println("\n\n OUTPUT-JSON:\n\n" + linkolnDocument.getJson());
   System.out.println("\n\n OUTPUT-CSV:\n\n" + linkolnDocument.getCsv());
   
   System.out.println("\n\nDone.");
  }
 }
}