Alternatywa dla Levenshtein i Trigram

Powiedz, że w mojej bazie danych mam dwa następujące ciągi:

(1) 'Levi Watkins Learning Center - Alabama State University'
(2) 'ETH Library'

Moje oprogramowanie otrzymuje darmowe dane tekstowe ze źródła danych i powinno dopasować te darmowe teksty do wstępnie zdefiniowanych ciągów w bazie danych (tych powyżej).

Na przykład, jeśli oprogramowanie otrzyma ciąg'Alabama University', powinien rozpoznać, że jest to bardziej podobne do(1) niż jest(2).

Początkowo myślałem o użyciu dobrze znanegometryka ciągu jak Levenshtein-Damerau lub Trigrams, ale prowadzi to do niechcianych wyników, jak widać tutaj:

http://fuzzy-string.com/Compare/Transform.aspx?r=Levi+Watkins+Learning+Center+-+Alabama+State+University&q=Alabama+University

http://fuzzy-string.com/Compare/Transform.aspx?r=ETH+Library&q=Alabama+University

Difference to (1): 37
Difference to (2): 14

(2) wygrywa, ponieważ jest znacznie krótszy niż(1), nawet jeśli(1) zawiera oba słowa (Alabama iUniversity) szukanego ciągu.

Próbowałem również z Trigrams (używając biblioteki JavaScript fuzzySet), ale otrzymałem podobne wyniki.

Czy istnieje metryka ciągu, która rozpoznałaby podobieństwo szukanego ciągu do(1)?

questionAnswers(6)

yourAnswerToTheQuestion