This commit is contained in:
Andy Sotheran 2019-04-26 20:58:22 +01:00
parent 6e23cc3a25
commit 2474b24d52
8 changed files with 478 additions and 364 deletions

View File

@ -227,44 +227,46 @@
\abx@aux@segm{0}{0}{38}
\abx@aux@cite{39}
\abx@aux@segm{0}{0}{39}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {10.2.3}Spam filter - Tokenisation, Ngrams, Stopword removal and Stemming}{59}{subsubsection.10.2.3}}
\@writefile{lol}{\defcounter {refsection}{0}\relax }\@writefile{lol}{\contentsline {lstlisting}{\numberline {11}pre-processing of data prior to being used by the spam filter}{59}{lstlisting.11}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {10.2.3}Spam filter - Tokenisation, Ngrams, Stopword removal and Stemming}{58}{subsubsection.10.2.3}}
\abx@aux@cite{40}
\abx@aux@segm{0}{0}{40}
\@writefile{lol}{\defcounter {refsection}{0}\relax }\@writefile{lol}{\contentsline {lstlisting}{\numberline {11}pre-processing of data prior to being used by the spam filter}{59}{lstlisting.11}}
\abx@aux@segm{0}{0}{40}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {10.3}Spam Filtering}{60}{subsection.10.3}}
\@writefile{lol}{\defcounter {refsection}{0}\relax }\@writefile{lol}{\contentsline {lstlisting}{\numberline {12}Spam filter training Class - \textit {tweet\_collector.py}}{60}{lstlisting.12}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {10.3}Spam Filtering}{61}{subsection.10.3}}
\@writefile{lol}{\defcounter {refsection}{0}\relax }\@writefile{lol}{\contentsline {lstlisting}{\numberline {12}Spam filter training Class - \textit {tweet\_collector.py}}{61}{lstlisting.12}}
\abx@aux@cite{41}
\abx@aux@segm{0}{0}{41}
\abx@aux@segm{0}{0}{34}
\abx@aux@cite{42}
\abx@aux@segm{0}{0}{42}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {10.3.1}Naive Bayes model}{63}{subsubsection.10.3.1}}
\@writefile{lol}{\defcounter {refsection}{0}\relax }\@writefile{lol}{\contentsline {lstlisting}{\numberline {13}classifer class of spam\_filter.py}{63}{lstlisting.13}}
\@writefile{lol}{\defcounter {refsection}{0}\relax }\@writefile{lol}{\contentsline {lstlisting}{\numberline {13}classifer class of spam\_filter.py}{64}{lstlisting.13}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {10.3.2}Classification}{65}{subsubsection.10.3.2}}
\@writefile{lol}{\defcounter {refsection}{0}\relax }\@writefile{lol}{\contentsline {lstlisting}{\numberline {14}Classify Function of Parent classifier class of spam\_filter.py}{65}{lstlisting.14}}
\@writefile{lol}{\defcounter {refsection}{0}\relax }\@writefile{lol}{\contentsline {lstlisting}{\numberline {14}Classify Function of Parent classifier class of spam\_filter.py}{66}{lstlisting.14}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {10.3.3}Predict}{66}{subsubsection.10.3.3}}
\@writefile{lol}{\defcounter {refsection}{0}\relax }\@writefile{lol}{\contentsline {lstlisting}{\numberline {15}Predict function of parent classifier class of spam\_filter.py}{66}{lstlisting.15}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {10.3.4}Metrics}{66}{subsubsection.10.3.4}}
\@writefile{lol}{\defcounter {refsection}{0}\relax }\@writefile{lol}{\contentsline {lstlisting}{\numberline {16}Metrics function for calculating the performance and accuracy of the model}{66}{lstlisting.16}}
\@writefile{lol}{\defcounter {refsection}{0}\relax }\@writefile{lol}{\contentsline {lstlisting}{\numberline {16}Metrics function for calculating the performance and accuracy of the model}{67}{lstlisting.16}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {10.4}Sentiment Analysis}{68}{subsection.10.4}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {10.5}Recurrent Neural Network - LSTM}{69}{subsection.10.5}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {10.5.1}Training and Testing Model}{69}{subsubsection.10.5.1}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {10.5.2}Scoring and Validation}{69}{subsubsection.10.5.2}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {10.6}Future Prediction Forecasting}{69}{subsection.10.6}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {10.7}Main File 'Main.py'}{69}{subsection.10.7}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {10.8}Miscellaneous}{69}{subsection.10.8}}
\@writefile{lol}{\defcounter {refsection}{0}\relax }\@writefile{lol}{\contentsline {lstlisting}{\numberline {17}keys class - loads API keys for access}{69}{lstlisting.17}}
\@writefile{lol}{\defcounter {refsection}{0}\relax }\@writefile{lol}{\contentsline {lstlisting}{\numberline {18}VADER sentiment analyser function}{69}{lstlisting.18}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {section}{\numberline {11}Testing Metrics and Accuracy}{72}{section.11}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {section}{\numberline {12}Project Evaluation}{73}{section.12}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {section}{\numberline {13}Discussion: Contribution and Reflection}{73}{section.13}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {13.1}Limitations}{73}{subsection.13.1}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {section}{\numberline {14}Conclusion and Future Improvements}{74}{section.14}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {14.1}Conclusion}{74}{subsection.14.1}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {14.2}Future Improvements}{74}{subsection.14.2}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {section}{\numberline {15}Appendices}{79}{section.15}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {15.1}Appendix A - Project Initiation Document}{79}{subsection.15.1}}
\@writefile{lol}{\defcounter {refsection}{0}\relax }\@writefile{lol}{\contentsline {lstlisting}{\numberline {17}LSTM packages}{69}{lstlisting.17}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {10.5.1}Script Execution}{70}{subsubsection.10.5.1}}
\@writefile{lol}{\defcounter {refsection}{0}\relax }\@writefile{lol}{\contentsline {lstlisting}{\numberline {18}Start of execution of the LSTM script}{70}{lstlisting.18}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {10.5.2}Dataset Creation}{70}{subsubsection.10.5.2}}
\@writefile{lol}{\defcounter {refsection}{0}\relax }\@writefile{lol}{\contentsline {lstlisting}{\numberline {19}Dataset creation and preprocessing}{70}{lstlisting.19}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {10.5.3}Training and Testing Model}{72}{subsubsection.10.5.3}}
\@writefile{lol}{\defcounter {refsection}{0}\relax }\@writefile{lol}{\contentsline {lstlisting}{\numberline {20}LSTM model creation\tmspace +\thinmuskip {.1667em} layering\tmspace +\thinmuskip {.1667em} compiling and fitting}{72}{lstlisting.20}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {10.6}Future Prediction Forecasting}{73}{subsection.10.6}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {10.7}User Interface}{75}{subsection.10.7}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {section}{\numberline {11}Testing Metrics and Accuracy}{76}{section.11}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {section}{\numberline {12}Project Evaluation}{77}{section.12}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {section}{\numberline {13}Discussion: Contribution and Reflection}{77}{section.13}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {13.1}Limitations}{77}{subsection.13.1}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {section}{\numberline {14}Conclusion and Future Improvements}{78}{section.14}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {14.1}Conclusion}{78}{subsection.14.1}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {14.2}Future Improvements}{78}{subsection.14.2}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {section}{\numberline {15}Appendices}{83}{section.15}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {15.1}Appendix A - Project Initiation Document}{83}{subsection.15.1}}
\abx@aux@refcontextdefaultsdone
\abx@aux@defaultrefcontext{0}{1}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{2}{none/global//global/global}
@ -308,4 +310,4 @@
\abx@aux@defaultrefcontext{0}{40}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{41}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{42}{none/global//global/global}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {15.2}Appendix B - Log book}{92}{subsection.15.2}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {15.2}Appendix B - Log book}{96}{subsection.15.2}}

View File

@ -1,23 +1,23 @@
[0] Config.pm:302> INFO - This is Biber 2.9
[0] Config.pm:305> INFO - Logfile is 'document.blg'
[19] biber:313> INFO - === Fri Apr 26, 2019, 16:35:53
[34] Biber.pm:371> INFO - Reading 'document.bcf'
[81] Biber.pm:854> INFO - Using all citekeys in bib section 0
[91] Biber.pm:3981> INFO - Processing section 0
[99] Biber.pm:4154> INFO - Looking for bibtex format file 'report.bib' for section 0
[100] bibtex.pm:1468> INFO - LaTeX decoding ...
[135] bibtex.pm:1294> INFO - Found BibTeX data source 'report.bib'
[143] Utils.pm:169> WARN - year field 'Mar 13, 2016' in entry '23' is not an integer - this will probably not sort properly.
[162] Utils.pm:169> WARN - year field 'Aug 2, 2017' in entry '42' is not an integer - this will probably not sort properly.
[18] biber:313> INFO - === Fri Apr 26, 2019, 19:25:29
[33] Biber.pm:371> INFO - Reading 'document.bcf'
[80] Biber.pm:854> INFO - Using all citekeys in bib section 0
[89] Biber.pm:3981> INFO - Processing section 0
[96] Biber.pm:4154> INFO - Looking for bibtex format file 'report.bib' for section 0
[98] bibtex.pm:1468> INFO - LaTeX decoding ...
[132] bibtex.pm:1294> INFO - Found BibTeX data source 'report.bib'
[144] Utils.pm:169> WARN - year field 'Aug 2, 2017' in entry '42' is not an integer - this will probably not sort properly.
[157] Utils.pm:169> WARN - year field 'Mar 13, 2016' in entry '23' is not an integer - this will probably not sort properly.
[179] Utils.pm:169> WARN - Name "Mairal, J., Ponce, J., Sapiro, G., Zisserman, A." has too many commas: skipping name
[183] Utils.pm:169> WARN - year field 'Aug 2, 2017' in entry '34' is not an integer - this will probably not sort properly.
[243] Utils.pm:169> WARN - year field 'Feb 26, 2018' in entry '40' is not an integer - this will probably not sort properly.
[262] Utils.pm:169> WARN - BibTeX subsystem: warning: comma(s) at end of name (removing)
[262] Utils.pm:169> WARN - BibTeX subsystem: author, warning: comma(s) at end of name (removing)
[283] UCollate.pm:68> INFO - Overriding locale 'en-US' defaults 'variable = shifted' with 'variable = non-ignorable'
[283] UCollate.pm:68> INFO - Overriding locale 'en-US' defaults 'normalization = NFD' with 'normalization = prenormalized'
[283] Biber.pm:3809> INFO - Sorting list 'none/global//global/global' of type 'entry' with template 'none' and locale 'en-US'
[283] Biber.pm:3815> INFO - No sort tailoring available for locale 'en-US'
[304] bbl.pm:617> INFO - Writing 'document.bbl' with encoding 'ascii'
[318] bbl.pm:720> INFO - Output to document.bbl
[318] Biber.pm:110> INFO - WARNINGS: 7
[195] Utils.pm:169> WARN - year field 'Aug 2, 2017' in entry '34' is not an integer - this will probably not sort properly.
[236] Utils.pm:169> WARN - year field 'Feb 26, 2018' in entry '40' is not an integer - this will probably not sort properly.
[259] Utils.pm:169> WARN - BibTeX subsystem: warning: comma(s) at end of name (removing)
[259] Utils.pm:169> WARN - BibTeX subsystem: author, warning: comma(s) at end of name (removing)
[280] UCollate.pm:68> INFO - Overriding locale 'en-US' defaults 'variable = shifted' with 'variable = non-ignorable'
[280] UCollate.pm:68> INFO - Overriding locale 'en-US' defaults 'normalization = NFD' with 'normalization = prenormalized'
[280] Biber.pm:3809> INFO - Sorting list 'none/global//global/global' of type 'entry' with template 'none' and locale 'en-US'
[280] Biber.pm:3815> INFO - No sort tailoring available for locale 'en-US'
[301] bbl.pm:617> INFO - Writing 'document.bbl' with encoding 'ascii'
[315] bbl.pm:720> INFO - Output to document.bbl
[315] Biber.pm:110> INFO - WARNINGS: 7

View File

@ -1,4 +1,4 @@
This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/Debian) (preloaded format=pdflatex 2018.10.16) 26 APR 2019 18:19
This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/Debian) (preloaded format=pdflatex 2018.10.16) 26 APR 2019 20:55
entering extended mode
restricted \write18 enabled.
%&-line parsing enabled.
@ -972,7 +972,7 @@ LaTeX Info: Redefining \nameref on input line 91.
\@outlinefile=\write5
\openout5 = `document.out'.
<images/reading_logo.png, id=289, 504.88625pt x 183.68625pt>
<images/reading_logo.png, id=321, 504.88625pt x 183.68625pt>
File: images/reading_logo.png Graphic file (type png)
<use images/reading_logo.png>
Package pdftex.def Info: images/reading_logo.png used on input line 94.
@ -1063,19 +1063,19 @@ Missing character: There is no
Missing character: There is no € in font cmr12!
Missing character: There is no ™ in font cmr12!
[20]
<images/perceptron.png, id=498, 706.64pt x 392.46625pt>
<images/perceptron.png, id=539, 706.64pt x 392.46625pt>
File: images/perceptron.png Graphic file (type png)
<use images/perceptron.png>
Package pdftex.def Info: images/perceptron.png used on input line 338.
(pdftex.def) Requested size: 284.52713pt x 170.72142pt.
[21 <./images/perceptron.png>]
<images/rnn_ffn.png, id=512, 844.15375pt x 342.27875pt>
<images/rnn_ffn.png, id=553, 844.15375pt x 342.27875pt>
File: images/rnn_ffn.png Graphic file (type png)
<use images/rnn_ffn.png>
Package pdftex.def Info: images/rnn_ffn.png used on input line 358.
(pdftex.def) Requested size: 426.80307pt x 170.72112pt.
[22 <./images/rnn_ffn.png>]
<images/lstm.png, id=525, 1160.335pt x 1029.8475pt>
<images/lstm.png, id=566, 1160.335pt x 1029.8475pt>
File: images/lstm.png Graphic file (type png)
<use images/lstm.png>
Package pdftex.def Info: images/lstm.png used on input line 376.
@ -1137,7 +1137,7 @@ Missing character: There is no
Missing character: There is no € in font cmr12!
Missing character: There is no ™ in font cmr12!
[34] [35] [36]
<images/Generic_Flow.png, id=646, 1900.09875pt x 529.98pt>
<images/Generic_Flow.png, id=687, 1900.09875pt x 529.98pt>
File: images/Generic_Flow.png Graphic file (type png)
<use images/Generic_Flow.png>
Package pdftex.def Info: images/Generic_Flow.png used on input line 637.
@ -1152,7 +1152,7 @@ Underfull \hbox (badness 10000) in paragraph at lines 648--650
[]
<images/Dataflow.png, id=652, 3767.07375pt x 1526.70375pt>
<images/Dataflow.png, id=693, 3767.07375pt x 1526.70375pt>
File: images/Dataflow.png Graphic file (type png)
<use images/Dataflow.png>
Package pdftex.def Info: images/Dataflow.png used on input line 653.
@ -1163,13 +1163,13 @@ Overfull \hbox (71.24937pt too wide) in paragraph at lines 653--655
[]
[38 <./images/Dataflow.png (PNG copy)>]
<images/Data_Collector.png, id=657, 1152.305pt x 647.41875pt>
<images/Data_Collector.png, id=698, 1152.305pt x 647.41875pt>
File: images/Data_Collector.png Graphic file (type png)
<use images/Data_Collector.png>
Package pdftex.def Info: images/Data_Collector.png used on input line 661.
(pdftex.def) Requested size: 426.78574pt x 227.61746pt.
[39 <./images/Data_Collector.png (PNG copy)>]
<images/Analysis_Engine.png, id=662, 1658.195pt x 719.68875pt>
<images/Analysis_Engine.png, id=703, 1658.195pt x 719.68875pt>
File: images/Analysis_Engine.png Graphic file (type png)
<use images/Analysis_Engine.png>
Package pdftex.def Info: images/Analysis_Engine.png used on input line 676.
@ -1180,7 +1180,7 @@ Overfull \hbox (42.8253pt too wide) in paragraph at lines 676--678
[]
[40 <./images/Analysis_Engine.png (PNG copy)>] [41]
<images/Neural_Network.png, id=672, 1502.61375pt x 1032.85875pt>
<images/Neural_Network.png, id=713, 1502.61375pt x 1032.85875pt>
File: images/Neural_Network.png Graphic file (type png)
<use images/Neural_Network.png>
Package pdftex.def Info: images/Neural_Network.png used on input line 694.
@ -1191,7 +1191,7 @@ Overfull \hbox (42.84184pt too wide) in paragraph at lines 694--696
[]
[42 <./images/Neural_Network.png (PNG copy)>]
<images/Future_Predictions.png, id=677, 1596.96625pt x 490.83376pt>
<images/Future_Predictions.png, id=718, 1596.96625pt x 490.83376pt>
File: images/Future_Predictions.png Graphic file (type png)
<use images/Future_Predictions.png>
Package pdftex.def Info: images/Future_Predictions.png used on input line 708.
@ -1203,14 +1203,14 @@ Overfull \hbox (71.28874pt too wide) in paragraph at lines 708--710
[]
[43 <./images/Future_Predictions.png (PNG copy)>]
<images/Frontend_Application.png, id=683, 804.00375pt x 599.23875pt>
<images/Frontend_Application.png, id=724, 804.00375pt x 599.23875pt>
File: images/Frontend_Application.png Graphic file (type png)
<use images/Frontend_Application.png>
Package pdftex.def Info: images/Frontend_Application.png used on input line 72
1.
(pdftex.def) Requested size: 284.52162pt x 256.07664pt.
[44 <./images/Frontend_Application.png (PNG copy)>]
<images/interface_design.png, id=688, 1086.0575pt x 1536.74126pt>
<images/interface_design.png, id=729, 1086.0575pt x 1536.74126pt>
File: images/interface_design.png Graphic file (type png)
<use images/interface_design.png>
Package pdftex.def Info: images/interface_design.png used on input line 740.
@ -1247,67 +1247,57 @@ LaTeX Font Info: Font shape `OML/cmr/m/n' in size <10> not available
[53] [54]
[55]
Underfull \hbox (badness 10000) in paragraph at lines 1105--1107
[]
Missing character: There is no  in font cmr10!
Missing character: There is no £ in font cmr10!
[56]
Underfull \hbox (badness 10000) in paragraph at lines 1144--1147
[56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69]
Underfull \hbox (badness 10000) in paragraph at lines 1583--1585
[]
[57]
Underfull \hbox (badness 10000) in paragraph at lines 1193--1195
[]
[58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72]
[73] [74]
Overfull \hbox (5.27716pt too wide) in paragraph at lines 1661--1661
[70] [71] [72] [73] [74] [75] [76] [77] [78]
Overfull \hbox (5.27716pt too wide) in paragraph at lines 1805--1805
\OT1/cmr/m/it/12 ence on sig-nal pro-cess-ing, com-mu-ni-ca-tion, power and em-
bed-ded sys-tem (SCOPES)\OT1/cmr/m/n/12 ,
[]
Overfull \hbox (42.7786pt too wide) in paragraph at lines 1661--1661
Overfull \hbox (42.7786pt too wide) in paragraph at lines 1805--1805
\OT1/cmr/m/n/12 works,'' To-wards Data Sci-ence, 2018. [On-line]. Avail-able: [
]$\OT1/cmtt/m/n/12 https : / / towardsdatascience .
[]
[75]
Overfull \hbox (86.07425pt too wide) in paragraph at lines 1661--1661
[79]
Overfull \hbox (86.07425pt too wide) in paragraph at lines 1805--1805
\OT1/cmr/m/n/12 works,'' Ma-chine Larn-ing Mas-tery, 2017. [On-line]. Avail-abl
e: []$\OT1/cmtt/m/n/12 https : / / machinelearningmastery .
[]
Overfull \hbox (30.84552pt too wide) in paragraph at lines 1661--1661
Overfull \hbox (30.84552pt too wide) in paragraph at lines 1805--1805
\OT1/cmr/m/n/12 lem,'' Su-per Data Sci-ence, 2018. [On-line]. Avail-able: []$\O
T1/cmtt/m/n/12 https : / / www . superdatascience .
[]
[76]
Overfull \hbox (9.16136pt too wide) in paragraph at lines 1661--1661
[80]
Overfull \hbox (9.16136pt too wide) in paragraph at lines 1805--1805
\OT1/cmr/m/n/12 2019. [On-line]. Avail-able: []$\OT1/cmtt/m/n/12 https : / / me
dium . com / datadriveninvestor / overview -[]
[]
[77]
Overfull \hbox (2.93918pt too wide) in paragraph at lines 1661--1661
[81]
Overfull \hbox (2.93918pt too wide) in paragraph at lines 1805--1805
[]\OT1/cmr/m/n/12 P. Cryp-tog-ra-phy, ``A tu-to-rial on au-to-matic lan-guage i
den-ti-fi-ca-tion - ngram based,''
[]
[78]
[82]
pdfTeX warning: /usr/bin/pdflatex (file ./PID.pdf): PDF inclusion: found PDF ve
rsion <1.7>, but at most version <1.5> allowed
<PID.pdf, id=1662, 597.55246pt x 845.07718pt>
<PID.pdf, id=1849, 597.55246pt x 845.07718pt>
File: PID.pdf Graphic file (type pdf)
<use PID.pdf>
Package pdftex.def Info: PID.pdf used on input line 1666.
Package pdftex.def Info: PID.pdf used on input line 1810.
(pdftex.def) Requested size: 597.551pt x 845.07512pt.
@ -1315,7 +1305,7 @@ pdfTeX warning: /usr/bin/pdflatex (file ./PID.pdf): PDF inclusion: found PDF ve
rsion <1.7>, but at most version <1.5> allowed
File: PID.pdf Graphic file (type pdf)
<use PID.pdf>
Package pdftex.def Info: PID.pdf used on input line 1666.
Package pdftex.def Info: PID.pdf used on input line 1810.
(pdftex.def) Requested size: 597.551pt x 845.07512pt.
@ -1325,222 +1315,222 @@ rsion <1.7>, but at most version <1.5> allowed
pdfTeX warning: /usr/bin/pdflatex (file ./PID.pdf): PDF inclusion: found PDF ve
rsion <1.7>, but at most version <1.5> allowed
<PID.pdf, id=1665, page=1, 597.55246pt x 845.07718pt>
<PID.pdf, id=1852, page=1, 597.55246pt x 845.07718pt>
File: PID.pdf Graphic file (type pdf)
<use PID.pdf, page 1>
Package pdftex.def Info: PID.pdf , page1 used on input line 1666.
Package pdftex.def Info: PID.pdf , page1 used on input line 1810.
(pdftex.def) Requested size: 597.551pt x 845.07512pt.
File: PID.pdf Graphic file (type pdf)
<use PID.pdf, page 1>
Package pdftex.def Info: PID.pdf , page1 used on input line 1666.
Package pdftex.def Info: PID.pdf , page1 used on input line 1810.
(pdftex.def) Requested size: 562.1644pt x 795.0303pt.
[79]
[83]
File: PID.pdf Graphic file (type pdf)
<use PID.pdf, page 1>
Package pdftex.def Info: PID.pdf , page1 used on input line 1666.
Package pdftex.def Info: PID.pdf , page1 used on input line 1810.
(pdftex.def) Requested size: 562.1644pt x 795.0303pt.
File: PID.pdf Graphic file (type pdf)
<use PID.pdf, page 1>
Package pdftex.def Info: PID.pdf , page1 used on input line 1666.
Package pdftex.def Info: PID.pdf , page1 used on input line 1810.
(pdftex.def) Requested size: 562.1644pt x 795.0303pt.
File: PID.pdf Graphic file (type pdf)
<use PID.pdf, page 1>
Package pdftex.def Info: PID.pdf , page1 used on input line 1666.
Package pdftex.def Info: PID.pdf , page1 used on input line 1810.
(pdftex.def) Requested size: 562.1644pt x 795.0303pt.
[80 <./PID.pdf>]
[84 <./PID.pdf>]
pdfTeX warning: /usr/bin/pdflatex (file ./PID.pdf): PDF inclusion: found PDF ve
rsion <1.7>, but at most version <1.5> allowed
<PID.pdf, id=1696, page=2, 597.55246pt x 845.07718pt>
<PID.pdf, id=1882, page=2, 597.55246pt x 845.07718pt>
File: PID.pdf Graphic file (type pdf)
<use PID.pdf, page 2>
Package pdftex.def Info: PID.pdf , page2 used on input line 1666.
Package pdftex.def Info: PID.pdf , page2 used on input line 1810.
(pdftex.def) Requested size: 562.1644pt x 795.0303pt.
File: PID.pdf Graphic file (type pdf)
<use PID.pdf, page 2>
Package pdftex.def Info: PID.pdf , page2 used on input line 1666.
Package pdftex.def Info: PID.pdf , page2 used on input line 1810.
(pdftex.def) Requested size: 562.1644pt x 795.0303pt.
File: PID.pdf Graphic file (type pdf)
<use PID.pdf, page 2>
Package pdftex.def Info: PID.pdf , page2 used on input line 1666.
(pdftex.def) Requested size: 562.1644pt x 795.0303pt.
[81 <./PID.pdf>]
pdfTeX warning: /usr/bin/pdflatex (file ./PID.pdf): PDF inclusion: found PDF ve
rsion <1.7>, but at most version <1.5> allowed
<PID.pdf, id=1702, page=3, 597.55246pt x 845.07718pt>
File: PID.pdf Graphic file (type pdf)
<use PID.pdf, page 3>
Package pdftex.def Info: PID.pdf , page3 used on input line 1666.
(pdftex.def) Requested size: 562.1644pt x 795.0303pt.
File: PID.pdf Graphic file (type pdf)
<use PID.pdf, page 3>
Package pdftex.def Info: PID.pdf , page3 used on input line 1666.
(pdftex.def) Requested size: 562.1644pt x 795.0303pt.
File: PID.pdf Graphic file (type pdf)
<use PID.pdf, page 3>
Package pdftex.def Info: PID.pdf , page3 used on input line 1666.
(pdftex.def) Requested size: 562.1644pt x 795.0303pt.
[82 <./PID.pdf>]
pdfTeX warning: /usr/bin/pdflatex (file ./PID.pdf): PDF inclusion: found PDF ve
rsion <1.7>, but at most version <1.5> allowed
<PID.pdf, id=1716, page=4, 597.55246pt x 845.07718pt>
File: PID.pdf Graphic file (type pdf)
<use PID.pdf, page 4>
Package pdftex.def Info: PID.pdf , page4 used on input line 1666.
(pdftex.def) Requested size: 562.1644pt x 795.0303pt.
File: PID.pdf Graphic file (type pdf)
<use PID.pdf, page 4>
Package pdftex.def Info: PID.pdf , page4 used on input line 1666.
(pdftex.def) Requested size: 562.1644pt x 795.0303pt.
File: PID.pdf Graphic file (type pdf)
<use PID.pdf, page 4>
Package pdftex.def Info: PID.pdf , page4 used on input line 1666.
(pdftex.def) Requested size: 562.1644pt x 795.0303pt.
[83 <./PID.pdf>]
pdfTeX warning: /usr/bin/pdflatex (file ./PID.pdf): PDF inclusion: found PDF ve
rsion <1.7>, but at most version <1.5> allowed
<PID.pdf, id=1722, page=5, 597.55246pt x 845.07718pt>
File: PID.pdf Graphic file (type pdf)
<use PID.pdf, page 5>
Package pdftex.def Info: PID.pdf , page5 used on input line 1666.
(pdftex.def) Requested size: 562.1644pt x 795.0303pt.
File: PID.pdf Graphic file (type pdf)
<use PID.pdf, page 5>
Package pdftex.def Info: PID.pdf , page5 used on input line 1666.
(pdftex.def) Requested size: 562.1644pt x 795.0303pt.
File: PID.pdf Graphic file (type pdf)
<use PID.pdf, page 5>
Package pdftex.def Info: PID.pdf , page5 used on input line 1666.
(pdftex.def) Requested size: 562.1644pt x 795.0303pt.
[84 <./PID.pdf>]
pdfTeX warning: /usr/bin/pdflatex (file ./PID.pdf): PDF inclusion: found PDF ve
rsion <1.7>, but at most version <1.5> allowed
<PID.pdf, id=1728, page=6, 597.55246pt x 845.07718pt>
File: PID.pdf Graphic file (type pdf)
<use PID.pdf, page 6>
Package pdftex.def Info: PID.pdf , page6 used on input line 1666.
(pdftex.def) Requested size: 562.1644pt x 795.0303pt.
File: PID.pdf Graphic file (type pdf)
<use PID.pdf, page 6>
Package pdftex.def Info: PID.pdf , page6 used on input line 1666.
(pdftex.def) Requested size: 562.1644pt x 795.0303pt.
File: PID.pdf Graphic file (type pdf)
<use PID.pdf, page 6>
Package pdftex.def Info: PID.pdf , page6 used on input line 1666.
Package pdftex.def Info: PID.pdf , page2 used on input line 1810.
(pdftex.def) Requested size: 562.1644pt x 795.0303pt.
[85 <./PID.pdf>]
pdfTeX warning: /usr/bin/pdflatex (file ./PID.pdf): PDF inclusion: found PDF ve
rsion <1.7>, but at most version <1.5> allowed
<PID.pdf, id=1735, page=7, 597.55246pt x 845.07718pt>
<PID.pdf, id=1889, page=3, 597.55246pt x 845.07718pt>
File: PID.pdf Graphic file (type pdf)
<use PID.pdf, page 7>
Package pdftex.def Info: PID.pdf , page7 used on input line 1666.
<use PID.pdf, page 3>
Package pdftex.def Info: PID.pdf , page3 used on input line 1810.
(pdftex.def) Requested size: 562.1644pt x 795.0303pt.
File: PID.pdf Graphic file (type pdf)
<use PID.pdf, page 7>
Package pdftex.def Info: PID.pdf , page7 used on input line 1666.
<use PID.pdf, page 3>
Package pdftex.def Info: PID.pdf , page3 used on input line 1810.
(pdftex.def) Requested size: 562.1644pt x 795.0303pt.
File: PID.pdf Graphic file (type pdf)
<use PID.pdf, page 7>
Package pdftex.def Info: PID.pdf , page7 used on input line 1666.
<use PID.pdf, page 3>
Package pdftex.def Info: PID.pdf , page3 used on input line 1810.
(pdftex.def) Requested size: 562.1644pt x 795.0303pt.
[86 <./PID.pdf>]
pdfTeX warning: /usr/bin/pdflatex (file ./PID.pdf): PDF inclusion: found PDF ve
rsion <1.7>, but at most version <1.5> allowed
<PID.pdf, id=1742, page=8, 845.07718pt x 597.55246pt>
<PID.pdf, id=1903, page=4, 597.55246pt x 845.07718pt>
File: PID.pdf Graphic file (type pdf)
<use PID.pdf, page 8>
Package pdftex.def Info: PID.pdf , page8 used on input line 1666.
(pdftex.def) Requested size: 795.0303pt x 562.1644pt.
<use PID.pdf, page 4>
Package pdftex.def Info: PID.pdf , page4 used on input line 1810.
(pdftex.def) Requested size: 562.1644pt x 795.0303pt.
File: PID.pdf Graphic file (type pdf)
<use PID.pdf, page 8>
Package pdftex.def Info: PID.pdf , page8 used on input line 1666.
(pdftex.def) Requested size: 795.0303pt x 562.1644pt.
<use PID.pdf, page 4>
Package pdftex.def Info: PID.pdf , page4 used on input line 1810.
(pdftex.def) Requested size: 562.1644pt x 795.0303pt.
File: PID.pdf Graphic file (type pdf)
<use PID.pdf, page 8>
Package pdftex.def Info: PID.pdf , page8 used on input line 1666.
(pdftex.def) Requested size: 795.0303pt x 562.1644pt.
<use PID.pdf, page 4>
Package pdftex.def Info: PID.pdf , page4 used on input line 1810.
(pdftex.def) Requested size: 562.1644pt x 795.0303pt.
[87 <./PID.pdf>]
pdfTeX warning: /usr/bin/pdflatex (file ./PID.pdf): PDF inclusion: found PDF ve
rsion <1.7>, but at most version <1.5> allowed
<PID.pdf, id=1751, page=9, 845.07718pt x 597.55246pt>
<PID.pdf, id=1909, page=5, 597.55246pt x 845.07718pt>
File: PID.pdf Graphic file (type pdf)
<use PID.pdf, page 9>
Package pdftex.def Info: PID.pdf , page9 used on input line 1666.
(pdftex.def) Requested size: 795.0303pt x 562.1644pt.
<use PID.pdf, page 5>
Package pdftex.def Info: PID.pdf , page5 used on input line 1810.
(pdftex.def) Requested size: 562.1644pt x 795.0303pt.
File: PID.pdf Graphic file (type pdf)
<use PID.pdf, page 9>
Package pdftex.def Info: PID.pdf , page9 used on input line 1666.
(pdftex.def) Requested size: 795.0303pt x 562.1644pt.
<use PID.pdf, page 5>
Package pdftex.def Info: PID.pdf , page5 used on input line 1810.
(pdftex.def) Requested size: 562.1644pt x 795.0303pt.
File: PID.pdf Graphic file (type pdf)
<use PID.pdf, page 9>
Package pdftex.def Info: PID.pdf , page9 used on input line 1666.
(pdftex.def) Requested size: 795.0303pt x 562.1644pt.
<use PID.pdf, page 5>
Package pdftex.def Info: PID.pdf , page5 used on input line 1810.
(pdftex.def) Requested size: 562.1644pt x 795.0303pt.
[88 <./PID.pdf>]
pdfTeX warning: /usr/bin/pdflatex (file ./PID.pdf): PDF inclusion: found PDF ve
rsion <1.7>, but at most version <1.5> allowed
<PID.pdf, id=1761, page=10, 845.07718pt x 597.55246pt>
<PID.pdf, id=1915, page=6, 597.55246pt x 845.07718pt>
File: PID.pdf Graphic file (type pdf)
<use PID.pdf, page 10>
Package pdftex.def Info: PID.pdf , page10 used on input line 1666.
(pdftex.def) Requested size: 795.0303pt x 562.1644pt.
<use PID.pdf, page 6>
Package pdftex.def Info: PID.pdf , page6 used on input line 1810.
(pdftex.def) Requested size: 562.1644pt x 795.0303pt.
File: PID.pdf Graphic file (type pdf)
<use PID.pdf, page 10>
Package pdftex.def Info: PID.pdf , page10 used on input line 1666.
(pdftex.def) Requested size: 795.0303pt x 562.1644pt.
<use PID.pdf, page 6>
Package pdftex.def Info: PID.pdf , page6 used on input line 1810.
(pdftex.def) Requested size: 562.1644pt x 795.0303pt.
File: PID.pdf Graphic file (type pdf)
<use PID.pdf, page 10>
Package pdftex.def Info: PID.pdf , page10 used on input line 1666.
(pdftex.def) Requested size: 795.0303pt x 562.1644pt.
<use PID.pdf, page 6>
Package pdftex.def Info: PID.pdf , page6 used on input line 1810.
(pdftex.def) Requested size: 562.1644pt x 795.0303pt.
[89 <./PID.pdf>]
pdfTeX warning: /usr/bin/pdflatex (file ./PID.pdf): PDF inclusion: found PDF ve
rsion <1.7>, but at most version <1.5> allowed
<PID.pdf, id=1773, page=11, 845.07718pt x 597.55246pt>
<PID.pdf, id=1921, page=7, 597.55246pt x 845.07718pt>
File: PID.pdf Graphic file (type pdf)
<use PID.pdf, page 11>
Package pdftex.def Info: PID.pdf , page11 used on input line 1666.
(pdftex.def) Requested size: 795.0303pt x 562.1644pt.
<use PID.pdf, page 7>
Package pdftex.def Info: PID.pdf , page7 used on input line 1810.
(pdftex.def) Requested size: 562.1644pt x 795.0303pt.
File: PID.pdf Graphic file (type pdf)
<use PID.pdf, page 11>
Package pdftex.def Info: PID.pdf , page11 used on input line 1666.
(pdftex.def) Requested size: 795.0303pt x 562.1644pt.
<use PID.pdf, page 7>
Package pdftex.def Info: PID.pdf , page7 used on input line 1810.
(pdftex.def) Requested size: 562.1644pt x 795.0303pt.
File: PID.pdf Graphic file (type pdf)
<use PID.pdf, page 11>
Package pdftex.def Info: PID.pdf , page11 used on input line 1666.
(pdftex.def) Requested size: 795.0303pt x 562.1644pt.
<use PID.pdf, page 7>
Package pdftex.def Info: PID.pdf , page7 used on input line 1810.
(pdftex.def) Requested size: 562.1644pt x 795.0303pt.
[90 <./PID.pdf>]
pdfTeX warning: /usr/bin/pdflatex (file ./PID.pdf): PDF inclusion: found PDF ve
rsion <1.7>, but at most version <1.5> allowed
<PID.pdf, id=1779, page=12, 845.07718pt x 597.55246pt>
<PID.pdf, id=1927, page=8, 845.07718pt x 597.55246pt>
File: PID.pdf Graphic file (type pdf)
<use PID.pdf, page 12>
Package pdftex.def Info: PID.pdf , page12 used on input line 1666.
<use PID.pdf, page 8>
Package pdftex.def Info: PID.pdf , page8 used on input line 1810.
(pdftex.def) Requested size: 795.0303pt x 562.1644pt.
File: PID.pdf Graphic file (type pdf)
<use PID.pdf, page 12>
Package pdftex.def Info: PID.pdf , page12 used on input line 1666.
<use PID.pdf, page 8>
Package pdftex.def Info: PID.pdf , page8 used on input line 1810.
(pdftex.def) Requested size: 795.0303pt x 562.1644pt.
File: PID.pdf Graphic file (type pdf)
<use PID.pdf, page 12>
Package pdftex.def Info: PID.pdf , page12 used on input line 1666.
<use PID.pdf, page 8>
Package pdftex.def Info: PID.pdf , page8 used on input line 1810.
(pdftex.def) Requested size: 795.0303pt x 562.1644pt.
[91 <./PID.pdf>]
Package atveryend Info: Empty hook `BeforeClearDocument' on input line 1670.
[92]
Package atveryend Info: Empty hook `AfterLastShipout' on input line 1670.
pdfTeX warning: /usr/bin/pdflatex (file ./PID.pdf): PDF inclusion: found PDF ve
rsion <1.7>, but at most version <1.5> allowed
<PID.pdf, id=1937, page=9, 845.07718pt x 597.55246pt>
File: PID.pdf Graphic file (type pdf)
<use PID.pdf, page 9>
Package pdftex.def Info: PID.pdf , page9 used on input line 1810.
(pdftex.def) Requested size: 795.0303pt x 562.1644pt.
File: PID.pdf Graphic file (type pdf)
<use PID.pdf, page 9>
Package pdftex.def Info: PID.pdf , page9 used on input line 1810.
(pdftex.def) Requested size: 795.0303pt x 562.1644pt.
File: PID.pdf Graphic file (type pdf)
<use PID.pdf, page 9>
Package pdftex.def Info: PID.pdf , page9 used on input line 1810.
(pdftex.def) Requested size: 795.0303pt x 562.1644pt.
[92 <./PID.pdf>]
pdfTeX warning: /usr/bin/pdflatex (file ./PID.pdf): PDF inclusion: found PDF ve
rsion <1.7>, but at most version <1.5> allowed
<PID.pdf, id=1947, page=10, 845.07718pt x 597.55246pt>
File: PID.pdf Graphic file (type pdf)
<use PID.pdf, page 10>
Package pdftex.def Info: PID.pdf , page10 used on input line 1810.
(pdftex.def) Requested size: 795.0303pt x 562.1644pt.
File: PID.pdf Graphic file (type pdf)
<use PID.pdf, page 10>
Package pdftex.def Info: PID.pdf , page10 used on input line 1810.
(pdftex.def) Requested size: 795.0303pt x 562.1644pt.
File: PID.pdf Graphic file (type pdf)
<use PID.pdf, page 10>
Package pdftex.def Info: PID.pdf , page10 used on input line 1810.
(pdftex.def) Requested size: 795.0303pt x 562.1644pt.
[93 <./PID.pdf>]
pdfTeX warning: /usr/bin/pdflatex (file ./PID.pdf): PDF inclusion: found PDF ve
rsion <1.7>, but at most version <1.5> allowed
<PID.pdf, id=1959, page=11, 845.07718pt x 597.55246pt>
File: PID.pdf Graphic file (type pdf)
<use PID.pdf, page 11>
Package pdftex.def Info: PID.pdf , page11 used on input line 1810.
(pdftex.def) Requested size: 795.0303pt x 562.1644pt.
File: PID.pdf Graphic file (type pdf)
<use PID.pdf, page 11>
Package pdftex.def Info: PID.pdf , page11 used on input line 1810.
(pdftex.def) Requested size: 795.0303pt x 562.1644pt.
File: PID.pdf Graphic file (type pdf)
<use PID.pdf, page 11>
Package pdftex.def Info: PID.pdf , page11 used on input line 1810.
(pdftex.def) Requested size: 795.0303pt x 562.1644pt.
[94 <./PID.pdf>]
pdfTeX warning: /usr/bin/pdflatex (file ./PID.pdf): PDF inclusion: found PDF ve
rsion <1.7>, but at most version <1.5> allowed
<PID.pdf, id=1966, page=12, 845.07718pt x 597.55246pt>
File: PID.pdf Graphic file (type pdf)
<use PID.pdf, page 12>
Package pdftex.def Info: PID.pdf , page12 used on input line 1810.
(pdftex.def) Requested size: 795.0303pt x 562.1644pt.
File: PID.pdf Graphic file (type pdf)
<use PID.pdf, page 12>
Package pdftex.def Info: PID.pdf , page12 used on input line 1810.
(pdftex.def) Requested size: 795.0303pt x 562.1644pt.
File: PID.pdf Graphic file (type pdf)
<use PID.pdf, page 12>
Package pdftex.def Info: PID.pdf , page12 used on input line 1810.
(pdftex.def) Requested size: 795.0303pt x 562.1644pt.
[95 <./PID.pdf>]
Package atveryend Info: Empty hook `BeforeClearDocument' on input line 1814.
[96]
Package atveryend Info: Empty hook `AfterLastShipout' on input line 1814.
(./document.aux)
Package atveryend Info: Executing hook `AtVeryEndDocument' on input line 1670.
Package atveryend Info: Executing hook `AtEndAfterFileList' on input line 1670.
Package atveryend Info: Executing hook `AtVeryEndDocument' on input line 1814.
Package atveryend Info: Executing hook `AtEndAfterFileList' on input line 1814.
@ -1549,39 +1539,45 @@ Package rerunfilecheck Warning: File `document.out' has changed.
(rerunfilecheck) or use package `bookmark'.
Package rerunfilecheck Info: Checksums for `document.out':
(rerunfilecheck) Before: 470E96B1975B93C0FBF2BBDE75CCBC9A;11213
(rerunfilecheck) After: 4282304709601C97B33DDA60BCD897DC;12402.
(rerunfilecheck) Before: CDC279F7387D171F7AA2EB28D466CD78;12655
(rerunfilecheck) After: CD60AF62A8BBB902B6DAD8AA7E67EBB5;12369.
Package logreq Info: Writing requests to 'document.run.xml'.
\openout1 = `document.run.xml'.
)
Here is how much of TeX's memory you used:
24997 strings out of 492982
392577 string characters out of 6134895
25256 strings out of 492982
396294 string characters out of 6134895
1047110 words of memory out of 5000000
27286 multiletter control sequences out of 15000+600000
27406 multiletter control sequences out of 15000+600000
13923 words of font info for 54 fonts, out of 8000000 for 9000
1141 hyphenation exceptions out of 8191
45i,18n,78p,2008b,1818s stack positions out of 5000i,500n,10000p,200000b,80000s
</usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx12.pfb></us
r/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmbxti10.pfb></usr/sh
are/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmex10.pfb></usr/share/te
xlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi10.pfb></usr/share/texlive/
texmf-dist/fonts/type1/public/amsfonts/cm/cmmi12.pfb></usr/share/texlive/texmf-
dist/fonts/type1/public/amsfonts/cm/cmmi8.pfb></usr/share/texlive/texmf-dist/fo
nts/type1/public/amsfonts/cm/cmr10.pfb></usr/share/texlive/texmf-dist/fonts/typ
e1/public/amsfonts/cm/cmr12.pfb></usr/share/texlive/texmf-dist/fonts/type1/publ
ic/amsfonts/cm/cmr17.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsf
onts/cm/cmr6.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/
cmr8.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy10.p
fb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy6.pfb></us
r/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy8.pfb></usr/share
/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmti12.pfb></usr/share/texli
ve/texmf-dist/fonts/type1/public/amsfonts/cm/cmtt12.pfb>
Output written on document.pdf (92 pages, 1545451 bytes).
PDF statistics:
2036 PDF objects out of 2073 (max. 8388607)
1869 compressed objects within 19 object streams
926 named destinations out of 1000 (max. 500000)
704 words of extra memory for PDF output out of 10000 (max. 10000000)
45i,18n,78p,2008b,1820s stack positions out of 5000i,500n,10000p,200000b,80000s
pdfTeX warning (dest): name{subsection.10.9} has been referenced but does not
exist, replaced by a fixed one
pdfTeX warning (dest): name{subsection.10.8} has been referenced but does not e
xist, replaced by a fixed one
</usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx12.pfb></usr/
share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmbxti10.pfb></usr/shar
e/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmex10.pfb></usr/share/texl
ive/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi10.pfb></usr/share/texlive/te
xmf-dist/fonts/type1/public/amsfonts/cm/cmmi12.pfb></usr/share/texlive/texmf-di
st/fonts/type1/public/amsfonts/cm/cmmi8.pfb></usr/share/texlive/texmf-dist/font
s/type1/public/amsfonts/cm/cmr10.pfb></usr/share/texlive/texmf-dist/fonts/type1
/public/amsfonts/cm/cmr12.pfb></usr/share/texlive/texmf-dist/fonts/type1/public
/amsfonts/cm/cmr17.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfon
ts/cm/cmr6.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cm
r8.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy10.pfb
></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy6.pfb></usr/
share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy8.pfb></usr/share/t
exlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmti12.pfb></usr/share/texlive
/texmf-dist/fonts/type1/public/amsfonts/cm/cmtt12.pfb>
Output written on document.pdf (96 pages, 1570495 bytes).
PDF statistics:
2249 PDF objects out of 2487 (max. 8388607)
2076 compressed objects within 21 object streams
1065 named destinations out of 1200 (max. 500000)
768 words of extra memory for PDF output out of 10000 (max. 10000000)

