Trouver les motifs les plus communs dans un texte

a marqué ce sujet comme résolu.

Bonjour,

Je viens vers vous parce que j’ai le problème suivant: On reçoit, d’un fournisseur d’informations, des jeux de données (souvent de l’ordre de plusieurs millions de records). Et je souhaiterais identifier s’il existe des motifs communs et effectuer un classement selon les plus communs, afin d’extraire une éventuelle information.

Typiquement, si on reçoit: M. A B Mme. C D Je m’en fiche.

Mais si j’ai: M. A B (passport n° X) Mme. C D (passport n° Y) Je veux identifier cette partie: "(passport n° K)"

Je me suis dit que je pouvais essayer de tokenizer de manière un peu intelligente (Mme et Madame sont la même chose, ponctuations, …), d’éventuellement appliquer du Named Entity Recognition sur les tokens et puis appliquer un Smith–Waterman sur les nouvelles chaînes de "caractères".

Quelqu’un a-t-il déjà expérimenté ce genre d’idées, ou avez-vous une autre solution (un peu plus élégante) ? J’ai un peu peur côté timing. J’avais également pensé à une solution proche d’un Aho–Corasick mais j’ai pas envie de développer un truc compliqué =).

Merci d’avance pour vos réponses.

Bonjour,

J’ai un peu de mal à voir où tu veux en venir, mais si le but est seulement d’identifier des mots qui reviennent, lister le nombre d’occurrence de chaque mot me parait le plus simple tout en donnant une bonne première approche.

Ainsi, un motif fréquent sera repérable pour pouvoir être traité plus intelligemment ensuite.

+0 -0

Bonjour,

C’est plutôt dans l’autre sens, du "outlier detection". Classer selon les termes les plus fréquents ne va pas m’aider parce que je vais retrouver tous les qualificatifs (madame, Mme.) ainsi que les noms de famille/prénoms les plus communs. Ma recherche est plutôt dans le sens: "Dans tous ces noms d’individus, est-ce qu’il y a des intrus ?". La difficulté étant que les flux de données sont complètement mélangés, je peux avoir des individus au milieu de compagnies, fonds d’investissements ou même noms de bateaux !

Mais pour donner un autre exemple, un fournisseur nous donne des "X joint shareholders with Y". Je veux que ce fragment "joint shareholders with" apparaissent dans mes statistiques.

Je comprends mieux. Tu as une liste de nom avec des déchets et tu veux séparer les noms des déchets. Le problème, c’est que comme tes noms peuvent être variés, cette séparation est très compliquée. Honnêtement, je ne suis pas sur que ce soit possible. Une entreprise peut tout à fait d’appeler « joint shareolder quelque chose », donc toute reconnaissance à partir du nom seul me semble impossible. Si tu n’avais que des entreprises, tu aurais pu coupler ça à un annuaire, mais si tu as aussi des noms de bateau et de gens…

Ça dépasse malheureusement ce que j’ai pu faire en termes de nettoyage de données.

+0 -0

Bonjour,

Ton "fournisseur d’informations" ne peut pas t’envoyer ces données de manière un peu plus exploitables ?

Peux-tu nous montrer un extrait de ce que tu reçois (anonymisé) ?

+0 -0

Ton "fournisseur d’informations" ne peut pas t’envoyer ces données de manière un peu plus exploitables ?

Si seulement ^^ Il y a plus d’une centaine de fournisseurs, certains font du très bon boulot, d’autres profitent du leur position dominant … Surtout que les contrats signés sont quelque peu … à l’avantage des fournisseurs et que c’est à nous à nous adapter … (On se fait aussi pigeonner pour nos clients).

Peux-tu nous montrer un extrait de ce que tu reçois (anonymisé) ?

Prenons des données 'anonymisées’ (comme on dit: "Toute ressemblance avec des personnages existant ou ayant existé serait fortuite et indépendante de la volonté de l’auteur"):

  • Yves Molper
  • Grosso pension fund trust pty ltd
  • Ma fabuleuse compagnie
  • MR ALBERT LANQUILIOTTE
  • The trustee for Doe Family Trust
  • Ets. Forêt et fils
  • Ofundi Global Emerging Bond Markit UCITS ETF Acc USD
  • POULET Sophie
  • executaires testamentaires de M. Serge Bob Bobbinson
  • Alex Prosper Eric Marie van Clerq
  • association des propriétaires sise au 750 rue de l’Eglise à Ixelles
  • Marie DEBLAUVE (née BLANCKE)
  • Tom Wilhelmus Monteyne - ecuyer
  • Landmark SA
  • DIANTRE BANK BRANCH

=> La majoritée des données n’ont pas ces extra qualificatifs.

Je pense que le plus simple serait d’entraîner un NER et de voir sur quoi il butte et itérer.

Je peux déjà faire un pré-tri en regardant les séquences de mots qui apparaissent le plus dans les données.

+0 -0

Apparemment, en dehors d’une recherche textuelle basée sur dictionnaire ou motif précis, je ne vois pas.

Sinon, si tu es sous Linux as-tu essayé les outils classiques (find, grep, awk, sort …) ?

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte