Odległości Levensteina

0

Witam

Mam prośbę o pomoc w jednym zadaniu.
Oto jego treść:
Oczywiście nie chodzi mi o gotowe rozwiązania, tylko o jakieś wskazówki
O ile z implementacją metody przyjmującej jako parametry dwa łańcuchy znaków i obliczającej ich odległość levensteina nie ma najmniejszego problemu to problem pojawia się z kwestią imion i nazwisk. Wymaganie prowadzącego jest takie, żeby odległość łańcuchów "Jan Nowak" i "Nowak Jan" była równa 0. Nie jest więc możliwe przekazanie metodzie bezpośrednio dwóch łańcuchów, tylko trzeba jakoś rozdzielić imię (lub imiona) od nazwiska. I nie wiem jak to zrobić, bo pierwsze może być imię lub nazwisko. Nie wiem też jak obliczać odległość mając nawet osobno imię i nazwisko - czy porównywać wtedy imię z imieniem, a nazwisko z nazwiskiem, a potem sumować wyniki? Będę Wam bardzo wdzięczny za każdą pomoc.

0

Nie dodał się link do treści w pierwszym poście: http://docer.pl/doc/n85xn51

0

Oferuję pomoc odpłatnie. Bezpłatnie mogę pomóc tyle:
https://commons.apache.org/proper/commons-text/jacoco/org.apache.commons.text.similarity/LevenshteinDistance.java.html

  1. W bibliotece apache commons masz gotową metodę. Możesz jej użyć albo może Ci ona pomóc w implementacji.
  2. Musisz założyć i wymagać, że wejście będzie w formacie Imie Nazwisko albo Nazwisko Imie i zawsze w takim formacie dane będą wpisywane do programu.
0

Sprawdź raz dla obu ciągów, a później dla jednego z ciągów, gdzie zamieniasz imię z nazwiskiem, jak jeden z wyników będzie równy zero to masz rozwiązanie

0

Metodę obliczającą odległość już zaimplementowałem ;)
Ale załóżmy, że wrzozec jest w postaci "Jan Nowak" i mam go porównać z następującymi łańcuchami:

  1. "Nowak Jan"
  2. "Adam Andrzej Nowicki"
  3. "Józef Wiśniewski"

I teraz co ma ta metoda wyliczyć? Nie mogę dać bezpośredni łańcuchów - np. "Jan Nowak" i "Nowak Jan", bo odległość wyjdzie różna od 0, a ma wyjść 0.
Mogę rozbić te łańcuchy na pojedyncze wyrazy (imiona i nazwiska) i porównywać każdy z każdym, ale też wynik nie będzie taki jak powinien

0

Ten gościu wykładowca chyba coś pokomplikował i namieszał. Ja to bym wgle jakbym zawsze dostawała format Imie Nazwisko i dostałabym Jan Nowak porównać z:
Nowak Jan - > no to odległość wyjdzie różna od 0 , bo gość który ma na imie Nowak a na naziwsko Jan to co innego od gościa który ma na imie Jan a na nazwisko Nowak
Adam Andrzej Nowicki -> no też wyjdzie różna od 0
Józef Wiśniewski -> tak samo jak wyżej

i wgle to w takim wpyadku jak dostajesz ImieNaziwsko zawsze to mozesz to skleić i potraktować jako jeden łańcuch znaków. Pamiętaj, że program też może mieć jakieś ograniczenia i to normalne. I takim ograniczeniem tutaj jest że wymagasz żeby użytkownik podał najpierw Imie potem Naziwsko. a jak Ci poda Nowak Jan to problem użytkownika a nie twój. Proste? - Proste

2

Tak naprawdę, to interesuje cię najmniejsza możliwa odległość. Dla takiego układu, gdzie masz 3 człony, to obliczasz wszystkie 6 odległości i bierzesz najmniejszą, być może 0, jeżeli słowa są takie same, ale w innej kolejności.

1 użytkowników online, w tym zalogowanych: 0, gości: 1