SlideShare una empresa de Scribd logo
1 de 24
#SQSummit
@pausempere
SQL Server y Textos
Del char(1) al análisis semántico
DPS – Business Intelligence
psempere@solidq.com
MAP 2012
Pau Sempere Sánchez
Objetivos
Repasar las opciones de tratamiento de textos que ofrece
SQL Server
Predicar con el ejemplo
Agenda
Similitud de textos
–Fonética
–Sintáctica
Análisis semántico
Agenda
Similitud de textos
–Fonética
–Sintáctica
Análisis semántico
Similitud de texto
SOUNDEX
Huella fonética
Código de 4 caracteres
DIFFERENCE
Diferencias fonéticas
Escala de 0 a 4
DEMO
6
SOUNDEX
Agenda
Similitud de textos
–Fonética
–Sintáctica
Análisis semántico
Similitud de texto
HERRAMIENTAS
• SSIS
• Fuzzy Grouping
• Fuzzy Lookup
• DQS
• Consultas personalizadas
Similitud de texto
Levenshtein
Jaro-Winkler
Jaccard
CommonSubstring
Función en la BD de MDS 
SUMMIT 2014SUMMIT 2013SUMMIT 2013
Similitud de texto
¡RUIDO!
Artículos
Preposiciones
Palabras comunes dentro del dominio
¿Llamar a SSIS con una query?
DATA SOURCE
DATA STREAMING
DESTINATION
OLEDB PROVIDER FOR
SSIS
LINKED
SERVER
SQL QUERY
SSIS PACKAGE
DEMO
12
Buscador Online
CONJUNTO DE
REFERENCIA
NUEVOS
ELEMENTOS
MDSDQS
Buscador
Fuzzy
Lookup
Similarity
MDS
Agenda
Similitud de textos
–Fonética
–Sintáctica
Análisis semántico
Análisis Semántico
FULL-TEXT
Clausulas propias:
–CONTAINS / CONTAINSTABLE
• NEAR
• ISABOUT (WEIGHT)
• FORMSOF
Análisis Semántico
FULL-TEXT
Clausulas propias:
–FREETEXT / FREETEXTABLE
Análisis Semántico
• Wordbreakers
• Stoplists (ruido)
• Stemmers
• Tesauros personalizados
Análisis Semántico
FileTable
• Carpeta/tabla
• FileStream
• Versionado de
ficheros
• Indexable
FullText FILESTREAM
FILETABLE
ACCESO
TRANSACCIONAL
ACCESO WINDOWS
BD
Carpetas y
ficheros
Acceso
FileStream BLOBS
F
U
L
L
T
E
X
T
S
E
M
A
N
T
I
C
S
DEMO
19
Eligiendo lecturas con Full-Text
Análisis Semántico
FULL-TEXT
Semantics
• Semántica y
contexto
• Instalación
adicional
• BD propia
• Filter packs FILESTREAM
FILETABLE
ACCESO
TRANSACCIONAL
ACCESO WINDOWS
BD
Carpetas y
ficheros
Acceso
FileStream BLOBS
F
U
L
L
T
E
X
T
S
E
M
A
N
T
I
C
S
DEMO
23
Full-Text Semantics
Conclusiones
• La fonética no es suficiente
• Gestión avanzada de similitud
• Fuzzy Lookup
• Similarity MDS
• Queries full-text para búsqueda avanzada
• Gestión documental con FileTables y Semantics
2525
Power BI para usuarios de negocio
25
Curso online
Clases virtuales presenciales
14, 15, 16, 21, 22 y 23 de Julio
De 16 a 20 h
Máster en BI 4ª Edición (Inicio Octubre 2014)
- Clases presenciales virtuales
- 450 horas (60 ECTS)
- SolidQ – UPM
- Clases + trabajo práctico + proyecto
- Beca de hasta 1.300 € para los primeros inscritos.
Máster en Big Data & Analytics
1ª Edición (Inicio Octubre 2014)
- Clases presenciales virtuales
- 1 año (60 ECTS) UMA
- Clases + trabajo práctico + proyecto
Información e inscripción:
http://university.solidq.com / ibinfo@solidq.com
Si quieres disfrutar de las mejores sesiones de nuestros mentores
de España y Latino América, ésta es tu oportunidad.
http://summit.solidq.com
Síguenos:
26
@pausempere
DPS – Business Intelligence
Pau Sempere Sánchez

Más contenido relacionado