View File

@ -60,11 +60,11 @@
\BOOKMARK [3][-]{subsubsection.10.3.4}{\376\377\000M\000e\000t\000r\000i\000c\000s}{subsection.10.3}% 60
\BOOKMARK [2][-]{subsection.10.4}{\376\377\000S\000e\000n\000t\000i\000m\000e\000n\000t\000\040\000A\000n\000a\000l\000y\000s\000i\000s}{section.10}% 61
\BOOKMARK [2][-]{subsection.10.5}{\376\377\000R\000e\000c\000u\000r\000r\000e\000n\000t\000\040\000N\000e\000u\000r\000a\000l\000\040\000N\000e\000t\000w\000o\000r\000k\000\040\000-\000\040\000L\000S\000T\000M}{section.10}% 62
\BOOKMARK [3][-]{subsubsection.10.5.1}{\376\377\000T\000r\000a\000i\000n\000i\000n\000g\000\040\000a\000n\000d\000\040\000T\000e\000s\000t\000i\000n\000g\000\040\000M\000o\000d\000e\000l}{subsection.10.5}% 63
\BOOKMARK [3][-]{subsubsection.10.5.2}{\376\377\000S\000c\000o\000r\000i\000n\000g\000\040\000a\000n\000d\000\040\000V\000a\000l\000i\000d\000a\000t\000i\000o\000n}{subsection.10.5}% 64
\BOOKMARK [2][-]{subsection.10.6}{\376\377\000F\000u\000t\000u\000r\000e\000\040\000P\000r\000e\000d\000i\000c\000t\000i\000o\000n\000\040\000F\000o\000r\000e\000c\000a\000s\000t\000i\000n\000g}{section.10}% 65
\BOOKMARK [2][-]{subsection.10.7}{\376\377\000M\000a\000i\000n\000\040\000F\000i\000l\000e\000\040\000'\000M\000a\000i\000n\000.\000p\000y\000'}{section.10}% 66
\BOOKMARK [2][-]{subsection.10.8}{\376\377\000M\000i\000s\000c\000e\000l\000l\000a\000n\000e\000o\000u\000s}{section.10}% 67
\BOOKMARK [3][-]{subsubsection.10.5.1}{\376\377\000S\000c\000r\000i\000p\000t\000\040\000E\000x\000e\000c\000u\000t\000i\000o\000n}{subsection.10.5}% 63
\BOOKMARK [3][-]{subsubsection.10.5.2}{\376\377\000D\000a\000t\000a\000s\000e\000t\000\040\000C\000r\000e\000a\000t\000i\000o\000n}{subsection.10.5}% 64
\BOOKMARK [3][-]{subsubsection.10.5.3}{\376\377\000T\000r\000a\000i\000n\000i\000n\000g\000\040\000a\000n\000d\000\040\000T\000e\000s\000t\000i\000n\000g\000\040\000M\000o\000d\000e\000l}{subsection.10.5}% 65
\BOOKMARK [2][-]{subsection.10.6}{\376\377\000F\000u\000t\000u\000r\000e\000\040\000P\000r\000e\000d\000i\000c\000t\000i\000o\000n\000\040\000F\000o\000r\000e\000c\000a\000s\000t\000i\000n\000g}{section.10}% 66
\BOOKMARK [2][-]{subsection.10.7}{\376\377\000U\000s\000e\000r\000\040\000I\000n\000t\000e\000r\000f\000a\000c\000e}{section.10}% 67
\BOOKMARK [1][-]{section.11}{\376\377\000T\000e\000s\000t\000i\000n\000g\000\040\000M\000e\000t\000r\000i\000c\000s\000\040\000a\000n\000d\000\040\000A\000c\000c\000u\000r\000a\000c\000y}{}% 68
\BOOKMARK [1][-]{section.12}{\376\377\000P\000r\000o\000j\000e\000c\000t\000\040\000E\000v\000a\000l\000u\000a\000t\000i\000o\000n}{}% 69
\BOOKMARK [1][-]{section.13}{\376\377\000D\000i\000s\000c\000u\000s\000s\000i\000o\000n\000:\000\040\000C\000o\000n\000t\000r\000i\000b\000u\000t\000i\000o\000n\000\040\000a\000n\000d\000\040\000R\000e\000f\000l\000e\000c\000t\000i\000o\000n}{}% 70

