✒️ABAP HANA - La búsqueda de textos y el análisis de datos no estructurados

ABAP HANA La búsqueda de textos y el análisis de datos no estructurados

Búsqueda de estos y análisis de datos no estructurados.

1.- Introducción a la búsqueda de textos y análisis de datos no estructurados.

SAP HANA ofrece una opción para analizar datos no estructurados.

Además podemos obtener más información al reconocer los patrones en los conjuntos de datos existentes.

1.1 Las ayudas de búsqueda y a búsqueda de textos.

Las aplicaciones SAP contienen ayudas de búsqueda en muchos lugares diferentes.

1.2 Las ayudas de búsqueda y la búsqueda de textos en SAP HANA.

Una función de búsqueda de teto de SAP HANA nos permite desarrollar ayudas de búsqueda que funcionan de manera similar a las búsquedas modernas de internet.

Proporcionan una cierta tolerancia a los errores y pueden procesar términos y sinónimos multilingues.

Por ejemplo una solicitud de usuario ¨buenas eres tele¨, a pesar de la ortografía incorrecta puede ser interpretada correctamente en la búsqueda a través de varias columnas.

Sin embargo, los usuarios no siempre pueden determinar fácilmente si el resultado devuelto es el esperado en este tipo de búsqueda tolerante a errores, también conocida como Búsqueda difusa o Fuzzy search.

1.3 Reconocimiento de patrones.

El reconocimiento de patrones de textos y documentos representa un tipo completamente diferente de función de análisis de texto.

Podemos usar esta función en muchos escenarios diferentes: por ejemplo, para evitar tener socios comerciales duplicados en los datos maestros, es posible que deseemos verificar en el sistema si ya existe un cliente similar en el conjunto de datos antes de crear un nuevo cliente y, de ser así, notificarlo al usuario de la aplicación.

En este contexto, ser ¨similar, podría significar que el apellido y la dirección de un cliente nuevo y existente son caso idénticos.

Como sucede a menudo, los nombres y direcciones en particular se ingresan con diferentes tipos de ortografía, una simple comprobación de entradas idénticas rara vez arroja resultados satisfactorios.

1.4 Reconocimiento de patrones en SAP HANA.

La función de análisis de texto en SAP HANA no solo permite realizar búsquedas dentro de los textos, sino también extraer información adicional de los textos.

Por ejemplo, podemos reconocer las relaciones e incluso las intenciones o emociones dentro de los textos.

El análisis de sentimientos es parte de la funcionalidad del motor de texto en SAP HANA y nos permite reconocer patrones en estos tipos de datos no estructurados.

En el contexto de la tienda en línea, por ejemplo, nos permitirá analizar si un producto específico provoca comentarios más positivos que negativos.

2. Principios básicos de la búsqueda de texto en SAP HANA.

El objetivo principal de la función de búsqueda de texto en SAP HANA es proporcionar a los usuarios una usabilidad optimizada se las interfaces de búsqueda.

Además de varias características comunes en los nombres de búsqueda de internet, esto incluye funciones con un significado especial para las aplicaciones empresariales, como listas de sinónimos específicas de la industria.

- Búsqueda de estilo libre.

El usuario no necesita saber las columnas exactas de la base de datos en las que se supone que se realizará la búsqueda.

Por ejemplo puede implementar una búsqueda de direcciones en un solo campo de entrada e incluir todas las característica técnicas, como el nombre de la calle, el código postal, la ciudad, el país, etc.

- Búsqueda tolerante a errores (búsqueda difusa o fuzzy search).

El usuario puede variar la ortografía ligeramente en sus solicitudes de búsqueda.

- Búsqueda linguística y búsqueda de sinónimos.

Se incluyen variantes linguísticas y términos sinónimos.

- Sugerencias de valor.

El sistema identifica de manera eficiente los resultados de búsqueda probables mientras el usuario escribe y los presenta al usuario en tiempo real.

- Ranking de resultados.

La secuencia de resultados de la búsqueda se optimiza para que los resultados con la tasa de probabilidad más alta se presenten en la parte superior de la lista.

- Facetas de búsqueda.

Los resultados de la búsqueda se cuentan y agrupan según criterios específicos. Pro ejemplo, al buscar aerolíneas, podemos ver la distribución de las aerolíneas por país.

- Análisis de texto (particularmente análisis de sentimiento)

Se extrae información adicional de los textos, lo que nos permite obtener información sobre aspectos semánticos.

2.1 Búsqueda tolerante a errores

(fuzzy search) implica la búsqueda de cadena de caracteres (es decir, la solicitud de búsqueda) en datos basados en texto, donde los datos no tienen que corresponder exactamente con la solicitud de búsqueda; de esta manera, también se incluyen entradas similares en el conjunto de resultados.

