Domanda

Attualmente sto lavorando su un progetto in cui devo abbinare una grande quantità di nomi generati dagli utenti con una lista separata degli stessi nomi in un formato canonico. Il problema è che i nomi generati dagli utenti contiene numerosi errori di ortografia, abbreviazioni, nonché i dati semplicemente non validi, il che rende difficile fare un riferimento incrociato con i dati canonici. Qualche suggerimento su metodi per fare questo?

Questo non deve essere fatto in tempo reale e in questo caso la precisione è più importante della velocità.

idee attuali per questo sono:

  1. Fare una ricerca fuzzy per il nome immesso utente nel database canonica utilizzando un'implementazione di ricerca esistente come Lucene o Sfinge, che presumo usare qualcosa come la distanza Levenshtein per questo.
  2. Riferimenti incrociati sul hash SOUNDEX (che si suppone sia calcolato sul suono del nome, piuttosto che ortografia) invece di utilizzare il nome effettivo.
  3. Alcuni combinazione di quanto sopra

Qualcuno ha qualche feedback su uno di questi o idee proprie?

Una delle mie preoccupazioni è che nessuno dei metodi di cui sopra consente di gestire le abbreviazioni molto bene. Qualcuno mi può puntare in una direzione per alcuni metodi di apprendimento automatico per la ricerca in realtà su abbreviazioni espansi (o dirmi che sono pazzo)? Grazie in anticipo.

È stato utile?

Soluzione

Per prima cosa, mi piacerebbe aggiungere alla vostra lista delle tecniche discusse a post di Peter Norvig sulla correzione ortografica .

In secondo luogo, mi piacerebbe chiedere che tipo di "nomi generati dagli utenti" si sta parlando. Dopo aver affrontato con entrambi, credo che l'euristica usereste per i nomi delle strade sono un po 'diversa dalle euristiche per i nomi di persona. (Come semplice esempio, si intende per "Dr" espandersi a "Drive" o "Dottore"?)

In terzo luogo, mi piacerebbe guardare una combinazione utilizzando test per stabilire l'insieme di coefficienti per combinare i risultati delle varie tecniche.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top