Potrzebuję porównać ciągi znaków, aby zdecydować, czy reprezentują one to samo. Dotyczy to tytułów przypadków wprowadzanych przez ludzi, w których skróty i inne drobne szczegóły mogą się różnić. Na przykład, należy rozważyć następujące dwa tytuły:Co to są niektóre algorytmy porównywania podobnych łańcuchów?
std::string first = "Henry C. Harper v. The Law Offices of Huey & Luey, LLP";
W przeciwieństwie do:
std::string second = "Harper v. The Law Offices of Huey & Luey, LLP";
ludzka może szybko ocenić, że są to najprawdopodobniej jedno i to samo. Obecne podejście Brałem jest normalizacja struny przez lowercasing wszystkie litery i usunięcie wszystkich znaków interpunkcyjnych i dając obowiązuje:
std::string firstNormalized = "henrycharpervthelawofficesofhueylueyllp";
oraz:
std::string secondNormalized = "harpervthelawofficesofhueylueyllp";
Porównując w tym przypadku, jeden jest pod-sekwencja z drugiej strony, ale można sobie wyobrazić inne, bardziej skomplikowane odmiany, w których niekoniecznie występuje, ale mają wspólne pod-sekwencje znaczące. Mogą również występować przypadkowe błędy związane z wprowadzaniem danych, takie jak transponowane litery i błędy ortograficzne.
Być może jakiś program różnicowy może pomóc? Widziałem dobre programy różnicowe dla porównania różnic w kodzie do sprawdzenia, czy jest coś takiego na podstawie postaci, może w podbiciu? Gdybyś mógł policzyć liczbę kolejnych wspólnych bohaterów i przyjąć stosunek do postaci, które nie byłyby udostępnione, być może byłaby to dobra heurystyka?
Koniec końców, potrzebuję Boolowskiej decyzji, czy uznać je za takie samo czy nie. Nie musi być perfekcyjna, ale idealnie powinna być zła.
Jakiego algorytmu mogę użyć, aby uzyskać pewne dane liczbowe na temat tego, jak podobne są te dwa łańcuchy, które mogę następnie przekształcić w odpowiedź "tak/nie" za pomocą heurystyki?
Użyłem wcześniej odległości Levenshteina. Łatwy do wdrożenia ... http://en.wikipedia.org/wiki/Levenshtein_distance – souldzin
Czy odległość w Levenshtein w Boost? – WilliamKF
Przepraszam, nie konstruktywnie ... Oto [strona wiki, której szukasz] (http://en.wikipedia.org/wiki/String_metric). – djechlin