Dove posso trovare alcune statistiche di errore relative al mondo reale?Statistiche di errore del mondo reale?
Sto cercando di far corrispondere il testo di input della gente agli oggetti interni e le persone tendono a commettere errori di ortografia.
Ci sono 2 tipi di errori:
typos
- "Helllo" invece di "Ciao"/"Satudray" invece di "Sabato", eccSpelling
- "Shikago" invece di "Chicago"
io uso Damerau-Levenshtein distance per gli errori di battitura e Double Metaphone per l'ortografia (implementazioni Python here e here).
Voglio concentrarmi sul Damerau-Levenshtein (o semplicemente su edit-distance
). Le implementazioni da manuale usano sempre '1' per il peso di cancellazioni, sostituzioni di inserzioni e trasposizioni. Anche se questo è semplice e consente algoritmi piacevoli, non corrisponde a "realtà"/"probabilità del mondo reale".
Esempi:
- sono sicuro che la probabilità di "Helllo" ("Ciao") è maggiore di "Helzlo", eppure sono entrambi 1 modifica distanza.
- "Gello" è più vicino di "Qello" a "Ciao" su una tastiera QWERTY.
- Traslitterazioni Unicode: qual è la "vera" distanza tra "München" e "Munchen"?
Quali dovrebbero essere i pesi del "mondo reale" per le eliminazioni, le inserzioni, le sostituzioni e le trasposizioni?
Anche Norvig's very cool spell corrector utilizza la distanza di modifica non ponderata.
BTW Sono sicuro che i pesi devono essere funzioni e non galleggia semplici (per quanto sopra esempi) ...
posso modificare l'algoritmo, ma dove posso "imparare" questi pesi? Non ho accesso a Google-scale data ...
Devo solo indovinarli?
EDIT - cercando di rispondere alle domande degli utenti:
- Il mio attuale algoritmo non ponderata non riesce spesso a fronte di errori di battitura per i motivi di cui sopra. "Return on Thursday": ogni "persona reale" può facilmente dire che giovedì è più probabile di martedì, tuttavia sono entrambi a 1 distanza di distanza! (Sì, registro e misura le mie prestazioni).
- Sto sviluppando un motore di ricerca viaggi NLP, quindi il mio dizionario contiene ~ 25.000 destinazioni (previsto fino a 100.000), Time Expressions ~ 200 (previsto 1K), People espressioni ~ 100 (previsto 300), Money Expressions ~ 100 (previsto 500), "glue logic words" ("from", "beautiful", "apartment") ~ 2K (previsto 10K) e così via ...
- L'utilizzo della modifica della distanza è diverso per ciascuno dei precedenti word-gruppi. Cerco di "correggere automaticamente quando è ovvio", ad es. 1 modifica la distanza dall'unica altra parola nel dizionario.Ho molte altre altre regole personalizzate, ad es. Fix doppio metaphone che non è più di 2 modifica distanza da una parola del dizionario con una lunghezza> 4 ... L'elenco delle regole continua a crescere man mano che imparo dall'input del mondo reale.
- "Quante coppie di voci del dizionario sono all'interno della soglia?": Beh, questo dipende dal "sistema di ponderazione fantasia" e dall'input del mondo reale (futuro), vero? Ad ogni modo, ho test di unità estesi in modo che ogni modifica apportata al sistema lo renda solo migliore (basato sugli input passati, ovviamente). La maggior parte delle parole con meno di 6 lettere si trovano entro 1 distanza di modifica da una parola che si trova a 1 distanza di modifica da un'altra voce del dizionario.
- Oggi quando ci sono 2 voci di dizionario alla stessa distanza dall'input, provo ad applicare varie statistiche per indovinare meglio che cosa intendesse l'utente (ad esempio, Parigi, la Francia è più probabile che compaia nella mia ricerca di Pārīz, Iran).
- Il costo della scelta di una parola sbagliata restituisce risultati semi-casuali (spesso ridicoli) all'utente finale e potenzialmente alla perdita di un cliente. Il costo di non comprensione è leggermente meno costoso: all'utente verrà chiesto di riformulare.
- Il costo della complessità ne vale la pena? Sì, sono sicuro che lo sia. Non crederesti alla quantità di errori di battitura che le persone lanciano al sistema e si aspettano che capisca, e potrei sicuramente usare la spinta in Precision and Recall.
Forse la SM ha condotto uno studio (sebbene la correzione ortografica di Word non sia così intelligente, in realtà penso che controlli solo ogni ortografia in un elenco di errori comuni). Inoltre, Google è piuttosto impegnato nello sviluppo di open source, forse ti daranno questi dati se lo chiedi gentilmente? –
I dati su scala di Google sono interessanti.È qualcosa che si può accedere e interrogare o è solo una pagina di esempio? –
Potrebbe essere d'aiuto se in qualche modo hai preso in considerazione la prossimità chiave, nella tua ponderazione. Digitare Hellp è più probabile che accada di Hellz perché il tasto q è vicino al tasto "corretto" o (supponendo QWERTY ...) –