\documentclass[a4paper,11pt]{article}

\usepackage[czech]{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage{microtype}
\usepackage{amsmath}
\usepackage{titling}
\usepackage{enumitem}
\usepackage{hyperref}
\usepackage{graphicx}


%\setlength{\hintscolumnwidth}{45mm}
%\AtBeginDocument{\recomputelengths}
\usepackage[scale=0.75]{geometry}

\author{Michal Vlasák - FI MUNI}
\date{\today}
\title{\it \huge Určování obtížnosti textu v~českém jazyce \\{\sc \large Dokumentace}}

\begin{document}
\fontsize{12pt}{17pt}\selectfont

\maketitle
\tableofcontents
\newpage

\section{Úvod}

Program slouží pro analýzu textu v~českém jazyce a určení jeho objektivní obtížnosti na základě několika různých indexů. Určení obtížnosti textu je důležitý prvek pro zkvalitnění výuky a zatímco ve světě již pro angličtinu existují nástroje volné (\href{http://www.standards-schmandards.com/exhibits/rix/}{zde} a \href{http://141.225.42.101/cohmetrixgates/Home.aspx?Login=1}{zde}) i \href{http://www.lexile.com/}{komerční}, pro český jazyk zatím žádný takový automatizovaný systém není. Projekt je dostupný na adrese \url{http://nlp.fi.muni.cz/projekty/cstexteval/py.cgi}.

\subsection{Použité indexy}
\label{sec:index}
V~práci je použito několik indexů pro určení obtížnosti textu. Zde následuje jejich popis. Jelikož některé vzorce mívají společné prvky výpočtu, zde je zavedeno jejich společné značení:

\begin{description}
\item{T} Obtížnost textu
\item{R} Doporučený ročník pro daný text
\item{$\overline{U}$} Průměrná délka věty v~poštu slov
\item{$H$} Procento obtížných slov (vysvětleno dále)
\item{$N$} Počet slov v~textu
\end{description}

\subsubsection{Gunning-Fog index}
  Jeden z~prvních indexů obtížnosti textu z~roku 1944. Do dneška jeden z~nejjednodušších a nejspolehlivějších indexů pro angloamerické texty. Dosáhnul korelace r=.91 s~naměřenou dovedností čtení s~porozuměním \cite{read1}. Obtížnost se dle tohoto indexu spočítá jako

$$T=0.4\cdot \left( \overline{U} + 100\cdot H \right)$$

Obtížná jsou v~původním vzorci definována jako slova skládající se z~více než dvou slabik, ale vzhledem k~tomu, že původně byl index zamýšlen pro texty v~angličtině, zde byl jako hraniční limit zvoleno slabik 5.

\subsubsection{Flesch-Kincaid index}
  Původně určen pro americké námořnictvo, nyní využíván v~americkém školském systému a v~Microsoft Word. Dosáhnul korelace r=.91 s~naměřenou dovedností čtení s~porozuměním \cite{read1}. Obtížnost dle tohoto indexu je

$$T=0.39 \cdot \overline{U} + 11.8 \cdot \left( \frac{S}{N} \right) - 15.59$$

kde $S$ je počet slabik. Výsledkem je číslo od 0 do 100, kde vyšší číslo reprezentuje jednodušší text. Převodní tabulka na věk žáků je pak zhruba následující

\begin{center}
\begin{tabular}{cc}
Skóre & Interpretace \\
90 -- 100 & pro žáky do 11 let \\
60 -- 70 & pro žáky mezi 13 a 15 lety \\
0 -- 30 & pro vysokoškolské studenty
\end{tabular}
\end{center}
  
\subsubsection{Dale-Chall index}
  Využívá seznamu \uv{lehkých} slov. Dosáhl korelace r=.93 s~porozuměním textu. Jedná se o~jeden z~nejspolehlivějších vzorců a proto se využívá i ve výzkumné oblasti \cite{read2}. Obtížnost textu je

$$T=0.1579 \cdot H + 0.0496 \cdot \overline{U}$$

Pokud navíc procento obtížných slov překročí hranici 5\%, pak se k~obtížnosti přičte $3.6365$. V~původní práci jsou obtížná slova ta, která nejsou na seznamu lehkých slov. V~mém řešení jsou to ta, sestávající z~více než 5 slabik. Převodní tabulka je pak následující

\begin{center}
\begin{tabular}{cc}
Skóre & Interpretace \\
4.9 nebo nižší & pro žáky 4. či nižšího ročníku \\
5.0 -- 5.9 & pro žáky 5. či 6. ročníku \\
6.0 -- 6.9 & pro žáky 7. či 8. ročníku \\
7.0 -- 7.9 & pro žáky 9. či 10. ročníku \\
8.0 -- 8.9 & pro žáky 11. či 12. ročníku \\
9.0 -- 9.9 & pro studenty bakalářského studia \\
10.0 nebo vyšší & pro studenty s~bakalářským nebo vyšším vzděláním
\end{tabular}
\end{center}
  
\subsubsection{Coleman-Liau index}
  Založen čistě na kvantitativních vlastnostech textu, nevyžaduje tedy hlubší analýzu textu. Obtížnost je určena jako

$$T=0.0588\cdot L - 0.296 \cdot S~- 15.8$$

kde $L$ je průměrný počet písmen na 100 slov a $S$ je průměrný počet čísel na 100 slov.

\subsubsection{SMOG}
  Dosahuje korelace r=.88 s~porozuměním textu. Doporučován pro použití v~lékařství \cite{read1}. Ročník, pro který by měl být text vyhovující se pak přímo určí jako

$$R=3+\sqrt{F}$$

kde $F$ je počet slov, skládajících se ze dvou a více slabik (v~mé implementaci z~více než pěti) v~přepočtu na 30 vět.
  
\subsubsection{FORCAST}
  Původně určeno pro americkou armádu. Dosahuje korelace r=.66 s~porozuměním textu \cite{read1}. Ročník je přímo určen jako

$$R=20 - \left( \frac{E}{10} \right)$$

kde $E$ je počet jednoslabičných slov na každých 150 slov.
  
\subsubsection{Průcha-Pluskal-Nestlerová}
  Zabývá se kvantitativní i kvalitativní stránkou textu. Jediný rozpracovaný index pro texty v~českém jazyce. Již mnohokrát použit zejména pro určování obtížnosti učebnic.

Z~výše zmíněných indexů je pro český jazyk určující zejména poslední jmenovaný. Ačkoliv jsou v~programu implementovány i ostatní, jejich výsledky neodpovídají realitě - a to zejména proto, že jsou původně určeny pro anglický text. 

Index obtížnosti dle Průchy (dále upraven Pluskalem a Nestlerovou) uvažuje \uv{syntaktickou} i \uv{sémantickou} obtížnost textu, což je další věc, která ho odlišuje od předchozích zmíněných. Ty to totiž onu zmiňovanou \uv{sémantickou} obtížnost uvažují maximálně na úrovni, jestli slovo je, nebo není \uv{složité}. Průcha rozlišuje hned několik kategorií pojmů, dle kterých obtížnost určuje. Syntaktickou obtížnost určuje jako:

$$T_S = 0.1 \cdot \overline{U} \cdot \overline{V}$$

kde $\overline{U}$ je průměrná délka věty (v~počtu slov) a $\overline{V}$ je průměrný počet slov na jedno sloveso. Sémantickou obtížnost pak definuje jako:

$$T_P = 100 \cdot \frac{P}{N} \cdot \frac{P_1 + 3P_2 + 2P_3 + 2P_4 + P_5}{N}$$

kde $P$ je počet pojmů (pojmem Průcha rozumí podstatná jména včetně přídavných jmen zpodstatnělých a číslovky), $N$ celkový počet slov a $P_i$ pak jednotlivé pojmové kategorie

\begin{description}
\item[$P_1$] Běžné pojmy
\item[$P_2$] Odborné pojmy
\item[$P_3$] Faktografické pojmy
\item[$P_4$] Číselné údaje, číslovky
\item[$P_5$] Opakované pojmy
\end{description}

Celková obtížnost je pak

$$T=T_S+T_P$$

\section{Popis implementace}

\subsection{Požadované moduly}
Zejména kvůli práci s~textem jsou vyžadovány některé další moduly, jejichž popis a možnost instalace následuje.

\subsubsection{\href{https://pypi.python.org/pypi/enum/}{Enum}}
Slouží k~internímu ukládání kategorií jednotlivých slov

\paragraph{Instalace}
\begin{verbatim}
  wget https://pypi.python.org/packages/source/e/enum/enum-0.4.4.tar.gz
  tar -zxvf enum-0.4.4.tar.gz
  cd enum-0.4.4
  python setup.py install
\end{verbatim}

\subsubsection{Manatee}
Soubor využívá nástrojů \href{https://nlp.fi.muni.cz/web3/}{Centra zpracování přirozeného jazyka} na Fakultě informatiky Masarykovy univerzity. Zejména potřebuje mít pro práci s~korpusem přístupny modul \verb+manatee+.

\subsection{Přístup z~internetu}
Soubor je CGI skript, tudíž musí být umístěn ve složce přístupné z~webu a být spustitelný

\begin{verbatim}
chmod +x cstext.cgi
\end{verbatim}

Poté můžete přistoupit na danou webovou adresu a měl byste vidět oblast pro zadání textu a tlačítko pro odeslání textu.

\begin{center}
\includegraphics[scale=0.8]{01.jpg}
\end{center}

\subsection{Popis běhu programu}
Po odeslání textu se spočítají některé základní údaje. Nejprve je to počet slabik textu. Text je dle mezer rozdělen na slova a v~každém slově jsou samohlásky s~diakritikou převedny na verzi bez diakritiky. V~rámci každého slova jsou pak slabiky určeny pomocí regulárního výrazu jako libovolně dlouhá skupina souhlásek následována libovolně dlouhou skupinou samohlásek. V~jedné z~verzí byl počet slabik určován pomocí modulu \verb+PyHyphen+, který pro určení slabik využívá slovníku pro LibreOffice, ale výsledky byly horší, než s~výše popsaným postupem.

Dle počtu slabik je pak určen počet \uv{obtížných} (viz.kapitolu \ref{sec:index}) a jednoslabičných slov. K~určení počtu vět je použit modul \verb+TextBlob+. Dále je za pomoci regulárních výrazů určen počet znaků a počet čísel v~celém textu. Na základě takto získaných údajů je již možné spočítat všechny indexy, kromě posledního popsaného - Průcha-Pluskal-Nestlerová - který je pro nás však nejdůležitější.

Pro určení indexu Průcha-Pluskal-Nestlerová musí být text zpracován důkladněji. Nejdříve je nutné určit počet podstatných jmen, číslovek a sloves. První dvě skupiny slouží jako základ pro práci s~pojmy, počet sloves pak spoluurčuje syntaktickou část obtížnosti, která už v~tuto chvíli může být spočítána.

V~následujícím kroku je nutné rozdělit jednotlivá slova do daných kategorií, což je nezbytné pro správné určení sémantické obtížnosti. Před samotným určením kategorií je ovšem nutné o~slovech získat dodatečné informace. To je učiněno pomocí nástrojů \href{https://nlp.fi.muni.cz/web3/}{Centra zpracování přirozeného jazyka}, především pomocí morfologického analyzátoru \verb+majka+. Pomocí nich jsou ke slovům určena jejich lemmata, a morfologické značky. Dále je za pomocí modulu \href{https://nlp.fi.muni.cz/cs/Manatee}{manatee} a korpusu \href{http://www.sketchengine.co.uk/documentation/wiki/Corpora/czTenTen2}{cztenten12} určena frekvence každého z~lemmat.

Jednotlivé kategorie pojmů mají danou prioritu (tzn. pokud slovo patří do více kategorií, je mu přiřazena kategorie s~vyšší prioritou), které jsou v~kódu reprezentovány pořadím určování jednotlivých kategorií. Priority jsou následující (od nejvyšší po nejnižší)

\begin{enumerate}
\item Opakované pojmy
\item Číselné pojmy
\item Odborné pojmy
\item Faktografické pojmy
\item Běžné pojmy
\end{enumerate}

U~každého slova je určeno, zda je podstatné jméno, nebo číslovka a následně jsou u~něj od nejvyšší priority určovány kategorie pojmů. Jakmile do nějaké kategorie slovo spadá, je tato jeho výslednou kategorií, se kterou se pak pracuje při výpočtu. V~paměti je udržován seznam lemmat již zpracovaných slov, jenž slouží pro určení opakovaných pojmů. Výjimku tvoří číslovky a číselné pojmy, které mají ve výstupu z~\verb+majky+ stejné lemma, proto je číslovka vždy určena jako číslovka a nikdy jako opakovaný pojem. Vzhledem k~povaze číselných pojmů to nepovažuji za škodlivé. Odborné pojmy jsou definovány jako ty, které mají frekvenci lemmatu nižší než 0.2. Tato hodnota se v~průběhu vývoje ukázala jako rozumná volba. Faktografické pojmy jsou určena na základě velkého prvního písmena ve slově. \verb+majka+ totiž všechna velká písmena slov, jenž nejsou vlastními jmény příp. zkratkami převede na písmena malá. Tím odpadá možnost určit jako faktografický pojem slovo čistě na základě toho, že je na začátku věty. V~průběhu se ukázalo, že určování faktografických pojmů tímto způsobem je poměrně spolehlivé - jediný problém nastává s~víceslovnými pojmy, které jsou zpracovávány jako dva oddělené pojmy. Jako běžný pojem jsou pak určeny ty pojmy, které se nedostanou do žádné z~předchozích kategorií.

Nyní už jsou k~dispozici všechny údaje, jenž jsou pro spočtení indexu Průcha-Pluskal-Nestlerová potřeba, tudíž program tak učiní a výsledek vypíše uživateli, včetně počtů slov v~jednotlivých pojmových kategorií a jejich poměrového zastoupení v~textu.

\section{Použití}

Do textové oblasti zadejte požadovaný text a klikněte na "Odeslat". Po chvíli by se Vám měl zobrazit původní text a informace o~jeho obtížnosti dle několika indexů.

\begin{center}
\includegraphics{02.jpg}
\end{center}

\section{Vyhodnocení}
Vyhodnocení probíhalo zejména porovnáním naměřených hodnot s~hodnotami, naměřenými Petrou Tannenbergovou v~její disertační práci, zabývající se obtížností učebnic \cite{petra}. Ze 4 učebnic z~původní práce byly použité části textu zadány do programu a hodnoty jím naměřené byly porovnány s~původní práci (celkem se jednalo o~cca 30 stran textu). 

Dílčí ukazatele obtížnosti se od původní práce značně lišily. Odborných pojmů byla datekována pouze čtvrtina, faktorgrafických pak zhruba polovina. Naopak bylo detekováno více číselných pojmů. Ačkoliv naměřená sémantická i syntaktická obtížnost byly menší, než v~původní práci, korelace s~původním hodnocením byla velmi vysoká ($r=.992$). Tento výsledek považuji za velice uspokojivý a program byl následně otestován na dalších sadách textů a to jmenovitě na pohádkách(
\href{http://www.bezmez.cz/products/z-chystane-knizky-neposedna-dvojcata/}{[a]}
\href{http://www.cist.cz/Pohadky/pohadky.htm}{[b]}
\href{http://zdarmaprodeti.topstranky.cz/}{[c]})
a na vysokoškolských textech (
\href{http://is.muni.cz/do/1499/el/estud/praf/js09/mps/web/index.html}{[a]}
\href{http://is.muni.cz/do/1499/el/estud/fsps/js07/fyzio/texty/index.html}{[b]}
\href{http://www.med.muni.cz/index.php?id=93}{[c]})
. Základní deskriptivní hodnoty naměřené na těchto textech jsou v~tabulce \ref{tab:results}

\begin{table}[!h]
\centering
\begin{tabular}{c|ccc}
& Průměr & Rozptyl & Odchylka \\ \hline
Pohádky & 13.12 & 0.18 & 0.42 \\
Učebnice pro 6. a 7. třídu & 24.20 & 5.68 & 2.38 \\
VŠ skripta & 36.88 & 4.62 & 2.15
\end{tabular}
\caption{Výsledky vyhodnocení}
\label{tab:results}
\end{table}

Ze zajímavých zjištění pak stojí za povšimnutí několik věcí:
\begin{itemize}
\item U~pohádek platilo, že čím jsou věty složitější, tím jsou kratší
\item To samé platilo u~vysokoškolských materiálů
\item Učebnice pro středoškoláky i vysokoškolská skripta měla (narozdíl do pohádek) vyvážený poměr mezi syntaktickou a sémantickou obtížností
\end{itemize}

\bibliographystyle{csn690}

\begin{thebibliography}{9}
\bibitem{petra}TANNENBERGOVÁ, Petra. \textit{Analýza didaktické vybavenosti učebnic dějepisu pro 6. a 7. ročník základní školy.} [online]. 2012 [cit. 2014-05-22]. Disertační práce. Masarykova univerzita, Pedagogická fakulta. Vedoucí práce Jaroslav Vaculík. Dostupné z: \url{<http://is.muni.cz/th/15216/pedf_d/>}

\bibitem{read1}DUBAY, W. H. 2006. \textit{Smart language: Readers, Readability, and the Grading of Text.} Costa Mesa:Impact Information.

\bibitem{read2} CHALL, J. S. and E. Dale. 1995. \textit{Readability revisited: The new Dale–Chall readability formula.} Cambridge, MA: Brookline Books.

\end{thebibliography}

\end{document}

  
  