-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmethodologie.tex
67 lines (41 loc) · 7.54 KB
/
methodologie.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
%%=============================================================================
%% Methodologie
%%=============================================================================
\chapter{Methodologie}
\label{ch:methodologie}
%% TODO: Hoe ben je te werk gegaan? Verdeel je onderzoek in grote fasen, en
%% licht in elke fase toe welke stappen je gevolgd hebt. Verantwoord waarom je
%% op deze manier te werk gegaan bent. Je moet kunnen aantonen dat je de best
%% mogelijke manier toegepast hebt om een antwoord te vinden op de
%% onderzoeksvraag.
Zoals te lezen valt in het hoofdstuk~\ref{ch:stand-van-zaken}: Stand van Zaken, gaat het overgrote deel van de cases over de generatie van SQL-queries. Dit komt omdat SQL een programmeertaal is dat dicht aanleunt bij de menselijke taal. Daarom werd er ook gekozen om twee van de gevonden cases, waarbij queries gegenereerd worden, uit te testen. Er werden gelijkaardige algorimten gekozen, namelijk Seq2SQL (zie sectie \ref{sec:Salesforce - Seq2SQL} uit hoofdstuk~\ref{ch:stand-van-zaken}) en SQLNet (zie sectie \ref{sec:SQLNet} uit hoofdstuk~\ref{ch:stand-van-zaken}).
In beide papers worden experimenten beschreven. Voor deze experimenten werd er telkens gebruik gemaakt van de WikiSQL-dataset. Voor dit onderzoek zal er in een eerste fase ook gebruik gemaakt worden van deze dataset. Hierna kan er een vergelijking gemaakt worden tussen de bekomen resultaten en de resultaten die men kan terugvinden in vernoemde papers.
In een tweede fase zullen beide algoritmen ook uitgevoerd worden op een andere dataset. Eerst zal gekeken worden hoe deze dataset in elkaar zit en zal deze aangepast worden naar de vereisten om beide algoritmen werkend te krijgen. Daarna zullen zowel Seq2SQL als SQLNet uitgevoerd worden op deze dataset.
\section{De opzet}
\label{sec:opzet}
Tijdens de literatuurstudie (zie hoofdstuk~\ref{ch:stand-van-zaken}) werden er voor zowel Seq2SQL als voor SQLNet Github-repositories gevonden die gebruikt kunnen worden tijdens de experimentele fase. Ook werd er een Github-repository gevonden die volledig in het teken staat van de WikiSQL dataset. Seq2SQL kan teruggevonden worden op de repository van \textcite{seq2sql}, SQLNet op de repository van \textcite{sqlnet}. De WikiSQL-dataset kan teruggevonden worden op de repository van \textcite{wikisql}. Om met deze algoritmen te kunnen werken, dienen deze op een lokaal systeem beschikbaar te zijn.
De scripts, horende bij de gekozen algoritmen, werden in eerste instantie uitgevoerd in een Windows-omgeving. Spijtig genoeg faalde de uitvoering. Daarom werd ervoor gekozen de scripts uit te voeren in een Linux-omgeving. Er werd gekozen gebruik te maken van het Ubuntu besturingssysteem. Dit besturingssysteem werd in eerste instantie geïnstalleerd in een virtuele machine (in Virtual Box), maar ook hier faalden de uitvoeringen van de scripts.
Om dit op te lossen werd Ubuntu geïnstalleerd op een andere computer (HP Pavilion 17 laptop met een Intel Core i7-4510U processor, 12 gigabyte RAM, één terabyte harde schijf en een NVIDIA GeForce 840M grafische kaart). Op de harde schijf van deze computer werd een partitie van 150 gigabyte aangemaakt. Ubuntu werd op deze partitie geïnstalleerd.In sectie \ref{sec:sqlnet} wordt dit verder besproken.
Wanneer de Ubuntu setup compleet was, werden ook de volgende tools geïnstalleerd:
\begin{description}
\item[Github] Doordat er een Github-cli (command-line interface) werd geïnstalleerd, is het mogelijk om via commando's github-gerelateerde zaken te regelen (zoals het clonen van repositories op een lokaal systeem).
\item[Python 2.7] Tijdens het overlopen van de Github-repositories, werd het nogal snel duidelijk dat er voor de uitvoering van de algoritmen gebruik gemaakt werd van Python-scripts.
\item[Python 3.6] De scripts, horende bij het WikiSQL-algoritme, vereisen het gebruik van Python 3.6. Daarom werd naast de installatie van Python 2.7 ook Python 3.6 geïnstalleerd.
\end{description}
Nadat de gehele installatie voltooid was, kon er gestart worden met het uitvoeren van deze algoritmen. De informatie over de uitvoering kan teruggevonden worden in de volgende sectie (sectie \ref{sec:uitvoering}).
\section{De uitvoering}
\label{sec:uitvoering}
In het volgend hoofdstuk, hoofdstuk~\ref{ch:experiment} Experiment, zal de uitvoering van het onderzoek concreet besproken worden. In volgende subsecties wordt de complete eerste fase van het experiment besproken. Ook wordt de manier van uitvoering hier besproken.
\subsection{Algoritme}
Het eerste deel van het onderzoek gaat vooral uit naar de achterliggende gedacht van het experiment. In hoofdstuk~\ref{ch:stand-van-zaken} werden alle algoritmen reeds aangehaald. In dit deel wordt er nog eens kort aangehaald wat het algoritme is en waarvoor het dient. Deze subsectie zorgt er dan ook voor dat deze algoritmen beter te begrijpen vallen.
\subsection{Opbouw}
In het tweede deel ligt de nadruk vooral op de bouw van de scripts. Ook zal er hier gekeken worden naar de opbouw van de dataset die gebruikt wordt voor de uitvoering van de scripts, namelijk de WikiSQL dataset.
Per script wordt er gekeken uit welke delen het bestaat. Per onderdeel wordt er bekeken wat het doet en waarom het nodig is dat het vermeld wordt in het script. Het is namelijk niet alleen belangrijk dat het algoritme werkt, maar het is even belangrijk dat de achterliggende code begrepen wordt door zowel de onderzoeker als de lezer van deze bachelorproef.
\subsection{Uitvoering}
Deze derde subsectie staat volledig in het teken van de uitvoering van de algoritmen. In dit deel van het onderzoek worden alle besproken algoritmen uitgevoerd. Hierin wordt besproken hoe elk algoritme dient uitgevoerd te worden. Welke bestanden zijn er nodig voor de uitvoering? Welke commando's dienen er gebruikt te worden om de scripts te laten werken?
In deze subsectie worden dus de stappen van uitvoering besproken. Daarnaast zal hier ook uitgebreid aandacht geschonken worden aan de feedback, welke verkregen wordt tijdens en/of na de uitvoering van een algoritme. Deze feedback kan bijvoorbeeld zijn wanneer het algoritme is vastgelopen, wat er verkeerd is, \dots
\subsection{Resultaten}
Dit is het belangrijkste onderdeel van het hele onderzoek. De resultaten worden bekomen na de uitvoering van de algoritmen. De volgende stap in het proces, is de vergelijking van deze bekomen resultaten met de verkregen resultaten (uit de papers of vermeld in de Github-repository). Komen deze resultaten overeen, of zijn de resultaten helemaal niet correct?
Indien de bekomen resultaten overeenkomen met de vooropgestelde resultaten, kan er verder gegaan worden naar de tweede fase van het totale onderzoek. Wanneer de resultaten niet overeenkomen of wanneer de algoritmen helemaal niet werken, zal er gekeken worden waar het foutgelopen is. Ook zal er indien mogelijk een oplossing voorhanden gegeven worden. Mogelijke oplossingen zullen uitgebreid beschreven worden. Indien er geen oplossingen zijn gevonden, zullen de problemen uitgebreid besproken worden.
Wanneer het gelukt is om de drie algoritmen werkend te krijgen, en dat de verkregen resultaten overeen kwamen met de vermelde resultaten in de verkregen papers, zal er geprobeerd worden deze algoritmen uit te voeren op een andere dataset. Het doel van deze tweede fase van het experiment is om te kijken of het mogelijk is om gelijkaardige resultaten te verkrijgen nadat deze algoritmen op een niet gekende dataset uitgevoerd worden.
Na de uitvoering van alle experimenten zullen alle resultaten ook gebundeld worden. Hierop wordt dan de conclusie van deze bachelorproef gebaseerd. Deze conclusie valt te lezen in hoofdstuk~\ref{ch:conclusie}.