preprocesamiento de texto
Realiza operaciones de limpieza en texto
Categoría: Text Analytics
Nota
Se aplica a: machine learning Studio (clásico)
Este contenido solo pertenece a Studio (clásico). Se han agregado módulos similares de arrastrar y colocar al diseñador de Azure Machine Learning. Obtenga más información en este artículo comparativa de las dos versiones.
Información general sobre el módulo
En este artículo se describe cómo usar el módulo de texto preprocesamiento en Azure machine learning Studio (clásico) para limpiar y simplificar el texto. Al preprocesar el texto, puede crear de forma más sencilla características significativas a partir del texto.
Por ejemplo, el módulo de texto preprocesamiento admite estas operaciones comunes en el texto:
- Eliminación de palabras irrelevantes
- Uso de expresiones regulares para buscar y reemplazar cadenas de destino específicas
- Lematización: esta operación convierte varias palabras relacionadas en una única forma canónica
- Filtrado de partes específicas de la voz
- Normalización de mayúsculas
- Eliminación de ciertas clases de caracteres, como números, caracteres especiales y secuencias de caracteres repetidos, como "aaaa"
- Identificación y eliminación de correos electrónicos y direcciones URL
Puede elegir qué opciones de limpieza usar y, opcionalmente, especificar una lista personalizada de palabras irrelevantes.
El módulo admite actualmente seis idiomas: Inglés, español, Francés, holandés, alemán e italiano.
Cómo configurar el preprocesamiento de texto
Agregue el módulo de texto de preprocesamiento al experimento en Studio (clásico). Puede encontrar este módulo en Text Analytics.
Conecte un conjunto de datos que incluya al menos una columna que contenga texto.
Si el texto que está preprocesando está en el mismo idioma, seleccione el idioma en la lista desplegable idioma . Con esta opción, el texto se preprocesa utilizando reglas lingüísticas específicas del idioma seleccionado.
Para preprocesar texto que puede contener varios idiomas, elija la opción la columna contiene el idioma .
A continuación, use la propiedad columna de idioma de referencia cultural para elegir una columna del conjunto de filas que indique el idioma utilizado en cada fila. La columna debe contener un identificador de idioma estándar, como "inglés" o
en
.En función de este identificador, el módulo aplica los recursos lingüísticos adecuados para procesar el texto.
Si el conjunto de DataSet no contiene tales identificadores, use el módulo detectar idioma para analizar el idioma de antemano y generar un identificador.
Sugerencia
Se produce un error si se incluye un idioma no admitido. Vea la sección notas técnicas para obtener más información.
Quitar por parte de la voz: Seleccione esta opción si desea aplicar el análisis de la parte de la voz. Después, puede usar las etiquetas de la parte de la voz para quitar ciertas clases de palabras.
- Quitar nombres: Seleccione esta opción para quitar nombres.
- Quitar adjetivos: Seleccione esta opción para quitar adjetivos.
- Quitar verbos: Seleccione esta opción para quitar los verbos.
Para obtener más información sobre el método de identificación de la parte de la voz que se usa, consulte la sección notas técnicas .
Columna de texto que se va a limpiar: seleccione las columnas que desea preprocesar.
Remove stop words (Eliminar palabras irrelevantes): seleccione esta opción si desea aplicar una lista de palabras irrelevantes predefinida a la columna de texto. La eliminación de palabras irrelevantes se realiza antes que cualquier otro proceso.
Las listas de palabra irrelevante son dependientes del lenguaje y personalizables. para obtener más información, consulte la sección notas técnicas .
Lemmatization (Lematización): seleccione esta opción si desea que las palabras se representen en su forma canónica. Esta opción es útil para reducir el número de apariciones únicas de otros tokens de texto similares.
El proceso lematización es muy dependiente del lenguaje; Vea la sección notas técnicas para obtener más información.
Detect sentences (Detectar frases): seleccione esta opción si desea que el módulo inserte una marca de límite de frase al realizar el análisis.
Este módulo usa una serie de tres caracteres de barra vertical
|||
para representar el terminador de frase.Opcionalmente, puede realizar operaciones de búsqueda y reemplazo personalizadas mediante expresiones regulares.
- Expresión regular personalizada: defina el texto que está buscando.
- Custom replacement string (Personalizar cadena de sustitución): defina un único valor de sustitución.
Normalize case to lowercase (Normalización de mayúsculas en minúsculas): seleccione esta opción si desea convertir los caracteres ASCII en mayúsculas a sus correspondientes formas en minúsculas.
Si no se normalizan los caracteres, la misma palabra en mayúsculas y minúsculas se consideran dos palabras diferentes: por ejemplo,
AM
es igual queam
.Opcionalmente, puede quitar los siguientes tipos de caracteres o secuencias de caracteres del texto de salida procesado:
- Remove numbers (Quitar números): seleccione esta opción para quitar todos los caracteres numéricos del idioma especificado.
La identificación de lo que constituye un número depende del dominio y depende del idioma. Si los caracteres numéricos forman parte integral de una palabra conocida, es posible que no se quite el número.
Quitar caracteres especiales: Utilice esta opción para reemplazar los caracteres especiales no alfanuméricos por el carácter de barra vertical
|
.Para obtener más información sobre los caracteres especiales, consulte la sección notas técnicas .
Quitar caracteres duplicados: Seleccione esta opción para quitar las secuencias que repitan los caracteres. Por ejemplo, se quitaría una secuencia como "AAAAA".
Remove email addresses (Quitar direcciones de correo electrónico): seleccione esta opción para quitar cualquier secuencia del formato
<string>@<string>
.Quitar direcciones URL: Seleccione esta opción para quitar cualquier secuencia que incluya los siguientes prefijos de dirección URL:
http
,https
ftp
www
Expand verb contractions (Expandir contracciones verbales): esta opción solo se aplica a los idiomas que usan contracciones verbales. Actualmente, solo se aplica al inglés.
Por ejemplo, si selecciona esta opción, podría sustituir la expresión "wouldn't stay there" por "would not stay there" .
Normalize backslashes to slashes (Normalizar barras diagonales inversas en barras diagonales: seleccione esta opción para asignar todas las instancias de
\\
a/
.Split tokens on special characters (Dividir tokens en caracteres especiales): seleccione esta opción si desea dividir las palabras en caracteres como
&
,-
, etc.Por ejemplo, la cadena
MS-WORD
se dividiría en dos tokens,MS
yWORD
.
Ejemplos
En los siguientes ejemplos del Azure AI Gallery se muestra el uso del módulo de preprocesamiento de texto :
Notas técnicas
En esta sección se proporciona más información sobre la tecnología de procesamiento previo de texto subyacente y cómo especificar recursos de texto personalizados.
Idiomas compatibles
Actualmente Azure Machine Learning admite el preprocesamiento de texto en estos idiomas:
- Neerlandés
- Inglés
- Francés
- Alemán
- Italiano
- Español
Se planean otros idiomas. Vea el blog de Microsoft machine learning para anuncios.
Lematización
Lematización es el proceso de identificar una forma canónica única para representar varios tokens de palabra.
Las bibliotecas de procesamiento de lenguaje natural incluidas en Azure Machine Learning Studio (clásico) combinan las siguientes operaciones lingüísticas para proporcionar lematización:
Separación de oraciones: en el texto libre que se usa para el análisis de opiniones y otros análisis de texto, es posible que las oraciones no se ejecuten con frecuencia o que falten signos de puntuación. Los textos de entrada pueden constituir un fragmento de texto arbitrariamente largo, que va desde un tweet o un fragmento hasta un párrafo completo, o incluso un documento.
Las herramientas de lenguaje natural usadas por Studio (clásico) realizan la separación de oraciones como parte del análisis léxico subyacente. Sin embargo, las oraciones no se separan en la salida. Opcionalmente, puede especificar que un límite de oración se marque como ayuda en otro análisis y procesamiento de texto.
Tokenización: las reglas que determinan los límites de las palabras dependen del lenguaje y pueden ser complejas incluso en idiomas que usan espacios entre palabras.
Algunos idiomas (como el chino o el japonés) no usan ningún espacio en blanco entre palabras y la separación de palabras requiere análisis morfológicos.
Por lo tanto, los métodos de tokenización y las reglas que se usan en este módulo proporcionan resultados diferentes de un idioma a otro. Estas reglas de tokenización vienen determinadas por las bibliotecas de análisis de texto que proporciona Microsoft Research para cada idioma admitido y no se pueden personalizar.
Identificación de la parte de la voz: en cualquier secuencia de palabras, puede ser difícil identificar de forma computacional la parte exacta de la voz de cada palabra. Incluso una frase aparentemente simple, como "el tiempo se parece a una flecha", puede tener numerosos análisis (un ejemplo famoso). Las partes de la voz también son muy diferentes en función de la morfología de diferentes idiomas.
En Azure Machine Learning, se usa un modelo de desambiguación para elegir la parte más probable de la voz, según el contexto de oración actual. La información sobre la parte de la voz se usa para filtrar las palabras usadas como características y ayudar en la extracción de frases clave. Sin embargo, la salida de este módulo no incluye explícitamente etiquetas de POS y, por lo tanto, no se puede usar para generar texto etiquetado por PDV.
Generando formulario de diccionario: una palabra puede tener varias formas de lemmas, o de diccionario, cada una procedente de un análisis diferente. Por ejemplo, la creación de palabras en inglés tiene dos lemmas posibles: compilar si la palabra es un nombre ("la compilación de alto") o compilar si la palabra es un verbo ("está construyendo una casa"). En Azure Machine Learning, solo se genera el formulario del diccionario más probable .
Ejemplo de salida de lematización
Source | Lematizada con conversión de mayúsculas y minúsculas |
---|---|
Es natación | nadar |
Está pasando por un nadar | soy un nadar |
Natación es una buena idea para crear músculos | nadar sea bueno para el músculo de compilación |
Está creando un edificio | creo una compilación |
Estamos creando edificios | vamos a compilar todas las compilaciones |
Nota
Los modelos de lenguaje que se usan para generar el formulario de diccionario se han entrenado y probado con una gran variedad de textos técnicos y de uso general, y se usan en muchos otros productos de Microsoft que requieren API de lenguaje natural. Sin embargo, el lenguaje natural es intrínsecamente ambiguo y la precisión del 100% en todos los vocabularios no es factible. Por ejemplo, lematización puede verse afectado por otras partes de la voz o por la forma en que se analiza la oración.
Si necesita realizar un procesamiento previo adicional o realizar análisis lingüísticos con un vocabulario especializado o dependiente del dominio, se recomienda usar herramientas de NLP personalizables, como las disponibles en Python y R.
Caracteres especiales
Los caracteres especiales se definen como caracteres individuales que no se pueden identificar como cualquier otra parte de la voz y pueden incluir signos de puntuación: dos puntos, punto y coma, etc.
Palabras irrelevantes
Una palabra irrelevante (o palabra irrelevante) es una palabra que a menudo se quita de los índices porque es común y proporciona poco valor para la recuperación de información, aunque podría ser lingüísticamente significativa.
Por ejemplo, muchos lenguajes realizan una distinción semántica entre artículos definitos e indefinidos ("el edificio" frente a un edificio), pero para el aprendizaje automático y la recuperación de información, la información a veces no es relevante. Por lo tanto, podría decidir descartar estas palabras.
El entorno de Azure Machine Learning incluye listas de los palabras irrelevantes más comunes para cada uno de los idiomas admitidos.
Lenguaje | Número de palabras irrelevantes | Ejemplos |
---|---|---|
Neerlandés | 49 | aan, AF, al |
Inglés | 312 | a, acerca de, sobre |
Francés | 154 | de, des, d ', la |
Alemán | 602 | a, AB, aber |
Italiano | 135 | a, Adesso, AI |
Español | 368 | ésa, ésta, éste |
Para su comodidad, el archivo comprimido que contiene el valor predeterminado de palabras irrelevantes para todos los idiomas actuales está disponible en Azure Storage: Stopwords.zip.
Cómo modificar la lista palabra irrelevante
Esperamos que muchos usuarios quieran crear sus propias listas de palabra irrelevante o cambiar los términos incluidos en la lista predeterminada. En el siguiente experimento de la Galería de Cortana Intelligence se muestra cómo se puede personalizar una lista de palabras irrelevantes.
Si modifica la lista o crea su propia lista de palabras irrelevantes, observe estos requisitos:
El archivo debe contener una sola columna de texto. Es posible que reciba el siguiente error si existe una columna adicional: "el patrón de selección de columnas de error de texto de preprocesamiento" para limpiar "se espera que proporcione una o varias columnas seleccionadas en el conjunto de datos de entrada, pero en realidad se proporcionan 2 columnas. (Error 0022) "
Si esto ocurre, busque espacios, tabulaciones o columnas ocultas presentes en el archivo desde el que se importó originalmente la lista palabra irrelevante. Dependiendo de cómo se haya preparado el archivo, las tabulaciones o comas incluidas en el texto también pueden hacer que se creen varias columnas.
Cuando reciba este error, revise el archivo de código fuente o use el módulo seleccionar columnas de conjunto de archivos para elegir una sola columna para pasarla al módulo de preprocesamiento de texto .
Cada fila solo puede contener una palabra. Con el fin de analizar el archivo, las palabras se determinan mediante la inserción de espacios.
La lista palabra irrelevante no puede estar vacía.
Orden de las operaciones
En este módulo, puede aplicar varias operaciones a texto. Sin embargo, no se puede cambiar el orden en que se aplican estas operaciones. Esto puede afectar a los resultados esperados.
Por ejemplo, si se aplica lematización a texto y también se usa la eliminación de palabra irrelevante, todas las palabras se convierten en sus formatos de Lemma antes de que se aplique la lista palabra irrelevante. Por lo tanto, si el texto incluye una palabra que no está en la lista palabra irrelevante, pero su Lemma se encuentra en la lista palabra irrelevante, se quitará la palabra.
Asegúrese de probar los términos de destino de antemano para garantizar los resultados correctos.
Idiomas no admitidos
Si la columna de texto incluye idiomas no admitidos por Azure Machine Learning, se recomienda usar solo las opciones que no requieren el procesamiento dependiente del idioma. Esto puede ayudar a evitar resultados extraños.
Además, si usa la opción la columna contiene el idioma, debe asegurarse de que no se incluyan idiomas no admitidos en el texto que se procesa. Si un lenguaje no compatible o su identificador están presentes en el conjunto de elementos, se genera el siguiente error en tiempo de ejecución:
"Error de texto preprocesado (0039): especifique un idioma admitido."
Para evitar que se produzca un error en todo el experimento porque se detectó un idioma no compatible, use el módulo Split Data (dividir datos ) y especifique una expresión regular para dividir el conjunto de datos en idiomas admitidos y no admitidos.
Por ejemplo, la siguiente expresión regular divide el conjunto de filas basándose en el lenguaje detectado para la columna Sentence
:
\"Sentence Language" Dutch|English|French|Italian|Spanish
Si tiene una columna que contiene el identificador de idioma, o si ha generado este tipo de columna, puede usar una expresión regular como la siguiente para filtrar por la columna de identificadores:
\"Sentence Iso6391 Name" nl|en|fr|it|es
Entradas esperadas
Nombre | Tipo | Descripción |
---|---|---|
Dataset | Tabla de datos | Datos de entrada |
Palabras irrelevantes | Tabla de datos | Lista personalizada opcional de palabras irrelevantes que se van a quitar |
Parámetros del módulo
Nombre | Tipo | Intervalo | Opcional | Valor predeterminado | Descripción |
---|---|---|---|---|---|
Quitar direcciones URL | Boolean | True False |
Obligatorio | true | Quitar direcciones URL |
Lenguaje | Lenguaje | Inglés Español Francés Neerlandés Alemán Italiano |
Obligatorio | Inglés | Seleccionar el idioma que se va a preprocesar |
Columna de texto que se va a limpiar | Selección de columnas | Obligatorio | StringFeature | Seleccionar la columna de texto que se va a limpiar | |
Expresión regular personalizada | String | Opcional | Especificar la expresión regular personalizada | ||
Cadena de reemplazo personalizada | String | Opcional | Especificar la cadena de reemplazo personalizada para la expresión regular personalizada | ||
Quitar palabras irrelevantes | Boolean | Obligatorio | true | Quitar palabras irrelevantes | |
Lematización | Boolean | Obligatorio | true | Usar lematización | |
Quitar por parte de la voz | True (tipo falso) | true false |
Obligatorio | False | Indicar si se debe usar el análisis de la parte de la voz para identificar y quitar determinadas clases de palabras |
Quitar nombres | Boolean | Se aplica cuando se selecciona la opción filtrar por parte de voz | true | Quitar nombres | |
Quitar adjetivos | Boolean | Se aplica cuando se selecciona la opción filtrar por parte de voz | true | Quitar adjetivos | |
Quitar verbos | Boolean | Se aplica cuando se selecciona la opción filtrar por parte de voz | true | Quitar verbos | |
Detectar oraciones | Boolean | Obligatorio | true | Detectar oraciones agregando un terminador de frase \ "|||\ " que pueda usar el módulo de extractor de características de n-grama | |
Normalizar mayúsculas y minúsculas en minúsculas | Boolean | Obligatorio | true | Normalizar mayúsculas y minúsculas en minúsculas | |
Quitar números | Boolean | Obligatorio | true | Quitar números | |
Quitar caracteres especiales | Boolean | Obligatorio | true | Quitar caracteres especiales no alfanuméricos y reemplazarlos por el \ carácter "|\ " | |
Quitar caracteres duplicados | Boolean | Obligatorio | true | Quitar caracteres duplicados | |
Quitar direcciones de correo electrónico | Boolean | Obligatorio | true | Quitar direcciones de correo electrónico |
Salidas
Nombre | Tipo | Descripción |
---|---|---|
Conjunto de datos de resultados | Tabla de datos | Conjunto de datos de resultados |
Excepciones
Excepción | Descripción |
---|---|
Error 0003 | Se produce una excepción si una o varias de las entradas son nulas o están vacías. |
Error 0030 | Se produce una excepción cuando no es posible descargar un archivo. |
Error 0048 | Se produce una excepción cuando no es posible abrir un archivo. |
Error 0049 | Se produce una excepción cuando no es posible analizar un archivo. |
Para obtener una lista de los errores específicos de los módulos de Studio (clásico), consulte Machine Learning de los códigos de error.
Para obtener una lista de excepciones de API, consulte códigos de error de la API de REST de machine learning.