Los algoritmos matemáticos que forman la base de los algoritmos de búsqueda borrosa determinan el grado en que un registro de datos debe corresponder a la solicitud de búsqueda.

En la práctica, es muy complicado determinar el grado de similitud entere los textos, e implica el uso de variantes heurísticas que tiene sus ventajas y desventajas según el escenario en el que se usen.

La función de búsqueda de texto en SAP HANA determina un valor entre 0 y 1 que marca el grado de similitud.

Como programador, debemos definir un valor de umbral (por ejemplo, 0,8) a partir del cual un valor del conjunto de datos que se ha buscado se clasifica de acuerdo con la solicitud.

Además, la funcionalidad de la búsqueda difusa se puede adaptar para los tipos de datos específicos (semánticos ).

Por ejemplo, la búsqueda difusa de una fecha puede incluir valores de fecha que se realicen varios días antes o después de la fecha específica que se busca.

En este caso, el criterio de similitud es el período en lugar de la similitud de la cadena de caracteres (por lo tanto, según este criterio, la fecha 01/01/1909 no es similar al 01/01/1990, aunque la posición de un solo carácter ha sido cambiado).

- Expresiones utilizadas en las búsquedas.

Cuando ejecutamos una búsqueda difusa, podemos usar un conjunto de expresiones simples que permiten a un experto formular solicitudes de búsqueda más precisas.

Por ejemplo esto incluye la opción de imponer una búsqueda exacta para una parte específica de la solicitud de búsqueda o usar expresiones lógicas.

- Búsqueda linguística.

Para determinar el grado de similitud, también es útil incluir aspectos gramaticales y otros aspectos linguísticos.

En este contexto, los términos vuelven a su origen en palabras para que se reconozcan las variantes de palabras como "casa", "casas". "viviendas", etc.

- Listas de sinónimos.

La búsqueda difusa también puede extenderse por listas de sinónimos.

En este contexto, podemos almacenar una lista de términos que son equivalentes a un término específico; la solicitud de búsqueda puede luego basarse en esta lista.

Por ejemplo "notebook" puede considerarse como un sinónimo de "laptop" o "monitor" como un sinónimo de "pantalla".

Esta característica es particularmente útil para abreviaturas y conceptos específicos de la industria.

- Stop words.

Otra opción para implementar una búsqueda más inteligente es familiarizar el sistema con las características semánticas de términos específicos.

En este contexto, es importante saber que no todos los términos de una solicitud de búsqueda tienen la misma selectividad.

Por ejemplo, términos con "S.A." o "Inc." no son tan selectivos como el nombre real de la empresa cuando se busca compañía específica.

por lo tanto, por lo general, es más importante ingresar el nombre de una empresa similar al que está buscando que ingresar que el resultado de la búsqueda sea un "S.A.", por ejemplo.

Del mismo modo, en textos más largos, como descripciones de productos, las similitudes en ciertas partes del discurso, como los artículos o los pronombres, son menos importantes que las similitudes en los nombres dentro del texto (por ejemplo, en las marcas).

Cuando ejecutamos una solicitud de búsqueda en SAP HANA, podemos ingresar una lista de las llamadas stop words (también denominadas noise words) que se consideran menos importantes que otras palabras.

3. Tipos de datos de texto e índices de texto completo en SAP HANA.

La búsqueda difusa en SANP HANA se basa en los tipos de datos del almacén de columnas.

Aquí, TEXT y SHORT TEXT representan dos tipos de datos específicos que se dedican a búsquedas de texto (y análisis de texto).

El tipo de datos SHORTTEXT se usa para cadenas de caracteres de un longitud determinada, mientras que TEXT representa un objeto grande.

En este contexto, los textos se fragmentan internamente en tokens que forman la base para búsquedas y análisis.

- Soporte en ABAP.

Desafortunadamente, en la actualidad no hay soporte nativo disponible en ABAP para los tipos de datos TEXT y SHORTTEXT, lo que hace que sea imposible crear una tabla a través del DDIC que usa esos tipos de datos.

Además, aunque la función de búsqueda difusa también es compatible con otros tipos de datos (por ejemplo =, VARCHAR y NVARCHAR), esta compatibilidad no es lo suficientemente extensa.

Sin la capacidad de dividir los textos en tokens de búsqueda, el sistema no puede reconocer una permutación de palabras, que es un estándar en las aplicaciones de búsqueda modernas.

- Indice de texto completo (full Text Index).

Sin embargo, lo que puede hacer es agregar la funcionalidad ofrecida por los Tipos de datos de texto a una columna específica mediante la creación de un índice de texto completo.