Similar a SQL Server y Textos - del char al análisis semántico

Similar a SQL Server y Textos - del char al análisis semántico (20)

Silabo de Informatica
Silabo de InformaticaSilabo de Informatica
Silabo de Informatica
 
Der01 i informatica
Der01 i informaticaDer01 i informatica
Der01 i informatica
 
Silabo
SilaboSilabo
Silabo
 
Der01 i informatica
Der01 i informaticaDer01 i informatica
Der01 i informatica
 
Der01 i informatica
Der01 i informaticaDer01 i informatica
Der01 i informatica
 
Der01 i informatica
Der01 i informaticaDer01 i informatica
Der01 i informatica
 
SILABO INFORMATICA
SILABO INFORMATICASILABO INFORMATICA
SILABO INFORMATICA
 
Silabo de informatica
Silabo de informaticaSilabo de informatica
Silabo de informatica
 
Formatos de documentos digitales
Formatos de documentos digitalesFormatos de documentos digitales
Formatos de documentos digitales
 
Temario incial Curso Tecnico Ofimatica
Temario incial Curso Tecnico OfimaticaTemario incial Curso Tecnico Ofimatica
Temario incial Curso Tecnico Ofimatica
 
Silabus de base de datos i 2014
Silabus de base de datos i 2014 Silabus de base de datos i 2014
Silabus de base de datos i 2014
 
Power BI. Integración de datos | SolidQ Summit 2014
Power BI. Integración de datos | SolidQ Summit 2014Power BI. Integración de datos | SolidQ Summit 2014
Power BI. Integración de datos | SolidQ Summit 2014
 
Relación de cursos SapB1 con precios
Relación de cursos SapB1 con preciosRelación de cursos SapB1 con precios
Relación de cursos SapB1 con precios
 
Java script para desarrolladores SharePoint
Java script para desarrolladores SharePointJava script para desarrolladores SharePoint
Java script para desarrolladores SharePoint
 
Computacion2
Computacion2Computacion2
Computacion2
 
¿Por que cambiar de Apache Hadoop a Apache Spark?
¿Por que cambiar de Apache Hadoop a Apache Spark?¿Por que cambiar de Apache Hadoop a Apache Spark?
¿Por que cambiar de Apache Hadoop a Apache Spark?
 
Computacion2
Computacion2Computacion2
Computacion2
 
Relación de cursos SAPB1
Relación de cursos SAPB1 Relación de cursos SAPB1
Relación de cursos SAPB1
 
INTRODUCCIÓN Y EXPLORACIÓN DEL AMBIENTE DE WORD DISEÑO DE UN DOCUMENTO WORD
INTRODUCCIÓN Y EXPLORACIÓN DEL AMBIENTE DE WORD DISEÑO DE UN DOCUMENTO WORD INTRODUCCIÓN Y EXPLORACIÓN DEL AMBIENTE DE WORD DISEÑO DE UN DOCUMENTO WORD
INTRODUCCIÓN Y EXPLORACIÓN DEL AMBIENTE DE WORD DISEÑO DE UN DOCUMENTO WORD
 
Pillarsjs una aventura Open Source
Pillarsjs una aventura Open SourcePillarsjs una aventura Open Source
Pillarsjs una aventura Open Source
 

Más de SolidQ

Más de SolidQ (20)

SolidQ Summit 2018 - Qué necesita saber un DBA de Integration Services
SolidQ Summit 2018 - Qué necesita saber un DBA de Integration ServicesSolidQ Summit 2018 - Qué necesita saber un DBA de Integration Services
SolidQ Summit 2018 - Qué necesita saber un DBA de Integration Services
 
SolidQ Summit 2018 - Seguridad a nivel datos. RLS
SolidQ Summit 2018 - Seguridad a nivel datos. RLSSolidQ Summit 2018 - Seguridad a nivel datos. RLS
SolidQ Summit 2018 - Seguridad a nivel datos. RLS
 
SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...
SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...
SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...
 
SolidQ Summit 2018 - ¿Dificultades gestionando relaciones muchos a muchos? De...
SolidQ Summit 2018 - ¿Dificultades gestionando relaciones muchos a muchos? De...SolidQ Summit 2018 - ¿Dificultades gestionando relaciones muchos a muchos? De...
SolidQ Summit 2018 - ¿Dificultades gestionando relaciones muchos a muchos? De...
 
SolidQ Summit 2018 - Report Server: Nuevos mutantes
SolidQ Summit 2018 - Report Server: Nuevos mutantesSolidQ Summit 2018 - Report Server: Nuevos mutantes
SolidQ Summit 2018 - Report Server: Nuevos mutantes
 
Cuando QueryStore no sirve, ¿qué opciones tenemos?
Cuando QueryStore no sirve, ¿qué opciones tenemos?Cuando QueryStore no sirve, ¿qué opciones tenemos?
Cuando QueryStore no sirve, ¿qué opciones tenemos?
 
SQL Server 2017 en Linux
SQL Server 2017 en LinuxSQL Server 2017 en Linux
SQL Server 2017 en Linux
 
Columnstore en la vida real
Columnstore en la vida realColumnstore en la vida real
Columnstore en la vida real
 
PowerApprízate
PowerApprízatePowerApprízate
PowerApprízate
 
Jugando a ser rico: Machine Learning para predicción de stocks
Jugando a ser rico: Machine Learning para predicción de stocksJugando a ser rico: Machine Learning para predicción de stocks
Jugando a ser rico: Machine Learning para predicción de stocks
 
Analizando tus Redes Sociales con Power BI
Analizando tus Redes Sociales con Power BIAnalizando tus Redes Sociales con Power BI
Analizando tus Redes Sociales con Power BI
 
Mantenimiento de SQL Server para Dummies
Mantenimiento de SQL Server para DummiesMantenimiento de SQL Server para Dummies
Mantenimiento de SQL Server para Dummies
 
R en relacional
R en relacionalR en relacional
R en relacional
 
Cuando haces bot ya no hay stop!!
Cuando haces bot ya no hay stop!!Cuando haces bot ya no hay stop!!
Cuando haces bot ya no hay stop!!
 
Arquitecturas lambda en Azure
Arquitecturas lambda en AzureArquitecturas lambda en Azure
Arquitecturas lambda en Azure
 
Bot Framework: otra manera de acceder a tus datos - SolidQ Summit 2018
Bot Framework: otra manera de acceder a tus datos - SolidQ Summit 2018Bot Framework: otra manera de acceder a tus datos - SolidQ Summit 2018
Bot Framework: otra manera de acceder a tus datos - SolidQ Summit 2018
 
BIE2E en Azure - SolidQ Summit 2018
BIE2E en Azure - SolidQ Summit 2018BIE2E en Azure - SolidQ Summit 2018
BIE2E en Azure - SolidQ Summit 2018
 
¿Qué viene GDPR? Mi SQL está preparado- SolidQ Summit 2018
¿Qué viene GDPR? Mi SQL está preparado- SolidQ Summit 2018¿Qué viene GDPR? Mi SQL está preparado- SolidQ Summit 2018
¿Qué viene GDPR? Mi SQL está preparado- SolidQ Summit 2018
 
Hilando fino en SSAS multidimensional - SolidQ Summit 2018
Hilando fino en SSAS multidimensional - SolidQ Summit 2018Hilando fino en SSAS multidimensional - SolidQ Summit 2018
Hilando fino en SSAS multidimensional - SolidQ Summit 2018
 
Adaptive Query Processing: Mejoras en el motor de consulta de SQL Server 2017...
Adaptive Query Processing: Mejoras en el motor de consulta de SQL Server 2017...Adaptive Query Processing: Mejoras en el motor de consulta de SQL Server 2017...
Adaptive Query Processing: Mejoras en el motor de consulta de SQL Server 2017...
 

Último

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
nicho110
 

Último (10)

How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 

SQL Server y Textos - del char al análisis semántico

