magisterka/rozdzial_2.tex
2018-02-08 01:47:46 +01:00

186 lines
9.9 KiB
TeX
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

\chapter{Metody ekstrakcji informacji}
% w kontekście mojego projektu
W tym rozdziale zaprezentowane będę wybrane metody, których idee lub
ich bezpośrednie użycie znalazło się
w końcowym systemie ekstrakcji informacji o godzinach rozpoczęcia mszy świętych.
\section {Wzorce Hearst - metoda samowsporna \textit{(ang. bootstraping)}}
Pierwszy raz w dziedzinie ekstrakcji informacji metody samowsporne zostały
zastosowane przy ekstrakcji relacji. Były to wzorce Hearst \textit{(ang.
Hearst patterns)}.
\smallskip
\noindent Znajdowanie nowych wzorców za pomocą wzorców Hearst:
\begin{enumerate}
\item Wybierz relację leksykalną R.
\item Zbierz zbiór par, które są w relacji R.
\item Znajdź zdania, które zawierają te pary.
\item Przyjrzyj się kontekstowi w jakim występują te pary. Załóż, że często
powtarzające się wzorce reprezentują relację R.
\item Weź nowo odkryte wzorce i przejdź do 2.
\end{enumerate}
\section{Dziel i zwyciężaj algorytmami genetycznymi}
W 2015 Bartoli i in. zaprezentowali efektywny algorytm genetyczny do generowania wzorców w
postaci wyrażeń regularnych przy użyciu niewielkiego zbioru zanotowanych przykładów.
Problem generowania automatycznych wyrażeń regularnych jest ciężki. Warto zauważyć, że
bardzo łatwo wytrenować na zbiorze treningowym system, który znajdzie wzorzec o bardzo wysokiej precyzji i niskiej
czułości (np. wystarczy alternatywa po wszystkich zanotowanych przykładach), ale szczególnie trudno wytrenować system tak, aby generalizował się na przypadki poza
zbiorem treningowym (innymi słowy taki system łatwo przetrenować).
%Bartoli i in. na następujących przykładach
%tabela tekstu do wyekstrachowania
%(otrzymali wyniki bardzo zadowalające wyniki ) tabela wyników
\subsection{Opis problemu}
Niech $x_s$ będzie spójnym podciągiem ciągu znaków $s$ reprezentowanym przez
indeks początkowy i końcowy w $s$.
$x_s$ nazywa się nadłańcuchem $x'_s$ (a $x'_s$ jest podłańcuchem $x_s$)
jeśli (i) $x'_s$ jest krótszy niż $x_s$, (ii) indeks początkowy $x'_s$ jest
większy lub równy niż indeks początkowy $x_s$ oraz (iii) indeks końcowy $x'_s$
jest mniejszy lub równy niż indeks końcowy $x_s$.
Niech $(s,X)$ to przykład uczący, w którym $X$ to zbiór
nienachodzących na siebie $x_s$.
Niech $e(s,P)$ to zbiór wszystkich ciągów $x_s$
wyekstrahowanych poprzez zbiór wyrażeń regularnych $P$, taki że (i)
$x_s$
pasuje do jakiegokolwiek wyrażenia regularnego $p\in P$, (ii) każdy nadłańcuch
$x'_s$ ciągu $x_s$ nie pasuje do żadnego wyrażenia regularnego $p\in P$
oraz (iii) dla każdego innego ciągu $x''_s$, który nachodzi na
$x_s$, indeks początkowy $x''_s$ albo jest większy od indeksu początkowego $x_s$
albo $x''_s$ nie pasuje do żadnego $p\in P$.
Mając dwa zbiory zanotowanych przykładów $(E, E')$ zbiór wyrażeń
regularnych $P$ generowany jest używając
tylko i wyłącznie $E$ w taki sposób, że (i) maksymalizowana jest średnia harmoniczna z precyzji i
czułości na $E'$ oraz (ii) minimalizowana jest $\sum_{p\in
P}{l(p)}$, gdzie $l(p)$ to długość wyrażenie regularnego $p$.
Wtedy precyzja i czułość definiowane są w następujący sposób:
$$Prec(P, E'):=\frac{\sum_{(s,X)\in E'}{|e(s,P) \cup X|}}{\sum_{(s,X)\in E'}{|e(s,P)|}}$$
$$Rec(P, E'):=\frac{\sum_{(s,X)\in E'}{|e(s,P) \cup X|}}{\sum_{(s,X)\in E'}{|X|}}$$
\subsection{Algorytm}
\subsubsection{Algorytm genetyczny}
Na wejściu podawany jest zbiór treningowy $T$, a na wyjściu pojedyńcze wyrażenie regularne $p$.
Zbiór treningowy $E$ składa się z trójki uporządkowanej $(s,X)=(s,X_d,X_u)$,
gdzie $X_d$ to zbiór ciągów $x_s$ ekstrahowanych przez $p$, a
$X_u$ to zbiór niepożądanych ciągów $x_s$ ekstrahowanych przez $p$. Dodatkowo
żaden podłańcuch $x'_s$ ciągu $x_s\in X_d$ nie nachodzi na żaden podłańcuch $x'_s$ ciągu $x_s\in X_u$.
Wyrażenie regularne reprezentowane jest za pomocą drzewa. Liście składają
się z:
\begin{enumerate}
\item zakresów znaków np. \texttt{a-ż}, \texttt{A-Ż} i \texttt{0-9},
\item klas znaków \texttt{\textbackslash w} i \texttt{\textbackslash d},
\item cyfr od 0 do 9,
\item częściowych zakresów, czyli największego zakresu znaków występującego
w $\bigcup_{(s,X_d,X_u)\in T}X_d$, np. dla \texttt{\{pokój, ubierać\}}
otrzymuje się
zakresy \texttt{a-b}, \texttt{j-k} i \texttt{o-r} (przy założeniu, że
korzysta się z polskiego alfabetu),
\item znaków specjalnych takich jak np. \texttt{\textbackslash ., :, @}.
\end{enumerate}
Wierzchołki nie będące liściami składają się z:
\begin{enumerate}
\item konkatenacji $\bullet \bullet$,
\item klasy znaków $[\bullet]$ i jej negacji $[ \hat{\ } \bullet ]$,
\item kwantyfikatorów bez nawrotów (ang. possessive quantifiers) $\bullet
\ast$\texttt{+}, $\bullet$\texttt{++}, $\bullet$\texttt{?+ } oraz $ \bullet
\{ \bullet, \bullet \}$\texttt{+},
\item nie łapiących grup \texttt{(?:$\bullet$)}.
\end{enumerate}
Wyrażenie regularne $p$ otrzymuje się przechodząc drzewo sposobem post-order,\newline w którym pod $\bullet$ w wierzchołkach
niebędących
liściami podstawia się łańcuchy znaków zawarte w dzieciach tego wierzchołka.
\subsubsection{Inicjalizacja populacji}
Dla każdego $x_s\in \bigcup_{(s,X_d,X_u)\in T}X_d$ budowane są dwa osobniki
(osobnik to wyrażenie regularne). Pierwszy osobnik tworzony jest z $x_s$, w którym każda cyfra zamieniana
jest na \texttt{\textbackslash d} oraz każda litera zamienia jest na
\texttt{\textbackslash w}. Drugi osobnik tworzony jest identycznie jak pierwszy
z tą różnicą, że wielkrotne wystąpienia \texttt{\textbackslash d} (lub
\texttt{\textbackslash w}) zastępuje się \texttt{\textbackslash d++} (lub
\texttt{\textbackslash w++}). %\marginpar{przykład}
\subsubsection{Funkcja przystosowania}
Dla każdego osobnika funkcję przystosowania zdefiniowano jako
$$f(p):=(Prec(p,T), Acc(p,T), l(p))$$
Wprowadzono również dwie nowe operacje $\sqcap$ i $\ominus$, na których oparte są
funkcje $Prec$ i $Acc$.
Załóżono, że $X_1$ i $X_2$ to zbiory spójnych podciągów tego samego łańcucha znaków $s$.
Wtedy:
\begin{itemize}
\item $X_1 \ominus X_2$ jest zbiorem takich $x_s$, że
(i) są one spójnym podciągiem jakiegoś elementu $X_1$, (ii) nie
nachodzą na żaden z elementów $X_2$ oraz (iii) nie mają nadłańcucha, który spełnia
(i), (ii);
\item $X_1 \sqcap X_2$ jest zbiorem takich $x_s$, że (i) są one
spójnym podciągiem jakiekolwiek elementu $X_1$ i
jakiekolwiek elementu $X_2$ oraz (ii) nie mają nadłańcucha, który spełnia (i).
\end{itemize}
W końcu $$Prec(p,T):=\frac{\sum_{(s,X_d,X_u)\in T}|e(s,\{p\})\cap
X_d|}{\sum_{(s,X_d,X_u)\in T}|e(s,\{p\})\sqcap (X_d \cup X_u)|}$$
Drugi element trójki uporządkowanej, czyli $Acc(p,T)$ jest średnią arytmetyczną
czułości na znakach (ang. True Positive Character Rate skr. TPCR) i
specyficzności na znakach (ang. True Negative Character Rate skr. TNCR):
$$TPCR(p,T):=\frac{\sum_{(s,X_d,X_u)\in T}||e(s,\{p\})\sqcap X_d||}{\sum_{(s,X_d,X_u)\in T}||X_d||}$$
$$TNCR(p,T):=\frac{\sum_{(s,X_d,X_u)\in T}||s \ominus e(s,\{p\}) \sqcap X_u||}{\sum_{(s,X_d,X_u)\in T}||X_u||}$$
$$Acc(p,T)=\frac{TPCR(p,T) + TNCR(p,T)}{2},$$
gdzie $||X|| = \sum_{x_s\in X}l(x_s)$, a $l(x_s)$ oznacza długość ciągu $x_s$.
Osobniki porównywane są w pierwszej kolejności na podstawie $Prec$, potem
\newline w
przypadku remisu za pomocą $Acc$, a w przypadku identycznych
$Prec$ i $Acc$ brane jest pod uwagę $l(p)$.
Populacja $P$ o liczności $n$ ewoluuje następująco. W każdej iteracji $0.1n$ osobników
generowanych jest losowo za pomocą metody
Ramped half-and-half, kolejne $0.1n$ osobników powstaje za pomocą mutacji, a
pozostałe $0.8n$ otrzymano z
populacji i zbioru nowo
wygenerowanych osobników wybierane jest $n$ najlepiej przystosowanych osobników,
które tworzą nową populację. Osobniki wybierane \newline są do mutacji i krzyżowania za
pomocą turnieju (losowanie z $P$ siedmiu osobników i zostawienie najlepszego).
Wymuszono również różnorodność między fenotypami osobników tzn. jeśli oba
osobniki mają identyczny łańcuch znaków to w populacji zostawiono tylko jednego
z nich. Koniec iteracji następuje, gdy zostanie osiągnięty \newline z góry ustalony limit generacji lub
najlepiej przystosowany osobnik nie zmieni się od określonej liczby iteracji.
Finalne wyrażenie regularne $p$ to najlepiej przystosowany osobnik po
zakończeniu wszystkich iteracji.
\subsubsection{Dziel i zwyciężaj}
Zbiór wyrażeń regularnych $P$ generowany jest za pomocą strategii dziel i
zwyciężaj. W każdej iteracji spójne podciągi ciągu znaków $s$, które zostały poprawnie
wykryte przez $P$ są usuwane ze zbioru treningowego.
Oby uniknąć przetrenowania, czyli bardzo wysokiego F-measure na $E$, a niskiego na $E'$
zbiór treningowy $E$ dzielony jest losowo na dwa zbiory $E_{train}$ i $E_{validation}$
takie, że $E=E_{train} \cup E_{validation}$, $E_{train} \cap E_{validation} =
\emptyset$ \newline i
$\sum_{(s,X)\in E_{train}}|X|\approx \sum_{(s,X)\in E_{validation}}|X|$.
\enlargethispage{7\baselineskip}
\newpage
Zacznij z $P=\emptyset$ i z $T$ utworzonym w taki sposób, że dla
każdego $(s,X)\in E_t$, trójka uporządkowana $(s, X, \{s\} \ominus X)$ jest
dodawana do $T$, \newline gdzie $X_d:=X$ i $X_u:=\{s\} \ominus X$.
\noindent Następnie dopóki $\bigcup_{(x,X_d,X_u)\in T}X_d\ne \emptyset$ powtarzaj:
\begin{enumerate}
\item Wykonaj algorytm genetyczny na $T$ i otrzymaj finalne $p$.
\item Jeśli $Prec(p,T)=1$, to $P:=P\cup\{p\}$, w przeciwnym wypadku przerwij pętlę.
\item Dla każdego $(s, X_d, X_u)\in T$, ustaw $X_d:=X_d\setminus e(s, \{p\})$.
\end{enumerate}
Powyższa procedura powtarzana jest wiele razy z różnym zarodkiem generatora
liczb losowych (startowy zbiór trenujący $T$ pozostaje bez zmian), by otrzymać
wiele różnych zbiorów $P$, z których na końcu wybierany jest ten o najwyższej
 średniej harmonicznej z precyzji i czułości na $E=E_{train} \cup E_{validation}$.
%\section{Sieci neuronowe}