4

J'apprécierais vraiment vos pensées sur la meilleure approche au problème suivant. J'utilise un exemple d'annonce de voiture classifiée qui est similaire dans la nature pour donner une idée.Aide: Extraction de tuples de données à partir du texte ... Regex ou apprentissage automatique?

Problème: Extraction d'un n-uplet de données à partir du texte donné.

Voici quelques caractéristiques des données.

  1. Le vocabulaire (mots) dans le texte est limité à un domaine spécifique. Supposons 100-200 mots au maximum.

  2. Le texte qui doit être analysé est un titre comme les données d'annonce de voiture présentées ci-dessous. Donc chaque enregistrement correspond à un tuple (ligne).

  3. Dans certains cas, certains attributs peuvent être manquants. Par exemple, dans la ligne de données brutes n ° 5 ci-dessous, l'année est manquante.

  4. Certains mots vont ensemble (bigrammes). Comme "Low miles".

  5. données historiques disponibles = 10.000 enregistrements

  6. entrant Nouveau volume de données = 1000-1500 records/semaine

Le résultat attendu devrait être sous la forme de (année, marque, modèle, fonctionnalité). Ainsi, la sortie devrait ressembler à

1 -> (2009, Ford, Fusion, SE)
2 -> (1997, Ford, Taurus, Wagon)
3 -> (2000, Mitsubishi, Mirage, DE)
4 -> (2007, Ford, Expedition, EL Limited)
5 -> (, Honda, Accord, EX)
....
....

Raw Titre données:


1 -> 2009 Ford Fusion SE - 7000 $
2 -> 1997 Ford Taurus Wagon - 800 $ (San José est)
3 -> '00 Mitsubishi Mirage DE - 2499 $ (saratoga) pic
4 -> 2007 Ford Expedition EL limitée - 7800 $ (x)
5 -> Honda Accord ex miles faible - 2800 $ (dublin/Pleasanton/livermore) pic
6 -> 2004 HONDA ODASSEY LX 68K MILES - 10800 $ (danville/san ramon)
7 -> 93 MARQUE LINCOLN - 2000 $ (oakland east) pic
8 -> ###### 2006 LEXUS GS 430 NOIR SUR NOIR 114KMI ####### - $ 19700 (san rafael) pic
9 -> 2004 Audi A4 1.8T FWD - $ 8900 (Sacramento) pic
10 -> ####### 2003 GMC C2500 HD EX-CAB 6.0 V8 EFI BLANC 4X4 ####### - $ 10575 (san rafael) cliché
11 -> 1990 Toyota Corolla RUNS BON! GAZ SAVER! 5SPEED CLEAN! REG 2011 O.B.O - $ 1600 (vallée de hayward/castro) img
12 -> HONDA ACCORD EX 2000 - $ 4900 (dublin/pleasanton/livermore) pic
13 -> 2009 Chevy Silverado LT à cabine double - 23900 $ (dublin/pleasanton/livermore) pic
14 -> 2010 Acura TSX - V6 - TECH - 299,00 $ (dublin/Pleasanton/livermore) pic
15 -> 2003 Nissan Altima - 1830 $ (SF) pic


choix possibles:

  1. Une machine à apprendre ning Texte classificateur (Naive Bayes etc)
  2. Regex

Ce que je suis en train de comprendre est si RegEx est trop compliqué pour le travail et un classificateur de texte est un surpuissant?

Si le choix est d'aller avec un classificateur de texte alors qu'est-ce que vous considérez comme le plus facile à mettre en œuvre.

Merci d'avance pour votre aide.

+1

Avez-vous des données étiquetées pour entraîner/tester des algorithmes? Cela peut limiter le type d'approches que vous pouvez appliquer à partir d'une perspective d'apprentissage automatique (par exemple, la modélisation linguistique nécessite un corpus de bonne taille). – jeff7

+0

oui. J'ai beaucoup de données à des fins de formation ... –

Répondre

4

Ceci est un problème bien étudié appelé information extraction. Ce n'est pas simple de faire ce que vous voulez faire, et ce n'est pas aussi simple que vous le dites (c'est-à-dire que l'apprentissage automatique n'est pas une surcharge). Il existe plusieurs techniques, vous devriez lire un aperçu du domaine de recherche.

+0

Malheureusement, je suis d'accord avec cela. Si vous avez beaucoup de données d'entraînement étiquetées, vous avez une chance, mais ce n'est certainement pas trivial de construire/configurer et tester un tel système. Vous avez certainement besoin d'une sorte de reconnaissance d'entité nommée (basée sur un dictionnaire ou autre), et la recherche de termes communs en utilisant le mot ngrams est une bonne idée.Parce que vous avez un domaine limité, je pense que vous avez un tir décent pour que cela fonctionne - Je pense que si vous étiquetez manuellement 1000 exemples et que vous avez un ensemble de fonctionnalités correctes, puis que vous marquez chaque titre et que vous le lancez avec MALLET . – nflacco

3

Vérification this Bibliothèque IE pour la règle d'extraction d'écriture < Je pense que cela fonctionnera mieux pour vous. Il existe également un exemple de création de fast dictionary matching.

+0

+1 Je voudrais également attirer l'attention sur les 'Alternatives' données dans le premier lien (GATE, UIMA, NLTK, Lingpipe et MALLET), qui est une très belle liste d'autres possibilités – Stompchicken

0

Je pense que les systèmes ARX or Phoebus peuvent répondre à vos besoins si vous avez déjà des données annotées et une liste de mots associés à chaque champ. Leur approche est un mélange d'extraction de l'information et d'intégration de l'information.

0

Il existe quelques bonnes bibliothèques de reconnaissance d'entités. Avez-vous jeté un coup d'oeil à Apache opennlp?

0

En tant qu'utilisateur à la recherche d'un modèle spécifique de voiture, la tâche est plus facile. Je suis assez sûr que je pourrais classer, disons, la plupart des Ford Rangers depuis que je sais ce qu'il faut rechercher avec regexp.

Je pense que votre meilleur pari est d'écrire une fonction pour chaque modèle de voiture avec le type String -> Maybe Tuple. Ensuite, exécutez tous ces éléments sur chaque entrée et jetez ces entrées pour obtenir zéro ou trop de tuples.

0

Vous devez utiliser un outil comme Amazon Mechanical Turk pour cela. Microtasking humain. Une autre alternative est d'utiliser un pigiste d'entrée de données. upWork est un super endroit pour regarder. Vous pouvez obtenir des résultats d'excellente qualité et le coût est très raisonnable pour chacun.

Questions connexes