Notas del editor

  1. Algoritmo diseñado para el idioma inglés a principios del siglo XX Podríamos pensar que es débil para otros idiomas porque no ajusta los fonemas, pero tiene fallos también para el inglés DIFFERENCE devuelve un valor de 0 a 4, siendo 0 una diferencia total y 4 una diferencia mínima
  2. Son procesos batch, para limpiar / clasificar / deduplicar registros de texto. Los tres primeros son muy útiles para grandes cargas de datos, se embeben en SSIS (flexibilidad, escalabilidad, potencia, versatilidad en la transformación…) DQS tiene la ventaja de que podemos centralizar las bases de conocimiento en el servidor, trabajar por separado en los dominios y luego consultarlos en un mismo paquete SSIS, aplicar reglas complejas, expresiones regulares, wildcards, etc. Pero, ¿y si queremos hacerlo online? Al estilo de lo que hacen Google y Bing, estaremos preguntando por una cadena de texto concreta sobre un conjunto de referencia, un conjunto maestro… estos procesos acaban volcando en un destino de datos, con lo que el proceso sería invocar al paquete parametrizado, que limpie el dato que le hemos introducido y leer de los resultados de una tabla temporal… muchos cuellos de botella potenciales. Podemos usar DataStream Destination con FuzzyLookup en el paquete para limpiezas bajo demanda (DQS es lento para una búsqueda online), pero requiere algo más de trabajo y es un componente que no es parte del RTM aunque lo publique MS. Queda fuera del ámbito de esta charla.
  3. Para hacerlo online tenemos que recurrir a embeberlo por ejemplo, en un procedimiento almacenado que consulte contra el conjunto de referencia. ¿Pero como lo compara? ¿Cómo construimos esa consulta personalizada? La fonética no es suficiente, hay que independizarse de como se pronuncia (cacofonías, diferencias culturales e idiomáticas, etc.) Hay que irse al dato, basarse en conceptos matemáticos. La diferencia entre dos números es su resta (el número que falta en una para llegar al otro), en las cadenas de texto es también, como punto de partida, el mínimo número de cambios que faltan en una para llegar a la otra: la distancia de edición (originalmente, Levenshtein). Hay varios algoritmos basados en el mismo concepto: Levenshtein  Distancia de edición, asigna pesos por tipo de modificación. Se puede implementar por programación dinámica. Jaro-Winkler  Todos los caracteres contra todos, si encuentra coincidencias en posiciones cercanas entran al cálculo de similitud. El sumatorio de cada comparación / 3 Jaccard  Compara los sets de caracteres con unión e intersección. dj = 1 - J(A,B) = 𝐀∪𝐁 − |𝐀∩𝐁| |𝐀∪𝐁| Se puede implementar por programación dinámica. CommonSubstring  Encuentra la subcadena común más larga entre las dos cadenas a comparar. Puede implementarse de manera parecida a levenshtein (prog dinámica) incrementando la puntuación por cada carácter igual en la subcadena que vayamos encontrando en vez de pesos por la modificación necesaria.
  4. Suelen funcionar mejor cuanto más cortos son los strings. El ruido funciona como un outlier en la distribución de caracteres, aleja los puntos comunes y por tanto las puntuaciones de similitud. Hay ruido que no es fácil de quitar (conjugaciones de verbos, necesitaríamos un stemmer para sacar la raíz y poder asociar conjugaciones diferentes), pero otro es bastante fácil. Artículos y preposiciones, por ejemplo, son conocidos y tenemos un conjunto finito de ellos, podemos usar un filtro tan sencillo como un replace. Las palabras comunes dentro del dominio también funcionan como outliers. Si trabajamos con talleres de reparación y chapa y pintura, por ejemplo, las palabras “automoción”, “taller”, “talleres”, “autos”, “automóviles”, “reparaciones”, etc… son palabras propias del dominio que no aportan información adicional y significativa. Sin embargo, el nombre del taller en si sí aporta info clave para establecer similitud.
  5. containmentBias Specifies how exact the fuzzy index is when it is comparing strings of different lengths. Values must be in the range 0.0 to 1.0 inclusive. A value of 0.0 implies that the index will reduce the score of matches that have different string lengths. A value of 1.0 implies that the index is less exact. containmentBias is an expression of type float with no default. containmentBias is used only for the Jaccard similarity coefficient and longest common subsequence algorithms.
  6. La importancia de mantener un conjunto de referencia consistente, rico y fiable  MDS + DQS Para establecer qué listas de ruido necesitamos usar para estandarizar las búsquedas (o añadir a nuestras stoplists en fulltext) podemos usar Term Extraction para ver las palabras más repetidas y volcarlas a una tabla aparte. De ahí las analizamos y las incluimos en las listas de ruido.
  7. Útil para preguntas concretas, si se ajustan tesauros y stoplists se puede focalizar mucho las búsquedas. Importante el idioma para las funciones avanzadas (formsof depende directamente del stemmer). CONTAINS -> Busqueda fuzzy de términos. Si usamos la versión de tabla, devuelve un objeto tabla y podemos usar el metadato que añade (RANK e ID) FREETEXT -> Búsqueda sobre el significado. Por defecto usa los stemmers y tesauros para sacar las formas y los sinónimos y llegar a ese “significado” NEAR -> Las relaciones entre palabras a ciertas distancias pueden sugerir que están relacionadas, con NEAR podemos tener esta medida de manera personalizada Necesidad de contexto para empezar a hablar de semántica – con el ISABOUT se puede empezar a acercar, pero hay que hacer preguntas concretas. Nos quedamos cortos a la hora de sacar significado, ver si una palabra es positiva o negativa (porque nos falta contexto). Tendríamos que desarrollar nuestra propia política para decidir qué implicación tiene que una palabra esté cerca de otra o que ISABOUT de ciertas puntuaciones para extraer conclusiones acerca de la semántica del texto.
  8. Útil para preguntas concretas, si se ajustan tesauros y stoplists se puede focalizar mucho las búsquedas. Importante el idioma para las funciones avanzadas (formsof depende directamente del stemmer y puede usar el tesauro). ISABOUT -> Para preguntar por el significado de un texto podemos darle pesos a las palabras que usamos para la query, de tal manera que si hablamos de medicina de rodilla, la palabra ‘RODILLA’ tendrá más peso que ‘LIGAMENTO’, pero ‘LIGAMENTO’ también es importante FORMSOF -> Aplicación directa de los stemmers y los tesauros. Especificamos que queremos las formas que derivan de ciertas palabras, y esto puede ser sacando la raíz de la palabra y derivándola y también usando los sinónimos que especifiquemos en el tesauro. Necesidad de contexto para empezar a hablar de semántica – con el ISABOUT se puede empezar a acercar, pero hay que hacer preguntas concretas. Nos quedamos cortos a la hora de sacar significado, por ejemplo para ver si una palabra es positiva o negativa (porque nos falta contexto). Tendríamos que desarrollar nuestra propia política para decidir qué implicación tiene que una palabra esté cerca de otra o que ISABOUT de ciertas puntuaciones para extraer conclusiones acerca de la semántica del texto.
  9. Las FileTables tienen dos “aspectos”, como carpeta del sistema de ficheros y como tabla interna de SQL Server. El usuario solo tiene que copiar los documentos a la carpeta, sea con una aplicación (API de gestión de ficheros de Windows) o manualmente. Los permisos se establecen en SQL Server, no aplican los de sistema de ficheros de Windows. Aunque sea acceso no transaccional, SQL Server acaba manejando las modificaciones, escrituras y borrados y para ello asume la gestión de permisos. Se indexa el binario, usa los mecanismos de Full-Text (stemmers, wordbreakers, stoplists y tesauros) para construir índices más complejos, en los que además se relacionan documentos entre ellos, con lo que podemos establecer taxonomías en nuestras bibliotecas de documentos. Every FileTable implements a logical folder structure using the path_locator column. This is a hierarchyid value that denotes the location of each file and folder (row) within the logical file system (table). Así, tendremos una FileTable para cada conjunto de documentos que queramos relacionar. Cada uno está localizado dentro del árbol de directorios con su path_locator, y es indexable y relacionable con el resto, a efectos de la table es una columna de tipo BLOB (varbinary(max)).
  10. Cada documento tiene enlazados una serie de metadatos que lo definen y un direccionamiento a una ruta (por ejemplo). Necesidad de rellenar los metadatos para cada documento, estandarización de conceptos como "temática", fechas, etc. Si faltan metadatos, reducimos el universo de búsqueda, porque los parámetros son limitados (fecha entre X e Y, temática in (tema1, tema2, etc.). Desde la tabla de metadatos al final se remite a la ruta donde se encuentra la documentación. Ampliar el sistema supone añadir columnas nuevas al sistema de metadatos y actualizar TODAS las filas con datos que puede ser que sean imposibles de obtener para documentación antigua, por ejemplo.
  11. *CONSULTAR BUSQUEDA EN SHAREPOINT – DOCUMENTACIÓN Y DANI -* Ejemplo de sistema híbrido: Usa metadata y almacenamiento en la BD de contenido de SQL Server que subyace pero tiene el sistema de indexación independiente, con implementación propia.
  12. Se basa en full-text y expande su funcionalidad, ahora apuntando más allá, a la semántica y a la relación entre documentos por su contenido. Requieren de una BD propia que se instala y añade a la instancia de SQL Server. Tienen un proceso crawler que indexa los documentos usando iFilters que le instalemos. Los IFilters indican a SQL Server como analizar el binario según el tipo de documento del que se trate.