Habilidades de análisis de texto de Python

Como se mencionó en el capítulo anterior, Python es un lenguaje de programación potente y fácil de usar, por lo que este libro lo usa como un lenguaje de muestra y también proporciona un conjunto de tutoriales básicos de análisis de texto de Python.

¿Por qué introducir estos trucos de Python? La razón es que se espera que los lectores tengan conocimientos previos de Python y matemáticas de la escuela secundaria, pero puede haber muchos lectores que nunca hayan escrito código Python. Para los lectores que han escrito código Python, el conocimiento usado en el análisis de texto y la manipulación de cadenas es completamente diferente del conocimiento usado en el desarrollo web (por ejemplo, usando el marco web Django escrito en Python para construir sitios web). Los temas cubiertos en este capítulo son los siguientes:

  • Por qué utilizar Python para el análisis de texto;
  • Habilidades de análisis de texto en Python.

2.1 Por qué utilizar Python para el análisis de texto

Python representa texto en forma de cadenas, y la clase correspondiente de estos objetos de cadena es str. Es un UNICODE o personaje inmutable. Se debe distinguir cuidadosamente un punto: en Python 3, todas las cadenas son UNICODE por defecto; pero en Python 2, la clase str está limitada a códigos ASCII y se necesita otra clase UNICODE para tratar con UNICODE.

UNICODE es solo un lenguaje de codificación o una forma de procesar texto. Por ejemplo, el valor UNICODE de la letra Z es U + 05A. Históricamente, muchos tipos de codificación en Python deben ser manejados por los propios desarrolladores, y todas las operaciones de bajo nivel están en bytes. De hecho, en la actualización de la versión 2 a la versión 3, el cambio en la forma en que Python maneja UNICODE ha provocado mucha discusión en su comunidad, con críticas y apoyo. Actualmente, se está migrando una gran cantidad de código de Python 2 a Python 3, pero el debate sobre el procesamiento de UNICODE no se ha detenido.

La operación subyacente de la cadena se realiza en bytes. Los bytes almacenan números y se combinan diferentes números para representar diferentes caracteres o símbolos. Esta es la razón esencial por la que UNICODE y ASCII utilizan diferentes formas de representar personajes. Porque en Python 2, las cadenas se almacenan como bytes; en Python 3, las cadenas se almacenan como UNICODE.

Este libro no entrará en los detalles técnicos de la codificación y los problemas encontrados al tratar con estos códigos. Sin embargo, se recomienda a los lectores que utilicen Python 3 y UNICODE al procesar texto. La razón por la que no se recomienda Python 2 es que la comunidad científica informática lo eliminará gradualmente y no tiene sentido seguir usando Python 2 para escribir aplicaciones y código. Python 3 es compatible con UNICODE, y este libro usa Python 3 como lenguaje de ejemplo, es decir, este libro usa UNICODE por defecto para manipular texto. Vale la pena señalar que para asegurarse de que se utilicen cadenas de UNICODE, debe agregar explícitamente u al principio de cada cadena.

Aunque la manipulación de cuerdas no es el tema central de este libro, compartiremos mucha experiencia y habilidades en esta área. Por ejemplo, si encuentra caracteres extraños en el conjunto de datos, debe limpiar estos caracteres antes del análisis de texto. La limpieza de datos adecuada tendrá un impacto positivo en los resultados del análisis, por lo que la manipulación de cadenas es un conocimiento esencial.

Comprender la estructura de datos básica de Python también es útil para el análisis de texto. Por ejemplo, las listas y los diccionarios son las dos estructuras de datos más utilizadas en el análisis de texto.

El propósito de este capítulo es explicar cómo utilizar las funciones de ejecución de cadenas y cómo realizar operaciones de cadenas en listas y diccionarios.

Hasta ahora, todavía no hemos explicado por qué Python es el lenguaje de ejemplo preferido. Después de todo, las comunidades de Java y Perl también tienen muchas bibliotecas de análisis de texto excelentes. Pero lo que hace único a Python son las comunidades y bibliotecas de código abierto a las que podemos acceder.

