![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 0 Dołączył: 5.07.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam, mam taki problem chciałbym stworzyć robot który dzieliłby mi wyrazy według kryterium fonetycznemu pn. za?de?cy?do?wać, u?pro?wa?dzić, na?ra?da, ku?zy?no?wie ponadto każdą oddzielną sylabę wpisywałby do następnej kolumny w wierszu tabeli np. kol./1/Lp. kol./2/zadecydować kol./3/za kol./4/de/ kol./5/cy/ kol./6/do kol./7/wać. Na dzień dzisiejszy mam stworzoną kolumnę tylko z wyrazami czyli kol./1/Lp. kol./2/zadecydować. Czy koś ma ktoś jakiś pomysł?
Powód edycji: [erix]: przeniosłem
|
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Szczerze? Prościej napisać syntezator mowy niż robota do podziału sylabicznego (IMG:style_emoticons/default/smile.gif) Wiem bo próbowałem oba. Robota nie zrobiłem, ale syntezator tak. Za dużo w przypadku pierwszego masz reguł do sprawdzenia. A syntezator może Ci się w zasadzie tylko walnąć w słowach typu "erzac" gdyż potraktuje "rz" nie jako osobne litery, ale jako jeden fonem, identyczny z "ż". By je odróżnić, musiałby mieć bazę wyjątków (IMG:style_emoticons/default/winksmiley.jpg) W polskim i tak nie ma najgorzej, bo nie licząc zbitek kończących się na -ka lub mających -ie- oraz kilku innych, podział następuje zazwyczaj po samogłoskach, ale tutaj trzeba jeszcze trochę reguł pododawać, bo "zazwyczaj" to nawet nie większość przypadków. Niestety trzeba mocno się w gramatykę języka wgryźć by tego typu programy pisać. Lepiej więc o zasady dzielenia wyrazów zapytać kogoś kto się naprawdę na tym zna, czyli bez rad polonisty nie ma co tego na poważnie ruszać. Poszperaj ewentualnie za zasadami dzielenia wyrazów na sylaby by jakieś pierwsze, podstawowe próbować zaprogramować. Jeśli z nimi sobie nie poradzisz to nie wiem czy jest sens w to dalej brnąć.
Ten post edytował thek 25.09.2009, 11:25:52 |
|
|
![]()
Post
#3
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
A nie lepiej skorzystać z gotowych słowników sprawdzania pisowni...? Chyba są w nich takie mechanizmy. :]
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 316 Pomógł: 36 Dołączył: 2.04.2008 Ostrzeżenie: (0%) ![]() ![]() |
Thek, a w czym pisałeś ten syntezator? Tak z ciekawości pytam bo się wziąłem ostro za Javę (ale dopiero przedwczoraj (IMG:style_emoticons/default/tongue.gif) ) i wpadło mi coś takiego do głowy. Da radę zrobić to niej (znaczy dać pewnie się da, kwestia tylko poziomu trudności - bo może akurat to łatwiej byłoby stworzyć powiedzmy w cpp)?
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 697 Pomógł: 47 Dołączył: 19.12.2003 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Pisałem coś podobnego kilka dni temu ale zaprzestałem (IMG:style_emoticons/default/winksmiley.jpg) . Być może mój algorytm Ci się przyda(nie jest idealny bo to wersja pre-pre-alpha) ale jeśli go zoptymalizujesz to może ładnie działać.
Gdybyś chciał coś porządniejszego(ale nie pamiętam jak z licencją), to poszukaj wp-typography. Ten post edytował SHiP 25.09.2009, 11:57:48 |
|
|
![]()
Post
#6
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Thek, a w czym pisałeś ten syntezator? Tak z ciekawości pytam bo się wziąłem ostro za Javę (ale dopiero przedwczoraj (IMG:style_emoticons/default/tongue.gif) ) i wpadło mi coś takiego do głowy. Da radę zrobić to niej (znaczy dać pewnie się da, kwestia tylko poziomu trudności - bo może akurat to łatwiej byłoby stworzyć powiedzmy w cpp)? Javą syntezator? No jasne (IMG:style_emoticons/default/smile.gif) Raczej trudno powiedzieć czego byś nią nie zrobił (IMG:style_emoticons/default/winksmiley.jpg) Ja pisałem syntezator w Matlabie, ale tak naprawdę tylko dlatego, że miałem go z góry narzucony. "Silnik" jest niezależny od języka, bo to tak naprawdę operacje na wprowadzonym przez użytkownika stringu. Jeśli przetworzysz go do formy fonemów to potem już tylko "sklejasz" nagrania dźwięku odpowiadające mu. W języku polskim jest bodajże 25 lub 26 fonemów + przerwa. Nagraj je i po przetworzeniu stringu tylko "odczytuj" fonemy i "sklejaj" plik dźwiękowy (IMG:style_emoticons/default/winksmiley.jpg) Różnica pomiędzy pytaniem a zdaniem oznajmiającym też jest "matematyczna". W trakcie wypowiedzi zmienia się częstotliwość wypowiadanych liter. Ale tu już musiałbyś modyfikować charakterystykę częstotliwościową nagrania w czasie. Zacznij od ustalenia jakie fonemy ma język polski. a potem już zasady języka w stylu: k-r-z-a-k -> (zamiana na fonemy) -> k-ż-a-k -> (zamiana na fonemy zgodnie z regułami gramatyki) -> k-sz-a-k ("sz" jest jednym z polskich fonemów ) Jak widzisz jest trochę zabawy i czasem musisz zrobić kilka przebiegów by ostatecznie zapisać wyraz. Zazwyczaj jednak 2 przebiegi zrobią wszystko na tip-top. W moim przypadku musiałem sprawdzić czy po "k" nie występuje fonem "ż" bo w wymowie zamieni się on na "sz" (IMG:style_emoticons/default/smile.gif) Musisz sam regułki zamian znaleźć. Mój był bez modulacji i po prostu "czytał jak leci" nie zwracając uwagi na pytajniki i wykrzykniki, ale robił im po prostu dłuższe przerwy podobnie jak dla kropek i przecinków. Rozwiązanie problemu to więc: 1. Znaleźć fonemy języka polskiego - w google masz tylko ich ilość, ale nie znajdziesz jakie to konkretnie, więc musisz sam się wysilić (IMG:style_emoticons/default/winksmiley.jpg) 2. Opracować formę zapisu "wyrazów fonetycznych" - raz masz fonemy jednoznakowe (a, b itp.), a innym razem dwu(sz, cz, dź) -> coś jak ja mam w przypadku "krzak" 3. Baza reguł, na podstawie której ustalisz ostatecznie wyraz (IMG:style_emoticons/default/smile.gif) Lojalnie ostrzegam, że bez bazy "wyjątków" nie przejdziesz takich słów jak "erzac" czy słów obcych, które nie zawsze są zgodne z polską wymową. Edit: Jeśli plikami dźwiękowymi byś operował w PHP to w nim także syntezator napisałbyś bez problemu. Tylko konieczność sklejania fonemów w wyrazy i zdania, a przez to operacje na plikach dźwiękowych sprawić mogą trudność programiście jakąś większą używającego języka ze słabym wsparciem multimediów. Ale zawsze po zamianie możesz wyświetlic efekt znów jako string, tak jak ja -> k-sz-a-k (IMG:style_emoticons/default/smile.gif) Ten post edytował thek 25.09.2009, 12:33:35 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 16.09.2025 - 00:09 |