Binary file not shown.

Binary file not shown.

View File

@ -1103,7 +1103,6 @@ def on_data(self, data):
\subsection{Data pre-processing}\label{processing}
Various techniques and tools have been utilised throughout the development of the system to process the data appropriately so it can be parsed by VADER, spam filter and neural network. This section will cover the crucial functions that provide such functionalities and that are called throughout the system, as seen in some of the above code snippets.
\newline
\subsubsection{Tweet Filtering}
@ -1143,7 +1142,6 @@ class utilityFuncs():
Due to VADER being a lexicon-based sentiment analyser little data pre-processing needs conducting on the tweet text. The functions above primarily remove unnecessary text from the tweet that will either provide no insight into public opinion or can obstruct a proper classification of the sentiment - such as the existence of URLs in the given text. Additionally, the 'clean\_tweet' function removes the emojis in the given text if any are presently using the emoji package - which in turn is another lexicon that compares the given text to any emoticon contained within the lexicon. These are removed at this stage but are later re-added back to the text as VADER support emoticon classification.
The last function in 'utility functions', 'checkLength' splits the text up into individual words (tokens - a process of tokenisation), this is used to check the total length of a tweet. If the tweet is less than five words it is dropped from classification, this is due to
\newline
\subsubsection{Language detection filtering}
@ -1191,7 +1189,6 @@ def detectLaguage(self, text):
This function uses several natural languages pre-processing techniques to identify the most predominant language for a given text. It accomplishes this by first tokenising the text into tokens and converting them to lower case - this is so that the stopwords can be identified. For each of the languages supported by the Natural Language Toolkit Python package, the stopwords are identified in the text and compared to the stopwords in the language corpus' in NLTK. The ratios for the individual languages are formed, and then the predominant language identified. If the language is not predominantly English, the tweet is dropped. There is however an issue with this approach, if a tweet contains too many special characters - characters that are allowed, the tweet occasionally is not classified as English even when it predominantly is upon visual inspection; therefore the tweet is dropped and not processed. This isn't a significant issue as about 3000 tweets can be collected in an hour, and some of these would be filtered out by the spam filter regardless.
Additionally, an n-grams method could be used to distinguish the language of a given text and may perform more accurately than the word-based approach that was implemented \cite{39}. This could be a later improvement as the word-based approach is sufficient and requires a corpus for each language to compare against to be presented. Therefore it could be used as a comparison between approaches and seen as a possible improvement.
\newline
\subsubsection{Spam filter - Tokenisation, Ngrams, Stopword removal and Stemming}
@ -1239,7 +1236,7 @@ def processTweet(tweet, gram = 2):
As discovered from \cite{40}, lemmatisation could be an alternative and arguably a better solution to stemming. Lemmatization works fundamentally the same as stemming but reduces the inflected words properly ensuring that a root word belongs to a language. Using the same words that are used to describe stemming, lemmatisation reduces 'goes' to 'go' and 'leaves' to 'leaf' - removing the suffixes down to create the actual root word.
Although lemmatisation will provide the classifier with an actual English word, regardless stemming will still reduce the words down to the same form, this added with a lemmatiser needing a corpus for classifying the words to their root words and additional computational time to do so, the former of using a stemmer is sufficient.
\newpage
\subsection{Spam Filtering}
This section of the implementation will describe how the spam filter is initialised in the \textit{tweet\_collector}, how it is trained and how it classifies tweets as being either spam or ham (wanted data).
@ -1524,112 +1521,231 @@ class get_sentiment(object):
\newpage
\subsection{Recurrent Neural Network - LSTM}
This section of the implementation describes and discusses how the LSTM neural network is configured, trained, tested and used to create the model later used for price forecasting for both neural networks - with and without hourly sentiment embedded in datasets. Its performance metrics that were calculated to verify the accuracy for the model, appropriate to regression models and K-fold validation implementation are discussed.
Packages used for both neural networks, with and without hourly sentiment embedded with price data:
\begin{lstlisting}[language=python, caption=LSTM packages]
import pandas as pd
import numpy as np
from math import sqrt
import matplotlib.pyplot as plt
from sklearn.preprocessing import MinMaxScaler, LabelEncoder
from sklearn.metrics import mean_squared_error, classification_report
from keras.models import Sequential
from keras.layers import Dense, LSTM, Dropout
import keras.backend as K
from sklearn.model_selection import StratifiedKFold, cross_val_score
from time import sleep
from datetime import datetime, timedelta
import csv, sys, json
from tqdm import tqdm
from keras_tqdm import TQDMCallback
\end{lstlisting}
Additionally, this section only shows code from the neural network that has the sentiment embedded in the datasets; comments are made in the code snippets with the reduced code that consists of the neural network and is due to each neural network having almost the same code. The reasons behind not implementing both networks in the same Python script was down to perform. Due to Python executing code synchronously and due the neural networks needing to ran on the dot of an hour and at the same time the code was divided and executed individually. This also reduced the need to recode most of the functions to loop and perform tasks for each network at every given stage of the network even if the majority of the code was duplicated.
\newpage
\subsubsection{Script Execution}
\begin{lstlisting}[language=python, caption=Start of execution of the LSTM script]
import pandas as pd
import csv
...
class Network(object):
def __init__(self, merged_lstm_data):
self.lstm_data = merged_lstm_data
...
# Merges hourly and price data into one CSV
### Occurs for both neural networks but only specific columns are used in each
merged = pd.merge(left=price_file, right=tweet_file, how="inner")
print("merge length", len(merged))
merged.to_csv('merged_lstm_data.csv')
# Initialise network and pass merged data
network = Network(merged)
# Calls the dataset creation function from the network class
network.data()
# Calls the future trading function which starts forecasting the price for next hour
network.future_trading(live_price, live_sentiment, predictions_file)
\end{lstlisting}
\subsubsection{Dataset Creation}
\textit{Listing 19} shows how the datasets for training (train\_X and train\_Y) and testing (test\_X and test\_Y) are formed and shaped for model training. A look back of 2 is used to create a timestep of one record to ensure predictions are forecasted for the next record. Prices are also scaled between 0 and 1 due to sentiment ranging in the same values and is a standard for model creation to speed up regression and model training as the data is of smaller values - using the scikit-learns MinMaxScaler function.
\newline
\begin{lstlisting}[language=python, caption=Dataset creation and preprocessing]
def data(self):
self.preprocess()
# Pre-process and extract required data from dataset
loopback = 2
# Set lookback for dataset creation - for 1 record timestep
train_X, train_Y = self.create_sets(self.price_train, loopback, self.sentiment_data[0:self.price_train_size])
test_X, test_Y = self.create_sets(self.price_test, loopback, self.sentiment_data[self.price_train_size:len(self.scaledPrice)])
## Create datasets (!sentiment parameters are not passed into the neural network the doesn't embedded the sentiment alongside price data!)
train_X = np.reshape(train_X, (train_X.shape[0], 1, train_X.shape[1]))
test_X = np.reshape(test_X, (test_X.shape[0], 1, test_X.shape[1]))
self.model_network(train_X, train_Y, test_X, test_Y)
# Call network function to train network
def create_sets(self, data, lookback, sentiment):
data_X, data_Y = [], []
for i in range(len(data) - lookback):
if i >= lookback:
# Sets timestep if data by a record
pos = data[i-lookback:i+1, 0]
pos = pos.tolist()
# Append sentiment at position of hours price
pos.append(sentiment[i].tolist()[0])
## Above pos is not conducted on neural network with no sentiment embedded pos.append(0) occurs instead
data_X.append(pos)
data_Y.append(data[i + lookback, 0])
return np.array(data_X), np.array(data_Y)
\end{lstlisting}
\subsubsection{Training and Testing Model}
Dropouts?
\subsubsection{Scoring and Validation}
Loss?
The neural network is set up with four layers each of which configured with 100 LSTM cells, with a dropout of 0.2 each, and returning sequences to each other layer. A dropout was used to ensure that the data would not be overfitted, by setting the dropout to 0.2 probability, 80\% of the data on each layer would be retained for the next layer. Return sequences allow for the returning of the hidden state output for each time step and ensures the next LSTM layer has 2 inputs that carry over from the previous layer, which are the old weights and value outputs from the previous layer.
\begin{lstlisting}[language=python, caption=LSTM model creation\, layering\, compiling and fitting]
self.model = Sequential()
## 1st layer - input layer
self.model.add(LSTM(100, input_shape=(train_X.shape[1], train_X.shape[2]), return_sequences=True))
self.model.add(Dropout(0.2))
## 2nd Layer
self.model.add(LSTM(100, return_sequences=True))
self.model.add(Dropout(0.2))
## 3rd Layer
self.model.add(LSTM(100, return_sequences=True))
self.model.add(Dropout(0.2))
## 4th Layer without sequences
self.model.add(LSTM(100))
self.model.add(Dropout(0.2))
self.model.add(Dense(1))
self.model.compile(loss='mean_squared_error', optimizer='adam', metrics=['mse', 'mae', 'mape'])
self.model.summary()
# Model summary of params and dropout at each layer
history = self.model.fit(train_X, train_Y, epochs=200, batch_size=1000, validation_data=(test_X, test_Y), verbose=0, shuffle=False, callbacks=[TQDMCallback()])
yhat = self.model.predict(test_X)
scale = self.scale
scaledPrice = self.scaledPrice
yhat_inverse_sent = scale.inverse_transform(yhat.reshape(-1, 1))
testY_inverse_sent = scale.inverse_transform(test_Y.reshape(-1, 1))
\end{lstlisting}
As per the discussion in the literature review, the Adam optimiser was used for the compilation of the model. The loss was calculated using the mean squared error and the metrics calculated and returned to present the accuracy of the model in prediction were: mean squared error, root mean squared error, mean absolute error and mean absolute percentage error. Both the metrics and prediction made are saved to a CSV that is then presented to users in the server-hosted UI.
The model was fitted on the training sets (X, Y) over 200 epochs with a batch size of 1000 on about 11000 records - which was the total amount of data used to train for a year. Predictions are then made using the test set resulting in the predictions of 'yhat' which is inverted and rescaled to get original price values to save to a CSV and also displayed on the user interface.
\subsection{Future Prediction Forecasting}
\begin{lstlisting}[language=python, caption=]
def remodel(self, price_file, previous_sent, live_price, live_sentiment, predictions_file):
price = pd.read_csv(live_price)
sentiment = pd.read_csv(live_sentiment)
\subsection{Main File 'Main.py'}
price_tail = price.tail(5)
sentiment_tail = sentiment.tail(5)
## Get last 5 live prices and predict on them
\subsection{Miscellaneous}
price_tail.index = price_tail['created_at']
sentiment_tail.index = sentiment_tail['created_at']
API keys for accessing the Twitter API - use by Tweepy to access said API, along with loading the defined hashtag filtering. This parameter allows for the streaming of the hashtag specified, as for this project it is set for the \textit{'\#Bitcoin'} and \textit{'\#bitcoin'} hashtags.
\begin{lstlisting}[language=python, caption=keys class - loads API keys for access]
if __name__ == '__main__':
## Example gets last 5 records for some reason
price = price_tail['price'].values.reshape(-1,1)
sentiment = sentiment_tail['compound'].values.reshape(-1,1)
price_scale = self.scale.fit_transform(price)
testX, testY = self.create_sets(price_scale, 2, sentiment)
testX = np.reshape(testX, (testX.shape[0], 1, testX.shape[1]))
yhat = self.model.predict(testX)
yhat_inverse = self.scale.inverse_transform(yhat.reshape(-1, 1))
testY_inverse = self.scale.inverse_transform(testY.reshape(-1, 1))
rmse_sent = sqrt(mean_squared_error(testY_inverse, yhat_inverse))
print('Test RMSE: %.3f' % rmse_sent)
## Calculate RMSE for prediction
difference = ((yhat_inverse[0][0]-self.previous_val)/self.previous_val)*100
# Caclulate difference between hour predictions for threshold action prediction (below)
...
hashtag = keys().currency_hashtags
hashtag = hashtag.split(', ')
## Suggest market action based on 0.25 threshold (2.5%)
if difference >= self.threshold:
print("Buy")
self.state = 'BUY'
elif difference < self.threshold:
print("Sell")
self.state = 'SELL'
else:
print("Prediction Error!")
...
self.test_Y_updating = np.concatenate((self.test_Y_updating, testY_inverse))
self.yhat_updating = np.concatenate((self.yhat_updating, yhat_inverse))
## Output plots to json for display on UI
...
with open('data/updating.json', mode='w') as file:
for x in range(len(cat)):
xs[x] = {'index' : x, 'testY_inverse': cat[x][0], 'yhat_inverse' : cat[x][1]}
json.dump(xs, file, indent=3)
...
...
## Output prediction made for hour to CSV file for use in UI
try:
with open(predictions_file, mode='a') as csv_file:
...
writer.writerow({'created_at': now.strftime("%Y-%m-%d %H:00:00"), 'next_hour_price': hour, 'current_price': current, 'current_sentiment': senti, 'state': self.state})
except Exception as e:
print("Error: %s" % str(e))
sys.stdout.flush()
# Set the predicted value of current hour
self.previous_val = yhat_inverse[0][0] ##THE NEXT PREDICTED VALUE IN AN HOUR
\end{lstlisting}
VADER lexicon customisation to a specific topic domain
\subsection{User Interface}
\begin{lstlisting}[language=python, caption=VADER sentiment analyser function]
def set_newSentiment(self):
print("Console: ", "Adding marketing words and sentiment to lexicon...")
new_sentiment = {
'bull' : 2,
'bear' : -2,
'bullish' : 3.5,
'bearish' : -3.5,
'up' : 1.5,
'down' : -1.5,
'high' : 2.9,
'low' : -2.9,
'higher' : 2.8,
'lower' : -2.8,
'absconded' : -2.0,
'maximalists' : -2.4,
'regulate' : -2.3,
'infamous' : 2.2,
'trade higher' : 2.0,
'trade lower' : -2.0,
'revival' : 2.8,
'centralized' : -2.2,
'decentralized' : 2.2,
'centralised' : -2.2,
'decentralised' : 2.2,
'decentralization' : 2.3,
'decentralisation' : 2.3,
'centralization' : -2.3,
'centralisation' : -2.3,
'bans' : -2.6,
'hodl' : 2.8,
'ambiguity' : -2.4,
'revolutionize' : 2.1,
'revolutionise' : 2.1,
'consolidation' : 2.5,
'shorts' : -2.3,
'longs' : 2.3,
'long' : 2.2,
'short' : -2.2,
'shorting' : -2.8,
'grow' : 2.2,
'volatile' : -1.9,
'rally' : 2.9,
'rallying' : 2.7,
'noob' : -1.7,
'noobs' : -1.9,
'innovation' : 1.4,
'bottom' : -1.4,
'top' : 1.4,
'topped' : 1.5,
'bottomed' : -1.5,
'upwards' : 1.7,
'downwards' : -1.7,
'invest' : 2.0,
'raging' : 3.0,
'rocketing' : 3.1,
'swing' : 1.3,
'swinging' : 1.2,
'stake' : 1.4,
'whale' : -2.2,
'whales' : -2.3,
'lull' : -2.1,
'moon' : 2.7,
'choppy' : -1.2,
'buy' : 1.9,
'buying' : 1.7,
'sell' : -1.7,
'selling' : -1.9,
'start selling' : -2.3,
'stop selling' : 1.4,
'start buying' : 2.3,
'stop buying' : -1.4
}
self.analyser.lexicon.update(new_sentiment)
\end{lstlisting}
\newpage
\section{Testing Metrics and Accuracy}
mean bias Error
k-fold cross validation was attempted, but issues with continuous data
\newpage
\section{Project Evaluation}

