Article
· Fév 28 5m de lecture

Des informations sur les données non structurées à l'aide de la recherche de texte SQL

Qu'est-ce que les données non structurées ?

Les données non structurées sont des informations qui n'ont pas de modèle de données ou d'organisation prédéfinis. Contrairement aux données structurées que l'on trouve dans les bases de données avec des structures claires (par exemple, des tables et des champs), les données non structurées n'ont pas de schéma fixe. Ce type de données comprend le texte, les images, les vidéos, les fichiers audio, les messages sur les médias sociaux, les courriels, etc.

Pourquoi les données non structurées sont-elles importantes ?

Selon un rapport d'IDC (International Data Corporation), 80 % des données mondiales devraient être non structurées d'ici à 2025, ce qui constitue une préoccupation majeure pour 95 % des entreprises. Forbes Article

Comment le monde de l'IA aborde-t-il cette question ?

Dans le domaine de l'IA, l'IA générative joue un rôle crucial en fournissant des solutions pour les données non structurées. Elle excelle dans des tâches telles que l'extraction d'informations précieuses à partir de textes, d'images et de vidéos, le résumé de textes et l'interaction avec des documents.

La solution d'Intersystems pour les données non structurées

Intersystems IRIS présente une solution exceptionnelle connue sous le nom de "SQL Text Search" pour la recherche de données non structurées. Cette fonction facilite les recherches sémantiques contextuelles sur les données textuelles non structurées dans plusieurs langues.

Quels sont les avantages de l'utilisation de SQL Text Search ?

Recherche rapide: InterSystems IRIS SQL Search navigue rapidement dans des volumes de données importants en utilisant une génération d'index optimisée, évitant les recherches séquentielles dans les données elles-mêmes.

Recherche Word-Aware: Contrairement à une recherche de chaîne de base, SQL Search s'appuie sur les structures sémantiques du texte, le mot étant l'unité fondamentale. Cette approche permet de minimiser les faux positifs dus à des chaînes de caractères intégrées ou à des chaînes de caractères couvrant deux mots.

Recherche par entités: SQL Search prend en compte les relations sémantiques pour regrouper plusieurs mots en entités. Elle peut rechercher des séquences de mots spécifiques, des mots à proximité (quelle que soit la séquence) et des mots au début ou à la fin d'une entité, ce qui permet d'effectuer des recherches contextuelles précises.

Recherche en fonction de la langue: La reconnaissance des relations sémantiques est spécifique à la langue, et SQL Search intègre des modèles linguistiques pour dix langues naturelles. Il prend également en charge d'autres langues sans qu'il soit nécessaire de créer un dictionnaire ou une ontologie.

Correspondance de motifs : SQL Search offre la possibilité de faire correspondre les motifs de caractères avec des caractères génériques et des expressions régulières (RegEx).

Correspondance floue : SQL Search inclut des capacités de recherche floue pour les correspondances proches, en tenant compte d'un degré calculé de variation par rapport à la chaîne de recherche. Cela facilite la correspondance même en cas de fautes d'orthographe.

Correspondance dérivée : SQL Search utilise la décomposition pour faire correspondre les mots racines et les mots composants, ainsi que les tables de synonymes pour faire correspondre les mots et les phrases synonymes.

Comment implémenter la recherche de texte SQL avec des données non structurées : Un exemple pratique avec MIND

Pour démontrer la mise en œuvre de SQL Text Search avec des données non structurées, nous utiliserons l'ensemble de données Microsoft News (MIND) comme exemple, en nous concentrant sur un petit ensemble d'entraînement.

Remarque : les exemples fournis utilisent l'espace de noms User, mais vous pouvez le remplacer par l'espace de noms de votre choix, en veillant à ce que toutes les opérations se déroulent dans le même espace de noms.

Étape 1 : Télécharger et extraire les données de formation
Télécharger l'ensemble de données d'entraînement MIND MIND (msnews.github.io) de MIND et extraire le fichier news.tsv de l'archive. Le fichier est délimité par des tabulations et nous nous concentrerons principalement sur les champs "catégorie", "titre" et "description".

Étape 2 : Créer une classe persistante

Créez une classe persistante nommée "Test.JSON" avec les propriétés "Title" (chaîne), "Category" (chaîne) et "Description" (chaîne). Créez un index %IFind.Basic spécifique pour la propriété "Description" afin d'améliorer les performances de la recherche textuelle. Une fois l'index créé, compilez la classe.

Étape 3 : Charger la base de données MIND

Chargez l'ensemble de données MIND dans la classe nouvellement créée. Vous pouvez remplir la table en utilisant les méthodes de classe et d'objet ou le langage SQL. Le code suivant illustre le chargement de l'ensemble de données à l'aide des méthodes de classe et d'objet.

Étape 4 : Vérifier le chargement du jeu de données

Après avoir chargé le jeu de données, interrogez la table pour vous assurer qu'elle contient bien les lignes attendues. Vous pouvez utiliser le portail de gestion SQL ou SQL Shell à partir du terminal pour cette vérification.

Étape 5 : Utilisation de l'index pour les requêtes

Exploitez maintenant l'index spécifique pour élaborer des requêtes et extraire des informations. Par exemple, vous pouvez utiliser les requêtes suivantes :

Retrouver les actualités de l'entreprise Microsoft :

SELECT %iFind.Highlight(Description,'"microsoft*"') FROM Test.JSON WHERE %ID %FIND search_index(DescriptionIdx,'"microsoft*"',0,'en')

Retrouvez les actualités de l'entreprise Google :

SELECT %iFind.Highlight(Description,'"google*"') FROM Test.JSON WHERE %ID %FIND search_index(DescriptionIdx,'"google*"',0,'en')

Retrouvez les actualités de Google et microsoft:

SELECT %iFind.Highlight(Description,'"microsoft*" "google*"') FROM Test.JSON WHERE %ID %FIND search_index(DescriptionIdx,'"microsoft*" "google*"',0,'en')


Avertissement:

Il est essentiel de savoir que les index Semantic et Analytic SQL Search utilisent le traitement du langage naturel (NLP) d'InterSystems IRIS, qu'InterSystems a déprécié. Depuis la dernière version de l'édition communautaire (2023.3.0), cette fonction est toujours fonctionnelle, mais il est possible qu'elle soit supprimée dans les versions futures. Utilisez SQL Text Search à vos risques et périls.

J'écrirai la suite de cet article avec des options alternatives pour la recherche de texte SQL obsolète. Si vous avez aimé mon article, votez et donnez vos suggestions ci-dessous. Je vous remercie de votre attention.

Video explicative (en Anglais)

Discussion (0)1
Connectez-vous ou inscrivez-vous pour continuer