Archive pour la catégorie 'Intelligence Artificielle'

Taxonomie de navigation

Lundi 15 octobre 2007

Derrière ce titre se cache une des nouvelles façons de rechercher l’information. Je viens de lire un excellent article sur le sujet et vous invite à en faire autant. Pour ceux qui aiment seulement, cela risque d’ennuyer les autres…

Le grand principe est de définir, à l’avance, les axes de recherche de l’internaute, et de ne lui montrer, au fur et à mesure, uniquement les valeurs des axes possédant des résultats. Je sais c’est un peu technico, charabio, bizarro. Je vous avais prévenu il faut lire l’article.

L’extraction des attributs pertinents pour un domaine donné est une de nos premières spécialités, nous la traitons avec des moteurs d’intelligence artificielle (en auto-apprentissage) et ce type de technologie sera le cœur de notre nouveau projet de moteurs de recherche spécialisés.

J’avais déjà évoqué le sujet et je prépare un billet plus fourni autour de ces thématiques :

Un an de cours de Chinois

Mardi 26 juin 2007

Je termine ma première année de cours collectif (10 personnes) de Chinois.

A raison de 2 heures par semaine cela laisse le temps de bien assimiler les notions élémentaires, même sans révision entre deux cours (mon cas) .

Mon premier objectif était de mieux comprendre comment “fonctionnait” cette langue. En effet nos moteurs obtiennent d’excellents résultats en Chinois, mais j’étais incapable de comprendre pourquoi. Maintenant que j’ai une meilleure vision de l’architecture cette langue, cela me parait plus clair. D’ailleurs nos prochains services web auront des versions chinoises.

 

estuchinois.jpg

 

Apprendre le Chinois est un dépaysement total : adieu alphabet, grammaire, bonjour caractères, pinyin… il convient de penser différemment. Nous avons eu beaucoup de discussions avec le prof sur la culture et les traditions chinoises, c’était une des parties les plus passionnante de cette année. Cela donne envie de faire une petite virée au pays du milieu.

La tête dans le Python

Jeudi 21 juin 2007

Cela fait plusieurs jours que je me bats avec un nouvel algorithme. Et cette lutte me prend toute mon attention (devant et hors écran) , si bien que j’ai beaucoup de mal à effectuer mes taches habituelles de veille ou d’administration quotidienne.

Je me réveille en pleine nuit avec une nouvelle idée qui fonctionne une fois sur quinze, je me lève précipitamment en plein repas pour contrôler un bout de code … bref un vrai zombie.

Je ne sais pas si ceci arrive à certains d’entre vous qui officient dans le développement d’applications, mais quand on est dans un programme tout le reste disparait. C’est un peu comme si le cerveau ne pouvait pas gérer plusieurs domaines à la fois.

 

python2.jpg

 

Tous nos moteurs de production sont développés en C (pur) mais nous effectuons les maquettes sous Python. C’est un langage très rapide à coder pour essayer des scenari, mais très lent dans l’exécution.

trait1.jpg

Le machin-truc sur lequel je travaille :

Ce devrait être (au conditionnel et si tout va bien) un “matcheur” qui sera capable de vérifier la similarité de plusieurs textes, pour :

  • Agréger des Petites Annonces pour un même bien
  • Agréger des Posts de blog sur un même sujet
  • Agréger des offres de emarchands pour le même produit
  • Lier des requêtes libres à des fiches produits d’un catalogue

Nous comptons bien présenter cette application (sortie à l’automne) à notre marché habituel et nous allons aussi l’utiliser pour nos propres services qui sortiront en bêta privé début Juillet.

Auto-Apprentissage : magie noire de l’AI.

Mercredi 21 mars 2007

L’auto-apprentissage (”machine learning“) est une méthode très utilisée dans le domaine de l’intelligence artificielle. Chez Sight’Up nous employons ce type de technique pour nos trois moteurs d’AI.

Comment ça marche ? Process de data mining textuel (catégorisation par exemple) :

  1. L’être humain montre des exemples au moteur. C’est la création du corpus étiqueté ou supervisé.
  2. Le moteur fait son apprentissage à partir du corpus étiqueté.
  3. Le moteur donne son avis sur des nouveaux documents qu’il n’a jamais vu.

 

Je fais souvent l’analogie avec l’éducation que les parents peuvent donner à leur progéniture. Mais c’est une éducation basée sur l’exemplarité du comportement sans aucune règle prédéfinie. L’enfant est capable seul, de se débrouiller même dans des situations inconnues. Il a développé son propre raisonnement en se servant de l’exemple de ses parents.

 

machinelearning.jpg

 

Les avantages :

  • Indépendance des langues selon les algorithmes (nos moteurs fonctionnent aussi sur les langues asiatiques)
  • Indépendance du domaine ou du métier

