2012-11-06 13 views
7

Próbuję urządzenia algorytmu, który wykonuje korekty błędów w nazwach. Moim podejściem jest posiadanie bazy danych z poprawnymi nazwami, obliczenie odległości edycyjnej między każdym z nich a wprowadzoną nazwą, a następnie sugerowanie 5 lub 10 najbliższych.Korekta błędów w nazwach

Zadanie to znacznie różni się od standardowej korekty błędów słownych, ponieważ niektóre nazwy można zastąpić inicjałami. Na przykład "Jonathan Smith" i "J. Smith" są całkiem blisko i można je łatwo uznać za takie same, więc odległość do edycji powinna być naprawdę mała, jeśli nie 0. Kolejnym wyzwaniem jest to, że niektóre nazwy mogą być napisane inaczej, brzmiąc podobnie. Na przykład: Shnaider i Schneider są wersjami o tej samej nazwie, pisanymi przez osoby z różnymi ustawieniami narodowymi (są na to lepsze przykłady). I kolejny przypadek - po prostu wyobraź sobie wszystkie możliwe błędy w pisaniu Jawaharlal Nehru, z których większość nie ma nic wspólnego z prawdziwym imieniem. Ponownie prawdopodobnie większość z nich będzie podobna fonetycznie.

Oczywiście algorytm korekcji błędów Lucene nie pomoże mi, ponieważ nie obsługuje powyższych przypadków.

Moje pytanie brzmi: czy znasz bibliotekę zdolną do korekty błędów w nazwach? Czy możesz zaproponować jakiś algorytm postępowania z wyżej wymienionymi przypadkami?

Interesują mnie biblioteki w języku C++ lub Java. Jeśli chodzi o propozycje algorytmów, zrobi to dowolny język lub pseudo kod.

+0

Widzę tutaj 2 możliwe podejścia: 1. Miej słownik synonimów i włącz go podczas obliczania odległości. 2. Zatrudniać jakiś moduł AI zgodnie z logiką, którą opisałeś. – SomeWittyUsername

+0

Uważam, że tylko opcja 2 jest dla mnie możliwa, ponieważ mam miliony nazw, różne lokalizacje, różne synonimy. Problem polega na tym, ** jak ** zaimplementować logikę, którą opisuję konkretnie część podobieństwa fonetycznego. Chciałem też upewnić się, że nic podobnego już nie istnieje. –

+0

Bądź bardzo ostrożny, wykonując to. Właśnie skończyłem wielotygodniową dyskusję z UCSD, gdzie byłem studentem przez kilka lat kończącym się w 2009 roku. Oni naliczali mi za zwrócony czek. Zostało to rozwiązane, kiedy w końcu udało mi się wykopać obraz czeku, a nie tylko patrzeć na ich zapiski. Czek został faktycznie napisany przez kogoś o tym samym nazwisku i nazwisku, ale ze środkowym inicjałem. Dział księgowości założył, że należy on do mojego konta na podstawie nazwy najbliższej. Nawet dokładne dopasowania nazw nie mają większego znaczenia dla określenia, czy dane dotyczą tej samej osoby. –

Odpowiedz

6

Aby uzyskać dopasowanie fonetyczne, patrz Soundex.

Wydaje mi się, że modyfikowanie algorytmu odległości Levenshteina do traktowania "skrótu do początkowego" i "rozwinięcia z początkowego" w przypadku edycji na odległość powinno być proste, ale szczegóły są w tej chwili poza mną.

+0

Soundex zdecydowanie jest czymś, z czego mogę skorzystać. Dziękuję za to :) –

Powiązane problemy