El último capítulo habló sobre TensorFlow de Google y scikit-learn de Apple. El código fuente abierto ya tiene los mismos estándares y eficiencia que el código de grado industrial. La biblioteca spaCy en la que se enfocará este libro es una de ellas. Las bibliotecas utilizadas para recopilar datos en Python son tweepy (producida por Twitter), urllib (solicitud de acceso a la página web) y BeautifulSoup (para extraer HTML de las páginas web). Cuantos más participantes haya en un determinado ecosistema, significa que tiene mayor potencial de crecimiento (un blog en Stack Overflow tiene un buen comentario sobre esta vista), y también indica que se aplicará cada vez más Investigación académica e industria. Por el momento, el uso de Python se está poniendo al día con la tendencia.

Además del soporte técnico externo que se puede obtener de varias bibliotecas de Python (especialmente la biblioteca NLP), Python también se puede probar de muchas otras formas como un lenguaje extremadamente atractivo. Uno de ellos es el uso principal de Python como lenguaje de programación. Un lenguaje de secuencias de comandos es un lenguaje que admite la capacidad de ejecución dinámica de las secuencias de comandos; generalmente es una secuencia de comandos escrita para un entorno de ejecución que ejecuta tareas automáticamente. Si desea escribir algunas líneas de código para responder rápidamente a los deseos de cumpleaños de amigos en Facebook de varias fiestas, y esto se hace todos los años, escribir un guión es una buena opción. No existe una definición uniforme de lenguaje de secuencias de comandos, que es solo un método de programación que generalmente se describe en lenguaje oral.

Python es un lenguaje de secuencias de comandos muy útil porque los desarrolladores pueden escribir secuencias de comandos rápidamente para manipular archivos de texto. No solo es fácil de leer, sino también lo suficientemente rápido para su procesamiento. También es un lenguaje interpretado, lo que significa que no es necesario compilar el código antes de ejecutarlo. Python se escribe dinámicamente, es decir, los desarrolladores no necesitan definir tipos de datos al escribir código.

Además de sus factores técnicos superiores, estamos más interesados ​​en la facilidad de uso de Python. Es flexible, legible y muy abstracto, lo que hace que el desarrollo funcione de manera más eficiente. Puede ayudar a los desarrolladores a prestar más atención al problema en sí, en lugar de las habilidades de programación y la resolución de problemas de código. Por supuesto, esto no quiere decir que no habrá errores al escribir código Python, pero proporciona más información de error, y los errores que aparecen son más fáciles de resolver, como fallas de segmentación.

A continuación, presentaremos los comandos de Python para la manipulación de cadenas y el análisis de texto. Los lectores que ya están familiarizados con Python y dominan los conceptos básicos del texto no necesitan ejecutar todos los códigos de muestra en esta sección, pero pueden buscar rápidamente referencias.

2.2 Manipulación de texto con Python

Como se mencionó anteriormente en este capítulo, Python representa texto a través de cadenas. Entonces, ¿cómo debe especificar que el objeto es una cadena?

word = "Bonjour World!"

La palabra variable contiene el texto "¡Mundo Bojur!". Tenga en cuenta que debe usar comillas dobles para limitar el texto (las comillas simples equivalen a comillas dobles); pero si desea usar comillas simples dentro de una cadena, debe usar comillas dobles para limitar la cadena [1] . La salida de una cadena en la consola es muy simple, todo lo que tiene que hacer es usar la función de impresión. Cabe señalar que cuando llame a la función de impresión en Python 3, asegúrese de incluir la lista de parámetros de la función entre paréntesis [2] .

print(word)
Bonjour World!

Además de usar variables para imprimir cadenas, también puede hacer esto:

print("Bonjour World!")
Bonjour World!

Tenga en cuenta que no ponga comillas alrededor de la variable, el ejemplo es el siguiente:

print("word")
word

Este ejemplo generará directamente la palabra "palabra" en lugar del valor variable de palabra.

La cadena mencionada en el artículo anterior es en realidad una secuencia de caracteres, entonces, ¿cómo acceder al primer carácter de la cadena?

print(word[0])
B

Se puede hacer accediendo al subíndice de la matriz de caracteres. ¿Cómo calcular la longitud de una cuerda?

print(len(word))
14

Ahora echemos un vistazo rápido a más funciones de cadena, como buscar caracteres, contar caracteres y cambiar letras en una posición de subíndice en una palabra.

word.count("o")
3

