RSS

Dzielenie wyrazów na stronach WWW a Świat Owoców

Liczba odsłon: 44

We wczo­raj­szym wpi­sie blo­gu wy­jaś­ni­łem cel dzie­le­nia wy­ra­zów w tekś­cie. Wspomnia­łem też, że auto­rzy stron WWW bar­dzo rzad­ko sto­su­ją dzie­le­nie wy­ra­zów, brak jest bo­wiem od­po­wied­nich na­rzę­dzi auto­ma­ty­zu­ją­cych ten pro­ces, a ręcz­ne wpro­wa­dza­nie po­dzia­łów jest wy­jąt­ko­wo żmud­ne.

Przez wiele lat tek­sty publi­ko­wa­ne w ser­wi­sie Świat Owo­ców po­zba­wio­ne były dzie­le­nia wy­ra­zów. Przeglą­dar­ki WWW nie ob­słu­gi­wa­ły zna­ków po­dzia­łu; uzu­peł­nia­nie tek­stu bez­uży­tecz­ną in­for­mac­ją o miej­scach po­dzia­łu było­by czys­tą stratą cza­su. Strona WWW na­kła­da bo­wiem na osobę dba­ją­cą o for­mę tek­stu obo­wią­zek oz­na­cze­nia wszyst­kich moż­li­wych miejsc po­dzia­łu, a nie tyl­ko tych, w któ­rych fak­tycz­nie po­dział byłby przy­dat­ny: nigdy nie wia­do­mo, jaka bę­dzie sze­ro­kość okna prze­glą­dar­ki czy­tel­ni­ka stro­ny i w któ­rym miejscu zda­nia i wy­ra­zu wy­pad­nie aku­rat ko­niecz­ność wpro­wa­dze­nia po­dzia­łu.

Około pół roku te­mu za­cząłem się in­te­re­so­wać moż­li­woś­cią upo­dob­nie­nia mo­je­go ser­wi­su WWW do ele­ganc­ko zło­żo­nych kart książ­ki czy ga­ze­ty. Wiązało się to z wpro­wa­dze­niem po­dzia­łu wy­ra­zów nie­za­leż­ne­go od sze­ro­koś­ci łamu tek­stu.

Na po­cząt­ku uzu­peł­ni­łem włas­ny edy­tor Webber, za któ­re­go po­mo­cą po­wsta­je więk­szość moich tek­stów, w moż­li­wość wsta­wia­nia zna­ków po­dzia­łu wy­ra­zu. Znaki te były na­stęp­nie w cza­sie za­pi­sy­wa­nia tek­stu auto­ma­tycz­nie za­mie­nia­ne na en­cje ­. Wstawianie zna­ków po­dzia­łu wy­dzie­lo­ną kom­bi­nac­ją kla­wi­szy (Control+=) i wy­świet­la­nie roz­wlek­łych encji w for­mie ma­łe­go apo­stro­fu przy­spie­sza­ło skład tek­stu i za­po­bie­ga­ło za­ciem­nie­niu go wszech­o­bec­ny­mi en­cja­mi. Dzięki te­mu moż­li­wa była edycja już po­dzie­lo­ne­go tek­stu — pod wa­run­kiem, że w zmo­dy­fi­ko­wa­nych frag­men­tach pra­co­wi­cie wsta­wi­ło się na nowo znaki po­dzia­łu.

Metoda ta da­wa­ła świet­ne re­zul­ta­ty, jed­nak na dłuż­szą metę była nie do przy­ję­cia. Po pierw­sze, wpro­wa­dza­nie zna­ków po­dzia­łu, choć skut­ko­wa­ło po­wtór­nym prze­czy­ta­niem tek­stu i wy­ła­pa­niem błę­dów, było nie­zwyk­le cza­so­chłon­ne. Po dru­gie, po kil­ku­nas­tu mi­nu­tach po­świę­co­nych czy­ta­niu ko­lej­nych wy­ra­zów i wsta­wia­niu znacz­ków po każ­dej sy­la­bie czło­wiek sy­la­bi­zu­je już na­wet włas­ne myśli. Koniecz­na była auto­ma­ty­zac­ja tego pro­ce­su.

