Procesamiento Del Lenguaje Natural Con Python

Embed Size (px)

Citation preview

Procesamiento del Lenguaje Natural con Python

Procesamiento del Lenguaje Natural con PythonAnlisis de Texto con el Kit de herramientas de lenguaje naturalEste es un libro sobre el Procesamiento del Lenguaje Natural.Por "lenguaje natural" nos referimos a un lenguaje que se utiliza para la comunicacin diaria de los seres humanos; idiomas como el Ingls, Hindi o portugus.En contraste con las lenguas artificiales como los lenguajes de programacin y las notaciones matemticas, las lenguas naturales han evolucionado a medida que pasan de generacin en generacin, y son difciles de precisar con reglas explcitas.

Tomaremos el Procesamiento del Lenguaje Natural - o PNL para abreviar - en un sentido amplio para cubrir cualquier tipo de manipulacin informtica del lenguaje natural.En un extremo, podra ser tan simple como contar las frecuencias de palabras para comparar los diferentes estilos de escritura.En el otro extremo, la PNL consiste en "comprender" declaraciones completas humanos, por lo menos hasta el punto de ser capaz de dar una respuesta til a ellos.PrefacioLa PNL es importante por razones cientficas, econmicas, sociales y culturales.La PNL est experimentando un rpido crecimiento ya que sus teoras y mtodos estn desplegados en una variedad de tecnologas de idioma.Por esta razn, es importante para una amplia gama de personas que tienen un conocimiento prctico de NLP.

Dentro de la industria, esto incluye a las personas en interaccin persona-ordenador, anlisis de informacin de negocios y desarrollo de software web.Dentro de la academia, que incluye a las personas en las reas de informtica para las humanidades y la lingstica de corpus a travs de la informtica y la inteligencia artificial.(Para muchas personas en el mundo acadmico, la PNL se conoce con el nombre de "Lingstica Computacional.")AudienciaEste libro es una introduccinprcticaa la PNL.Usted aprender por ejemplo, escribir programas reales, y comprender el valor de ser capaz de probar una idea hasta la implementacin.Si usted no ha aprendido ya, este libro le ensearprogramacin.A diferencia de otros libros de programacin, nos dan ejemplos extensos y ejercicios de PNL.

El enfoque que hemos adoptado tambinprincipios,en que cubrimos los fundamentos tericos y no rehuir de un cuidadoso anlisis lingstico y computacionales.Hemos tratado de serpragmticospara lograr un equilibrio entre la teora y la aplicacin, la identificacin de las conexiones y las tensiones.Por ltimo, somos conscientes de que no vas a salir de esto a menos que sea tambinagradable,as que hemos tratado de incluir muchas aplicaciones y ejemplos que son interesantes y divertidas, a veces caprichosa.

Este libro no es un texto de ciencias de la computacin avanzada.Los rangos de contenido introductorio al intermedio, y se dirige a los lectores que quieren aprender a analizar el texto usando Python y el kit de herramientas de lenguaje natural.Para ms informacin sobre los algoritmos avanzados implementados en NLTK, puede examinar el cdigo de Python enlazadas desdehttp://www.nltk.org/,y consultar los otros materiales citados en este libro.EnfasisAl excavar en el material presentado aqu, usted aprender:Cuntos programas simples pueden ayudarle a manipular y analizar datos lingsticos, y cmo escribir estos programasQu conceptos clave de la PNL y la lingstica se utilizan para describir y analizar el lenguajeCmo las estructuras de datos y algoritmos se utilizan en PNLLa cantidad de datos de idioma se almacena en formatos estndar, y cmo los datos se puede utilizar para evaluar el rendimiento de las tcnicas de PNLLo que aprenderManipulacin de cuerpos grandes, explorar modelos lingsticos y probar afirmaciones empricas.

La creacin de sistemas robustos para realizar tareas lingsticas con las aplicaciones tecnolgicas.Antecedentes en las artes y las humanidadesUtilizando tcnicas de modelado de datos, minera de datos y descubrimiento de conocimiento para analizar el lenguaje natural.

Usando algoritmos lingsticos y estructuras de datos en el software de procesamiento de lenguaje fuerte.Antecedentes de la ciencia y de la ingenieraLos primeros captulos estn organizados en orden de dificultad conceptual, comenzando con una introduccin prctica al procesamiento del lenguaje que muestra cmo explorar los cuerpos interesantes de texto mediante pequeos programas escritos en Python (captulos 1-3).Esto es seguido por un captulo sobre la programacin estructurada (captulo 4), que consolida los temas de programacin dispersos en los captulos anteriores.Despus de esto, el ritmo recoge, y pasamos a una serie de captulos sobre temas fundamentales en el procesamiento del lenguaje: extraccin de etiquetado, la clasificacin y la informacin (captulos 5-7).Los siguientes tres captulos buscar la manera de analizar una frase, reconocer su estructura sintctica, y construir representaciones de significado (captulos 8-10).El ltimo captulo est dedicado a los datos lingsticos y cmo se puede controlar con eficacia (Captulo 11).El libro concluye con un eplogo, discutiendo brevemente el pasado y el futuro del campo.