La palabra variable contiene 3 caracteres 'o', por lo que el resultado del código anterior es 3.

word.find("j")
3

La primera posición de subíndice del carácter 'j' en la palabra variable es 3.

word.index("World")
8

De la misma manera, la posición del subíndice de la primera aparición de la cadena "Mundo" en la palabra variable se muestra en el código anterior.

word.upper()
'BONJOUR WORLD!'

La función superior puede convertir todos los caracteres de una cadena en letras mayúsculas.

word.lower()
'bonjour world!'

La función inferior puede convertir todos los caracteres de una cadena en letras minúsculas.

word.title()
'Bonjour World!'

La función de título puede convertir la primera letra de cada palabra de la cadena en letras mayúsculas.

word.capitalize()
'Bonjour world!

capitalize solo convierte la primera letra de la cadena a mayúsculas.

word.swapcase()
'bONJOUR wORLD!'

Como sugiere el nombre, la función swapcase puede invertir el caso de cada letra en una cadena.

Lo que distingue a Python de otros lenguajes de programación es Pythonic.Los operadores aritméticos también se pueden usar para variables de cadena:

Para agregar la palabra "Fromage" (que significa queso en francés) al final de la palabra variable, simplemente use el signo más en el operador aritmético.

print(word + " Fromage!")
'Bonjour World! Fromage!'

De manera similar, el signo de multiplicación en los operadores aritméticos también se puede utilizar para procesar cadenas.

print("hello " * 5)
hello hello hello hello hello

Las funciones de cadena también pueden ayudarnos a invertir fácilmente la cadena o agregar espacios entre cada carácter.

print( ''.join(reversed(word)))
!dlroW ruojnoB

El tipo de valor de retorno de la función invertida es un generador, y podemos usar directamente la función de unión para su valor de retorno. El siguiente es un ejemplo del uso de combinación para agregar caracteres de espacio:

print( " ".join(word))
B o n j o u r   W o r l d !

Cuando necesite ver las propiedades de una cadena, puede llamar a las siguientes funciones:

word.isalnum()

La función isalnum se usa para determinar si una cadena consta de números o letras.

word.isalpha()

La función isalpha se utiliza para determinar si una cadena consta de todas las letras.

word.isdigit()

La función isdigit se utiliza para determinar si una cadena consta de todos los números.

word.istitle()

La función istitle se utiliza para determinar si cada palabra de la cadena comienza con una letra mayúscula.

word.isupper()

La función isupper se utiliza para determinar si cada carácter de una cadena es una letra mayúscula.

word.islower()

La función islower se utiliza para determinar si cada carácter de la cadena es una letra minúscula.

word.isspace()

La función isspace se usa para determinar si todos los caracteres de espacio en la cadena son [3] .

word.endswith('f')

La función endswith se usa para determinar si la cadena principal termina con una determinada subcadena.

word.startswith('H')

La función startswith se utiliza para determinar si la cadena principal comienza con una determinada subcadena.

También puede reemplazar caracteres en una cadena o cortar una cadena; de hecho, cortar una cadena es una parte muy útil y básica de la manipulación de texto.

word.replace("World", "Pizza")
'Bonjour Pizza!'

En el ejemplo anterior, la función de reemplazo reemplaza todas las palabras "Mundo" en la cadena por "Pizza".

Cortar es el proceso de obtener una parte de una cuerda. La sintaxis es la siguiente:

New_string = old_string[startloc:endloc]

Si solo desea obtener la segunda palabra en la variable word, y los subíndices inicial y final de esta palabra en la variable son 8 y 16, puede usar el siguiente código:

word[8:16]
'World!'

Si solo desea obtener la primera palabra en la variable word, puede usar el siguiente código:

word[:7]
'Bonjour'

En el ejemplo anterior, la parte antes de los dos puntos está en blanco y el índice inicial predeterminado comienza a contar desde 0.

2.3 Resumen

De acuerdo con las funciones y estrategias introducidas en este capítulo, finalmente se completa la preparación para el análisis del texto. Cabe señalar que en el análisis de texto a gran escala, los pequeños errores de entrada a menudo dan como resultado un resultado completamente sin sentido del modelo (consulte la sección 1.3).

