Merge commit 'origin'
[ailab3.git] / rapport.tex
blob86d7d2d7bcf4e21a999940a63e82d71691946a24
1 \documentclass[a4paper, 12pt]{article}
2 \usepackage[swedish]{babel}
3 \usepackage[utf8]{inputenc}
4 \usepackage{verbatim}
5 \usepackage{fancyhdr}
6 \usepackage{graphicx}
7 \usepackage{parskip}
8 % Include pdf with multiple pages ex \includepdf[pages=-, nup=2x2]{filename.pdf}
9 \usepackage[final]{pdfpages}
10 % Place figures where they should be
11 \usepackage{float}
13 % vars
14 \def\title{Projekt}
15 \def\preTitle{Laboration 3: Information Retrieval \& Extraction}
16 \def\kurs{Artificiell Intelligens med inriktning mot kognition och
17 design B, ht 2008}
19 \def\namn{Anton Johansson}
20 \def\mail{dit06ajn@cs.umu.se}
21 \def\namnett{Victor Zamanian}
22 \def\mailett{dit06vzy@cs.umu.se}
24 \def\handledareEtt{Dennis Olsson, denniso@cs.umu.se}
25 \def\inst{datavetenskap}
26 \def\dokumentTyp{Laborationsrapport}
28 \begin{document}
29 \begin{titlepage}
30 \thispagestyle{empty}
31 \begin{small}
32 \begin{tabular}{@{}p{\textwidth}@{}}
33 UMEÅ UNIVERSITET \hfill \today \\
34 Institutionen för \inst \\
35 \dokumentTyp \\
36 \end{tabular}
37 \end{small}
38 \vspace{10mm}
39 \begin{center}
40 \LARGE{\preTitle} \\
41 \huge{\textbf{\kurs}} \\
42 \vspace{10mm}
43 \LARGE{\title} \\
44 \vspace{15mm}
45 \begin{large}
46 \namn, \mail \\
47 \namnett, \mailett
48 \end{large}
49 \vfill
50 \large{\textbf{Handledare}}\\
51 \mbox{\large{\handledareEtt}}
52 \end{center}
53 \end{titlepage}
55 \pagestyle{fancy}
56 \rhead{\footnotesize{\today}}
57 \lhead{\footnotesize{\namn, \mail \\ \namnett, \mailett}}
58 \chead{}
59 \lfoot{}
60 \cfoot{}
61 \rfoot{}
63 \section*{Sammanfattning}
64 Denna rapport går igenom olika verktyg för ''Data-mining''. Regexp,
65 XPath ...?
67 Labbspecifikation finns att läsa på:\\
68 \verb!http://www.cs.umu.se/kurser/5DV063/HT08/lab3.html!
70 \newpage
71 \tableofcontents
72 \newpage
74 \rfoot{\thepage}
75 \pagenumbering{arabic}
77 % TODO @anton - Problem-solving as search, basic to AI, Norvig.
79 \section{Introduktion}
80 % till ämnet.
81 Reguljära uttryck (Regular Expressions, regexp eller regex) är uttryck
82 som innehåller olika syntax för att identifiera specifika textsträngar
83 ur en större mängd text.
85 \section{Syfte}
86 % med uppgiften, beskrivet med egna ord.
87 Syftet med rapporten är att fördjupa sig inom ett smalt ämne inom
88 området Artificiell Intelligens och presentera teori för det valda
89 ämnet på ett vetenskapligt sätt.
91 \section{Metodbeskrivning}
92 %: beskrivning av metod, material, design och procedur
94 \section{Litteraturstudie}
95 %, teoretisk fördjupning
96 Enligt \cite{speech} härstammar Reguljära uttryck från Alan Turings (1936)
97 modell för aritmetisk beräkning, även kallad Turingmaskin. Denna
98 maskin var abstrakt, ett tanke experiment, för att utföra beräkningar.
99 % TODO Church-Turings hypotes säger att varje tänkbar process kan
100 % utföras av en Turingmaskin, och alltså finns det rent principiellt
101 % inte någon mer kraftfull beräkningsmekanism. Enligt wikipedia
102 % http://sv.wikipedia.org/wiki/Turingmaskin
104 Inspirerad av Turings arbete skapade sedan Warren McCulloch och Walter
105 Pitts (1943) en förenklad modell för neuronen, se \cite{norvig}
106 kapitel 18.
108 Stephen Cole Kleene definierade sedan (1951 och 1956) Ändlig
109 automation (Finite automation), Reguljära uttryck och påvisade dess
110 likhet.
112 Både Reguljära uttryck och Finite automation är en del av det en
113 språktyp som brukar kallas Reguljära språk, (''Regular Language'').
115 I boken \cite{speech} ger man ett exempel på hur Finite automation och
116 Reguljära uttryck förhåller sig till varandra. Säg att man ska
117 definiera ett naturligt språk, för enkelhets skull försöker vi
118 definiera vad som är ''ko-språk''. Vi kan säga att korrekt
119 ''ko-språk'' definieras av kombinationerna:
121 \begin{verbatim}
122 Muu!
123 Muuu!
124 Muuuu!
126 \end{verbatim}
128 Detta skulle kunna beskrivas med en modell för Finite-state automation
129 enligt figur nedan.
131 \begin{figure}[H]
132 \begin{center}
133 \includegraphics[width=110mm]{images/state.pdf}
134 \caption{Ändlig automation för ''ko-språk''}
135 \label{state.pdf}
136 \end{center}
137 \end{figure}
139 Tillstånden \verb!q0-q4! är de giltiga tillstånd som finns, \verb!q1! är
140 starttillståndet och \verb!q4! representerar sluttillstånd. Pilarna i figuren
141 markerar möjliga förflyttningar mellan tillstånden.
143 Denna information går även att representera som en ''State-transition''
144 tabell, se nedan:
146 \begin{center}
147 \begin{tabular}{|c|l|l|l|}
148 \hline
149 & \multicolumn{3}{|c|}{Indata} \\
150 \hline
151 Tillstånd & M & u & ! \\
152 \hline
153 0 & 1 & 0 & 0 \\
154 1 & 0 & 2 & 0 \\
155 2 & 0 & 3 & 0 \\
156 3 & 0 & 3 & 4 \\
157 4 & 0 & 0 & 0 \\
158 \hline
159 \end{tabular}
160 \end{center}
162 Ovan tabell läses av uppifrån och ner. Starttillståndet \verb!0! har
163 en giltig förflyttning till tillstånd \verb!1!, detta gäller enbart
164 för indata \verb!M!, för alla andra indata finns inga giltiga
165 förflyttningar, detta markeras med \verb!0!.
167 Det korresponderande reguljära uttrycket för att beskriva ''ko-språk''
168 skulle vara \verb?/Muu+!/?. Det Reguljära uttrycket är allt som står
169 inom \verb!/!-tecknen. Man läser det som man läser det ungefär som man
170 läser vanlig text. \verb!M! är tillåtet starttillstånd, följt av ett
171 \verb!u!, sedan markerar operatorn \verb!u+! att en eller flera
172 \verb!u! är tillåtna. Meningen avslutas med \verb?!?, vilket markerar
173 sluttillståndet. % Se sektion TODO för mer info om regexp syntax.
175 % REGEXP-MANUAL:
176 % Står på sidan 848 i Norvig.
177 % TODO @anton/victor - beskrivning regexp manual med fina tabeller.
179 Ett reguljärt uttryck består enkelt nog av text som ska matchas. Om
180 man vill matcha texten ''hej'' i en textsträng ''hoppsanhejsan'' så
181 blir det reguljära uttrycket helt enkelt bara ''hej'' och ''hej'':et i
182 ''hoppsanhejsan'' matchas. Däremot är det mer sällan man använder
183 reguljära uttryck för sådana enkla matchningar. Man vill i stället
184 använda dem till att matcha \textbf{generella mönster}. Ett exempel på
185 ett mönster skulle kunna vara en e-postadress på formen
186 \verb!<användarnamn>@<subdomän>.<domän>!, där \verb!<användarnamn>!
187 kan innehålla (i detta exempel) alla siffror, alla små och stora
188 bokstäver, understreck, punkt, bindestreck och plus.
190 I stället för att behöva skriva ett textmönster för varje e-postadress
191 som är möjlig att konstruera (i praktiken oräkneligt antal
192 variationer) kan man använda sig av speciella ''texthändelser'' för
193 att beskriva till exempel början\slash slutet av ett ord och
194 början\slash slutet av en hel sträng. Man kan också definiera
195 teckenklasser som man vill inkludera i sitt uttryck, till exempel alla
196 stora bokstäver, alla små bokstäver, siffror, eller till och med
197 vilken godtycklig kombination av tecken som helst. Här nedanför visas
198 en kort tabell med några texthändelser och deras motsvarande reguljära
199 uttryck.
201 \begin{center}
202 \begin{tabular}{|c|l|l|l|l|}
203 \hline
204 regex-uttryck & Texthändelse & Exempel & Matchar
205 \\ \hline
206 \verb!\b! & Början eller slutet på ett ord & \verb!\b!text\verb!\b! & ''ord1 \textbf{text} ord3'' \\ \hline
210 \verb!^! & Början av en textsträng & \verb!^!text & ''\textbf{text} i början'' \\ \hline
212 \verb!$! & Slutet av en textsträng & \verb!lutet$! & ''text i s\textbf{lutet}'' \\ \hline
214 \verb![A-Za-z0-9]! & Definierar klass med tecknen & \verb![abc0-9]! & ''\textbf{b}r\textbf{a} text med \textbf{23} te\textbf{c}ken'' \\
215 & A till Z, a till z och 0 till 9. & & \\ \hline
217 \verb!.! & Står för vilket tecken som helst. & \verb!^.! & ''\textbf{t}ext'' \\ \hline
218 \end{tabular}
219 \end{center}
221 Om man vill matcha en e-postadress i löpande text skulle man alltså
222 vilja använda sig av \verb!\b! runt uttrycket för att markera att det
223 som finns runt omkring adressen måste vara ordavgränsare av något
224 slag, så som ny rad eller någon typ av blanktecken. Vill man däremot
225 kontrollera indata från till exempel ett formulärfält där det är
226 meningen att en användare ska ange enbart en e-postadress är det
227 däremot önskvärt att omsluta uttrycket med \verb!^! i början och
228 \verb!$! i slutet för att markera att hela strängen måste
229 \textbf{börja och sluta med} adressen.
231 % Olika sätt att matcha e-mail adresser.
232 % \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b
233 % ^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$
235 \section{Resultat}
236 % innehållande sammanställning/analys av eventuell testdata,
237 % implementering av algoritmer osv.
238 % TODO - resultat, användningsområden kopplade till AI.
239 % TODO @anton - Kolla upp och skriv om ELIZA, regexp memory.
240 % TODO - resultat, ska innehålla typ ELIZA.
243 \section{Diskussion}
244 % av resultatet, koppling till tidigare studier.
246 \section{Slutsats}
249 %. Använd minst två referenser utöver kursboken.
250 \bibliographystyle{alpha}
251 \bibliography{books}
253 \end{document}