sobota, 30 kwietnia 2016

Słownik Języka Polskiego – zaawasnowana delta

Zainspirowany wpisem na blogu Sana Zamoyskiego, na temat słownika języka polskiego, postanowiłem przygotować swoją wersję.


Aktualizacja słownika: 06 XI 2016


Dlaczego nie pobrałem gotowego słownika?

Powodów jest kilka:

  • tamta wersja jest przestarzała;
  • brak optymalizacji rozmiaru;
  • w słowniku są hasła bez definicji (irytujące);
  • półprodukty (slo.tab) przygotowane na (zbyt) szybko:
    • nieoczyszczone z tagów HTML,
    • odwołania do nieistniejących celów,
    • miejscami nielogiczne formatowanie,
    • brak korekty np. nieuporządkowanych numeracji definicji;
  • nudziło mi się...

Przygotowanie

Sam pomysł oparcia budowy na bazie serwisu SJP.PL uznałem za bardzo dobry. Miałem więc z głowy szukanie źródła.

Udałem się na powyższą stronę, pobadałem i wyszło mi że cel jest osiągalny. Naturalnie wpis do którego linkuję na początku był jedynie (aż?) inspirujący, bo parę rzeczy się zmieniło (np. adresowanie na stronie sjp.pl), a parę skryptów zwyczajnie nie działa lub nie przynosi oczekiwanego efektu. Naturalnie cały proces budowy takiego słownika trwa dość długo (u mnie ~15 h), z czego największy w tym udział ma pobieranie kolejnych haseł, co przy ich ilości (nie wielkości!) jest zabójcze dla łączy.

Co jest potrzebne?

  • plik slo.tab: do zrobienia samodzielnie – istota pracy;
  • skrypty, które zrealizują ten żmudny proces: oczywiście do zrobienia samodzielnie;
  • lista słów z odmianami: ODMIANY; pobrany plik należy rozpakować i dostosować;
  • skrypt Krzysztofa Palki: TAB2OPF; osobiście używam zmodyfikowanej wersji zmieniającej nieco formatowanie i organizację wpisów w plikach źródłowych dla słownika; śmiało można jednak korzystać z niemodyfikowanej wersji;
  • kindlegen.

Poszczególne etapy

  • wygenerowanie linków do spisu haseł (pierwszy skrypt);
  • pobranie spisu haseł (drugi skrypt - jedno polecenie);
  • pobranie haseł (trzeci skrypt - kluczowy - proces w zależności od łącza trwa od kilku do kilkunastu godzin);
  • wygenerowanie pliku slo.tab – kolejny kluczowy etap
  • oczyszczenie pliku slo.tab ze "śmieci" (np. haseł bez definicji);
  • zbudowanie pliku OPF (i towarzyszących mu plików HTML) przy użyciu skryptu tab2opf.py oraz plików slo.tab i odm.txt;
  • ustawienie metadanych w pliku OPF;
  • wygenerowanie MOBI przy użyciu kindlegen-a.

Do momentu utworzenia pliku slo.tab była to twórczość własna (gotowce nie działały). Sposobów realizacji jest kilka, ale polecam metodę Sana Zamoyskiego. Trzeba tylko poprawić/napisać od nowa skrypty. Zaletą tego rozwiązania jest możliwość zautomatyzowania pracy na okoliczność aktualizacji – całość procesu, łącznie z uzupełnianiem metadanych, można łatwo zrealizować przy pomocy jednego nieskomplikowanego skryptu bash-a/zsh-a, który u mnie wygląda tak:

  
    #!/bin/bash

    mkdir -p html
    mkdir -p sjp.pl

    cd html
    wget -nc 'http://sjp.pl/slownik/lp.phtml?page='{1..3957}

    cd ..
    bash ./prelinks.sh > linki
    bash ./mklinks.sh

    cd build
    bash ./mktab.sh
    python2 tab2opf.py
    kindlegen -o SJP.mobi slo.opf
  

Oczywiście w katalogu budowania, znajduje się powyższy skrypt oraz prelinks.sh, mklinks.sh i katalog build zawiarający pliki: mktab.sh, odm.txt, tab2opf.py oraz cover.jpeg. W scieżce PATH mam polecenie kindlegen, który wywołuje ten program z zadeklarowanymi przeze mnie wcześniej parametrami.

Z czasem planuję aktualizowanie słownika (mniej więcej co 6 miesięcy lub przy większych zmianach).

Co wyszło?

Całkiem zgrabny i pojemny słowniczek o następujących cechach:

  • format MOBI, poprawnie działający na Kindle – przechodzi wysyłkę mailową;
  • zawiera skromną okładkę;
  • rozmiar: 7,2 MB (7 502 828 bajtów);
  • ilość bazowa słów: 131 138;
  • działają odmiany.

Przykład działania

  

 

Szerszy test w osobnym wpisie: TEST.

Link do pobrania

SŁOWNIK

7 komentarzy:

  1. Cześć.
    Świetna robota. Da się ten słownik przystosować do działania z czytnikami Kobo?

    OdpowiedzUsuń
    Odpowiedzi
    1. Jakąś wersję beta upubliczniłem w dzisiejszym wpisie. Nie jest idealnie, ale to bardzo dobry punkt wyjścia.

      Usuń
  2. Witam,
    Dałbyś radę skonwertować słownik z tego linku do formatu kobo?:
    http://download.huzheng.org/misc/stardict-myspell_Polish_grammar-2.4.2.tar.bz2

    Niestety jestem zbyt słaby w skryptach penelope aby sobie z tym sam poradzić.

    OdpowiedzUsuń
    Odpowiedzi
    1. Już to zrobiłem. Przy anonimowym komentarzu nie wiem czy trafił do ciebie, czy też sprawdzał ktoś inny. Niemniej ten słownik jest mało przydatny, bo tam są tylko odmiany, bez definicji.

      Usuń
  3. Link do pobrania nie działa :(

    OdpowiedzUsuń