SlideShare a Scribd company logo
1 of 31
Download to read offline
CURSO NLP
Introducción
Tema 1 ­ Historia
Tema 2 ­ Conceptos sobre NLP
Tema 3 ­ NTLK
Tema 4 ­ OpenNLP
Tema 5 ­ Stanbol
Tema 6 ­ Curiosidades
1
Introducción
Una de las tecnologías en las que más se está trabajando actualmente es en el procesamiento                             
del lenguaje natural. Sus siglas en inglés son NLP, pero no hay que confundirlas con Neuro                             
Linguistic Programming, que hace referencia a otro campo completamente diferente.
El procesamiento del lenguaje natural pretende que las máquinas sean capaces de entender el                         
lenguaje humano, ya sea escrito, oral o incluso imágenes. Todo esto implica muchísimo                       
desarrollo no solo tecnológico, sino un amplio entendimiento del lenguaje. Hay que tener en                         
cuenta, por ejemplo, que en lenguajes como el inglés o el español, las palabras están                           
perfectamente separadas, ya sea por un espacio o un signo de puntuación. En cambio, en                           
idiomas como el chino, esto no sucede, por lo que lo que parece tan simple como separar                               
palabras se convierte en una tarea muy complicada.
¿Qué permite que una máquina sea capaz de entender texto escrito? Con toda la información                           
que hay actualmente en Internet, poder entender lo que se dice habilita la posibilidad de realizar,                             
por ejemplo, búsquedas más concretas. O por ejemplo, realizar un resumen completo de la                         
Wikipedia por idiomas de los artículos que hablan sobre un tema concreto de forma positiva.
Hay partes del NLP que ya están prácticamente solucionadas; otras, en cambio, aún les queda                           
un largo camino por recorrer. De hecho, esto del procesamiento del lenguaje natural no es algo                             
del siglo XX, sino que viene de más atrás. Comenzaremos hablando sobre la historia y                           
evolución del NLP.
2
Tema 1 ­ Historia
Aunque los primeros datos sobre investigaciones en este campo datan del siglo XVII, no es                           
hasta 1950 cuando Alan Turing publica su artículo “Computing Machinery and Intelligence” y                       
propone lo que hoy en día se llama el Test de Turing. Dicho test es un criterio de inteligencia, y                                     
lo que mide es la capacidad o habilidad que tiene un programa de ordenador de imitar a una                                 
persona en una conversación escrita en tiempo real.
En 1954 sucedió el experimento de Georgetown, donde consiguieron traducir más de 60 frases                         
del ruso al inglés. La curiosidad de esto es que se hizo de forma completamente automática,                             
sin que ninguna persona ayudara en el proceso. Al finalizar, la conclusión fue que en poco                             
tiempo se conseguiría que esto fuese completamente automático. Diez años más tarde,                     
habiendo sobrepasado las expectativas de forma negativa, esta investigación fue recortada.                   
Hubo que esperar hasta 1980 a la construcción de los primeros sistemas de traducción                         
estadísticos. Hoy en día, aún no se ha conseguido de forma perfecta.
Sin embargo, en medio de todo este lío, hubo una serie de avances muy buenos. Entre ellos                               
está el Universal Grammar en 1957, de Noam Chomsky, un sistema basado en reglas de                           
estructuras sintácticas. Y por supuesto, SHRDLU, un programa que entendía en lenguaje                     
natural y permitía al usuario entablar algo parecido a una conversación con la máquina a través                             
de diferentes métodos, y ELIZA, cuya parte más famosa se llamaba DOCTOR (Rogerian                       
psycotherapy) y permitía al usuario mantener una conversación algo primitiva.
Hasta 1980, la mayoría de los sistemas NLP estaban basados en conjuntos de reglas                         
3
complejas escritas a mano. Sin embargo, a principios de esa década, las cosas comenzaron a                           
cambiar gracias a la introducción de los algoritmos de aprendizaje. ¿Por qué surgieron estos                         
algoritmos? Principalmente por dos razones:
● El incremento de la potencia computacional.
● Disminución del dominio de las reglas de Chomsky.
A pesar de esto, algunos algoritmos eran muy parecidos a los que se hacían a mano. Por                               
ejemplo: el algoritmo de árboles de decisión. Dicho algoritmo se parecía notablemente a una                         
gran serie de reglas if­else creadas a mano. Otros se basaban en inferencia estadística, pero                           
todos tenían una serie de ventajas respecto a las reglas escritas a mano:
● Se centraban en la mayoría de los casos, cuando las reglas escritas a mano suelen                           
centrarse en casos específicos.
● Uso de algoritmos de inferencia estadísticos.
● Se hacen más precisos según se les dé más datos (entrenamiento).
De aquí salen conceptos como el NLL o Natural Language Learning.
También se han realizado investigaciones centradas en modelos estadísticos. Dichos modelos                   
realizan decisiones probabilísticas basándose en una serie de pesos reales otorgados al texto                       
de entrada.
Actualmente, los mayores logros conseguidos están divididos en dos campos:
● Traducción automática (machine translation)
● Algoritmos de aprendizaje.
4
Tema 2 ­ Conceptos sobre NLP
Para comenzar esta sección, conviene también hablar ligeramente sobre la web semántica. La                       
web semántica introduce un nuevo concepto en la web y es introducir información en la web de                               
una forma que las máquinas lo puedan entender, tanto de forma directa como indirecta. Aquí                           
hay dos visiones separadas:
● Sintáctica, el estudio de la gramática (cómo se dice algo)
● Semántica, el estudio del significado (qué significa lo que se dice)
El problema entonces reside en el HTML. El HTML define la sintaxis de la web, pero no la                                 
estructura de la misma. Por eso, las máquinas no pueden entender el significado de una página                             
HTML. Se quiere pasar de un conjunto de elementos enlazados a un conjunto de elementos                           
relacionados. Es por esto que HTML5 introduce nuevas etiquetas para la estructura de una web:
● <nav>: bloque de navegación
● <footer>: pie de página
● <article>: contenido de la página
En cuanto a los enfoques de la web semántica, se pueden distinguir dos:
● Top­down: análisis de la información, Web Scraping, NLP.
● Down­top: incluir anotaciones semánticas en la información.
Para el NLP, el primer punto es muy costoso. Algunas de las razones son porque necesita                             
intervención humana, necesita mucho trabajo de mantenimiento o incluso puede conllevar                   
problemas legales. El segundo punto, suele apoyarse en los RDFs. Los RDFs (Resource                       
Description Framework) contienen sentencias simples formadas por tres elementos para                 
describir los recursos de la Web.
Para poder realizar consultas sobre RDFs, es necesario utilizar SPARQL. Por ejemplo, buscar                       
5
todos los actores de televisión italianos en dbpedia (http://querybuilder.dbpedia.org/):
De todo esto sale el concepto de la Web 3.0:
● Web estandarizada y semántica
● Poner orden y estructura donde antes había “caos”
● Estándares de cambio de información de W3C
● Movimiento de los agentes virtuales, “cloud computing” y “big data”
● Etc.
Hasta aquí el tema de la web semántica, pero ¿qué tiene que ver NLP con todo esto? El objetivo                                   
principal sobre NLP es poder entender lo que se dice en el lenguaje humano. Para poder                             
entender, hace falta realizar dos pasos:
● Analizar, bien sea texto, voz o imágenes.
● Parsear.
Para el primer punto, analizar la voz necesita un paso previo y es transformar la voz en texto.                                 
En cuanto a las imágenes, este es un campo en el que se está trabajando actualmente.
Básicamente este es el proceso que siguen los humanos, y es lo que se busca que hagan las                                 
máquinas. Pero ¿por qué es tan difícil? Existen varias complejidades que, a pesar de ser fáciles                             
de detectar para los humanos, no lo es para un programa:
● Crash blossom, concepto que hace referencia a que una frase tenga 2 o más                         
significados.
● Ambigüedad
● Lenguaje no estándar o coloquial
● Problemas de segmentación
● Idiomas
● Neologismos
● Conocimiento mundial
● Nombres de entidades “con truco”
● Etc.
Un ejemplo de crash blossom puede ser: “Teacher strikes idle kids”. Esta frase puede tener dos                             
significados: si el verbo es strikes y idle es adjetivo o si el verbo es idle y strikes es nombre.                                     
Además, el significado es totalmente diferente.
6
Detectar la ambigüedad es muy difícil y a veces imposible. Por ejemplo: “Jon no quiere a su                               
hermano porque es muy envidioso”. Y la pregunta a responder sería, ¿quién es envidioso? ¿Jon                           
o su hermano? Con este pedazo de texto es imposible saberlo. A veces la ambigüedad también                             
tiene que ver con que una palabra tiene varios significados.
Otro ejemplo de dificultad son los problemas de segmentación. Normalmente las palabras están                       
separadas por espacio o algún signo de puntuación, por ejemplo, el punto. Pero ¿y si son unas                               
siglas? El punto ya no vale como separador. Además, el hecho de que una coma esté en un                                 
sitio y otro de una frase puede modificar mucho su significado. Véase el siguiente ejemplo:
● Si no fumas mucho, mejor.
● Si no fumas, mucho mejor.
El simple hecho de modificar la coma delante o detrás de la misma palabra hace que el                               
significado cambie totalmente. Se verá más adelante que, entre otras cosas, el NLP intenta                         
hacer fácil el análisis de sentimiento de los textos. Un cambio de coma puede hacer una frase                               
cambie de positiva a negativa totalmente.
Hasta ahora solo se han visto teorías y dificultades, pero ¿cómo se aplica todo esto? Veamos                             
un ejemplo. Imaginémonos que tenemos un montón de libros y relatos sobre la guerra civil                           
española y necesitamos saber de ellos qué pensaban las personas implicadas en la guerra                         
sobre Dios. Para ello, volviendo al año actual, deberíamos contratar a una persona para que se                             
lea cada uno de los libros y relatos de los que disponemos, entendiendo y anotando lo que lee                                 
para extraer información sobre el tema solicitado. Posteriormente escribirá el resultado.                   
¿Cuánto tarda en hacer todo esto? Pongamos que aproximádamente 5 meses. El primer paso                         
que se dio en todo esto fue la digitalización. Gracias a este proceso, todos los libros están en                                 
formato texto que una máquina puede indexar. Al poder indexarlo, se puede poner un motor de                             
búsqueda sobre estos contenidos. ¿Qué pasa si buscamos la palabra Dios? Pues                     
seguramente aparezcan frases en las que esté esta palabra, pero seguramente no tengan nada                         
que ver con lo que pensaban. Pero, indudablemente se ha reducido el tiempo de trabajo de esta                               
persona, ya que solo tiene que leer ciertos pasajes en vez de todos los contenidos al completo.                               
Su tiempo se ve reducido, y puede tardar 5 días en realizar el trabajo. Pero ¿y si entendemos lo                                   
que el texto pone? Lo que intenta el NLP es, a través de un análisis y una serie de procesos,                                     
extraer información y estructura del contenido. De esta forma, se podría extraer directamente                       
los únicos pasajes de los contenidos que hablen del tema solicitado. Si además el programa es                             
capaz de realizar el resumen y conclusiones automáticamente, ni siquiera necesitamos a una                       
persona para hacer este trabajo: estaría hecho en 5 minutos.
Actualmente, el uso de NLP está bastante extendido. Los siguientes elementos son algunos de                         
los ejemplos de utilización de esta tecnología:
● Motores de búsqueda.
● Recomendaciones de sitios.
● Filtro de spam.
● Bases de conocimiento y sistemas expertos.
7
● Sistemas automáticos de soporte al cliente.
● Publicidad.
● Analíticas de comportamiento de consumidores.
Pongamos un ejemplo de cada uno de ellos. En cuanto a los motores de búsqueda, Google por                               
ejemplo. Según estás escribiendo es capaz de darte una serie de recomendaciones de la                         
palabra siguiente incluso auto­completarte la palabra que estás escribiendo, basándose en                   
búsqueda anteriores y en collocations (pequeñas secuencias de palabras que aparecen juntas                     
normalmente).
Las recomendaciones de sitios son por ejemplo “quizás te interese visitar también...”. Estas                       
recomendaciones, para tratarse de NLP, tienen que analizar el contenido que estás visitando y                         
saber lo que realmente puede interesante de otros sitio, habiendo analizado el resto antes. Por                           
ejemplo, Google es capaz de saber tu edad con las búsquedas que has realizado previamente.                           
Las pruebas realizadas han acertado en un gran porcentaje. Se puede ver esto accediendo a                           
los ajustes de Google Ads.
El filtro de spam es algo que ya está muy extendido y es ampliamente utilizado. Este tipo de                                 
filtros analizan el contenido para determinar si lo que se está recibiendo es basura o no. Cabe                               
decir que también hay una serie de direcciones de spammers que automáticamente son                       
filtradas y marcadas como spam incluso sin leer su contenido. Este último punto no es                           
considerado NLP, sino blacklist.
Las bases de conocimiento son las que se utilizan en la web semántica sobre todo. Tratan de                               
describir el conocimiento de una manera lógica. Muchos de los avances en este campo están                           
relacionados con la medicina. Por ejemplo, la Escuela de Medicina de la Universidad de Tufts ha                             
creado TUSK (Tufts University Sciences Knowledgebase) y sirve como base de conocimiento.                     
Esta infraestructura de software ya es compartida por tres escuelas de medicina en los                         
Estados Unidos, tres en África y otra en la India. Normalmente estas bases de conocimiento                           
poseen una ontología que especifica la estructura de su contenido y su esquema de                         
clasificación. Se hablará más de ontologías en este documento.
Los sistemas automáticos de soporte al cliente son por ejemplo, cuando llamas al servicio de                           
atención al cliente de ‘x’ y te coge una máquina diciendo “diga brevemente lo que le ocurre”. La                                 
máquina normalmente entiende bastante bien lo que dice el usuario, busca una posible                       
respuesta y, en el caso de encontrar varias, te da las opciones encontradas. En cambio, si algo                               
no lo entiende, te pasa con una persona para que puedas continuar la consulta. Hoy en día,                               
muchas de estas consultas no pasan a manos de ninguna persona, y tareas triviales como                           
activar o desactivar el buzón de voz han dejado de ser respondidas por personal humano.
La publicidad es otro de los campos en los que más se ha avanzado. Antiguamente la                             
publicidad era de forma masiva. Algunos sitios se fijaban en la dirección IP del usuario para                             
poder saber su localización y aportar una publicidad cercana al usuario. Actualmente, como ya                         
se ha visto, incluso Google sabe tus preferencias gracias, entre otras cosas, a tus búsquedas                           
previas o a tu cuenta de Google+. Sabiendo esto, hay publicidad que está completamente                         
8
dirigida al usuario, y puedes estar navegando por una web y que te muestre publicidad sobre                             
“compra esta consola” (sabiendo que el usuario es medianamente gamer) y otro usuario, en la                           
misma web, recibir publicidad sobre “viaja a Nueva York”. Por un lado, los usuarios ganan: ya                             
que voy a recibir publicidad qué mejor de las cosas que me interesan. Por otro lado, los que se                                   
publicitan también ganan: su publicidad está dirigida a las personas que realmente están                       
interesadas en sus productos.
El último tema, analítica de comportamiento de clientes, es muy parecido al punto anterior. Este                           
tema se ve mejor en la parte del curso dedicada a Big Data y reportes, solo que habría que                                   
añadirle el componente de que realmente se sabe y se interpretan los datos de forma                           
automática, por lo que las analíticas pueden ser mucho más que datos procesados.
Hasta aquí se han visto diferentes usos que se le está dando al procesamiento del lenguaje                             
natural. Pero existen multitud de investigaciones en curso sobre NLP. A continuación se                       
exponen las investigaciones más comunes:
● Resumen automático: sabiendo el tipo de texto.
● Coreference resolution: relaciona menciones con entidades, resolviendo, por ejemplo               
anáforas.
● Discourse analysis: identifica la estructura de un discurso.
● Machine translation: este es un problema identificado como AI­Complete o AI­Hard.                   
Trata de traducir el de un lenguaje a otro.
● Segmentación morfológica: separar las palabras en morfemas.
● Named Entity Recognition (NER): enlaza los términos de un texto con personas,                     
lugares, organizaciones...
● Natural Language Generation: de bases de datos a idioma entendible por una persona.
● Natural Language Understanding: convertir el texto para que los ordenadores puedan                   
entenderlo y manipularlo más fácilmente.
● Optical Character Recognition (OCR): permite, por ejemplo, a los escáneres obtener el                     
texto de una imagen.
● Part­of­speech tagging (POS tagging): etiquetar cada palabra por la posición en la que                       
aparece. Se verán ejemplos de esto más adelante.
● Respuesta de preguntas: dada una pregunta, que sea capaz de responder. Aquí hay                       
cosas muy sencillas, como “¿cuál es la capital de España?”; en cambio hay otras                         
imposibles, como “¿cuál es el sentido de la vida?”.
● Extracción de relaciones: es capaz de obtener relaciones como hermanos, parejas, etc.                     
de un texto.
● Sentence breaking: permite delimitar las frases. Como se ha visto más arriba, esto no                         
es siempre trivial ya que el punto no siempre es fin de frase.
● Análisis de sentimiento: extrae información subjetiva de una serie de documentos para                     
determinar una polaridad (positiva, negativa o neutra).
● Speech recognition: de audio a representación textual. También AI­Complete.
● Speech segmentation: separar en palabras un audio.
● Topic segmentation: separa el texto en segmentos que comparten un tema común.
9
● Word segmentation: separar en palabras un texto. Esto no es tan fácil si el texto está en                               
chino, por ejemplo.
● Desambiguación del sentido de palabra: para las palabras que tengan más de un                       
significado.
POS Tagging
Además, también hay una serie de tareas que son subcampos del NLP:
● Information Retrieval (IR): almacenar, buscar y obtener información. Es un campo                   
separado que se acerca más al tema de bases de datos.
● Information extraction (IE): extracción de información semántica del texto. Esto incluye                   
NER, coreference resolution, extracción de relaciones, etc.
● Speech processing: este apartado incluye speech recognition además de text­to­speech                 
(por ejemplo, Loquendo) y tareas relacionadas.
Todo esto son una gran cantidad de elementos que maneja NLP actualmente. Algunos de ellos                           
están más resueltos que otros. Por ejemplo, se puede decir que están más o menos                           
solucionados los siguientes temas:
● Detección de spam
● POS tagging
● Named Entity Recognition (NER)
Algunos otros llevan un buen camino, y aunque no están del todo solucionados, se han                           
10
realizado grandes avances que les permiten distanciarse del desconocimiento de su solución:
● Análisis de sentimiento
● Coreference solution
● Desambiguación de palabras
● Parseado
● Traducción (Machine Translation)
● Information Extraction (IE)
Por poner un ejemplo de uno de ellos, la extracción de información es un elemento que se utiliza                                 
mucho en el entorno del email. Si por ejemplo recibes un correo con una fecha, el software es                                 
capaz de detectar esta fecha, leer el resto del correo y sacar un posible asunto y al pulsar sobre                                   
la fecha, te crea automáticamente una entrada en el calendario con ese asunto extraído, que por                             
supuesto se puede cambiar. Incluso es capaz de extraer ubicaciones (véase, reservada el aula                         
301 para la reunión).
Otro ejemplo, sobre análisis de sentimiento, pero dirigido más al consumidor podría ser el                         
siguiente. Imaginémonos que queremos comprar una cámara digital. Sabemos que lo que nos                       
interesa de la cámara son los siguientes parámetros:
● Duración de la batería.
● Pantalla.
● Objetivo(s).
● Megapíxeles.
● Etc.
11
Con NLP podríamos buscar por una serie de webs que hagan análisis (reviews) sobre unas                           
cámaras que hayamos seleccionado, cojan estos valores y hagan un análisis de sentimiento.                       
“Sobre la cámara A­1 hablan positivamente (+19,3) de la batería, (+11,3) pantalla y etc. Hablan                           
negativamente (­24,5) del objetivo...”. Con un informe de cada cámara, sería muy sencillo                       
seleccionar la mejor.
Como último ejemplo, en cuanto a traductores, efectivamente ya se ha avanzado mucho. Está                         
por ejemplo Google Translator con muchísimos idiomas. Es más, en su navegador, Google                       
Chrome, te va detectando el idioma de las páginas en las que navegas. Si alguna no está en tu                                   
idioma nativo, Chrome te propone su traducción a este idioma. Aún así, una página traducida                           
por Google no es igual que una traducida por una persona, y leyendo una traducción de estas se                                 
puede ver claramente la diferencia. Aquí ha habido gente que ha sacado multitud de fallos a                             
estos sistemas mediante la “doble traducción”. Esto quiere decir: traducir un texto de inglés a                           
español y de nuevo de español a inglés y ver si coincide. Existen webs que coleccionan una                               
serie de frases graciosas de doble traducción ya que muchas veces se pierde alguna palabra o                             
se modifica y el sentido es completamente diferente.
Por último, cabe destacar la existencia de un grupo de elementos que, a pesar de estar                             
recibiendo bastantes avances en la actualizada, todavía están muy lejos de ser solucionados.                       
Dentro de este grupo se encuentran los siguientes temas:
● Respuesta a preguntas (Question Answering)
● Paraphrase
● Resumen (Summarization)
● Diálogo
Algunos de ellos ya se han citado anteriormente, pero pongamos un par de ejemplos para                           
situarlos algo mejor. Hablando sobre la respuesta a preguntas, como ya se ha visto, puede ser                             
algo tan sencillo como la capital de un país. Puede ser algo más complejo pero que, manejando                               
cierta información, se pueda obtener. Por ejemplo “¿cuál es el autor del libro que vivió en el país                                 
‘x’ y tiene otro libro de vampiros?”. Y, por supuesto, hay preguntas que no tienen una respuesta                               
concreta, lo que dificultan la solución de este tema.
En cuanto al diálogo, ya se han hecho grandes avances con este tema. Uno de los robots más                                 
famosos con los que se puede entablar una conversación es Cleverbot. En su web                         
http://www.cleverbot.com/ puedes mantener una charla con este robot en la que muchas veces                       
se duda si realmente es un programa o una persona que está detras la que está respondiendo a                                 
tus mensajes. A continuación una imagen de una conversación con Cleverbot:
12
Todo esto es la teoría básica sobre el procesamiento del lenguaje natural. Ahora, ¿cómo llevar                           
todo esto a la práctica? ¿Cómo comenzar a programar nuestro software NLP? Existen                       
muchísimas librerías para prácticamente todos los lenguajes de programación que facilitan esta                     
labor, por lo que no hay que programar nada desde 0. Existe una lista bastante extensa en                               
Wikipedia. Para ello, hay que dirigirse a la dirección URL:
● http://en.wikipedia.org/wiki/List_of_natural_language_processing_toolkits#Natural_langua
ge_processing_toolkits.
De todas estas herramientas, veremos dos un poco por encima: NTLK, una librería para                         
Python, y OpenNLP, para JAVA. Además, veremos un software llamado “Apache Stanbol” que                       
reúne una serie de componentes semánticos para ofrecer una serie de funcionalidades en las                         
que los diferentes CMS se pueden apoyar para aumentar sus capacidades.
13
Tema 3 ­ NTLK
Como introducción, veamos un par de elementos de NLP.
El mundo de Internet esta lleno de texto por todos lados: noticias, blogs, textos en varios                             
idiomas, etc. El primer paso que se dio es indexar este contenido y realizar una serie de                               
motores de búsqueda para poder acceder a un contenido más específico. Posteriormente,                     
aparecieron las herramientas de NLP. Dichas herramientas, como se ha visto, permiten extraer                       
y procesar la estructura de un texto y crear un conocimiento.
Las metas de NLP se dividen en dos grupos. El primero tiene que ver con la ingeniería, y se                                   
compone de elementos como la traducción o pregunta ­ respuesta. El otro grupo es científico,                           
y tiene que ver con entender la estructura, entender la naturaleza del lenguaje humano, etc.
Existen diferentes tipos de datos:
● Chunked tagged WSJ text
● Parsed WSJ text
● IOB­tagged text
● Named Entity Classification
● Tagged biomedical text in xml
● CMU Pronunciation lexicon
● Etc.
Dicho esto, la herramienta NTLK se compone de varios elementos. Lo primero es que facilita el                             
acceso a los datos. Los datos son difíciles de leer, incluso cuando están en formato CSV. Por                               
eso, cuando la gente consigue realizar algo en este ámbito, lo comparten. Internet está lleno de                             
librerías para leer archivos de tipo CSV, XML, JSON y prácticamente todos los formatos.
Lo segundo de lo que hablar sobre NTLK son los algoritmos estándar. Esta parte es muy                             
complicada porque hay que entender y hay que aprender muchos elementos que componen el                         
lenguaje humano. Por suerte, esta herramienta, basada en el lenguaje de programación Python,                       
permite un acceso sencillo a todo este conocimiento. Dentro de su web hay numerosos                         
tutoriales y documentación. Veamos un ejemplo.
Se quiere obtener las 20 palabras más frecuentes en un texto. En Python, el código sería el                               
siguiente:
counts = defaultdict(int)
for words in text.split( ):
  count[word] *= 1
rankid_words = sorted(count.items, key= itemgetter(1))
14
print(word for (word, count) in reversed(ranked_words)[:20])
En cambio, todo esto se puede realizar en una sola línea con NTLK:
print FreqDist(tokenize.wordpunt(text)).sorted()[:20]
Por otro lado, el primer ejemplo separa las palabras por espacios, pero ¿qué pasa si hay signos                               
de puntuación? El código no es del todo correcto. En cambio, la función de NTLK es capaz de                                 
detectar este tipo de cosas.
Actualmente, todas esas librerías se centran en el texto. El lenguaje hablado, para poder trabajar                           
con él, primero es pasado a texto, y después se utilizan las mismas herramientas. En cambio,                             
es posible también analizar imágenes con algunas herramientas, pero principalmente, texto.                   
Con este texto, una de las cosas que se quiere hacer es poder entender lo que dice para, por                                   
ejemplo, realizar un resumen. Si hay un texto largo sobre una carrera de bicicletas, nos gustaría                             
que la herramienta resumiera el texto diciendo “la persona X ganó la carrera” (hipótesis). Eso a                             
veces es sencillo, pero si el texto es “(...) consiguió una medalla de oro en la carrera”, ya no es                                     
tan sencillo, ya que hay que entender que “conseguir una medalla de oro” significa ganar.
En el apartado anterior ya se han visto campos en los que trabaja NLP: extracción de                             
información, diálogo, respuesta a preguntas, resumen de textos... Para trabajar esto, NTLK,                     
junto a otras herramientas, dispone de 5 componentes tecnológicos:
● Word overlap
● Structural correspondence
● Semantic ­ pragmatic inference
● Paraphrase at word and phrase level
● Background knowledge (ontological knowledge)
Los avances en todos estos elementos han hecho posible cosas impresionantes. Por ejemplo,                       
en Japón existe una máquina que imita perfectamente a un niño de aproximadamente 10 años.
NTLK no es una herramienta mágica, pero si ayudará en ciertos aspectos. Esta disponible para                           
las plataformas Windows, Linux y Mac bajo el lenguaje de programación Python. Es una                         
herramienta Open Source gratuita que está desarrollada por la comunidad. Ofrece varios                     
interfaces de fácil utilización para muchísimas fuentes léxicas y otros elementos como por                       
ejemplo WordNet, además de una serie de librerías para procesar texto: clasificación,                     
tokenización, parseo, razonamiento semántico, etc. Es una herramienta muy didáctica que                   
permite hacer gran cantidad de acciones en el mundo del procesamiento del lenguaje natural.
Veamos un ejemplo dividido en tres partes. La primera parte separar el texto en palabras                           
(tokenize). Se realizaría de la siguiente forma:
>>> import nltk
>>> sentence = """At eight o'clock on Thursday morning
... Arthur didn't feel very good."""
15
>>> tokens = nltk.word_tokenize(sentence)
>>> tokens
['At', 'eight', "o'clock", 'on', 'Thursday', 'morning',
'Arthur', 'did', "n't", 'feel', 'very', 'good', '.']
El siguiente paso es etiquetar el texto para saber los tipos de palabras.
>>> tagged = nltk.pos_tag(tokens)
>>> tagged[0:6]
[('At', 'IN'), ('eight', 'CD'), ("o'clock", 'JJ'), ('on', 'IN'),
('Thursday', 'NNP'), ('morning', 'NN')]
Por último, realizar un reconocimiento de elementos dentro del texto:
>>> entities = nltk.chunk.ne_chunk(tagged)
>>> entities
Tree('S', [('At', 'IN'), ('eight', 'CD'), ("o'clock", 'JJ'),
           ('on', 'IN'), ('Thursday', 'NNP'), ('morning', 'NN'),
       Tree('PERSON', [('Arthur', 'NNP')]),
           ('did', 'VBD'), ("n't", 'RB'), ('feel', 'VB'),
           ('very', 'RB'), ('good', 'JJ'), ('.', '.')])
Con todo esto, se puede mostrar un árbol de parseo, algo como lo que muestra la siguiente
imagen:
A continuación, veamos otros ejemplos interesantes sobre cosas que se pueden hacer con                       
NTLK.
Sacar unos gráficos de dispersión de palabras sobre un texto:
>>> text.dispersion_plot(["citizens", "democracy", "freedom",     
"duties", "America"])
>>>
16
Obtener las colocaciones de un texto (colocaciones son palabras que suelen ir juntas):
>>> text4.collocations()
Building collocations list
United States; fellow citizens; years ago; Federal Government;             
General Government; American people; Vice President; Almighty God;             
Fellow citizens; Chief Magistrate; Chief Justice; God bless; Indian               
tribes; public debt; foreign nations; political parties; State             
governments; National Government; United Nations; public money
También dispone de una serie de robots para entablar una conversación bastante primitiva. Los                         
robots se pueden mostrar mediante el siguiente comando:
● nltk.chat.chatbots()
Es importante recordar la importación de la librería “ntlk” al comienzo. Este tipo de robots                           
disponen de una arquitectura concreta. La imagen que se muestra a continuación enseña cómo                         
se procesa un texto desde su entrada y como se devuelve una salida al usuario que está                               
interactuando.
17
Obtener las frases de un texto:
>>> from nltk.corpus import gutenberg
>>> macbeth_sentences = gutenber.sents('shakespeare­macbeth.txt')
>>> macbeth_sentences
[['[', 'The', 'Tragedie', 'of', 'Macbeth', 'by', 'William',           
'Shakespeare',
'1603', ']'], ['Actus', 'Primus', '.'], ...]
Obtener las palabras menos usadas en un texto:
>>> unusual_words(nltk.corpus.gutenberg.words('austen­sense.txt'))
['abbeyland', 'abhorrence', 'abominably', 'abridgement', 'accordant',       
'accustomary',
'adieus', 'affability', 'affectedly', 'aggrandizement', 'alighted',       
'allenham',
'amiably', 'annamaria', 'annuities', 'apologising', 'arbour',       
'archness', ...]
Un juego: palabras que contengan estas letras, obligatoria la ‘R’.
18
La solución:
>>> puzzle_letters = nltk.FreqDist('egivrvonl')
>>> obligatory = 'r'
>>> wordlist = nltk.corpus.words.words()
>>> [w for w in wordlist if len(w) >= 6
...                     and obligatory in w
...                     and nltk.FreqDist(w) <= puzzle_letters]
['glover', 'gorlin', 'govern', 'grovel', 'ignore', 'involver',         
'lienor',
'linger', 'longer', 'lovering', 'noiler', 'overling', 'region',         
'renvoi',
'revolving', 'ringle', 'roving', 'violer', 'virole']
Pronunciación:
>>> entries = nltk.corpus.cmudict.entries()
>>> len(entries)
127012
>>> for entry in entries[39943:39951]:
...    print entry
...
('fir', ['F', 'ER1'])
('fire', ['F', 'AY1', 'ER0'])
('fire', ['F', 'AY1', 'R'])
('firearm', ['F', 'AY1', 'ER0', 'AA2', 'R', 'M'])
('firearm', ['F', 'AY1', 'R', 'AA2', 'R', 'M'])
('firearms', ['F', 'AY1', 'ER0', 'AA2', 'R', 'M', 'Z'])
('firearms', ['F', 'AY1', 'R', 'AA2', 'R', 'M', 'Z'])
('fireball', ['F', 'AY1', 'ER0', 'B', 'AO2', 'L'])
El libro
El libro para aprender a utilizar NTLK es muy recomendable. Existe una versión online gratuita                           
en la siguiente dirección URL:
● http://nltk.org/book/
De ahí se han extraído los ejemplos mencionados anteriormente. Cada capítulo del libro                       
contiene además una serie de ejercicios para practicar lo que se ha explicado en ese capítulo.                             
Cualquier persona que quiera aprender esta herramienta, seguramente esta sea la mejor forma                       
de hacerlo.
19
Tema 4 ­ OpenNLP
OpenNLP es una librería de Apache que posee un conjunto de herramientas basadas en el                           
aprendizaje de la máquina. Realiza tareas como:
● Tokenización
● Segmentacion de frases
● POS­tagging
● NER
● Chunking
● Parsing
● Coreference resolution
La gente no tiene problemas en entender el idioma. Elementos como la ironía o el sarcasmo                             
son algo normal del lenguaje y ambos son utilizados a diario. Pero las máquinas tienen un                             
problema para entender este tipo de concepto. Por eso:
● Los ordenadores no tienen conocimiento del sentido común.
● Los ordenadores no tienen capacidad de razonamiento.
Por lo que, antes de poder entender, hay que analizar el texto. Este tipo de herramientas                             
contiene funcionalidades para estructurar el texto. Una secuencia normal seguiría los siguientes                     
pasos:
1. Texto “crudo” (raw text)
2. POS­tagging
3. NER (Named Entity Recognition)
4. Análisis sintáctico (syntactic parsing)
5. Texto anotado (annotated text)
OpenNLP está disponible como un paquete descargable desde su propia web:
● http://opennlp.apache.org/
También está disponible como repositorio de Maven. La herramienta está únicamente disponible                     
para el lenguaje de programación Java, y funciona en cualquier plataforma que tenga Java                         
correctamente instalado.
A continuación, veamos una serie de ejemplos de las acciones que se pueden realizar con                           
OpenNLP.
El primer ejemplo es sobre detección de frases.
public static void SentenceDetect() throws
InvalidFormatException,
IOException {
String paragraph = "Hi. How are you? This is Mike.";
20
// always start with a model, a model is learned from
training data
InputStream is = new FileInputStream("en­sent.bin");
SentenceModel model = new SentenceModel(is);
SentenceDetectorME sdetector = new
SentenceDetectorME(model);
String sentences[] = sdetector.sentDetect(paragraph);
System.out.println(sentences[0]);
System.out.println(sentences[1]);
is.close();
}
El siguiente ejemplo es sobre el tokenizer:
public static void Tokenize() throws InvalidFormatException,
IOException {
InputStream is = new FileInputStream("en­token.bin");
TokenizerModel model = new TokenizerModel(is);
Tokenizer tokenizer = new TokenizerME(model);
String tokens[] = tokenizer.tokenize("Hi. How are you?
This is Mike.");
for (String a : tokens)
System.out.println(a);
is.close();
}
El siguiente, sobre name finder:
public static void findName() throws IOException {
InputStream is = new FileInputStream("en­ner­person.bin");
TokenNameFinderModel model = new TokenNameFinderModel(is);
is.close();
NameFinderME nameFinder = new NameFinderME(model);
String []sentence = new String[]{
    "Mike",
    "Smith",
    "is",
    "a",
    "good",
    "person"
    };
Span nameSpans[] = nameFinder.find(sentence);
for(Span s: nameSpans)
System.out.println(s.toString());
}
21
POS Tagger:
public static void POSTag() throws IOException {
POSModel model = new POSModelLoader()
.load(new File("en­pos­maxent.bin"));
PerformanceMonitor perfMon = new
PerformanceMonitor(System.err, "sent");
POSTaggerME tagger = new POSTaggerME(model);
String input = "Hi. How are you? This is Mike.";
ObjectStream<String> lineStream = new
PlainTextByLineStream(
new StringReader(input));
perfMon.start();
String line;
while ((line = lineStream.read()) != null) {
String whitespaceTokenizerLine[] =
WhitespaceTokenizer.INSTANCE
.tokenize(line);
String[] tags = tagger.tag(whitespaceTokenizerLine);
POSSample sample = new
POSSample(whitespaceTokenizerLine, tags);
System.out.println(sample.toString());
perfMon.incrementCounter();
}
perfMon.stopAndPrintFinalResult();
}
El último ejemplo es sobre el parser:
public static void Parse() throws InvalidFormatException, IOException
{
InputStream is = new
FileInputStream("en­parser­chunking.bin");
ParserModel model = new ParserModel(is);
Parser parser = ParserFactory.create(model);
String sentence = "Programcreek is a very huge and useful
website.";
Parse topParses[] = ParserTool.parseLine(sentence, parser,
1);
for (Parse p : topParses)
p.show();
is.close();
}
22
El resultado de este último es:
23
Tema 5 ­ Stanbol
Apache Stanbol ofrece una serie componentes reusables para la gestión de contenido                     
semántico. Su uso deseado es para extender los sistemas tradicionales de gestión de                       
contenido con servicios semánticos como: uso directo de aplicaciones web (por ejemplo,                     
extracción o sugerencia de etiquetas, autocompletado de campos de búsqueda), workflows de                     
contenido inteligente o ruteado de correos electrónicos en base a entidades extraídas, temas,                       
etc.
Para ser utilizado como motor semántico vía sus servicios, todos sus componentes ofrecen                       
sus funcionalidades como API de un servicio web RESTful. Sus características principales:
● Content enhancement: servicios que añaden información semántica a partir de                 
contenido no­semántico.
● Reasoning: servicios que son capaces de extraer información semántica adicional sobre                   
el contenido basándose en la información semántica obtenida por el content                   
enhancement.
● Knowledge models: servicios que se usan para definir y manipular los modelos de datos                         
(como ontologías) usados para almacenar la información semántica.
● Persistence: servicios que almacenan (o cachean) información semántica y la hacen                   
“buscable”.
Todo se controla desde una web. Pero, como se ha visto, los componentes son RESTful, así                             
que es muy sencillo programar una aplicación que utilice estos endpoints. Para este                       
documento, nos basaremos solo en la web. Tras instalar y lanzar el launcher completo, al visitar                             
la URL http://localhost:8080/ se puede ver la web mostrada en la siguiente imagen. En la parte                             
superior de la misma, existen unos enlaces. Cada uno de esos enlaces corresponde con un                           
componente instalado y configurado en el sistema. En este caso, los componentes son:
● Enhancer
● Content hub
● Enhancer VIE
● Factstore
● Entityhub
24
● Sparql
● Rules
● Ontonet
● Reasoners
● Cmsadapter
Además de esto, existe una consola realizada con Apache Felix que permite configurar la                         
plataforma por completo. Pulsando sobre “system console”, y, por defecto, usuario “admin” y                       
contraseña “admin”.
Hemos hablado de un montón de elementos, pero ¿qué hace cada uno de ellos? A continuación                             
se explican brevemente.
El enhancer es una interfaz stateless que permite al cliente enviar contenido para analizar por                           
25
los Enhancement Engines y obtener el resultado sin que se almacene nada en el lado del                             
servidor.
De la imagen anterior, se obtienen los siguientes conceptos:
● Tika Engine: está basado en Apache Tika. Detecta el tipo de contenido, extrae el texto de
varios formatos de documentos y extrae los metadatos de varios formatos de
documentos (ejemplos de formatos: doc, PDF o incluso audio).
● Language Identification Engine: detección de idioma para contenido de tipo texto
utilizando Apache Tika.
● Named Entity Extraction Enhancement Engine: procesamiento del lenguaje natural
utilizando OpenNLP NER. Detecta la aparición de personas, lugares y organizaciones
únicamente.
● Named Entity Tagging Engine: sugiere enlaces a varias fuentes de datos conectadas
(por ejemplo, dbpedia).
El gráfico que se muestra a continuación contiene los diferentes endpoints de este componente                         
de Stanbol. No se van a comentar en este documento, pero queda constancia de las diferentes                             
posibilidades que hay:
26
El entitityhub es el componente de Stanbol responsable de ofrecer información sobre                     
entidades relevantes para el dominio del usuario. La siguiente imagen muestra una vista general                         
de las características del Entityhub:
27
El content hub es una interfaz stateful para enviar contenido a ser analizado y almacenar los                             
resultados en el servidor. Una vez almacenados, es posible navegar por los elementos del                         
contenido analizado. A largo plazo, el objetivo de esto es implementar búsquedas semánticas.                       
Es un repositorio de documentos basado en Apache Solr que permite almacenamiento de                       
documentos basados en texto y facilidades de búsqueda semántica personalizables.
El resultado es el mismo que en el enhacer, solo que esta vez el resultado no es volátil, sino                                   
que permanecerá almacenado (statefull).
El enhancer VIE es una interfaz stateful para enviar contenido para ser analizado y almacenado                           
en el servidor. Después es posible navegar por los elementos analizados con los resultados                         
obtenidos. Como en el caso anterior, se intentará realizar búsquedas semánticas de contenido                       
previamente analizado. VIE ofrece un puente entre Backbone.js y la web semántica. La                       
información sobre este elemento puede ser encontrada en http://viejs.org/. Un ejemplo de                     
funcionamiento se muestra en la siguiente imagen:
28
El sparql es la parte final del Stanbol store. Es un lenguaje estándar de queries utilizado                             
mayormente para ofrecer acceso interactivo a bases de conocimiento semántico: grafos RDF                     
resultantes, especialmente, todos los resultados gestionados por el contenthub.
El ontology manager ofrece un entorno controlado para gestionar ontologías, redes de                     
ontologías y sesiones de usuarios para el modelado de datos semánticos tras ellos. Ofrece                         
acceso completo a ontologías completas almacenadas en la capa de persistencia. Gestionar                     
una red de ontología significa que se pueden activar y desactivar partes de un modelo complejo                             
de tiempo en tiempo, para que los datos puedan ser vistos y clasificados bajo diferentes logical                             
lenses. Especialmente útil para operaciones de razonamiento (se verá más adelante).
Las reglas son un componente de Stanbol que soporta la construcción y ejecución de reglas de                             
inferencia. Una regla de inferencia, o regla de transformación, es una regla sintáctica o función                           
que toma premisas y devuelve una conclusión. Las Reglas de Stanbol permiten añadir una capa                           
para expresar lógicas de negocio por medio de axiomas, que codifican las reglas de inferencia.                           
Estos axiomas pueden ser organizados en un contenedor llamado recipe, que identifica una                       
serie de reglas que comparten la misma lógica de negocio y se interpretan como un todo.
Stanbol permite añadir reglas a otros componentes de Stanbol o third parties en tres formatos                           
diferentes:
● SWRL (Semantic Web Rule Language)
● Jena Rules
● SPARQL
Los reasoners ofrecen una serie de servicios que toman ventaja de motores de inferencia
automáticos.
El módulo implementa una API común para servicios de razonamiento, ofreciendo la posibilidad
de enchufar diferentes razonadores y configuraciones en paralelo.
El módulo incluye los servicios abstractos basados en OWLApi y Jena, con implementaciones
concretas para Jena RDFS, OWL, OWLMini y servicio de razonamiento HermiT.
Cada razonador puede ser accedido con una de tres tareas:
● check: para realizar una comprobación de consistencia. Este servicio devuelve un
estado 200 si los datos son consistentes, 204 si no lo son.
● classify: para materializar todas las sentencias rdf:type.
● enrich: para materializar todas las sentencias inferidas.
El CMS Adapter actúa como puente entre sistemas de gestión de contenido y Apache Stanbol.                           
Hay que tener en cuenta que todos los componentes de Apache Stanbol tienen servicios                         
RESTful que permiten ser accedidos desde fuera. El adaptador CMS interactúa con sistemas                       
29
de gestión de contenidos a través de especificaciones JCR y CMIS. Existen actualmente dos                         
funcionalidades principales que ofrece este componente: Bidirectional Mapping y Contenthub                 
Feed.
● Bidirectional Mapping. Habilita a los sistemas de gestión de contenido a representar                     
su estructura del repositorio de contenido en formato RDF. Esto ayuda a construir                       
servicios semánticos por encima de sistemas de gestión de contenido existentes                   
usando su representación RDF.
● Contenthub Feed. Ofrece gestión de elementos del repositorio de contenidos en el                     
Contenthub. El proceso de gestión incluye solo dos tipos de operaciones: enviar y                       
eliminar. Enviando elementos de contenido al Contenthub se puede hacer uso de                     
funcionalidades de indexado y búsqueda sobre los elementos enviados.
Por último, el factstore es un componente que permite usar relaciones de almacenamiento                       
entre entidades identificadas por sus URIs. Una relación entre dos o más entidades se llama un                             
fact.
DEMO: http://dev.iks­project.eu/
30
Tema 6 ­ Curiosidades
A continuación van una serie de curiosidades o elementos a mirar como curiosidad:
● Siri o Sherpa
● Cleverbot
● Wolframalpha
○ http://www.makeuseof.com/tag/10­search­terms­put­wolfram­alpha­good­everyd
ay/
○ http://www.telegraph.co.uk/technology/5349245/Top­10­funny­searches­in­Wolfra
m­Alpha.html
○ http://www.howtogeek.com/106925/10­amazing­uses­for­wolfram­alpha/
○ http://www.wolframalpha.com/input/?i=zoidberg+curve
● Boilerpipe
● CoreNLP (Stanford): demo http://nlp.stanford.edu:8080/corenlp/
● http://www.wordhippo.com/
● http://www.snappywords.com
● http://lsikeywords.com/
● http://www.sensebot.net/sense6.aspx
31

More Related Content

Viewers also liked

Conferencia PremiosSM 2012 - Caso Fanta
Conferencia PremiosSM 2012 - Caso FantaConferencia PremiosSM 2012 - Caso Fanta
Conferencia PremiosSM 2012 - Caso FantaManu Arroyo
 
La biodiversidad
La biodiversidadLa biodiversidad
La biodiversidadzami1723
 
Escuela y familia inclusion en la cultura letrada (1)
Escuela y familia   inclusion en la cultura letrada (1)Escuela y familia   inclusion en la cultura letrada (1)
Escuela y familia inclusion en la cultura letrada (1)inicials
 
Modelo de van hiele curso virtual (hercy)
Modelo de van hiele   curso virtual (hercy)Modelo de van hiele   curso virtual (hercy)
Modelo de van hiele curso virtual (hercy)Annaiiz Gf'
 
Nuevas tecnologias en la educación
Nuevas tecnologias en la educaciónNuevas tecnologias en la educación
Nuevas tecnologias en la educaciónmacarcar
 
Animales en extincion
Animales en extincionAnimales en extincion
Animales en extincionipiquera
 
Uso de aplic ac iones microinformáticas
Uso de aplic ac iones microinformáticasUso de aplic ac iones microinformáticas
Uso de aplic ac iones microinformáticasCésar Bello Moreno
 
Marina Ostolaza La sangre
Marina Ostolaza   La sangreMarina Ostolaza   La sangre
Marina Ostolaza La sangrehbogaz2
 
QDQ media: Captación de lientes en la red, por Enrique Burgos
QDQ media: Captación de lientes en la red, por Enrique BurgosQDQ media: Captación de lientes en la red, por Enrique Burgos
QDQ media: Captación de lientes en la red, por Enrique BurgosQDQ media
 
Ensayo. Dios Vs Big-bang
Ensayo.  Dios Vs Big-bangEnsayo.  Dios Vs Big-bang
Ensayo. Dios Vs Big-bangXimena Vega
 
Mito de dragones..54
Mito de dragones..54Mito de dragones..54
Mito de dragones..54jahirpes
 
Historia de los juegos olímpicos
Historia de los juegos olímpicosHistoria de los juegos olímpicos
Historia de los juegos olímpicosSofia Palacios
 
Creación de contenidos Módulo 5
Creación de contenidos Módulo 5Creación de contenidos Módulo 5
Creación de contenidos Módulo 5Joan Roca Peña
 

Viewers also liked (20)

Conferencia PremiosSM 2012 - Caso Fanta
Conferencia PremiosSM 2012 - Caso FantaConferencia PremiosSM 2012 - Caso Fanta
Conferencia PremiosSM 2012 - Caso Fanta
 
La biodiversidad
La biodiversidadLa biodiversidad
La biodiversidad
 
Escuela y familia inclusion en la cultura letrada (1)
Escuela y familia   inclusion en la cultura letrada (1)Escuela y familia   inclusion en la cultura letrada (1)
Escuela y familia inclusion en la cultura letrada (1)
 
Zapata,mosquera
Zapata,mosqueraZapata,mosquera
Zapata,mosquera
 
Modelo de van hiele curso virtual (hercy)
Modelo de van hiele   curso virtual (hercy)Modelo de van hiele   curso virtual (hercy)
Modelo de van hiele curso virtual (hercy)
 
Resolucion 532 de 2013
Resolucion 532 de 2013Resolucion 532 de 2013
Resolucion 532 de 2013
 
Carlos muños
Carlos muñosCarlos muños
Carlos muños
 
Nuevas tecnologias en la educación
Nuevas tecnologias en la educaciónNuevas tecnologias en la educación
Nuevas tecnologias en la educación
 
Animales en extincion
Animales en extincionAnimales en extincion
Animales en extincion
 
Anticonceptivo
AnticonceptivoAnticonceptivo
Anticonceptivo
 
Rev nales 2 amerbac 2013
Rev nales 2 amerbac 2013Rev nales 2 amerbac 2013
Rev nales 2 amerbac 2013
 
Uso de aplic ac iones microinformáticas
Uso de aplic ac iones microinformáticasUso de aplic ac iones microinformáticas
Uso de aplic ac iones microinformáticas
 
Marina Ostolaza La sangre
Marina Ostolaza   La sangreMarina Ostolaza   La sangre
Marina Ostolaza La sangre
 
QDQ media: Captación de lientes en la red, por Enrique Burgos
QDQ media: Captación de lientes en la red, por Enrique BurgosQDQ media: Captación de lientes en la red, por Enrique Burgos
QDQ media: Captación de lientes en la red, por Enrique Burgos
 
Ensayo. Dios Vs Big-bang
Ensayo.  Dios Vs Big-bangEnsayo.  Dios Vs Big-bang
Ensayo. Dios Vs Big-bang
 
Herramientas informaticas
Herramientas informaticasHerramientas informaticas
Herramientas informaticas
 
Presentació tenigram
Presentació tenigramPresentació tenigram
Presentació tenigram
 
Mito de dragones..54
Mito de dragones..54Mito de dragones..54
Mito de dragones..54
 
Historia de los juegos olímpicos
Historia de los juegos olímpicosHistoria de los juegos olímpicos
Historia de los juegos olímpicos
 
Creación de contenidos Módulo 5
Creación de contenidos Módulo 5Creación de contenidos Módulo 5
Creación de contenidos Módulo 5
 

Similar to NLP

Procesamiento lenguaje natural
Procesamiento lenguaje naturalProcesamiento lenguaje natural
Procesamiento lenguaje naturalVanesa Vera
 
Introduccion a la programacion orientada a objetos
Introduccion a la programacion orientada a objetosIntroduccion a la programacion orientada a objetos
Introduccion a la programacion orientada a objetosmilituchinita
 
Introduccion a la Programacion Orientada a Objetos
Introduccion a la Programacion Orientada a ObjetosIntroduccion a la Programacion Orientada a Objetos
Introduccion a la Programacion Orientada a Objetosliberaunlibroupeg
 
Introduccion a la programacion orientada a objetos
Introduccion a la programacion orientada a objetosIntroduccion a la programacion orientada a objetos
Introduccion a la programacion orientada a objetosYulyana López
 
Introduccion a la programacion orientada a objetos
Introduccion a la programacion orientada a objetosIntroduccion a la programacion orientada a objetos
Introduccion a la programacion orientada a objetosmilituchinita
 
chatgptencentroseducativos-presentacindelprofesorprofesor-a-230519204903-008d...
chatgptencentroseducativos-presentacindelprofesorprofesor-a-230519204903-008d...chatgptencentroseducativos-presentacindelprofesorprofesor-a-230519204903-008d...
chatgptencentroseducativos-presentacindelprofesorprofesor-a-230519204903-008d...FranciscoJosuRodrgue1
 
ChatGPT en Centros Educativos - Presentación del Profesorprofesor-a.pptx
ChatGPT en Centros Educativos - Presentación del Profesorprofesor-a.pptxChatGPT en Centros Educativos - Presentación del Profesorprofesor-a.pptx
ChatGPT en Centros Educativos - Presentación del Profesorprofesor-a.pptxssusere29f89
 
Presentacion unidad 8
Presentacion unidad 8Presentacion unidad 8
Presentacion unidad 8Perla Arteaga
 
Tecnologías emergentes y datos abiertos: procesamiento del lenguaje natural
Tecnologías emergentes y datos abiertos: procesamiento del lenguaje natural Tecnologías emergentes y datos abiertos: procesamiento del lenguaje natural
Tecnologías emergentes y datos abiertos: procesamiento del lenguaje natural Datos.gob.es
 
Los 4 reportes de lectura de todos los integrantes del esquipo numero 1 20122...
Los 4 reportes de lectura de todos los integrantes del esquipo numero 1 20122...Los 4 reportes de lectura de todos los integrantes del esquipo numero 1 20122...
Los 4 reportes de lectura de todos los integrantes del esquipo numero 1 20122...goku93
 
Lenguajes de programación i
Lenguajes de programación   iLenguajes de programación   i
Lenguajes de programación iOmar Robles
 
Conceptos básicos Programacion
Conceptos básicos ProgramacionConceptos básicos Programacion
Conceptos básicos ProgramacionAlfonso Mozko H
 

Similar to NLP (20)

Procesamiento lenguaje natural
Procesamiento lenguaje naturalProcesamiento lenguaje natural
Procesamiento lenguaje natural
 
Segunda entrega
Segunda entregaSegunda entrega
Segunda entrega
 
Segunda Entrega
Segunda EntregaSegunda Entrega
Segunda Entrega
 
Introduccion a la programacion orientada a objetos
Introduccion a la programacion orientada a objetosIntroduccion a la programacion orientada a objetos
Introduccion a la programacion orientada a objetos
 
Introduccion a la Programacion Orientada a Objetos
Introduccion a la Programacion Orientada a ObjetosIntroduccion a la Programacion Orientada a Objetos
Introduccion a la Programacion Orientada a Objetos
 
Introduccion a la programacion orientada a objetos
Introduccion a la programacion orientada a objetosIntroduccion a la programacion orientada a objetos
Introduccion a la programacion orientada a objetos
 
Introduccion a la programacion orientada a objetos
Introduccion a la programacion orientada a objetosIntroduccion a la programacion orientada a objetos
Introduccion a la programacion orientada a objetos
 
Sara lugo
Sara lugoSara lugo
Sara lugo
 
chatgptencentroseducativos-presentacindelprofesorprofesor-a-230519204903-008d...
chatgptencentroseducativos-presentacindelprofesorprofesor-a-230519204903-008d...chatgptencentroseducativos-presentacindelprofesorprofesor-a-230519204903-008d...
chatgptencentroseducativos-presentacindelprofesorprofesor-a-230519204903-008d...
 
ChatGPT en Centros Educativos - Presentación del Profesorprofesor-a.pptx
ChatGPT en Centros Educativos - Presentación del Profesorprofesor-a.pptxChatGPT en Centros Educativos - Presentación del Profesorprofesor-a.pptx
ChatGPT en Centros Educativos - Presentación del Profesorprofesor-a.pptx
 
Labibliadelinux para que aprenda
Labibliadelinux para que aprendaLabibliadelinux para que aprenda
Labibliadelinux para que aprenda
 
Teoría de la computación presentación
Teoría de la computación presentaciónTeoría de la computación presentación
Teoría de la computación presentación
 
Presentacion unidad 8
Presentacion unidad 8Presentacion unidad 8
Presentacion unidad 8
 
La I. A. y el procesamiento del lenguaje natural
La I. A. y el procesamiento del lenguaje naturalLa I. A. y el procesamiento del lenguaje natural
La I. A. y el procesamiento del lenguaje natural
 
La biblia de linux
La biblia de linuxLa biblia de linux
La biblia de linux
 
Tecnologías emergentes y datos abiertos: procesamiento del lenguaje natural
Tecnologías emergentes y datos abiertos: procesamiento del lenguaje natural Tecnologías emergentes y datos abiertos: procesamiento del lenguaje natural
Tecnologías emergentes y datos abiertos: procesamiento del lenguaje natural
 
Los 4 reportes de lectura de todos los integrantes del esquipo numero 1 20122...
Los 4 reportes de lectura de todos los integrantes del esquipo numero 1 20122...Los 4 reportes de lectura de todos los integrantes del esquipo numero 1 20122...
Los 4 reportes de lectura de todos los integrantes del esquipo numero 1 20122...
 
Lenguajes de programación i
Lenguajes de programación   iLenguajes de programación   i
Lenguajes de programación i
 
POO.pdf
POO.pdfPOO.pdf
POO.pdf
 
Conceptos básicos Programacion
Conceptos básicos ProgramacionConceptos básicos Programacion
Conceptos básicos Programacion
 

More from Alianzo Networks

Informe candidatos elecciones vascas 2016
Informe candidatos elecciones vascas 2016Informe candidatos elecciones vascas 2016
Informe candidatos elecciones vascas 2016Alianzo Networks
 
Informe diputados España en social media 2016
Informe diputados España en social media 2016Informe diputados España en social media 2016
Informe diputados España en social media 2016Alianzo Networks
 
Informe atención al cliente banca española
Informe atención al cliente banca españolaInforme atención al cliente banca española
Informe atención al cliente banca españolaAlianzo Networks
 
Informe Menciones Rankia Banca España - Noviembre 2015
Informe Menciones Rankia Banca España - Noviembre 2015Informe Menciones Rankia Banca España - Noviembre 2015
Informe Menciones Rankia Banca España - Noviembre 2015Alianzo Networks
 
Informe Menciones Banca España, Noviembre 2015
Informe Menciones Banca España, Noviembre 2015Informe Menciones Banca España, Noviembre 2015
Informe Menciones Banca España, Noviembre 2015Alianzo Networks
 
Informe Engagement Banca España Octubre 2015
Informe Engagement Banca España Octubre 2015Informe Engagement Banca España Octubre 2015
Informe Engagement Banca España Octubre 2015Alianzo Networks
 
Informe Banca México en Social Media
Informe Banca México en Social MediaInforme Banca México en Social Media
Informe Banca México en Social MediaAlianzo Networks
 
Informe Cervezas Convencionales España en Social Media
Informe Cervezas Convencionales España en Social MediaInforme Cervezas Convencionales España en Social Media
Informe Cervezas Convencionales España en Social MediaAlianzo Networks
 
10 Mayores Ciudades Españolas en Social Media
10 Mayores Ciudades Españolas en Social Media10 Mayores Ciudades Españolas en Social Media
10 Mayores Ciudades Españolas en Social MediaAlianzo Networks
 
Banca convencional España 2015 marzo
Banca convencional España 2015 marzoBanca convencional España 2015 marzo
Banca convencional España 2015 marzoAlianzo Networks
 
Automoción España en Social Media - Febrero 2015
Automoción España en Social Media - Febrero 2015Automoción España en Social Media - Febrero 2015
Automoción España en Social Media - Febrero 2015Alianzo Networks
 
Energy Industry - October 2014
Energy Industry -  October 2014Energy Industry -  October 2014
Energy Industry - October 2014Alianzo Networks
 
Informe de Periódicos Españoles
Informe de Periódicos EspañolesInforme de Periódicos Españoles
Informe de Periódicos EspañolesAlianzo Networks
 
Special Report: European Banks
Special Report: European BanksSpecial Report: European Banks
Special Report: European BanksAlianzo Networks
 
Informe sobre bancos españoles en social media
Informe sobre bancos españoles en social mediaInforme sobre bancos españoles en social media
Informe sobre bancos españoles en social mediaAlianzo Networks
 
Oficinas de turismo españolas en social media
Oficinas de turismo españolas en social mediaOficinas de turismo españolas en social media
Oficinas de turismo españolas en social mediaAlianzo Networks
 
Restaurantes españoles que mejor lo hacen en medios sociales
Restaurantes españoles que mejor lo hacen en medios socialesRestaurantes españoles que mejor lo hacen en medios sociales
Restaurantes españoles que mejor lo hacen en medios socialesAlianzo Networks
 

More from Alianzo Networks (20)

Informe candidatos elecciones vascas 2016
Informe candidatos elecciones vascas 2016Informe candidatos elecciones vascas 2016
Informe candidatos elecciones vascas 2016
 
Informe diputados España en social media 2016
Informe diputados España en social media 2016Informe diputados España en social media 2016
Informe diputados España en social media 2016
 
Informe atención al cliente banca española
Informe atención al cliente banca españolaInforme atención al cliente banca española
Informe atención al cliente banca española
 
Informe Menciones Rankia Banca España - Noviembre 2015
Informe Menciones Rankia Banca España - Noviembre 2015Informe Menciones Rankia Banca España - Noviembre 2015
Informe Menciones Rankia Banca España - Noviembre 2015
 
Informe Menciones Banca España, Noviembre 2015
Informe Menciones Banca España, Noviembre 2015Informe Menciones Banca España, Noviembre 2015
Informe Menciones Banca España, Noviembre 2015
 
Informe Engagement Banca España Octubre 2015
Informe Engagement Banca España Octubre 2015Informe Engagement Banca España Octubre 2015
Informe Engagement Banca España Octubre 2015
 
Informe Banca México en Social Media
Informe Banca México en Social MediaInforme Banca México en Social Media
Informe Banca México en Social Media
 
Informe Cervezas Convencionales España en Social Media
Informe Cervezas Convencionales España en Social MediaInforme Cervezas Convencionales España en Social Media
Informe Cervezas Convencionales España en Social Media
 
10 Mayores Ciudades Españolas en Social Media
10 Mayores Ciudades Españolas en Social Media10 Mayores Ciudades Españolas en Social Media
10 Mayores Ciudades Españolas en Social Media
 
Banca convencional España 2015 marzo
Banca convencional España 2015 marzoBanca convencional España 2015 marzo
Banca convencional España 2015 marzo
 
Automoción España en Social Media - Febrero 2015
Automoción España en Social Media - Febrero 2015Automoción España en Social Media - Febrero 2015
Automoción España en Social Media - Febrero 2015
 
Energy Industry - October 2014
Energy Industry -  October 2014Energy Industry -  October 2014
Energy Industry - October 2014
 
Informe de Periódicos Españoles
Informe de Periódicos EspañolesInforme de Periódicos Españoles
Informe de Periódicos Españoles
 
Special Report: European Banks
Special Report: European BanksSpecial Report: European Banks
Special Report: European Banks
 
Informe sobre bancos españoles en social media
Informe sobre bancos españoles en social mediaInforme sobre bancos españoles en social media
Informe sobre bancos españoles en social media
 
Oficinas de turismo españolas en social media
Oficinas de turismo españolas en social mediaOficinas de turismo españolas en social media
Oficinas de turismo españolas en social media
 
Restaurantes españoles que mejor lo hacen en medios sociales
Restaurantes españoles que mejor lo hacen en medios socialesRestaurantes españoles que mejor lo hacen en medios sociales
Restaurantes españoles que mejor lo hacen en medios sociales
 
Minería de datos
Minería de datosMinería de datos
Minería de datos
 
Sistemas distribuidos
Sistemas distribuidosSistemas distribuidos
Sistemas distribuidos
 
Business Intelligence
Business IntelligenceBusiness Intelligence
Business Intelligence
 

NLP

  • 2. Introducción Una de las tecnologías en las que más se está trabajando actualmente es en el procesamiento                              del lenguaje natural. Sus siglas en inglés son NLP, pero no hay que confundirlas con Neuro                              Linguistic Programming, que hace referencia a otro campo completamente diferente. El procesamiento del lenguaje natural pretende que las máquinas sean capaces de entender el                          lenguaje humano, ya sea escrito, oral o incluso imágenes. Todo esto implica muchísimo                        desarrollo no solo tecnológico, sino un amplio entendimiento del lenguaje. Hay que tener en                          cuenta, por ejemplo, que en lenguajes como el inglés o el español, las palabras están                            perfectamente separadas, ya sea por un espacio o un signo de puntuación. En cambio, en                            idiomas como el chino, esto no sucede, por lo que lo que parece tan simple como separar                                palabras se convierte en una tarea muy complicada. ¿Qué permite que una máquina sea capaz de entender texto escrito? Con toda la información                            que hay actualmente en Internet, poder entender lo que se dice habilita la posibilidad de realizar,                              por ejemplo, búsquedas más concretas. O por ejemplo, realizar un resumen completo de la                          Wikipedia por idiomas de los artículos que hablan sobre un tema concreto de forma positiva. Hay partes del NLP que ya están prácticamente solucionadas; otras, en cambio, aún les queda                            un largo camino por recorrer. De hecho, esto del procesamiento del lenguaje natural no es algo                              del siglo XX, sino que viene de más atrás. Comenzaremos hablando sobre la historia y                            evolución del NLP. 2
  • 3. Tema 1 ­ Historia Aunque los primeros datos sobre investigaciones en este campo datan del siglo XVII, no es                            hasta 1950 cuando Alan Turing publica su artículo “Computing Machinery and Intelligence” y                        propone lo que hoy en día se llama el Test de Turing. Dicho test es un criterio de inteligencia, y                                      lo que mide es la capacidad o habilidad que tiene un programa de ordenador de imitar a una                                  persona en una conversación escrita en tiempo real. En 1954 sucedió el experimento de Georgetown, donde consiguieron traducir más de 60 frases                          del ruso al inglés. La curiosidad de esto es que se hizo de forma completamente automática,                              sin que ninguna persona ayudara en el proceso. Al finalizar, la conclusión fue que en poco                              tiempo se conseguiría que esto fuese completamente automático. Diez años más tarde,                      habiendo sobrepasado las expectativas de forma negativa, esta investigación fue recortada.                    Hubo que esperar hasta 1980 a la construcción de los primeros sistemas de traducción                          estadísticos. Hoy en día, aún no se ha conseguido de forma perfecta. Sin embargo, en medio de todo este lío, hubo una serie de avances muy buenos. Entre ellos                                está el Universal Grammar en 1957, de Noam Chomsky, un sistema basado en reglas de                            estructuras sintácticas. Y por supuesto, SHRDLU, un programa que entendía en lenguaje                      natural y permitía al usuario entablar algo parecido a una conversación con la máquina a través                              de diferentes métodos, y ELIZA, cuya parte más famosa se llamaba DOCTOR (Rogerian                        psycotherapy) y permitía al usuario mantener una conversación algo primitiva. Hasta 1980, la mayoría de los sistemas NLP estaban basados en conjuntos de reglas                          3
  • 4. complejas escritas a mano. Sin embargo, a principios de esa década, las cosas comenzaron a                            cambiar gracias a la introducción de los algoritmos de aprendizaje. ¿Por qué surgieron estos                          algoritmos? Principalmente por dos razones: ● El incremento de la potencia computacional. ● Disminución del dominio de las reglas de Chomsky. A pesar de esto, algunos algoritmos eran muy parecidos a los que se hacían a mano. Por                                ejemplo: el algoritmo de árboles de decisión. Dicho algoritmo se parecía notablemente a una                          gran serie de reglas if­else creadas a mano. Otros se basaban en inferencia estadística, pero                            todos tenían una serie de ventajas respecto a las reglas escritas a mano: ● Se centraban en la mayoría de los casos, cuando las reglas escritas a mano suelen                            centrarse en casos específicos. ● Uso de algoritmos de inferencia estadísticos. ● Se hacen más precisos según se les dé más datos (entrenamiento). De aquí salen conceptos como el NLL o Natural Language Learning. También se han realizado investigaciones centradas en modelos estadísticos. Dichos modelos                    realizan decisiones probabilísticas basándose en una serie de pesos reales otorgados al texto                        de entrada. Actualmente, los mayores logros conseguidos están divididos en dos campos: ● Traducción automática (machine translation) ● Algoritmos de aprendizaje. 4
  • 5. Tema 2 ­ Conceptos sobre NLP Para comenzar esta sección, conviene también hablar ligeramente sobre la web semántica. La                        web semántica introduce un nuevo concepto en la web y es introducir información en la web de                                una forma que las máquinas lo puedan entender, tanto de forma directa como indirecta. Aquí                            hay dos visiones separadas: ● Sintáctica, el estudio de la gramática (cómo se dice algo) ● Semántica, el estudio del significado (qué significa lo que se dice) El problema entonces reside en el HTML. El HTML define la sintaxis de la web, pero no la                                  estructura de la misma. Por eso, las máquinas no pueden entender el significado de una página                              HTML. Se quiere pasar de un conjunto de elementos enlazados a un conjunto de elementos                            relacionados. Es por esto que HTML5 introduce nuevas etiquetas para la estructura de una web: ● <nav>: bloque de navegación ● <footer>: pie de página ● <article>: contenido de la página En cuanto a los enfoques de la web semántica, se pueden distinguir dos: ● Top­down: análisis de la información, Web Scraping, NLP. ● Down­top: incluir anotaciones semánticas en la información. Para el NLP, el primer punto es muy costoso. Algunas de las razones son porque necesita                              intervención humana, necesita mucho trabajo de mantenimiento o incluso puede conllevar                    problemas legales. El segundo punto, suele apoyarse en los RDFs. Los RDFs (Resource                        Description Framework) contienen sentencias simples formadas por tres elementos para                  describir los recursos de la Web. Para poder realizar consultas sobre RDFs, es necesario utilizar SPARQL. Por ejemplo, buscar                        5
  • 6. todos los actores de televisión italianos en dbpedia (http://querybuilder.dbpedia.org/): De todo esto sale el concepto de la Web 3.0: ● Web estandarizada y semántica ● Poner orden y estructura donde antes había “caos” ● Estándares de cambio de información de W3C ● Movimiento de los agentes virtuales, “cloud computing” y “big data” ● Etc. Hasta aquí el tema de la web semántica, pero ¿qué tiene que ver NLP con todo esto? El objetivo                                    principal sobre NLP es poder entender lo que se dice en el lenguaje humano. Para poder                              entender, hace falta realizar dos pasos: ● Analizar, bien sea texto, voz o imágenes. ● Parsear. Para el primer punto, analizar la voz necesita un paso previo y es transformar la voz en texto.                                  En cuanto a las imágenes, este es un campo en el que se está trabajando actualmente. Básicamente este es el proceso que siguen los humanos, y es lo que se busca que hagan las                                  máquinas. Pero ¿por qué es tan difícil? Existen varias complejidades que, a pesar de ser fáciles                              de detectar para los humanos, no lo es para un programa: ● Crash blossom, concepto que hace referencia a que una frase tenga 2 o más                          significados. ● Ambigüedad ● Lenguaje no estándar o coloquial ● Problemas de segmentación ● Idiomas ● Neologismos ● Conocimiento mundial ● Nombres de entidades “con truco” ● Etc. Un ejemplo de crash blossom puede ser: “Teacher strikes idle kids”. Esta frase puede tener dos                              significados: si el verbo es strikes y idle es adjetivo o si el verbo es idle y strikes es nombre.                                      Además, el significado es totalmente diferente. 6
  • 7. Detectar la ambigüedad es muy difícil y a veces imposible. Por ejemplo: “Jon no quiere a su                                hermano porque es muy envidioso”. Y la pregunta a responder sería, ¿quién es envidioso? ¿Jon                            o su hermano? Con este pedazo de texto es imposible saberlo. A veces la ambigüedad también                              tiene que ver con que una palabra tiene varios significados. Otro ejemplo de dificultad son los problemas de segmentación. Normalmente las palabras están                        separadas por espacio o algún signo de puntuación, por ejemplo, el punto. Pero ¿y si son unas                                siglas? El punto ya no vale como separador. Además, el hecho de que una coma esté en un                                  sitio y otro de una frase puede modificar mucho su significado. Véase el siguiente ejemplo: ● Si no fumas mucho, mejor. ● Si no fumas, mucho mejor. El simple hecho de modificar la coma delante o detrás de la misma palabra hace que el                                significado cambie totalmente. Se verá más adelante que, entre otras cosas, el NLP intenta                          hacer fácil el análisis de sentimiento de los textos. Un cambio de coma puede hacer una frase                                cambie de positiva a negativa totalmente. Hasta ahora solo se han visto teorías y dificultades, pero ¿cómo se aplica todo esto? Veamos                              un ejemplo. Imaginémonos que tenemos un montón de libros y relatos sobre la guerra civil                            española y necesitamos saber de ellos qué pensaban las personas implicadas en la guerra                          sobre Dios. Para ello, volviendo al año actual, deberíamos contratar a una persona para que se                              lea cada uno de los libros y relatos de los que disponemos, entendiendo y anotando lo que lee                                  para extraer información sobre el tema solicitado. Posteriormente escribirá el resultado.                    ¿Cuánto tarda en hacer todo esto? Pongamos que aproximádamente 5 meses. El primer paso                          que se dio en todo esto fue la digitalización. Gracias a este proceso, todos los libros están en                                  formato texto que una máquina puede indexar. Al poder indexarlo, se puede poner un motor de                              búsqueda sobre estos contenidos. ¿Qué pasa si buscamos la palabra Dios? Pues                      seguramente aparezcan frases en las que esté esta palabra, pero seguramente no tengan nada                          que ver con lo que pensaban. Pero, indudablemente se ha reducido el tiempo de trabajo de esta                                persona, ya que solo tiene que leer ciertos pasajes en vez de todos los contenidos al completo.                                Su tiempo se ve reducido, y puede tardar 5 días en realizar el trabajo. Pero ¿y si entendemos lo                                    que el texto pone? Lo que intenta el NLP es, a través de un análisis y una serie de procesos,                                      extraer información y estructura del contenido. De esta forma, se podría extraer directamente                        los únicos pasajes de los contenidos que hablen del tema solicitado. Si además el programa es                              capaz de realizar el resumen y conclusiones automáticamente, ni siquiera necesitamos a una                        persona para hacer este trabajo: estaría hecho en 5 minutos. Actualmente, el uso de NLP está bastante extendido. Los siguientes elementos son algunos de                          los ejemplos de utilización de esta tecnología: ● Motores de búsqueda. ● Recomendaciones de sitios. ● Filtro de spam. ● Bases de conocimiento y sistemas expertos. 7
  • 8. ● Sistemas automáticos de soporte al cliente. ● Publicidad. ● Analíticas de comportamiento de consumidores. Pongamos un ejemplo de cada uno de ellos. En cuanto a los motores de búsqueda, Google por                                ejemplo. Según estás escribiendo es capaz de darte una serie de recomendaciones de la                          palabra siguiente incluso auto­completarte la palabra que estás escribiendo, basándose en                    búsqueda anteriores y en collocations (pequeñas secuencias de palabras que aparecen juntas                      normalmente). Las recomendaciones de sitios son por ejemplo “quizás te interese visitar también...”. Estas                        recomendaciones, para tratarse de NLP, tienen que analizar el contenido que estás visitando y                          saber lo que realmente puede interesante de otros sitio, habiendo analizado el resto antes. Por                            ejemplo, Google es capaz de saber tu edad con las búsquedas que has realizado previamente.                            Las pruebas realizadas han acertado en un gran porcentaje. Se puede ver esto accediendo a                            los ajustes de Google Ads. El filtro de spam es algo que ya está muy extendido y es ampliamente utilizado. Este tipo de                                  filtros analizan el contenido para determinar si lo que se está recibiendo es basura o no. Cabe                                decir que también hay una serie de direcciones de spammers que automáticamente son                        filtradas y marcadas como spam incluso sin leer su contenido. Este último punto no es                            considerado NLP, sino blacklist. Las bases de conocimiento son las que se utilizan en la web semántica sobre todo. Tratan de                                describir el conocimiento de una manera lógica. Muchos de los avances en este campo están                            relacionados con la medicina. Por ejemplo, la Escuela de Medicina de la Universidad de Tufts ha                              creado TUSK (Tufts University Sciences Knowledgebase) y sirve como base de conocimiento.                      Esta infraestructura de software ya es compartida por tres escuelas de medicina en los                          Estados Unidos, tres en África y otra en la India. Normalmente estas bases de conocimiento                            poseen una ontología que especifica la estructura de su contenido y su esquema de                          clasificación. Se hablará más de ontologías en este documento. Los sistemas automáticos de soporte al cliente son por ejemplo, cuando llamas al servicio de                            atención al cliente de ‘x’ y te coge una máquina diciendo “diga brevemente lo que le ocurre”. La                                  máquina normalmente entiende bastante bien lo que dice el usuario, busca una posible                        respuesta y, en el caso de encontrar varias, te da las opciones encontradas. En cambio, si algo                                no lo entiende, te pasa con una persona para que puedas continuar la consulta. Hoy en día,                                muchas de estas consultas no pasan a manos de ninguna persona, y tareas triviales como                            activar o desactivar el buzón de voz han dejado de ser respondidas por personal humano. La publicidad es otro de los campos en los que más se ha avanzado. Antiguamente la                              publicidad era de forma masiva. Algunos sitios se fijaban en la dirección IP del usuario para                              poder saber su localización y aportar una publicidad cercana al usuario. Actualmente, como ya                          se ha visto, incluso Google sabe tus preferencias gracias, entre otras cosas, a tus búsquedas                            previas o a tu cuenta de Google+. Sabiendo esto, hay publicidad que está completamente                          8
  • 9. dirigida al usuario, y puedes estar navegando por una web y que te muestre publicidad sobre                              “compra esta consola” (sabiendo que el usuario es medianamente gamer) y otro usuario, en la                            misma web, recibir publicidad sobre “viaja a Nueva York”. Por un lado, los usuarios ganan: ya                              que voy a recibir publicidad qué mejor de las cosas que me interesan. Por otro lado, los que se                                    publicitan también ganan: su publicidad está dirigida a las personas que realmente están                        interesadas en sus productos. El último tema, analítica de comportamiento de clientes, es muy parecido al punto anterior. Este                            tema se ve mejor en la parte del curso dedicada a Big Data y reportes, solo que habría que                                    añadirle el componente de que realmente se sabe y se interpretan los datos de forma                            automática, por lo que las analíticas pueden ser mucho más que datos procesados. Hasta aquí se han visto diferentes usos que se le está dando al procesamiento del lenguaje                              natural. Pero existen multitud de investigaciones en curso sobre NLP. A continuación se                        exponen las investigaciones más comunes: ● Resumen automático: sabiendo el tipo de texto. ● Coreference resolution: relaciona menciones con entidades, resolviendo, por ejemplo                anáforas. ● Discourse analysis: identifica la estructura de un discurso. ● Machine translation: este es un problema identificado como AI­Complete o AI­Hard.                    Trata de traducir el de un lenguaje a otro. ● Segmentación morfológica: separar las palabras en morfemas. ● Named Entity Recognition (NER): enlaza los términos de un texto con personas,                      lugares, organizaciones... ● Natural Language Generation: de bases de datos a idioma entendible por una persona. ● Natural Language Understanding: convertir el texto para que los ordenadores puedan                    entenderlo y manipularlo más fácilmente. ● Optical Character Recognition (OCR): permite, por ejemplo, a los escáneres obtener el                      texto de una imagen. ● Part­of­speech tagging (POS tagging): etiquetar cada palabra por la posición en la que                        aparece. Se verán ejemplos de esto más adelante. ● Respuesta de preguntas: dada una pregunta, que sea capaz de responder. Aquí hay                        cosas muy sencillas, como “¿cuál es la capital de España?”; en cambio hay otras                          imposibles, como “¿cuál es el sentido de la vida?”. ● Extracción de relaciones: es capaz de obtener relaciones como hermanos, parejas, etc.                      de un texto. ● Sentence breaking: permite delimitar las frases. Como se ha visto más arriba, esto no                          es siempre trivial ya que el punto no siempre es fin de frase. ● Análisis de sentimiento: extrae información subjetiva de una serie de documentos para                      determinar una polaridad (positiva, negativa o neutra). ● Speech recognition: de audio a representación textual. También AI­Complete. ● Speech segmentation: separar en palabras un audio. ● Topic segmentation: separa el texto en segmentos que comparten un tema común. 9
  • 10. ● Word segmentation: separar en palabras un texto. Esto no es tan fácil si el texto está en                                chino, por ejemplo. ● Desambiguación del sentido de palabra: para las palabras que tengan más de un                        significado. POS Tagging Además, también hay una serie de tareas que son subcampos del NLP: ● Information Retrieval (IR): almacenar, buscar y obtener información. Es un campo                    separado que se acerca más al tema de bases de datos. ● Information extraction (IE): extracción de información semántica del texto. Esto incluye                    NER, coreference resolution, extracción de relaciones, etc. ● Speech processing: este apartado incluye speech recognition además de text­to­speech                  (por ejemplo, Loquendo) y tareas relacionadas. Todo esto son una gran cantidad de elementos que maneja NLP actualmente. Algunos de ellos                            están más resueltos que otros. Por ejemplo, se puede decir que están más o menos                            solucionados los siguientes temas: ● Detección de spam ● POS tagging ● Named Entity Recognition (NER) Algunos otros llevan un buen camino, y aunque no están del todo solucionados, se han                            10
  • 11. realizado grandes avances que les permiten distanciarse del desconocimiento de su solución: ● Análisis de sentimiento ● Coreference solution ● Desambiguación de palabras ● Parseado ● Traducción (Machine Translation) ● Information Extraction (IE) Por poner un ejemplo de uno de ellos, la extracción de información es un elemento que se utiliza                                  mucho en el entorno del email. Si por ejemplo recibes un correo con una fecha, el software es                                  capaz de detectar esta fecha, leer el resto del correo y sacar un posible asunto y al pulsar sobre                                    la fecha, te crea automáticamente una entrada en el calendario con ese asunto extraído, que por                              supuesto se puede cambiar. Incluso es capaz de extraer ubicaciones (véase, reservada el aula                          301 para la reunión). Otro ejemplo, sobre análisis de sentimiento, pero dirigido más al consumidor podría ser el                          siguiente. Imaginémonos que queremos comprar una cámara digital. Sabemos que lo que nos                        interesa de la cámara son los siguientes parámetros: ● Duración de la batería. ● Pantalla. ● Objetivo(s). ● Megapíxeles. ● Etc. 11
  • 12. Con NLP podríamos buscar por una serie de webs que hagan análisis (reviews) sobre unas                            cámaras que hayamos seleccionado, cojan estos valores y hagan un análisis de sentimiento.                        “Sobre la cámara A­1 hablan positivamente (+19,3) de la batería, (+11,3) pantalla y etc. Hablan                            negativamente (­24,5) del objetivo...”. Con un informe de cada cámara, sería muy sencillo                        seleccionar la mejor. Como último ejemplo, en cuanto a traductores, efectivamente ya se ha avanzado mucho. Está                          por ejemplo Google Translator con muchísimos idiomas. Es más, en su navegador, Google                        Chrome, te va detectando el idioma de las páginas en las que navegas. Si alguna no está en tu                                    idioma nativo, Chrome te propone su traducción a este idioma. Aún así, una página traducida                            por Google no es igual que una traducida por una persona, y leyendo una traducción de estas se                                  puede ver claramente la diferencia. Aquí ha habido gente que ha sacado multitud de fallos a                              estos sistemas mediante la “doble traducción”. Esto quiere decir: traducir un texto de inglés a                            español y de nuevo de español a inglés y ver si coincide. Existen webs que coleccionan una                                serie de frases graciosas de doble traducción ya que muchas veces se pierde alguna palabra o                              se modifica y el sentido es completamente diferente. Por último, cabe destacar la existencia de un grupo de elementos que, a pesar de estar                              recibiendo bastantes avances en la actualizada, todavía están muy lejos de ser solucionados.                        Dentro de este grupo se encuentran los siguientes temas: ● Respuesta a preguntas (Question Answering) ● Paraphrase ● Resumen (Summarization) ● Diálogo Algunos de ellos ya se han citado anteriormente, pero pongamos un par de ejemplos para                            situarlos algo mejor. Hablando sobre la respuesta a preguntas, como ya se ha visto, puede ser                              algo tan sencillo como la capital de un país. Puede ser algo más complejo pero que, manejando                                cierta información, se pueda obtener. Por ejemplo “¿cuál es el autor del libro que vivió en el país                                  ‘x’ y tiene otro libro de vampiros?”. Y, por supuesto, hay preguntas que no tienen una respuesta                                concreta, lo que dificultan la solución de este tema. En cuanto al diálogo, ya se han hecho grandes avances con este tema. Uno de los robots más                                  famosos con los que se puede entablar una conversación es Cleverbot. En su web                          http://www.cleverbot.com/ puedes mantener una charla con este robot en la que muchas veces                        se duda si realmente es un programa o una persona que está detras la que está respondiendo a                                  tus mensajes. A continuación una imagen de una conversación con Cleverbot: 12
  • 13. Todo esto es la teoría básica sobre el procesamiento del lenguaje natural. Ahora, ¿cómo llevar                            todo esto a la práctica? ¿Cómo comenzar a programar nuestro software NLP? Existen                        muchísimas librerías para prácticamente todos los lenguajes de programación que facilitan esta                      labor, por lo que no hay que programar nada desde 0. Existe una lista bastante extensa en                                Wikipedia. Para ello, hay que dirigirse a la dirección URL: ● http://en.wikipedia.org/wiki/List_of_natural_language_processing_toolkits#Natural_langua ge_processing_toolkits. De todas estas herramientas, veremos dos un poco por encima: NTLK, una librería para                          Python, y OpenNLP, para JAVA. Además, veremos un software llamado “Apache Stanbol” que                        reúne una serie de componentes semánticos para ofrecer una serie de funcionalidades en las                          que los diferentes CMS se pueden apoyar para aumentar sus capacidades. 13
  • 14. Tema 3 ­ NTLK Como introducción, veamos un par de elementos de NLP. El mundo de Internet esta lleno de texto por todos lados: noticias, blogs, textos en varios                              idiomas, etc. El primer paso que se dio es indexar este contenido y realizar una serie de                                motores de búsqueda para poder acceder a un contenido más específico. Posteriormente,                      aparecieron las herramientas de NLP. Dichas herramientas, como se ha visto, permiten extraer                        y procesar la estructura de un texto y crear un conocimiento. Las metas de NLP se dividen en dos grupos. El primero tiene que ver con la ingeniería, y se                                    compone de elementos como la traducción o pregunta ­ respuesta. El otro grupo es científico,                            y tiene que ver con entender la estructura, entender la naturaleza del lenguaje humano, etc. Existen diferentes tipos de datos: ● Chunked tagged WSJ text ● Parsed WSJ text ● IOB­tagged text ● Named Entity Classification ● Tagged biomedical text in xml ● CMU Pronunciation lexicon ● Etc. Dicho esto, la herramienta NTLK se compone de varios elementos. Lo primero es que facilita el                              acceso a los datos. Los datos son difíciles de leer, incluso cuando están en formato CSV. Por                                eso, cuando la gente consigue realizar algo en este ámbito, lo comparten. Internet está lleno de                              librerías para leer archivos de tipo CSV, XML, JSON y prácticamente todos los formatos. Lo segundo de lo que hablar sobre NTLK son los algoritmos estándar. Esta parte es muy                              complicada porque hay que entender y hay que aprender muchos elementos que componen el                          lenguaje humano. Por suerte, esta herramienta, basada en el lenguaje de programación Python,                        permite un acceso sencillo a todo este conocimiento. Dentro de su web hay numerosos                          tutoriales y documentación. Veamos un ejemplo. Se quiere obtener las 20 palabras más frecuentes en un texto. En Python, el código sería el                                siguiente: counts = defaultdict(int) for words in text.split( ):   count[word] *= 1 rankid_words = sorted(count.items, key= itemgetter(1)) 14
  • 15. print(word for (word, count) in reversed(ranked_words)[:20]) En cambio, todo esto se puede realizar en una sola línea con NTLK: print FreqDist(tokenize.wordpunt(text)).sorted()[:20] Por otro lado, el primer ejemplo separa las palabras por espacios, pero ¿qué pasa si hay signos                                de puntuación? El código no es del todo correcto. En cambio, la función de NTLK es capaz de                                  detectar este tipo de cosas. Actualmente, todas esas librerías se centran en el texto. El lenguaje hablado, para poder trabajar                            con él, primero es pasado a texto, y después se utilizan las mismas herramientas. En cambio,                              es posible también analizar imágenes con algunas herramientas, pero principalmente, texto.                    Con este texto, una de las cosas que se quiere hacer es poder entender lo que dice para, por                                    ejemplo, realizar un resumen. Si hay un texto largo sobre una carrera de bicicletas, nos gustaría                              que la herramienta resumiera el texto diciendo “la persona X ganó la carrera” (hipótesis). Eso a                              veces es sencillo, pero si el texto es “(...) consiguió una medalla de oro en la carrera”, ya no es                                      tan sencillo, ya que hay que entender que “conseguir una medalla de oro” significa ganar. En el apartado anterior ya se han visto campos en los que trabaja NLP: extracción de                              información, diálogo, respuesta a preguntas, resumen de textos... Para trabajar esto, NTLK,                      junto a otras herramientas, dispone de 5 componentes tecnológicos: ● Word overlap ● Structural correspondence ● Semantic ­ pragmatic inference ● Paraphrase at word and phrase level ● Background knowledge (ontological knowledge) Los avances en todos estos elementos han hecho posible cosas impresionantes. Por ejemplo,                        en Japón existe una máquina que imita perfectamente a un niño de aproximadamente 10 años. NTLK no es una herramienta mágica, pero si ayudará en ciertos aspectos. Esta disponible para                            las plataformas Windows, Linux y Mac bajo el lenguaje de programación Python. Es una                          herramienta Open Source gratuita que está desarrollada por la comunidad. Ofrece varios                      interfaces de fácil utilización para muchísimas fuentes léxicas y otros elementos como por                        ejemplo WordNet, además de una serie de librerías para procesar texto: clasificación,                      tokenización, parseo, razonamiento semántico, etc. Es una herramienta muy didáctica que                    permite hacer gran cantidad de acciones en el mundo del procesamiento del lenguaje natural. Veamos un ejemplo dividido en tres partes. La primera parte separar el texto en palabras                            (tokenize). Se realizaría de la siguiente forma: >>> import nltk >>> sentence = """At eight o'clock on Thursday morning ... Arthur didn't feel very good.""" 15
  • 16. >>> tokens = nltk.word_tokenize(sentence) >>> tokens ['At', 'eight', "o'clock", 'on', 'Thursday', 'morning', 'Arthur', 'did', "n't", 'feel', 'very', 'good', '.'] El siguiente paso es etiquetar el texto para saber los tipos de palabras. >>> tagged = nltk.pos_tag(tokens) >>> tagged[0:6] [('At', 'IN'), ('eight', 'CD'), ("o'clock", 'JJ'), ('on', 'IN'), ('Thursday', 'NNP'), ('morning', 'NN')] Por último, realizar un reconocimiento de elementos dentro del texto: >>> entities = nltk.chunk.ne_chunk(tagged) >>> entities Tree('S', [('At', 'IN'), ('eight', 'CD'), ("o'clock", 'JJ'),            ('on', 'IN'), ('Thursday', 'NNP'), ('morning', 'NN'),        Tree('PERSON', [('Arthur', 'NNP')]),            ('did', 'VBD'), ("n't", 'RB'), ('feel', 'VB'),            ('very', 'RB'), ('good', 'JJ'), ('.', '.')]) Con todo esto, se puede mostrar un árbol de parseo, algo como lo que muestra la siguiente imagen: A continuación, veamos otros ejemplos interesantes sobre cosas que se pueden hacer con                        NTLK. Sacar unos gráficos de dispersión de palabras sobre un texto: >>> text.dispersion_plot(["citizens", "democracy", "freedom",      "duties", "America"]) >>> 16
  • 17. Obtener las colocaciones de un texto (colocaciones son palabras que suelen ir juntas): >>> text4.collocations() Building collocations list United States; fellow citizens; years ago; Federal Government;              General Government; American people; Vice President; Almighty God;              Fellow citizens; Chief Magistrate; Chief Justice; God bless; Indian                tribes; public debt; foreign nations; political parties; State              governments; National Government; United Nations; public money También dispone de una serie de robots para entablar una conversación bastante primitiva. Los                          robots se pueden mostrar mediante el siguiente comando: ● nltk.chat.chatbots() Es importante recordar la importación de la librería “ntlk” al comienzo. Este tipo de robots                            disponen de una arquitectura concreta. La imagen que se muestra a continuación enseña cómo                          se procesa un texto desde su entrada y como se devuelve una salida al usuario que está                                interactuando. 17
  • 18. Obtener las frases de un texto: >>> from nltk.corpus import gutenberg >>> macbeth_sentences = gutenber.sents('shakespeare­macbeth.txt') >>> macbeth_sentences [['[', 'The', 'Tragedie', 'of', 'Macbeth', 'by', 'William',            'Shakespeare', '1603', ']'], ['Actus', 'Primus', '.'], ...] Obtener las palabras menos usadas en un texto: >>> unusual_words(nltk.corpus.gutenberg.words('austen­sense.txt')) ['abbeyland', 'abhorrence', 'abominably', 'abridgement', 'accordant',        'accustomary', 'adieus', 'affability', 'affectedly', 'aggrandizement', 'alighted',        'allenham', 'amiably', 'annamaria', 'annuities', 'apologising', 'arbour',        'archness', ...] Un juego: palabras que contengan estas letras, obligatoria la ‘R’. 18
  • 19. La solución: >>> puzzle_letters = nltk.FreqDist('egivrvonl') >>> obligatory = 'r' >>> wordlist = nltk.corpus.words.words() >>> [w for w in wordlist if len(w) >= 6 ...                     and obligatory in w ...                     and nltk.FreqDist(w) <= puzzle_letters] ['glover', 'gorlin', 'govern', 'grovel', 'ignore', 'involver',          'lienor', 'linger', 'longer', 'lovering', 'noiler', 'overling', 'region',          'renvoi', 'revolving', 'ringle', 'roving', 'violer', 'virole'] Pronunciación: >>> entries = nltk.corpus.cmudict.entries() >>> len(entries) 127012 >>> for entry in entries[39943:39951]: ...    print entry ... ('fir', ['F', 'ER1']) ('fire', ['F', 'AY1', 'ER0']) ('fire', ['F', 'AY1', 'R']) ('firearm', ['F', 'AY1', 'ER0', 'AA2', 'R', 'M']) ('firearm', ['F', 'AY1', 'R', 'AA2', 'R', 'M']) ('firearms', ['F', 'AY1', 'ER0', 'AA2', 'R', 'M', 'Z']) ('firearms', ['F', 'AY1', 'R', 'AA2', 'R', 'M', 'Z']) ('fireball', ['F', 'AY1', 'ER0', 'B', 'AO2', 'L']) El libro El libro para aprender a utilizar NTLK es muy recomendable. Existe una versión online gratuita                            en la siguiente dirección URL: ● http://nltk.org/book/ De ahí se han extraído los ejemplos mencionados anteriormente. Cada capítulo del libro                        contiene además una serie de ejercicios para practicar lo que se ha explicado en ese capítulo.                              Cualquier persona que quiera aprender esta herramienta, seguramente esta sea la mejor forma                        de hacerlo. 19
  • 20. Tema 4 ­ OpenNLP OpenNLP es una librería de Apache que posee un conjunto de herramientas basadas en el                            aprendizaje de la máquina. Realiza tareas como: ● Tokenización ● Segmentacion de frases ● POS­tagging ● NER ● Chunking ● Parsing ● Coreference resolution La gente no tiene problemas en entender el idioma. Elementos como la ironía o el sarcasmo                              son algo normal del lenguaje y ambos son utilizados a diario. Pero las máquinas tienen un                              problema para entender este tipo de concepto. Por eso: ● Los ordenadores no tienen conocimiento del sentido común. ● Los ordenadores no tienen capacidad de razonamiento. Por lo que, antes de poder entender, hay que analizar el texto. Este tipo de herramientas                              contiene funcionalidades para estructurar el texto. Una secuencia normal seguiría los siguientes                      pasos: 1. Texto “crudo” (raw text) 2. POS­tagging 3. NER (Named Entity Recognition) 4. Análisis sintáctico (syntactic parsing) 5. Texto anotado (annotated text) OpenNLP está disponible como un paquete descargable desde su propia web: ● http://opennlp.apache.org/ También está disponible como repositorio de Maven. La herramienta está únicamente disponible                      para el lenguaje de programación Java, y funciona en cualquier plataforma que tenga Java                          correctamente instalado. A continuación, veamos una serie de ejemplos de las acciones que se pueden realizar con                            OpenNLP. El primer ejemplo es sobre detección de frases. public static void SentenceDetect() throws InvalidFormatException, IOException { String paragraph = "Hi. How are you? This is Mike."; 20
  • 21. // always start with a model, a model is learned from training data InputStream is = new FileInputStream("en­sent.bin"); SentenceModel model = new SentenceModel(is); SentenceDetectorME sdetector = new SentenceDetectorME(model); String sentences[] = sdetector.sentDetect(paragraph); System.out.println(sentences[0]); System.out.println(sentences[1]); is.close(); } El siguiente ejemplo es sobre el tokenizer: public static void Tokenize() throws InvalidFormatException, IOException { InputStream is = new FileInputStream("en­token.bin"); TokenizerModel model = new TokenizerModel(is); Tokenizer tokenizer = new TokenizerME(model); String tokens[] = tokenizer.tokenize("Hi. How are you? This is Mike."); for (String a : tokens) System.out.println(a); is.close(); } El siguiente, sobre name finder: public static void findName() throws IOException { InputStream is = new FileInputStream("en­ner­person.bin"); TokenNameFinderModel model = new TokenNameFinderModel(is); is.close(); NameFinderME nameFinder = new NameFinderME(model); String []sentence = new String[]{     "Mike",     "Smith",     "is",     "a",     "good",     "person"     }; Span nameSpans[] = nameFinder.find(sentence); for(Span s: nameSpans) System.out.println(s.toString()); } 21
  • 22. POS Tagger: public static void POSTag() throws IOException { POSModel model = new POSModelLoader() .load(new File("en­pos­maxent.bin")); PerformanceMonitor perfMon = new PerformanceMonitor(System.err, "sent"); POSTaggerME tagger = new POSTaggerME(model); String input = "Hi. How are you? This is Mike."; ObjectStream<String> lineStream = new PlainTextByLineStream( new StringReader(input)); perfMon.start(); String line; while ((line = lineStream.read()) != null) { String whitespaceTokenizerLine[] = WhitespaceTokenizer.INSTANCE .tokenize(line); String[] tags = tagger.tag(whitespaceTokenizerLine); POSSample sample = new POSSample(whitespaceTokenizerLine, tags); System.out.println(sample.toString()); perfMon.incrementCounter(); } perfMon.stopAndPrintFinalResult(); } El último ejemplo es sobre el parser: public static void Parse() throws InvalidFormatException, IOException { InputStream is = new FileInputStream("en­parser­chunking.bin"); ParserModel model = new ParserModel(is); Parser parser = ParserFactory.create(model); String sentence = "Programcreek is a very huge and useful website."; Parse topParses[] = ParserTool.parseLine(sentence, parser, 1); for (Parse p : topParses) p.show(); is.close(); } 22
  • 24. Tema 5 ­ Stanbol Apache Stanbol ofrece una serie componentes reusables para la gestión de contenido                      semántico. Su uso deseado es para extender los sistemas tradicionales de gestión de                        contenido con servicios semánticos como: uso directo de aplicaciones web (por ejemplo,                      extracción o sugerencia de etiquetas, autocompletado de campos de búsqueda), workflows de                      contenido inteligente o ruteado de correos electrónicos en base a entidades extraídas, temas,                        etc. Para ser utilizado como motor semántico vía sus servicios, todos sus componentes ofrecen                        sus funcionalidades como API de un servicio web RESTful. Sus características principales: ● Content enhancement: servicios que añaden información semántica a partir de                  contenido no­semántico. ● Reasoning: servicios que son capaces de extraer información semántica adicional sobre                    el contenido basándose en la información semántica obtenida por el content                    enhancement. ● Knowledge models: servicios que se usan para definir y manipular los modelos de datos                          (como ontologías) usados para almacenar la información semántica. ● Persistence: servicios que almacenan (o cachean) información semántica y la hacen                    “buscable”. Todo se controla desde una web. Pero, como se ha visto, los componentes son RESTful, así                              que es muy sencillo programar una aplicación que utilice estos endpoints. Para este                        documento, nos basaremos solo en la web. Tras instalar y lanzar el launcher completo, al visitar                              la URL http://localhost:8080/ se puede ver la web mostrada en la siguiente imagen. En la parte                              superior de la misma, existen unos enlaces. Cada uno de esos enlaces corresponde con un                            componente instalado y configurado en el sistema. En este caso, los componentes son: ● Enhancer ● Content hub ● Enhancer VIE ● Factstore ● Entityhub 24
  • 25. ● Sparql ● Rules ● Ontonet ● Reasoners ● Cmsadapter Además de esto, existe una consola realizada con Apache Felix que permite configurar la                          plataforma por completo. Pulsando sobre “system console”, y, por defecto, usuario “admin” y                        contraseña “admin”. Hemos hablado de un montón de elementos, pero ¿qué hace cada uno de ellos? A continuación                              se explican brevemente. El enhancer es una interfaz stateless que permite al cliente enviar contenido para analizar por                            25
  • 26. los Enhancement Engines y obtener el resultado sin que se almacene nada en el lado del                              servidor. De la imagen anterior, se obtienen los siguientes conceptos: ● Tika Engine: está basado en Apache Tika. Detecta el tipo de contenido, extrae el texto de varios formatos de documentos y extrae los metadatos de varios formatos de documentos (ejemplos de formatos: doc, PDF o incluso audio). ● Language Identification Engine: detección de idioma para contenido de tipo texto utilizando Apache Tika. ● Named Entity Extraction Enhancement Engine: procesamiento del lenguaje natural utilizando OpenNLP NER. Detecta la aparición de personas, lugares y organizaciones únicamente. ● Named Entity Tagging Engine: sugiere enlaces a varias fuentes de datos conectadas (por ejemplo, dbpedia). El gráfico que se muestra a continuación contiene los diferentes endpoints de este componente                          de Stanbol. No se van a comentar en este documento, pero queda constancia de las diferentes                              posibilidades que hay: 26
  • 27. El entitityhub es el componente de Stanbol responsable de ofrecer información sobre                      entidades relevantes para el dominio del usuario. La siguiente imagen muestra una vista general                          de las características del Entityhub: 27
  • 28. El content hub es una interfaz stateful para enviar contenido a ser analizado y almacenar los                              resultados en el servidor. Una vez almacenados, es posible navegar por los elementos del                          contenido analizado. A largo plazo, el objetivo de esto es implementar búsquedas semánticas.                        Es un repositorio de documentos basado en Apache Solr que permite almacenamiento de                        documentos basados en texto y facilidades de búsqueda semántica personalizables. El resultado es el mismo que en el enhacer, solo que esta vez el resultado no es volátil, sino                                    que permanecerá almacenado (statefull). El enhancer VIE es una interfaz stateful para enviar contenido para ser analizado y almacenado                            en el servidor. Después es posible navegar por los elementos analizados con los resultados                          obtenidos. Como en el caso anterior, se intentará realizar búsquedas semánticas de contenido                        previamente analizado. VIE ofrece un puente entre Backbone.js y la web semántica. La                        información sobre este elemento puede ser encontrada en http://viejs.org/. Un ejemplo de                      funcionamiento se muestra en la siguiente imagen: 28
  • 29. El sparql es la parte final del Stanbol store. Es un lenguaje estándar de queries utilizado                              mayormente para ofrecer acceso interactivo a bases de conocimiento semántico: grafos RDF                      resultantes, especialmente, todos los resultados gestionados por el contenthub. El ontology manager ofrece un entorno controlado para gestionar ontologías, redes de                      ontologías y sesiones de usuarios para el modelado de datos semánticos tras ellos. Ofrece                          acceso completo a ontologías completas almacenadas en la capa de persistencia. Gestionar                      una red de ontología significa que se pueden activar y desactivar partes de un modelo complejo                              de tiempo en tiempo, para que los datos puedan ser vistos y clasificados bajo diferentes logical                              lenses. Especialmente útil para operaciones de razonamiento (se verá más adelante). Las reglas son un componente de Stanbol que soporta la construcción y ejecución de reglas de                              inferencia. Una regla de inferencia, o regla de transformación, es una regla sintáctica o función                            que toma premisas y devuelve una conclusión. Las Reglas de Stanbol permiten añadir una capa                            para expresar lógicas de negocio por medio de axiomas, que codifican las reglas de inferencia.                            Estos axiomas pueden ser organizados en un contenedor llamado recipe, que identifica una                        serie de reglas que comparten la misma lógica de negocio y se interpretan como un todo. Stanbol permite añadir reglas a otros componentes de Stanbol o third parties en tres formatos                            diferentes: ● SWRL (Semantic Web Rule Language) ● Jena Rules ● SPARQL Los reasoners ofrecen una serie de servicios que toman ventaja de motores de inferencia automáticos. El módulo implementa una API común para servicios de razonamiento, ofreciendo la posibilidad de enchufar diferentes razonadores y configuraciones en paralelo. El módulo incluye los servicios abstractos basados en OWLApi y Jena, con implementaciones concretas para Jena RDFS, OWL, OWLMini y servicio de razonamiento HermiT. Cada razonador puede ser accedido con una de tres tareas: ● check: para realizar una comprobación de consistencia. Este servicio devuelve un estado 200 si los datos son consistentes, 204 si no lo son. ● classify: para materializar todas las sentencias rdf:type. ● enrich: para materializar todas las sentencias inferidas. El CMS Adapter actúa como puente entre sistemas de gestión de contenido y Apache Stanbol.                            Hay que tener en cuenta que todos los componentes de Apache Stanbol tienen servicios                          RESTful que permiten ser accedidos desde fuera. El adaptador CMS interactúa con sistemas                        29
  • 30. de gestión de contenidos a través de especificaciones JCR y CMIS. Existen actualmente dos                          funcionalidades principales que ofrece este componente: Bidirectional Mapping y Contenthub                  Feed. ● Bidirectional Mapping. Habilita a los sistemas de gestión de contenido a representar                      su estructura del repositorio de contenido en formato RDF. Esto ayuda a construir                        servicios semánticos por encima de sistemas de gestión de contenido existentes                    usando su representación RDF. ● Contenthub Feed. Ofrece gestión de elementos del repositorio de contenidos en el                      Contenthub. El proceso de gestión incluye solo dos tipos de operaciones: enviar y                        eliminar. Enviando elementos de contenido al Contenthub se puede hacer uso de                      funcionalidades de indexado y búsqueda sobre los elementos enviados. Por último, el factstore es un componente que permite usar relaciones de almacenamiento                        entre entidades identificadas por sus URIs. Una relación entre dos o más entidades se llama un                              fact. DEMO: http://dev.iks­project.eu/ 30
  • 31. Tema 6 ­ Curiosidades A continuación van una serie de curiosidades o elementos a mirar como curiosidad: ● Siri o Sherpa ● Cleverbot ● Wolframalpha ○ http://www.makeuseof.com/tag/10­search­terms­put­wolfram­alpha­good­everyd ay/ ○ http://www.telegraph.co.uk/technology/5349245/Top­10­funny­searches­in­Wolfra m­Alpha.html ○ http://www.howtogeek.com/106925/10­amazing­uses­for­wolfram­alpha/ ○ http://www.wolframalpha.com/input/?i=zoidberg+curve ● Boilerpipe ● CoreNLP (Stanford): demo http://nlp.stanford.edu:8080/corenlp/ ● http://www.wordhippo.com/ ● http://www.snappywords.com ● http://lsikeywords.com/ ● http://www.sensebot.net/sense6.aspx 31