Aquí hay algunas referencias sobre manipulación de texto.

  • Impresión y manipulación de texto : introduce el funcionamiento básico y la impresión de texto. Se recomienda para lectores interesados ​​en mostrar el texto de diferentes formas.
  • Manipulación de cadenas : la introducción a las funciones básicas de las cadenas, incluidos los ejercicios, ayudará a los lectores a practicar más la manipulación de cadenas.
  • Manipulación de cadenas en Python : el contenido es similar al de los dos documentos anteriores, incluido un capítulo sobre secuencias de escape.
  • Procesamiento de texto en Python : a diferencia de la literatura anterior, este es un libro que cubre los principios básicos de la manipulación de texto y cadenas en Python, así como algunos temas que no se tratan en este libro (como las expresiones regulares).
  • Introducción al análisis de texto en Python : si desea tener una comprensión macro de la relación entre Python y el análisis de texto, este libro le brindará una mejor ayuda. Si es un principiante, debe agregar más conocimientos básicos antes de leer.

Comprender el comportamiento de las cadenas en el lenguaje Python puede ayudarle a dominar rápidamente las operaciones básicas del análisis de texto Estas habilidades básicas, que aparecen muchas veces a lo largo de este libro, son la base para el uso flexible del lenguaje Python.


[1] Lo  contrario también es cierto. Si desea usar comillas dobles dentro de una cadena, use comillas simples para limitar la cadena. Se recomienda usar comillas dobles de manera unificada para evitar inconsistencias en la forma. ——Nota del traductor

[2]  La función de impresión en Python 2 se puede usar sin paréntesis, pero en Python 3, se deben usar paréntesis. ——Nota del traductor

[3]  Además de \ s, los espacios también incluyen \ n, \ t, \ v, \ f y \ r. ——Nota del traductor

Este artículo está tomado de "Procesamiento del lenguaje natural y lingüística computacional"

  • Escrito por un colaborador sénior de la comunidad de código abierto de Python
  • Uno de los pocos trabajos en el campo de la lingüística computacional
  • Una guía práctica para el análisis de texto que se centra en los detalles técnicos y proporciona la descarga del código fuente.

Es muy conveniente utilizar Python y herramientas de código abierto para realizar análisis de texto modernos, por lo que es necesario dominar los métodos de análisis de texto modernos en esta era de datos de texto.

Este libro describe cómo utilizar el procesamiento del lenguaje natural y los algoritmos lingüísticos computacionales para razonar sobre los datos que tiene y obtener conocimientos. Estos algoritmos se basan en técnicas de inteligencia artificial y aprendizaje automático estadístico. Las herramientas que usan estos algoritmos ahora están disponibles y se pueden usar en herramientas como Python, Gensim y spaCy.

Este libro comienza con la limpieza de datos y luego presenta conceptos relacionados de lingüística computacional. Después de dominar estos contenidos, puede usar lenguaje y texto reales, y usar Python para explorar áreas más complejas de PNL estadística y aprendizaje profundo. Aprenderá a utilizar las herramientas adecuadas para anotar, analizar y modelar textos, y dominar el uso de las herramientas de marco correspondientes. También sabrá cuándo elegir una herramienta como Gensim como modelo de tema y cuándo utilizar Keras para el aprendizaje profundo. .

Este libro equilibra la relación entre la teoría y los casos reales, para que pueda ejecutar sus propios proyectos de procesamiento del lenguaje natural mientras domina los conocimientos teóricos. Descubrirá el rico ecosistema de Python, una herramienta de procesamiento de lenguaje natural, y entrará en el interesante mundo del análisis de texto moderno.
Contenido de este libro:

  • Por qué el análisis de texto es tan importante en esta era;
  • Comprender la terminología de la PNL y comprender varias herramientas y conjuntos de datos de Python;
  • Cómo preprocesar y limpiar datos de texto;
  • Convierta datos de texto en representación de espacio vectorial;
  • Use spaCy para procesar texto, entrene su propio modelo de PNL para lingüística computacional;
  • Con la ayuda de Gensim y scikit-learn, utilice el aprendizaje estadístico y los algoritmos de modelado de temas para el texto;
  • Con la ayuda de Keras, se utilizan varias técnicas de aprendizaje profundo para el análisis de texto.

Supongo que te gusta

Origin blog.csdn.net/epubit17/article/details/107899362
Recomendado
Clasificación