sobota, 30 kwietnia 2016

Słownik Języka Polskiego – wersja ciągle rozwijana

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


Aktualizacja słownika: 3 X 2017


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..4292}

    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 zawierający pliki: mktab.sh, odm.txt, tab2opf.py oraz cover.jpeg. W ścież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,5 MB (7 828 664 bajtów);
  • ilość bazowa słów: 138 628;
  • działają odmiany.

Przykład działania

  

 

Szerszy test w osobnym wpisie: TEST.

Link do pobrania

SŁOWNIK

2 komentarze:

  1. Świetny słownik i bardzo się nim cieszę.
    Ale zauważyłem drobny problem.
    Wybrałem przypadkiem w Kindlu słowo "sądów" a słownik wyświetlił mi definicję słowa "sad".

    OdpowiedzUsuń
    Odpowiedzi
    1. To jest nie do przeskoczenia. Zakładam, że przejrzałeś wpis http://eczytniki.blogspot.com/2016/05/testy-sownika-jezyka-polskiego.html
      Takich błędów jest więcej, a wynikają z prozaicznej przyczyny: w formacie słownikowym Kindle nie wspiera tak egzotycznych języków jak polski, więc nie parsuje „ogonków”. Dobrze, że w ogóle wyświetla te znaki…

      Usuń