OrganizacinDentro de cada captulo, cambiar entre diferentes estilos de presentacin.En un estilo, el lenguaje natural es el conductor.Se analiza el lenguaje, explorar conceptos lingsticos y utilizar ejemplos de programacin para apoyar la discusin.A menudo emplean construcciones de Python que no se han introducido de forma sistemtica, para que pueda ver su propsito antes de profundizar en los detalles de cmo y por qu funcionan.Esto es igual que aprender expresiones idiomticas en una lengua extranjera: eres capaz de comprar un pastel agradable sin antes haber aprendido los entresijos de formacin pregunta.En el otro estilo de presentacin, el lenguaje de programacin ser el conductor.Vamos a analizar los programas, explorar algoritmos, y los ejemplos lingsticos jugar un papel de apoyo.

Cada captulo termina con una serie de ejercicios graduados, que son tiles para la consolidacin del material.Los ejercicios se clasifican de acuerdo con el siguiente esquema: es para ejercicios sencillos que implican modificaciones menores a ejemplos de cdigo proporcionados u otras actividades simples; es para los ejercicios intermedios que explorar un aspecto de la materia con mayor profundidad, lo que requiere un cuidadoso anlisis y diseo; difciles, es para tareas de final abierto que pondr a prueba su comprensin del material y te obligan a pensar de manera independiente (nuevos lectores a la programacin debe saltar estos).Cada captulo tiene una seccin de lectura adicional y una lnea "extras" en la seccinhttp://www.nltk.org/,con enlaces a los materiales ms avanzados y recursos en lnea.Las versiones en lnea de todos los ejemplos de cdigo tambin se encuentra all.

Python es un lenguaje de programacin sencillo pero potente con excelente funcionalidad para el procesamiento de datos lingsticos.Aqu hay un programa de cinco lneas de Python que procesa e imprimefile.txttodas las palabras que terminan ening:

Por qu Python?

Este programa ilustra algunas de las principales caractersticas de Python.En primer lugar, los espacios en blanco se utiliza para lneas denidosde cdigo, con lo que la lnea de salida conifcae dentro del mbito de aplicacin de la lnea anteriorforque empiecen con, lo que garantiza que la pruebaINGse realiza para cada palabra.En segundo lugar, Python esorientado a objetos,cada variable es una entidad que tiene ciertos atributos definidos y mtodos.Por ejemplo, el valor de la variable delneaes ms que una secuencia de caracteres.Es un objeto de cadena que tiene un "mtodo" (u operacin) llamadosplit ()que podemos utilizar para romper una lnea en sus palabras.Para aplicar un mtodo de un objeto, se escribe el nombre del objeto, seguido de un punto, seguido por el nombre del mtodo, es decir,line.split ().En tercer lugar, los mtodos tienenargumentosexpresados entre parntesis.Por ejemplo, en el ejemplo,word.endswith('ing')tena'ing'el argumento para indicar que queramos palabras que terminan conINGy no otra cosa.Por ltimo - y ms importante - Python es muy legible, tanto es as que es bastante fcil de adivinar lo que hace el programa, incluso si usted nunca ha escrito un programa anterior.Elegimos Python, ya que tiene una curva de aprendizaje superficial, su sintaxis y su semntica es transparente, y tiene una buena cadena de manipulacin de la funcionalidad.Como un lenguaje interpretado, Python facilita la exploracin interactiva.Como un lenguaje orientado a objetos, Python permite que los datos y los mtodos para encapsular y reutilizar fcilmente.Como un lenguaje dinmico, Python permisos de atributos que se aade a los objetos sobre la marcha, y permite que las variables que se escriben de forma dinmica, lo que facilita un rpido desarrollo.Python viene con una extensa biblioteca estndar, que incluye componentes para la programacin grfica, procesamiento numrico y conectividad web.

NLTK define una infraestructura que puede ser usado para crear programas de PNL en Python.Proporciona clases bsicas para la representacin de los datos relevantes para el procesamiento del lenguaje natural, interfaces estndar para la realizacin de tareas tales como el etiquetado parte de su discurso, el anlisis sintctico y clasificacin de texto, y las implementaciones estndar para cada tarea que se pueden combinar para resolver problemas complejos.NLTK viene con una extensa documentacin.Adems de este libro, la pgina web ofrecehttp://www.nltk.org/documentacin de la API que cubre cada mdulo, la clase y la funcin en la gua, la especificacin de parmetros y dando ejemplos de su uso.El sitio web tambin ofrece HOWTOs muchos de ellos con amplios ejemplos y casos de prueba, destinada a usuarios, desarrolladores e instructores.