Les inconvénients qui lui sont reprochés :

  • Il faut disposer d’un corpus d’apprentissage de plusieurs milliers de documents pour avoir des résultats satisfaisants.
  • Effet boite noire (”black box”) car il est très difficile de définir à l’avance le “raisonnement” du moteur et il est impossible de lui ajouter des règles.

 

Comme vous pouvez le constater les meilleures technologies de machine-learnig sont celles qui diminuent l’intervention humaine et donc le coût de mise en oeuvre.

Pour cela nous avons parfois recours aux fonctions suivantes :

  • Ajout d’un exemple négatif dans le corpus d’apprentissage pour que le moteur se “recale” sans mettre en péril son apprentissage précédent.
  • Apprentissage semi-supervisé qui permet d’étendre la taille du corpus d’apprentissage.
  • “Active Learning” où les exemples montrés par l’humain ne sont pas pris au hasard mais choisis pour le système.

 

Nous concernant, nous avons développé et breveté une autre voie qui permet de faire un apprentissage sur une dizaine d’exemples en conservant d’excellents résultats de précision/rappel.

Je reviendrais certainement plus en détail sur cette méthode qui me passionne déjà depuis plusieurs années et qui me surprend encore quotidiennement par son effet “magique” et la pertinence de ses résultats.

XEROX parle aux moteurs

Lundi 12 février 2007

Xerox vient d’annoncer un partenariat avec Powerset pour la recherche en langage naturel, vu dans un article de Yves Grandmontagne.

On est ici un peu dans la recherche du “Saint Graal”, ou comment “parler” au moteur pour qu’il me comprenne.

Ce type de technologie demande en amont une grande connaissance de la langue (dictionnaire, règles de grammaire, …). Le travail à fournir est colossal.

xerox2.jpg

Outre le mythique PARC, le laboratoire européen de Xerox (XRCE) est basé en France. Nous avons été en compétition avec eux sur un gros projet et ils sont vraiment brillants dans leur domaine.
On pourrait rêver de poser le type de question suivante :

- Quelle est la population du Brésil ?

Malheureusement pour l’instant cela fait plutôt partie de la fiction.

L’idéal serait même que le moteur soit capable de faire la synthèse de différents documents pour ne donner que la réponse et non une liste de documents.

Drill Down : la recherche en profondeur

Vendredi 9 février 2007

Derrière ce nom un peu barbare se cache un concept de navigation de plus en plus utilisé pour la recherche.
Les définitions parlent souvent de “mécanisme de navigation dans une structure multidimensionnelle permettant d’aller du plus global au plus détaillé“. On parle aussi de “recherche par caractéristiques” (attribute search), “recherche par facettes” (faceted search), “recherche par paramètres” (parametric search)

drill12.jpg

Comment cela fonctionne :

  • Vous entrez votre requête de recherche de façon habituelle et vous obtenez une liste de résultats, souvent importante.
  • Puis vous allez affiner ces résultats via le drill down.
  • Ce dernier se présente souvent sous la forme d’un tableau de valeurs ou chaque colonne représente une caractéristique importante du domaine. Chaque ligne représente les valeurs qui existent dans ces attributs.
  • C’est ce dernier concept qui permet une recherche “à coup sûr” dans la liste de vos résultats.

Prenons par exemple le cas de la recherche d’une “robe rouge”. Si la liste de résultats qui apparait à l’écran vous semble trop longue, vous pourrez choisir comme caractéristique supplémentaire la matière (coton). Vous aurez alors une nouvelle liste de résultats. Vous pourrez choisir ensuite la marque et ainsi de suite… Bien sûr il est possible, à tout moment, de revenir en arrière ou de supprimer une caractéristique.

drill22.jpg

Comme vous l’aurez compris cela impose le traitement des données en amont. Il faut choisir les caractéristiques considérées comme importantes pour une catégorie (comme par exemple : la marque, la matière, la couleur dans la catégorie mode féminine). Puis il faut extraire, pour chaque document, la liste des valeurs pour chaque attributs. Cette extraction peut se faire à partir : de fiches produit, de calcul (pour les prix) ou d’extracteur d’attributs.

Dans la liste de vos résultats le drill down va vous proposer cette robe dans différentes matières, pour différentes marques et dans différentes tailles par exemple.

La plupart du temps il est indiqué le nombre de résultats pour chaque valeur de caractéristiques.

Ce type de présentation a été tout d’abord utilisé par le monde de la “business intelligence” pour naviguer dans des quantités énormes de données et ainsi pouvoir faire des focus et des allers-retours facilement (cube Olap). Puis cet usage est passé dans les moteurs de recherche spécialisés pour faciliter la navigation et éviter les recherches qui tombent dans le vide.