View File

@ -108,9 +108,9 @@
\defcounter {refsection}{0}\relax
\contentsline {subsubsection}{\numberline {10.2.2}Language detection filtering}{57}{subsubsection.10.2.2}
\defcounter {refsection}{0}\relax
\contentsline {subsubsection}{\numberline {10.2.3}Spam filter - Tokenisation, Ngrams, Stopword removal and Stemming}{59}{subsubsection.10.2.3}
\contentsline {subsubsection}{\numberline {10.2.3}Spam filter - Tokenisation, Ngrams, Stopword removal and Stemming}{58}{subsubsection.10.2.3}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {10.3}Spam Filtering}{60}{subsection.10.3}
\contentsline {subsection}{\numberline {10.3}Spam Filtering}{61}{subsection.10.3}
\defcounter {refsection}{0}\relax
\contentsline {subsubsection}{\numberline {10.3.1}Naive Bayes model}{63}{subsubsection.10.3.1}
\defcounter {refsection}{0}\relax
@ -124,32 +124,32 @@
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {10.5}Recurrent Neural Network - LSTM}{69}{subsection.10.5}
\defcounter {refsection}{0}\relax
\contentsline {subsubsection}{\numberline {10.5.1}Training and Testing Model}{69}{subsubsection.10.5.1}
\contentsline {subsubsection}{\numberline {10.5.1}Script Execution}{70}{subsubsection.10.5.1}
\defcounter {refsection}{0}\relax
\contentsline {subsubsection}{\numberline {10.5.2}Scoring and Validation}{69}{subsubsection.10.5.2}
\contentsline {subsubsection}{\numberline {10.5.2}Dataset Creation}{70}{subsubsection.10.5.2}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {10.6}Future Prediction Forecasting}{69}{subsection.10.6}
\contentsline {subsubsection}{\numberline {10.5.3}Training and Testing Model}{72}{subsubsection.10.5.3}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {10.7}Main File 'Main.py'}{69}{subsection.10.7}
\contentsline {subsection}{\numberline {10.6}Future Prediction Forecasting}{73}{subsection.10.6}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {10.8}Miscellaneous}{69}{subsection.10.8}
\contentsline {subsection}{\numberline {10.7}User Interface}{75}{subsection.10.7}
\defcounter {refsection}{0}\relax
\contentsline {section}{\numberline {11}Testing Metrics and Accuracy}{72}{section.11}
\contentsline {section}{\numberline {11}Testing Metrics and Accuracy}{76}{section.11}
\defcounter {refsection}{0}\relax
\contentsline {section}{\numberline {12}Project Evaluation}{73}{section.12}
\contentsline {section}{\numberline {12}Project Evaluation}{77}{section.12}
\defcounter {refsection}{0}\relax
\contentsline {section}{\numberline {13}Discussion: Contribution and Reflection}{73}{section.13}
\contentsline {section}{\numberline {13}Discussion: Contribution and Reflection}{77}{section.13}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {13.1}Limitations}{73}{subsection.13.1}
\contentsline {subsection}{\numberline {13.1}Limitations}{77}{subsection.13.1}
\defcounter {refsection}{0}\relax
\contentsline {section}{\numberline {14}Conclusion and Future Improvements}{74}{section.14}
\contentsline {section}{\numberline {14}Conclusion and Future Improvements}{78}{section.14}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {14.1}Conclusion}{74}{subsection.14.1}
\contentsline {subsection}{\numberline {14.1}Conclusion}{78}{subsection.14.1}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {14.2}Future Improvements}{74}{subsection.14.2}
\contentsline {subsection}{\numberline {14.2}Future Improvements}{78}{subsection.14.2}
\defcounter {refsection}{0}\relax
\contentsline {section}{\numberline {15}Appendices}{79}{section.15}
\contentsline {section}{\numberline {15}Appendices}{83}{section.15}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {15.1}Appendix A - Project Initiation Document}{79}{subsection.15.1}
\contentsline {subsection}{\numberline {15.1}Appendix A - Project Initiation Document}{83}{subsection.15.1}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {15.2}Appendix B - Log book}{92}{subsection.15.2}
\contentsline {subsection}{\numberline {15.2}Appendix B - Log book}{96}{subsection.15.2}