2012-12-19 18 views
9

Zastanawiałeś się, czy ktoś ma jakieś wskazówki lub może wskazać mi właściwy kierunek, by znaleźć/stworzyć algorytm do znajdowania słów rymowanych.Wdrażając wyszukiwarkę wierszyków

ja specjalnie nie chcą korzystać z API, jak tworzenie algorytmu tak, aby utworzyć to mój końcowy cel.

Nie to powinno być ważne, ale programuję w Javie.

Dziękuję

+0

Powodzenia, nieskończenie trudne? – EricG

+0

jaka jest definicja wierszyka? –

+0

@AlexLynch http://en.wikipedia.org/wiki/Rhyme, nie wiem, czy twój język je zdefiniował, ale w moim rodzimym (polskim) również kategoryzujemy rymy. ;-) –

Odpowiedz

7

Wydaje się to może to być ogromny projekt, jeśli nie chcesz korzystać z API. Trudnym krokiem byłoby określenie fonetyki słowa (dwa słowa rymujące, jeśli ich zakończenia są podobne fonetycznie). Jeśli możesz to zrobić, możesz porównać zakończenia swojej wymowy. Możesz znaleźć API, które przekształci znane słowa w ich pisownię fonetyczną, ale jeśli nie chcesz używać API, musisz zrobić to sam i to nie jest małe zadanie ... nie wspominając, że nie było idealne dla nikogo .

Inną metodą byłoby badać algorytmu Metaphone, wyjaśnione tutaj: http://www.blackbeltcoder.com/Articles/algorithms/phonetic-string-comparison-with-soundex

+0

Soundex został opracowany specjalnie dla nazw rodzin północnoamerykańskich podczas przetwarzania ich spisu. Nie jest to biblioteka ogólnego zastosowania do analizy fonetycznej wyrazów, choć prawdopodobnie jest interesująca dla pytającego. Skupia się także na początku słów, podczas gdy rymy odnoszą się do ich zakończeń. Technika może być ciągliwa. –

+0

Podałem ten link ze względu na algorytm Metaphone, a nie Soundex. – Foggzie

6

Najlepszy algorytm użyje słownika wyrazów klasyfikowanych na grupach z rymów. Jest to bardzo trudny problem i wymaga znajomości języka. Przypuszczam, że chcesz trochę, prawdopodobnie nie najlepszego, algorytmu automatycznego wyszukiwania rymów.

Podstawowa idea kodować wymówienie tego słowa (nie sam słowo) z jakąś wartość. Wartości kończące się równymi kodami identyfikują rymy słów.

Z mojej perspektywy jest to więcej badań niż znalezienie właściwego algorytmu.

Spójrz w tym artykule: A System for the Automatic Identification of Rhymes

4

myślę wykorzystaniu standardowego algorytmu fonetyczną byłoby dobrym pomysłem. Myślę, że Soundex może być nieco ograniczony, ale prawdopodobnie dobrym wyborem byłby model double metaphone.

Get reprezentacje Metaphone słów w pytaniu usunąć pierwsze znaki i sprawdzić, czy pozostała część krótszy z dwóch słów dopasowuje koniec dłuższy. Z podwójnym metafonem jest bardzo podobny, ale dokonaj czterech porównań: pierwotnej do pierwotnej, wtórnej do pierwotnej, pierwotnej do wtórnej i wtórnej do wtórnej.

Myślę, że byłby to dobry punkt wyjścia.

Uwaga na to i wiele innych algorytmów fonetycznych: To nie jest zaprojektowany, aby zapewnić precyzyjną definicję fonetyczną. Zróżnicowana wymowa geograficzna, wspólne błędne wypowiedzi i alternatywne wymowy sprawiają, że trudno jest uzyskać jednoznaczną i prawidłową wymowę, opartą wyłącznie na słowie. Nowatorska pisownia i użycie liter utrudniają algorytmiczne uzyskiwanie ścisłej wymowy (dbałość o niektóre przystawki?). Ponadto, głównym celem wielu takich algorytmów jest dopasowanie do siebie słów lub nazw słownych lub fałszywie brzmiących, tak więc wyniki są zazwyczaj niedokładne (prawdopodobnie jest to dobre, również w tym celu).

+1

Podwójna metafonka upuszcza wszystkie nieoficjalne samogłoski ze słowa, więc nie trafia cię to aż do rymowania. – charleyc

+0

Absolutnie prawda. Uważam jednak, że jest to dobry punkt wyjścia. – femtoRgon

3

Napisałem rymowania słownika programu w my blog. Chodzi o to, aby użyć słownika z wymową i porównać fonemy zaczynając od końca; dwa słowa z tymi samymi końcowymi fonemami są dla siebie nawzajem rymowankami.

Powiązane problemy