De esta manera, podemos habilitar las funciones de búsqueda de texto y análisis de texto para la mayoría de los tipos DDIC de tipo caracter (incluidos CHAR, STRING, DATS, etc.).

Cuando creamos un índice de texto completo (full text Index) para una columna de la tabla, el sistema crea una columna interna invisible (columna sombreada) del tipo TEXTO, que contiene los mismos datos pero en una presentación optimizada para las solicitudes de búsqueda. En este contexto, el texto se fragmenta en tokens y se genera un diccionario adicional.

- Usando SQL para la creación.

Podemos crear el índice de texto completo (Full Text Index) utilizando la sentencia SQL CREATE FULLTEXT INDEX.

CREATE FULLTEXT INDEX "index name"

ON "table name" ( "column name" )

[<parameter list>]

El nombre del "index name" debe ser único dentro del esquema, es conveniente prefijar este índice con el nombre de la tabla de la base datos.

- Creación en el Diccionario de datos ABAP (DDIC).

CREATE FULLTEXT INDEX scarr_name ON starr(carrname);

"Debido a que no podíamos crear índices de texto completo (full text index ) a través del diccionario de datos DDIC (SE11) antes de la versión 7.4 de ABAP, estos índices no se pueden transportar automáticamente ".

A partir de la versión 7.4 de ABAP, también es posible crear un indice de texto completo a través del DDIC utilizando parámetros comunes.

Para este propósito, debemos definir un nuevo índice para una tabla utilizando la transacción SE11 o, más bien, un índice de extensión (para una extensión sin modificación de una tabla estándar de SAP).

Esto contiene solo una columna requerida como un campo y se crea exclusivamente en la base de datos SAP HANA.

Cuando se activa el índice con la opción Go to / Full Text Index, se puede configurar una variedad de parámetros de la sentencia CREATE FULLTEXT INDEX.

La configuración estándar y la configuración del idioma (utilizando una columna de la tabla o un idioma fijo) suelen ser suficientes para una búsqueda difusa.

4. Uso de la búsqueda de textos a través de SQL.

- La palabra clave CONTANS.

Tal como sucede con la mayoría de las funciones de SAP HANA, podemos invocar la búsqueda de texto a través de SQL.

Para hacer esto, debemos usar una sentencia SELECT con la palabra clave CONTAINS, que nos permite llamar a las múltiples variantes de la búsqueda de texto.

SELECT <field list>

FROM <table or view>

WHERE CONTAINS (<columns>, <search request>, <parameter>);

Ejemplo:

SELECT * FROM sacarr

WHERE CONTAINS (carrname, ´lusthansa´, FUZZY(0.8));

Aquí, realizamos una búsqueda de aerolínea cuyos nombres son lo suficientemente similares a la solicitud de búsqueda, ´lusthansa´.

Aunque la solicitud de búsqueda contiene dos errores (el término de búsqueda comienza con una letra minúscula y contiene un letra incorrecta), el sistema devuelva el registro de datos esperado, "Lufthansa".

- El parámetro FUZZY.

Debemos saber que el parámetro FUZZY(0.8) define el valor umbral, donde un valor entre 0.7 y 0.8 suele ser un buen valor estándar para obtener resultados que son relativamente similares a la solicitud de búsqueda.

Además del valor umbral, el parámetro FUZZY proporciona muchas otras opciones de configuración.

- Búsqueda exacta / Búsqueda linguística.

A parte de utilizarla con el parámetro FUZZY, podemos usar la sentencia CONTAINS en otras variates: EXACT y LINGUISTIC.

En la búsquedas con la adición EXACT, el sistema busca coincidencias exactas para la solicitud de búsqueda con palabras competas (según la tokennización del texto en la base de datos).

EXTACT también representa el valor predeterminado sin no ingresamos ningún parámetro.

En esta caso, también podemos utilizar comodines como ´*´ en la solicitud de búsqueda.

A diferencia de un LIKE en SQL estándar, la cláusula CONTAINS nos permite realizar búsquedas en varias columnas.

SELECT * FROM scarr

WHERE CONTAINS ((carnage, url), ´Airlines OR Airways OR *.com´, EXACT);

Este ejemplo también es útil para demostrar los efectos de un índice de texto completo (Full Text Index) faltante.

Si no existe un índice de texto completo para la columna carrname, los nombres no se dividirán en palabras (tokens); en consecuencia, no habrá una coincidencia exacta entre ls solicitud de búsqueda `Aerolineas` y una entrada como ´United Airlines´.