Python:El material presentado en este libro se supone que est utilizando la versin de Python 2.4 o 2.5.Estamos comprometidos a portar NLTK para Python 3.0 una vez que las bibliotecas que NLTK depende hayan sido adaptadas.NLTK:Los ejemplos de cdigo de este libro uso NLTK versin 2.0.Las versiones posteriores de NLTK ser compatible con versiones anteriores.NLTK-Data:Este contiene el corpus lingsticos que son analizadas y procesadas en el libro.NumPy:(Recomendado) Esta es una biblioteca de computacin cientfica con soporte para matrices multidimensionales y lgebra lineal, necesario para cierta probabilidad, el etiquetado, el agrupamiento, y las tareas de clasificacin.Matplotlib:(Recomendado) Esta es una biblioteca de trazado 2D para la visualizacin de datos, y se utiliza en algunos de los ejemplos de cdigo del libro que producen grficos de lneas y grficos de barras.NetworkX:(Opcional) Esta es una biblioteca para almacenar y manipular las estructuras de redes que consisten de nodos y aristas.Para visualizar las redes semnticas, tambin instale la bibliotecaGraphviz.Prover9:(Opcional) Se trata de un demostrador de teoremas automatizado para la lgica de primer orden y ecuacional, utilizada para justificar la inferencia en el procesamiento del lenguaje.NLTK fue creado originalmente en 2001 como parte de un curso de lingstica computacional en el Departamento de Ciencias de la Computacin e Informacin de la Universidad de Pennsylvania.Desde entonces, ha sido desarrollado y ampliado con la ayuda de docenas de contribuyentes.Ahora se ha adoptado en los cursos en decenas de universidades, y sirve como la base de muchos proyectos de investigacin.VerI.2para obtener una lista de los mdulos de NLTK ms importantes.

Natural Language Toolkit (NLTK)Idioma tarea de procesamientoNLTK mdulosFuncionalidadAcceso a cuerposnltk.corpusinterfaces estandarizadas para corpus y lxicosCadena de procesamientonltk.tokenize, nltk.stemtokenizers, tokenizers oraciones, lematizadoresColocacin descubrimientonltk.collocationst-test, chi-cuadrado, punto-sabio informacin mutuaParte de su discurso de marcadonltk.tagn-gram, backoff, Brill, HMM, TnTClasificacinnltk.classify, nltk.clusterrbol de decisin, la mxima entropa, ingenuo de Bayes, EM, k-meansChunkingnltk.chunkexpresin regular, n-gram, llamada entidad-Parsingnltk.parsegrfico, basado en caractersticas, la unificacin, la dependencia probabilstica,Interpretacin semnticanltk.sem, nltk.inferencelambda clculo, lgica de primer orden, la comprobacin de modeloIndicadores de evaluacinnltk.metricsprecisin, cobertura, acuerdos coeficientesProbabilidad y estimacinnltk.probabilitydistribuciones de frecuencias, distribuciones de probabilidad suavizadasAplicacionesnltk.app, nltk.chatconcordancias grfica, programas de anlisis, el navegador de WordNet, chatbotsTrabajo de campo lingsticonltk.toolboxmanipular los datos en formato SIL ToolboxCuadro I.2:Tareas de procesamiento del lenguaje y los mdulos correspondientes NLTK con ejemplos de la funcionalidad

Simplicidad:Proporcionar un marco intuitivo junto con bloques de construccin importantes, dando a los usuarios un conocimiento prctico de la PNL sin empantanarse en el tedioso mantenimiento de la casa por lo general asociada con los datos de procesamiento del lenguaje anotadosConsistencia:Proporcionar un marco uniforme con interfaces consistentes y estructuras de datos y nombres de los mtodos de fcil adivinablesExtensibilidad:Para proporcionar una estructura en la que los nuevos mdulos de software pueden ser fcilmente acomodados, incluyendo implementaciones alternativas y enfoques que compiten por la misma tareaModularidad:Para proporcionar los componentes que se pueden utilizar de forma independiente sin necesidad de entender el resto de la caja de herramientasNLTK fue diseado con cuatro objetivos principales en mente:En contraste con estos objetivos son tres no los requisitos - cualidades potencialmente tiles que hemos evitado deliberadamente.En primer lugar, mientras que el conjunto de herramientas proporciona una amplia gama de funciones, no es enciclopdico, sino que es una herramienta, no un sistema, y seguir evolucionando con el campo de la PNL.En segundo lugar, mientras que el conjunto de herramientas es lo suficientemente eficaz para apoyar tareas significativas, no est muy optimizado para el rendimiento en tiempo de ejecucin; optimizaciones a menudo implican algoritmos ms complejos, o implementaciones en lenguajes de programacin de bajo nivel como C o C + +.Esto hara que el software sea menos legible y ms difcil de instalar.En tercer lugar, hemos tratado de evitar trucos inteligentes de programacin, ya que creemos que las implementaciones claros son preferibles a las ingeniosas an indescifrable.