Pregunta

Realmente agradecería su opinión sobre el mejor enfoque para el siguiente problema.Estoy usando un ejemplo de listado de Car Classified que es de naturaleza similar para dar una idea.

Problema:Extraiga una tupla de datos del texto dado.

A continuación se muestran algunas características de los datos.

  1. El vocabulario (palabras) del texto se limita a un dominio específico.Supongamos entre 100 y 200 palabras como máximo.

  2. El texto que debe analizarse es un título como los datos de un anuncio de automóviles que se muestran a continuación.Entonces cada registro corresponde a una tupla (fila).

  3. En algunos casos, es posible que falten algunos de los atributos.Entonces, por ejemplo, en la fila de datos sin procesar #5 debajo, falta el año.

  4. Algunas palabras van juntas (bigramas).Como "pocas millas".

  5. Datos históricos disponibles = 10.000 registros

  6. Volumen de datos nuevos entrantes = 1000-1500 registros/semana

El resultado esperado debe tener el formato (Año, Marca, Modelo, característica).Entonces la salida debería verse así

1 -> (2009, Ford, Fusión, SE)
2 -> (1997, Ford, Tauro, Familiar)
3 -> (2000, Mitsubishi, Mirage, Alemania)
4 -> (2007, Ford, Expedición, EL Limited)
5 -> ( , Honda, Acuerdo, EX)
....
....

Datos de titulares sin procesar:


1 -> 2009 Ford Fusion SE-$7000
2 -> 1997 Ford Taurus Wagon - $800 (san josé este)
Mitsubishi Mirage DE 3 -> 2000 - $2499 (Saratoga) pic
4 -> 2007 Ford Expedition EL Limited - $7800 (x)
5 -> Honda Accord ex bajas millas - $2800 (Dublin / Pleaforton / Livermore) pic
6 -> 2004 HONDA ODASSEY LX 68K MILLAS - $10800 (danville / san ramon)
7 -> 93 LINCOLN MARK - $2000 (Oakland East) pic
8 -> #######2006 LEXUS GS 430 NEGRO SOBRE NEGRO 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 BLANCO 4X4 ####### - $10575 (san rafael) pic
11 -> 1990 Toyota Corolla FUNCIONA BIEN!¡AHORRO DE GASOLINA!¡LIMPIEZA 5 VELOCIDADES!REG 2011 O.B.O - $1600 (Hayward / Castro Valley) pic img
12 -> HONDA ACCORD EX 2000 - $4900 (Dublín / Pleasureon / Livermore) pic
13 -> 2009 Chevy Silverado LT Crew Cab - $23900 (Dublin / Pleagradon / Livermore) pic
14 -> 2010 Acura TSX - V6 - TECH - $29900 (Dublín / Pleasanton / Livermore) pic
15 -> 2003 Nissan Altima - $1830 (SF) pic


Posibles opciones:

  1. Un clasificador de texto de aprendizaje automático (Naive Bayes, etc.)
  2. expresión regular

Lo que estoy tratando de averiguar es si RegEx es demasiado complicado para el trabajo y un clasificador de texto es excesivo.

Si la elección es optar por un clasificador de texto, ¿cuál consideraría que es el más fácil de implementar?

Gracias de antemano por su amable ayuda.

¿Fue útil?

Solución

Este es un problema bien estudiado llamado extracción de información. No es sencillo hacer lo que quieres hacer, y no es tan simple como lo haces sonar (es decir, el aprendizaje automático no es una exageración). Existen varias técnicas, debe leer una visión general del área de investigación.

Otros consejos

Controlar este IE Biblioteca para escribir la regla de extracción <Creo que funcionará mejor para su problema. También hay ejemplo de cómo crear Matriota del diccionario rápido.

Yo creo que el Arx o febo Los sistemas pueden satisfacer sus necesidades si ya tiene datos anotados y una lista de palabras asociadas a cada campo. Su enfoque es una combinación de extracción de información e integración de información.

Hay algunas buenas bibliotecas de reconocimiento de entidades. ¿Has echado un vistazo a Apache opennlp?

Como usuario que busca un modelo específico de automóvil, la tarea es más fácil. Estoy bastante seguro de que podría clasificar, digamos, la mayoría de los Ford Rangers, ya que sé qué buscar con Regexp.

Creo que su mejor opción es escribir una función para cada modelo de automóvil con una cadena tipo -> tal vez tuple. Luego ejecute todo esto en cada entrada y tire esas entradas, lo que resulta en cero o demasiadas tuplas.

Debe usar una herramienta como Amazon Mechanical Turk para esto. Microtase humana. Otra alternativa es usar un Freelancer de entrada de datos. Upwork es un gran lugar para mirar. Puede obtener resultados de calidad excelentes y el costo es muy razonable para cada uno.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top