En SAP HANA solo hay un par de limitaciones, una de ellas es que solo podemos utilizar la cláusula CONTAINS, para la búsqueda de texto que sean columnares, y la otra es que no podemos utilizar la función de búsqueda de textos para los atributos calculados de una vista.

4.1 Búsqueda difusa (Fuzzy search).

Podemos usar la función de búsqueda difusa para una búsqueda simple en una o varias columnas de una tabla o vista.

La cláusula CONTAINS nos permite especificar varias columnas para que sean consideradas durante la ejecución de la búsqueda.

Ejemplo:

SELECT * FROM spfli

WHERE CONTAINS ((city from, city), ´Tokio´, fuzzy(0.8));

Para este propósito, fue necesario definir un índice de texto completo para le campo CITYFROM y otro para el campo CITYTO utilizando DDIC.

El resultado contendrá todos los vuelos que salen y llegan a Tokio, aunque la ortografía del nombre de la ciudad se desvíe ligeramente (en algunos idiomas, esta es la ortografía común de esta ciudad).

Existen funciones escalares especiales que nos permiten recuperar información adicional para registro de datos individuales en el conjunto de resultados, la función SCORE, proporciona el grado e similitud entre el resultado de búsqueda y la solicitud de búsqueda estos varían entre 0 y 1 con valores más altos que indican un mayor grado de similitud, esto se presentan primero en la lista de despliega.

5. Uso de la búsqueda de textos en ABAP.

Las ayudas de búsqueda son una excelente opción para utilizar la búsqueda de textos en SAP HANA.

Para ello, debemos crear la ayuda de búsqueda en el Diccionario de datos ABAP.

ABAP 7.4 proporciona varias mejoras más allá de soportar la búsqueda difusa, por ejemplo ahora es posible en el SAP GUI mostrar valores directamente a los usuarios mientras están ingresando texto.

Existen algunos requisitos para poder utilizar opciones avanzadas de las ayudas de búsqueda y estos son contar con ABAP 7.4 sp06 o superior y tener instalado al menos SAP GUI 7.3 para windows o SAP GUI 7.4, para java/HTML.

Como desarrollador, podemos definir una ayuda de búsqueda declarativamente detalló manera que especifique el nombre de una tabla o vista y seleccione los campos para el cuadro de diálogo.

A partir d eABAP 7.4 SP06, también podemos especificar los parámetros para una búsqueda aproximada aquí.

Para este propósito, utilizaremos la transacción SE80 o la transacción SE11 para crear una nueva ayuda de búsqueda y seleccionar una tabla o vista como fuente de datos.

No es necesario crear un índice de texto completo (full text index) para este propósito. Después de la activación, podemos integrar la ayuda de búsqueda con un programa de prueba.

REPORT zr_a4h_chapter9_vauehelp.

PARAMETERS: cost_id TYPE s_customer

MATCHCODE OBJECT za4h_bool_f4_fuzzy.

Y finalmente veremos en pantalla la nueva potencialidad de las ayudas de búsqueda en donde los valores se muestran a medida que el usuario escribe en pantalla.


Sobre el autor

Publicación académica de Miguel Angel Acosta Acosta, en su ámbito de estudios para el MASTER ABAP for HANA.

SAP Expert

Miguel Angel Acosta Acosta

Profesión: Ingeniero de Sistemas - Ecuador - Legajo: TF64C

✒️Autor de: 238 Publicaciones Académicas

🎓Egresado de los módulos:

Disponibilidad Laboral: FullTime

Presentación:

Profesional de ingeniería de sistemas en computación e informática, con experiencia en la implantación y soporte de proyectos informáticos para empresas del sector industrial y financiero.

Certificación Académica de Miguel Acosta

 

:: Al igual que Miguel ¿Usted está dispuesto a aprender ABAP?

El lunes 31 Enero 2022 comenzamos la 🎓Carrera Consultor ABAP.
Juntos para realizar sus más grandes desafíos!

 Cargando presentación, aguarde unos instantes...

 

 

+Recursos Gratuitos en CVOSOFT:

¡Lo importante es aprender!, por eso en CVOSOFT la comunidad SAP más grande de habla hispana, ponemos a su alcance los siguientes recursos abiertos libres y gratuitos:

Buscador de Publicaciones:

 

 

Consultas y Soporte

👋Hola! Estamos listos para ayudarle con el soporte que su carrera merece.

Acceda sección contacto y seleccione canal de comunicación más cómodo para usted.

🤝Aguardamos su mensaje, ¡Éxitos!

 


 

👉Que las empresas tomen en serio sus estudios es muy importante para que su inversión educativa tenga sentido.
Las empresas líderes de United States y del Mundo confían a CVOSOFT su recurso más valioso, la formación de su gente.

¿Quieres conocerlas?