Kilka dni te­mu wresz­cie mia­łem wol­ną chwilę, by na­pi­sać pro­gram do­ko­nu­ją­cy po­dzia­łu wy­ra­zów w pli­ku HTML w spo­sób auto­ma­tycz­ny. W za­sa­dzie pół­auto­ma­tycz­ny, gdyż po prze­gląd­nię­ciu za­sad po­dzia­łu wy­ra­zów oraz sto­so­wa­nych algo­ryt­mów wy­szu­ki­wa­nia miejsc po­dzia­łu stwier­dzi­łem, że naj­le­piej bę­dzie oprzeć dzia­ła­nie pro­gra­mu o roz­sze­rza­ny w mia­rę po­trzeb słow­nik po­dzia­łów. Co praw­da stwo­rze­nie ta­kie­go słow­ni­ka to – szcze­gól­nie na po­cząt­ku – sporo pra­cy, jed­nak z każ­dym ko­lej­nym arty­ku­łem ma­le­je licz­ba do­pi­sy­wa­nych słów. Ponadto, gdy­by nie mój pro­gram, mu­siał­bym ręcz­nie dzie­lić te same wy­ra­zy wie­lo­krot­nie — więc do­da­wa­nie no­wych wpi­sów do słow­ni­ka sta­no­wi w sumie postęp, a nie do­dat­ko­wą pra­cę.

Przy okazji two­rze­nia słow­ni­ka po­dzia­łów uzys­ka­łem też na­rzę­dzie we­ry­fi­ku­ją­ce po­praw­ność orto­gra­ficz­ną tek­stu i wy­ła­pu­ją­ce po­pu­lar­ne „li­te­rów­ki”. Przyjąłem bo­wiem, że słow­nik po­dzia­łów bę­dzie za­wie­rał wszyst­kie for­my każ­de­go wy­ra­zu: osob­no na­le­ży wpi­sać do nie­go na przy­kład sło­wa „spo­wo­do­wał” i „spo­wo­do­wa­ny”. Zwiększa to zde­cy­do­wa­nie na­kład pra­cy po­trzeb­nej do stwo­rze­nia słow­ni­ka, uprasz­cza jed­nak bu­do­wę pro­gra­mu i umoż­li­wia wy­ła­py­wa­nie słów nie ist­nie­ją­cych w słow­ni­ku, a za­tem albo wy­ma­ga­ją­cych do­pi­sa­nia, albo — błęd­nych.

I choć na ra­zie auto­ma­tycz­ne dzie­le­nie wy­ra­zów nie trwa wca­le kró­cej, niż po­przed­nio ręcz­ne, to wi­dzę, że z każ­dym dniem co­raz mniej słów wy­ma­ga do­pi­sa­nia do słow­ni­ka. Kiedyś przyj­dzie dzień, w któ­rym lis­ta wy­ra­zów nie roz­poz­na­nych w no­wym tekś­cie zmieś­ci się na jed­nym, 25-wier­szo­wym ekra­nie kon­so­li.


A nie lepiej byłoby skorzystać z gotowych wzorców przenoszenia, z których korzysta TeX i OpenOffice? Są darmowe i dla różnych języków (także polskiego).
Po pierwsze, i tak potrzebowałem programu dostosowanego do bezpośredniego przetwarzania kodu HTML. Program musiałem zatem napisać od zera. Co do słowników — według Wikipedii słownik TeXa ma niezerowy udział błędnych podziałów wynikający z konstrukcji algorytmu. Przeglądałem algorytm podziału tekstu w TeXu i wolałem wybrać jednak opcję z własnym słownikiem, dającą mi jednocześnie możliwość kontroli ortograficznej kodu HTML.
Słownika OpenOffice.org nie sprawdzałem, to też może być ciekawa opcja. Ale w tej chwili w zasadzie mam już gotowe, działające narzędzie :)
Metoda słownikowa ma jednak jeden mankament – powoduje problemy w dzieleniu słów wpisanych w komentarzach itp.. Web2.0 wymaga stosowania metod hybrydowych. Tam gdzie to możliwe, autor/korektor powinien mieć możliwość korzystania ze słownika dzielenia. W przypadku pojawienia się kłopotów, program do „składu” powinien poprosić o uzupełnienie słownika. Dla komentarzy itp. pozostawiłbym metodę słownikową i w przypadku braku słowa w słowniku metodę algorytmiczną, nie wymagałbym od użytkowników uzupełniania słownika, zwłaszcza, że może się to fatalnie skończyć dla słownika.

Co do niepustych zbiorów błędów, każda metoda po dłuższym czasie będzie miała ten problem, w słowniku też zapewne znajdą się słowa z błędnym podziałem.

Polecam artykuł panów: Bogusława Jackowskiego i Marka Ryćko „Tam gdzie minus oznacza dzielenie”, który ukazał się w Biuletynie Grupy Użytkowników Systemu TeX w 1993 roku. Odnośnik do pliku postscript do w/w tekstu: ftp://ftp.gust.org.pl/pub/GUST/bulletin/02/08-jr-w.ps