This commit is contained in:
Andy Sotheran 2019-04-27 19:22:32 +01:00
parent 09158b99f6
commit ba4ff09a48
13 changed files with 1234 additions and 1027 deletions

View File

@ -29,8 +29,8 @@
\newlabel{acknowledgements}{{2}{3}{Acknowledgements}{section.2}{}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {section}{\numberline {3}Glossary}{4}{section.3}}
\newlabel{glossary}{{3}{4}{Glossary}{section.3}{}}
\abx@aux@cite{1}
\abx@aux@segm{0}{0}{1}
\abx@aux@cite{SaTdpsmm}
\abx@aux@segm{0}{0}{SaTdpsmm}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {section}{\numberline {4}Introduction}{8}{section.4}}
\newlabel{introduction}{{4}{8}{Introduction}{section.4}{}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {section}{\numberline {5}Problem Articulation}{10}{section.5}}
@ -40,270 +40,281 @@
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {5.2}Stakeholders}{10}{subsection.5.2}}
\newlabel{stakeholders}{{5.2}{10}{Stakeholders}{subsection.5.2}{}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {5.3}Project Motivation}{11}{subsection.5.3}}
\abx@aux@cite{2}
\abx@aux@segm{0}{0}{2}
\abx@aux@cite{3}
\abx@aux@segm{0}{0}{3}
\abx@aux@cite{4}
\abx@aux@segm{0}{0}{4}
\abx@aux@segm{0}{0}{1}
\abx@aux@cite{nlAeiBTCPSO}
\abx@aux@segm{0}{0}{nlAeiBTCPSO}
\abx@aux@cite{BTCFTsent}
\abx@aux@segm{0}{0}{BTCFTsent}
\abx@aux@cite{BTCRNN}
\abx@aux@segm{0}{0}{BTCRNN}
\abx@aux@segm{0}{0}{SaTdpsmm}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {5.4}Technical Specification}{13}{subsection.5.4}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {5.5}Project Constraints}{15}{subsection.5.5}}
\newlabel{constraints}{{5.5}{15}{Project Constraints}{subsection.5.5}{}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {section}{\numberline {6}Quality Goals}{15}{section.6}}
\abx@aux@segm{0}{0}{3}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {section}{\numberline {7}Literature Review}{16}{section.7}}
\newlabel{literature}{{7}{16}{Literature Review}{section.7}{}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {7.1}Existing Tools}{16}{subsection.7.1}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {7.2}Related research}{16}{subsection.7.2}}
\abx@aux@segm{0}{0}{1}
\abx@aux@cite{5}
\abx@aux@segm{0}{0}{5}
\abx@aux@cite{6}
\abx@aux@segm{0}{0}{6}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {7.3}Data Collection}{17}{subsection.7.3}}
\newlabel{tweet_collection}{{7.3}{17}{Data Collection}{subsection.7.3}{}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {7.3.1}Twitter and Twitter API}{17}{subsubsection.7.3.1}}
\abx@aux@cite{7}
\abx@aux@segm{0}{0}{7}
\abx@aux@cite{8}
\abx@aux@segm{0}{0}{8}
\abx@aux@cite{9}
\abx@aux@segm{0}{0}{9}
\abx@aux@segm{0}{0}{7}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {7.3.2}Tweepy Python Package}{18}{subsubsection.7.3.2}}
\abx@aux@segm{0}{0}{1}
\abx@aux@segm{0}{0}{3}
\abx@aux@segm{0}{0}{6}
\abx@aux@cite{10}
\abx@aux@segm{0}{0}{10}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {7.4}Sentiment Analysis}{19}{subsection.7.4}}
\newlabel{sentiment}{{7.4}{19}{Sentiment Analysis}{subsection.7.4}{}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {7.4.1}Natural Language Processing}{19}{subsubsection.7.4.1}}
\newlabel{algorithms}{{7.4.1}{19}{Natural Language Processing}{subsubsection.7.4.1}{}}
\abx@aux@cite{11}
\abx@aux@segm{0}{0}{11}
\abx@aux@cite{12}
\abx@aux@segm{0}{0}{12}
\abx@aux@segm{0}{0}{12}
\abx@aux@segm{0}{0}{12}
\abx@aux@cite{13}
\abx@aux@segm{0}{0}{13}
\abx@aux@segm{0}{0}{12}
\abx@aux@segm{0}{0}{12}
\abx@aux@segm{0}{0}{12}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {7.4.2}Valence Aware Dictionary and sEntiment Reasoning}{20}{subsubsection.7.4.2}}
\newlabel{Vader}{{7.4.2}{20}{Valence Aware Dictionary and sEntiment Reasoning}{subsubsection.7.4.2}{}}
\abx@aux@cite{14}
\abx@aux@segm{0}{0}{14}
\abx@aux@cite{15}
\abx@aux@segm{0}{0}{15}
\abx@aux@cite{16}
\abx@aux@segm{0}{0}{16}
\abx@aux@segm{0}{0}{15}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {7.5}Neural Networks}{21}{subsection.7.5}}
\newlabel{networks}{{7.5}{21}{Neural Networks}{subsection.7.5}{}}
\abx@aux@cite{17}
\abx@aux@segm{0}{0}{17}
\abx@aux@cite{18}
\abx@aux@segm{0}{0}{18}
\abx@aux@cite{19}
\abx@aux@segm{0}{0}{19}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {7.5.1}Recurrent Neural Network (RNN)}{22}{subsubsection.7.5.1}}
\newlabel{types}{{7.5.1}{22}{Recurrent Neural Network (RNN)}{subsubsection.7.5.1}{}}
\abx@aux@cite{20}
\abx@aux@segm{0}{0}{20}
\abx@aux@cite{21}
\abx@aux@segm{0}{0}{21}
\abx@aux@cite{22}
\abx@aux@segm{0}{0}{22}
\abx@aux@segm{0}{0}{22}
\abx@aux@cite{23}
\abx@aux@segm{0}{0}{23}
\abx@aux@segm{0}{0}{23}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {7.5.2}Long-Short Term Memory (LSTM)}{23}{subsubsection.7.5.2}}
\newlabel{lstms}{{7.5.2}{23}{Long-Short Term Memory (LSTM)}{subsubsection.7.5.2}{}}
\abx@aux@segm{0}{0}{22}
\abx@aux@segm{0}{0}{23}
\abx@aux@cite{24}
\abx@aux@segm{0}{0}{24}
\abx@aux@segm{0}{0}{22}
\abx@aux@cite{25}
\abx@aux@segm{0}{0}{25}
\abx@aux@segm{0}{0}{25}
\abx@aux@cite{26}
\abx@aux@segm{0}{0}{26}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {7.5.3}Keras and TensorFlow}{24}{subsubsection.7.5.3}}
\abx@aux@cite{27}
\abx@aux@segm{0}{0}{27}
\abx@aux@cite{28}
\abx@aux@segm{0}{0}{28}
\abx@aux@segm{0}{0}{28}
\abx@aux@segm{0}{0}{28}
\abx@aux@cite{29}
\abx@aux@segm{0}{0}{29}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {7.5.4}Optimisers}{25}{subsubsection.7.5.4}}
\abx@aux@cite{30}
\abx@aux@segm{0}{0}{30}
\abx@aux@cite{31}
\abx@aux@segm{0}{0}{31}
\abx@aux@segm{0}{0}{30}
\abx@aux@cite{32}
\abx@aux@segm{0}{0}{32}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {7.6}Machine Learning}{27}{subsection.7.6}}
\newlabel{machine}{{7.6}{27}{Machine Learning}{subsection.7.6}{}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {7.6.1}Naive Bayes}{27}{subsubsection.7.6.1}}
\abx@aux@segm{0}{0}{32}
\abx@aux@cite{33}
\abx@aux@segm{0}{0}{33}
\abx@aux@segm{0}{0}{33}
\abx@aux@segm{0}{0}{33}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {7.7}Bag Of Words}{28}{subsection.7.7}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {7.8}TF-IDF}{28}{subsection.7.8}}
\abx@aux@cite{34}
\abx@aux@segm{0}{0}{34}
\abx@aux@segm{0}{0}{34}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {7.9}Addictive Smoothing}{29}{subsection.7.9}}
\abx@aux@cite{35}
\abx@aux@segm{0}{0}{35}
\abx@aux@segm{0}{0}{7}
\abx@aux@segm{0}{0}{8}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {section}{\numberline {8}Solution Approach}{30}{section.8}}
\newlabel{solution}{{8}{30}{Solution Approach}{section.8}{}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {8.1}Data gathering}{30}{subsection.8.1}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {8.2}Data pre-processing}{31}{subsection.8.2}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {8.3}Spam Filtering}{31}{subsection.8.3}}
\abx@aux@segm{0}{0}{12}
\abx@aux@segm{0}{0}{12}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {8.4}Language Detection}{32}{subsection.8.4}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {8.5}Sentiment Analysis}{32}{subsection.8.5}}
\abx@aux@segm{0}{0}{12}
\abx@aux@segm{0}{0}{11}
\abx@aux@segm{0}{0}{22}
\abx@aux@segm{0}{0}{5}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {8.6}Neural Network}{33}{subsection.8.6}}
\abx@aux@segm{0}{0}{25}
\abx@aux@segm{0}{0}{25}
\abx@aux@cite{36}
\abx@aux@segm{0}{0}{36}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {8.7}Price Forecasting}{35}{subsection.8.7}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {8.8}Frontend Application}{35}{subsection.8.8}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {8.9}With reference to Initial PID}{35}{subsection.8.9}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {8.10}Solution Summary}{36}{subsection.8.10}}
\newlabel{summary}{{8.10}{36}{Solution Summary}{subsection.8.10}{}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {8.11}Data flow Overview}{37}{subsection.8.11}}
\newlabel{data-flow}{{8.11}{37}{Data flow Overview}{subsection.8.11}{}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {section}{\numberline {9}System Design}{38}{section.9}}
\newlabel{Design}{{9}{38}{System Design}{section.9}{}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {9.1}Dataflow Designs}{38}{subsection.9.1}}
\abx@aux@segm{0}{0}{12}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {9.2}Interface Design}{45}{subsection.9.2}}
\abx@aux@cite{37}
\abx@aux@segm{0}{0}{37}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {section}{\numberline {10}Implementation}{46}{section.10}}
\newlabel{implementation}{{10}{46}{Implementation}{section.10}{}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {10.1}Data collection}{46}{subsection.10.1}}
\newlabel{collection}{{10.1}{46}{Data collection}{subsection.10.1}{}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {10.1.1}Price Time-Series Historical Data}{46}{subsubsection.10.1.1}}
\@writefile{lol}{\defcounter {refsection}{0}\relax }\@writefile{lol}{\contentsline {lstlisting}{\numberline {1}Historical price collection and averaging per exchange}{46}{lstlisting.1}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {10.1.2}Price Time-Series Live Data}{47}{subsubsection.10.1.2}}
\@writefile{lol}{\defcounter {refsection}{0}\relax }\@writefile{lol}{\contentsline {lstlisting}{\numberline {2}Extraction of Price from exchanges}{47}{lstlisting.2}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {10.1.3}Historical Tweet Collection}{48}{subsubsection.10.1.3}}
\@writefile{lol}{\defcounter {refsection}{0}\relax }\@writefile{lol}{\contentsline {lstlisting}{\numberline {3}Sample Curl request - data saved to json and python scripted called to process data}{48}{lstlisting.3}}
\@writefile{lol}{\defcounter {refsection}{0}\relax }\@writefile{lol}{\contentsline {lstlisting}{\numberline {4}Sift-text python script - used alongside Curl command in Listing 4}{48}{lstlisting.4}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {10.1.4}Live Tweet Collection}{50}{subsubsection.10.1.4}}
\@writefile{lol}{\defcounter {refsection}{0}\relax }\@writefile{lol}{\contentsline {lstlisting}{\numberline {5}Tweepy Streamer setup}{50}{lstlisting.5}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {10.2}Data pre-processing}{52}{subsection.10.2}}
\newlabel{processing}{{10.2}{52}{Data pre-processing}{subsection.10.2}{}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {10.2.1}Tweet Filtering}{52}{subsubsection.10.2.1}}
\@writefile{lol}{\defcounter {refsection}{0}\relax }\@writefile{lol}{\contentsline {lstlisting}{\numberline {6}Basic data filtering and processing function - defined in 'tweet\_collector.py'}{52}{lstlisting.6}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {10.2.2}Language detection filtering}{53}{subsubsection.10.2.2}}
\@writefile{lol}{\defcounter {refsection}{0}\relax }\@writefile{lol}{\contentsline {lstlisting}{\numberline {7}Language detection and filter function \cite {38}}{53}{lstlisting.7}}
\abx@aux@cite{38}
\abx@aux@segm{0}{0}{38}
\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}{55}{subsubsection.10.2.3}}
\@writefile{lol}{\defcounter {refsection}{0}\relax }\@writefile{lol}{\contentsline {lstlisting}{\numberline {8}pre-processing of data prior to being used by the spam filter}{55}{lstlisting.8}}
\abx@aux@cite{40}
\abx@aux@segm{0}{0}{40}
\abx@aux@segm{0}{0}{40}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {10.3}Spam Filtering}{56}{subsection.10.3}}
\@writefile{lol}{\defcounter {refsection}{0}\relax }\@writefile{lol}{\contentsline {lstlisting}{\numberline {9}Spam filter training Class - \textit {tweet\_collector.py}}{56}{lstlisting.9}}
\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}{59}{subsubsection.10.3.1}}
\@writefile{lol}{\defcounter {refsection}{0}\relax }\@writefile{lol}{\contentsline {lstlisting}{\numberline {10}classifer class of spam\_filter.py}{59}{lstlisting.10}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {10.3.2}Classification}{60}{subsubsection.10.3.2}}
\@writefile{lol}{\defcounter {refsection}{0}\relax }\@writefile{lol}{\contentsline {lstlisting}{\numberline {11}Classify Function of Parent classifier class of spam\_filter.py}{60}{lstlisting.11}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {10.3.3}Predict}{61}{subsubsection.10.3.3}}
\@writefile{lol}{\defcounter {refsection}{0}\relax }\@writefile{lol}{\contentsline {lstlisting}{\numberline {12}Predict function of parent classifier class of spam\_filter.py}{61}{lstlisting.12}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {10.3.4}Metrics}{61}{subsubsection.10.3.4}}
\@writefile{lol}{\defcounter {refsection}{0}\relax }\@writefile{lol}{\contentsline {lstlisting}{\numberline {13}Metrics function for calculating the performance and accuracy of the model}{61}{lstlisting.13}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {10.4}Sentiment Analysis}{62}{subsection.10.4}}
\@writefile{lol}{\defcounter {refsection}{0}\relax }\@writefile{lol}{\contentsline {lstlisting}{\numberline {14}VADER polarity classification}{62}{lstlisting.14}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {10.5}Recurrent Neural Network - LSTM}{63}{subsection.10.5}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {10.5.1}Dataset Creation}{63}{subsubsection.10.5.1}}
\@writefile{lol}{\defcounter {refsection}{0}\relax }\@writefile{lol}{\contentsline {lstlisting}{\numberline {15}Dataset creation and preprocessing}{64}{lstlisting.15}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {10.5.2}Training and Testing Model}{65}{subsubsection.10.5.2}}
\@writefile{lol}{\defcounter {refsection}{0}\relax }\@writefile{lol}{\contentsline {lstlisting}{\numberline {16}LSTM model creation\tmspace +\thinmuskip {.1667em} layering\tmspace +\thinmuskip {.1667em} compiling and fitting}{65}{lstlisting.16}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {10.6}Future Prediction Forecasting}{67}{subsection.10.6}}
\@writefile{lol}{\defcounter {refsection}{0}\relax }\@writefile{lol}{\contentsline {lstlisting}{\numberline {17}Forecasting future price of next hour for Bitcoin}{67}{lstlisting.17}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {10.7}User Interface}{69}{subsection.10.7}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {section}{\numberline {11}Testing Metrics and Accuracy}{70}{section.11}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {section}{\numberline {12}Project Evaluation}{71}{section.12}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {section}{\numberline {13}Discussion: Contribution and Reflection}{71}{section.13}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {13.1}Limitations}{71}{subsection.13.1}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {section}{\numberline {14}Conclusion and Future Improvements}{72}{section.14}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {14.1}Conclusion}{72}{subsection.14.1}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {14.2}Future Improvements}{72}{subsection.14.2}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {section}{\numberline {15}Appendices}{77}{section.15}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {15.1}Appendix A - Project Initiation Document}{77}{subsection.15.1}}
\abx@aux@cite{ISO9000}
\abx@aux@segm{0}{0}{ISO9000}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {section}{\numberline {6}Quality Goals}{16}{section.6}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {6.1}Process Description}{16}{subsection.6.1}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {6.2}Quality Objectives}{16}{subsection.6.2}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {6.3}Tools to Ensure Quality}{17}{subsection.6.3}}
\abx@aux@segm{0}{0}{BTCFTsent}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {section}{\numberline {7}Literature Review}{18}{section.7}}
\newlabel{literature}{{7}{18}{Literature Review}{section.7}{}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {7.1}Existing Tools}{18}{subsection.7.1}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {7.2}Related research}{18}{subsection.7.2}}
\abx@aux@segm{0}{0}{SaTdpsmm}
\abx@aux@cite{StPNSentA}
\abx@aux@segm{0}{0}{StPNSentA}
\abx@aux@cite{MLBTCpred}
\abx@aux@segm{0}{0}{MLBTCpred}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {7.3}Data Collection}{19}{subsection.7.3}}
\newlabel{tweet_collection}{{7.3}{19}{Data Collection}{subsection.7.3}{}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {7.3.1}Twitter and Twitter API}{19}{subsubsection.7.3.1}}
\abx@aux@cite{SearchTweets}
\abx@aux@segm{0}{0}{SearchTweets}
\abx@aux@cite{ConStream}
\abx@aux@segm{0}{0}{ConStream}
\abx@aux@cite{TweepyStream}
\abx@aux@segm{0}{0}{TweepyStream}
\abx@aux@segm{0}{0}{SearchTweets}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {7.3.2}Tweepy Python Package}{20}{subsubsection.7.3.2}}
\abx@aux@segm{0}{0}{SaTdpsmm}
\abx@aux@segm{0}{0}{BTCFTsent}
\abx@aux@segm{0}{0}{MLBTCpred}
\abx@aux@cite{PolClassPatients}
\abx@aux@segm{0}{0}{PolClassPatients}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {7.4}Sentiment Analysis}{21}{subsection.7.4}}
\newlabel{sentiment}{{7.4}{21}{Sentiment Analysis}{subsection.7.4}{}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {7.4.1}Natural Language Processing}{21}{subsubsection.7.4.1}}
\newlabel{algorithms}{{7.4.1}{21}{Natural Language Processing}{subsubsection.7.4.1}{}}
\abx@aux@cite{LexiconSocSent}
\abx@aux@segm{0}{0}{LexiconSocSent}
\abx@aux@cite{VADERPaper}
\abx@aux@segm{0}{0}{VADERPaper}
\abx@aux@segm{0}{0}{VADERPaper}
\abx@aux@segm{0}{0}{VADERPaper}
\abx@aux@cite{WisCrowds}
\abx@aux@segm{0}{0}{WisCrowds}
\abx@aux@segm{0}{0}{VADERPaper}
\abx@aux@segm{0}{0}{VADERPaper}
\abx@aux@segm{0}{0}{VADERPaper}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {7.4.2}Valence Aware Dictionary and sEntiment Reasoning}{22}{subsubsection.7.4.2}}
\newlabel{Vader}{{7.4.2}{22}{Valence Aware Dictionary and sEntiment Reasoning}{subsubsection.7.4.2}{}}
\abx@aux@cite{NNDLBegin}
\abx@aux@segm{0}{0}{NNDLBegin}
\abx@aux@cite{WhatNN}
\abx@aux@segm{0}{0}{WhatNN}
\abx@aux@cite{SupdictL}
\abx@aux@segm{0}{0}{SupdictL}
\abx@aux@segm{0}{0}{WhatNN}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {7.5}Neural Networks}{23}{subsection.7.5}}
\newlabel{networks}{{7.5}{23}{Neural Networks}{subsection.7.5}{}}
\abx@aux@cite{ErrorProp}
\abx@aux@segm{0}{0}{ErrorProp}
\abx@aux@cite{BeginLSTMRNN}
\abx@aux@segm{0}{0}{BeginLSTMRNN}
\abx@aux@cite{RNNLSTMtds}
\abx@aux@segm{0}{0}{RNNLSTMtds}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {7.5.1}Recurrent Neural Network (RNN)}{24}{subsubsection.7.5.1}}
\newlabel{types}{{7.5.1}{24}{Recurrent Neural Network (RNN)}{subsubsection.7.5.1}{}}
\abx@aux@cite{NNEgrad}
\abx@aux@segm{0}{0}{NNEgrad}
\abx@aux@cite{RNNvanishGrad}
\abx@aux@segm{0}{0}{RNNvanishGrad}
\abx@aux@cite{LSTM}
\abx@aux@segm{0}{0}{LSTM}
\abx@aux@segm{0}{0}{LSTM}
\abx@aux@cite{LSTMdia}
\abx@aux@segm{0}{0}{LSTMdia}
\abx@aux@segm{0}{0}{LSTMdia}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {7.5.2}Long-Short Term Memory (LSTM)}{25}{subsubsection.7.5.2}}
\newlabel{lstms}{{7.5.2}{25}{Long-Short Term Memory (LSTM)}{subsubsection.7.5.2}{}}
\abx@aux@segm{0}{0}{LSTM}
\abx@aux@segm{0}{0}{LSTMdia}
\abx@aux@cite{LSTMmaths}
\abx@aux@segm{0}{0}{LSTMmaths}
\abx@aux@segm{0}{0}{LSTM}
\abx@aux@cite{LSTMforetime}
\abx@aux@segm{0}{0}{LSTMforetime}
\abx@aux@segm{0}{0}{LSTMforetime}
\abx@aux@cite{TensorFlow}
\abx@aux@segm{0}{0}{TensorFlow}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {7.5.3}Keras and TensorFlow}{26}{subsubsection.7.5.3}}
\abx@aux@cite{OptSGD}
\abx@aux@segm{0}{0}{OptSGD}
\abx@aux@cite{Optimisers}
\abx@aux@segm{0}{0}{Optimisers}
\abx@aux@segm{0}{0}{Optimisers}
\abx@aux@segm{0}{0}{Optimisers}
\abx@aux@cite{OptVariants}
\abx@aux@segm{0}{0}{OptVariants}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {7.5.4}Optimisers}{27}{subsubsection.7.5.4}}
\abx@aux@cite{OverOpt}
\abx@aux@segm{0}{0}{OverOpt}
\abx@aux@cite{Adam}
\abx@aux@segm{0}{0}{Adam}
\abx@aux@segm{0}{0}{Adam}
\abx@aux@cite{StudyNBC}
\abx@aux@segm{0}{0}{StudyNBC}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {7.6}Machine Learning}{29}{subsection.7.6}}
\newlabel{machine}{{7.6}{29}{Machine Learning}{subsection.7.6}{}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {7.6.1}Naive Bayes}{29}{subsubsection.7.6.1}}
\abx@aux@segm{0}{0}{StudyNBC}
\abx@aux@cite{TFIDFBOW}
\abx@aux@segm{0}{0}{TFIDFBOW}
\abx@aux@segm{0}{0}{TFIDFBOW}
\abx@aux@segm{0}{0}{TFIDFBOW}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {7.7}Bag Of Words}{30}{subsection.7.7}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {7.8}TF-IDF}{30}{subsection.7.8}}
\abx@aux@cite{SpamCScratch}
\abx@aux@segm{0}{0}{SpamCScratch}
\abx@aux@segm{0}{0}{SpamCScratch}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {7.9}Addictive Smoothing}{31}{subsection.7.9}}
\abx@aux@cite{TweepyDoc}
\abx@aux@segm{0}{0}{TweepyDoc}
\abx@aux@segm{0}{0}{SearchTweets}
\abx@aux@segm{0}{0}{ConStream}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {section}{\numberline {8}Solution Approach}{32}{section.8}}
\newlabel{solution}{{8}{32}{Solution Approach}{section.8}{}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {8.1}Data gathering}{32}{subsection.8.1}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {8.2}Data pre-processing}{33}{subsection.8.2}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {8.3}Spam Filtering}{33}{subsection.8.3}}
\abx@aux@segm{0}{0}{VADERPaper}
\abx@aux@segm{0}{0}{VADERPaper}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {8.4}Language Detection}{34}{subsection.8.4}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {8.5}Sentiment Analysis}{34}{subsection.8.5}}
\abx@aux@segm{0}{0}{VADERPaper}
\abx@aux@segm{0}{0}{LexiconSocSent}
\abx@aux@segm{0}{0}{LSTM}
\abx@aux@segm{0}{0}{StPNSentA}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {8.6}Neural Network}{35}{subsection.8.6}}
\abx@aux@segm{0}{0}{LSTMforetime}
\abx@aux@segm{0}{0}{LSTMforetime}
\abx@aux@cite{TFvsThe}
\abx@aux@segm{0}{0}{TFvsThe}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {8.7}Price Forecasting}{37}{subsection.8.7}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {8.8}Frontend Application}{37}{subsection.8.8}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {8.9}With reference to Initial PID}{37}{subsection.8.9}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {8.10}Solution Summary}{38}{subsection.8.10}}
\newlabel{summary}{{8.10}{38}{Solution Summary}{subsection.8.10}{}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {8.11}Data flow Overview}{39}{subsection.8.11}}
\newlabel{data-flow}{{8.11}{39}{Data flow Overview}{subsection.8.11}{}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {section}{\numberline {9}System Design}{40}{section.9}}
\newlabel{Design}{{9}{40}{System Design}{section.9}{}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {9.1}Dataflow Designs}{40}{subsection.9.1}}
\abx@aux@segm{0}{0}{VADERPaper}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {9.2}Interface Design}{47}{subsection.9.2}}
\abx@aux@cite{btcCharts}
\abx@aux@segm{0}{0}{btcCharts}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {section}{\numberline {10}Implementation}{49}{section.10}}
\newlabel{implementation}{{10}{49}{Implementation}{section.10}{}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {10.1}Data collection}{49}{subsection.10.1}}
\newlabel{collection}{{10.1}{49}{Data collection}{subsection.10.1}{}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {10.1.1}Price Time-Series Historical Data}{49}{subsubsection.10.1.1}}
\@writefile{lol}{\defcounter {refsection}{0}\relax }\@writefile{lol}{\contentsline {lstlisting}{\numberline {1}Historical price collection and averaging per exchange}{49}{lstlisting.1}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {10.1.2}Price Time-Series Live Data}{50}{subsubsection.10.1.2}}
\@writefile{lol}{\defcounter {refsection}{0}\relax }\@writefile{lol}{\contentsline {lstlisting}{\numberline {2}Extraction of Price from exchanges}{50}{lstlisting.2}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {10.1.3}Historical Tweet Collection}{51}{subsubsection.10.1.3}}
\@writefile{lol}{\defcounter {refsection}{0}\relax }\@writefile{lol}{\contentsline {lstlisting}{\numberline {3}Sample Curl request - data saved to json and python scripted called to process data}{51}{lstlisting.3}}
\@writefile{lol}{\defcounter {refsection}{0}\relax }\@writefile{lol}{\contentsline {lstlisting}{\numberline {4}Sift-text python script - used alongside Curl command in Listing 4}{51}{lstlisting.4}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {10.1.4}Live Tweet Collection}{53}{subsubsection.10.1.4}}
\@writefile{lol}{\defcounter {refsection}{0}\relax }\@writefile{lol}{\contentsline {lstlisting}{\numberline {5}Tweepy Streamer setup}{53}{lstlisting.5}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {10.2}Data pre-processing}{55}{subsection.10.2}}
\newlabel{processing}{{10.2}{55}{Data pre-processing}{subsection.10.2}{}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {10.2.1}Tweet Filtering}{55}{subsubsection.10.2.1}}
\@writefile{lol}{\defcounter {refsection}{0}\relax }\@writefile{lol}{\contentsline {lstlisting}{\numberline {6}Basic data filtering and processing function - defined in 'tweet\_collector.py'}{55}{lstlisting.6}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {10.2.2}Language detection filtering}{56}{subsubsection.10.2.2}}
\@writefile{lol}{\defcounter {refsection}{0}\relax }\@writefile{lol}{\contentsline {lstlisting}{\numberline {7}Language detection and filter function \cite {langdectNLTK}}{56}{lstlisting.7}}
\abx@aux@cite{langdectNLTK}
\abx@aux@segm{0}{0}{langdectNLTK}
\abx@aux@segm{0}{0}{langdectNLTK}
\abx@aux@cite{LanNgram}
\abx@aux@segm{0}{0}{LanNgram}
\@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}}
\@writefile{lol}{\defcounter {refsection}{0}\relax }\@writefile{lol}{\contentsline {lstlisting}{\numberline {8}pre-processing of data prior to being used by the spam filter}{58}{lstlisting.8}}
\abx@aux@cite{StemvsLem}
\abx@aux@segm{0}{0}{StemvsLem}
\abx@aux@segm{0}{0}{StemvsLem}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {10.3}Spam Filtering}{59}{subsection.10.3}}
\@writefile{lol}{\defcounter {refsection}{0}\relax }\@writefile{lol}{\contentsline {lstlisting}{\numberline {9}Spam filter training Class - \textit {tweet\_collector.py}}{59}{lstlisting.9}}
\abx@aux@cite{NValgor}
\abx@aux@segm{0}{0}{NValgor}
\abx@aux@segm{0}{0}{SpamCScratch}
\abx@aux@cite{SpamOrHamGit}
\abx@aux@segm{0}{0}{SpamOrHamGit}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {10.3.1}Naive Bayes model}{62}{subsubsection.10.3.1}}
\@writefile{lol}{\defcounter {refsection}{0}\relax }\@writefile{lol}{\contentsline {lstlisting}{\numberline {10}classifer class of spam\_filter.py}{62}{lstlisting.10}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {10.3.2}Classification}{63}{subsubsection.10.3.2}}
\@writefile{lol}{\defcounter {refsection}{0}\relax }\@writefile{lol}{\contentsline {lstlisting}{\numberline {11}Classify Function of Parent classifier class of spam\_filter.py}{63}{lstlisting.11}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {10.3.3}Predict}{64}{subsubsection.10.3.3}}
\@writefile{lol}{\defcounter {refsection}{0}\relax }\@writefile{lol}{\contentsline {lstlisting}{\numberline {12}Predict function of parent classifier class of spam\_filter.py}{64}{lstlisting.12}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {10.3.4}Metrics}{64}{subsubsection.10.3.4}}
\@writefile{lol}{\defcounter {refsection}{0}\relax }\@writefile{lol}{\contentsline {lstlisting}{\numberline {13}Metrics function for calculating the performance and accuracy of the model}{64}{lstlisting.13}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {10.4}Sentiment Analysis}{65}{subsection.10.4}}
\@writefile{lol}{\defcounter {refsection}{0}\relax }\@writefile{lol}{\contentsline {lstlisting}{\numberline {14}VADER polarity classification}{65}{lstlisting.14}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {10.5}Recurrent Neural Network - LSTM}{66}{subsection.10.5}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {10.5.1}Dataset Creation}{66}{subsubsection.10.5.1}}
\@writefile{lol}{\defcounter {refsection}{0}\relax }\@writefile{lol}{\contentsline {lstlisting}{\numberline {15}Dataset creation and preprocessing}{67}{lstlisting.15}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {10.5.2}Training and Testing Model}{68}{subsubsection.10.5.2}}
\@writefile{lol}{\defcounter {refsection}{0}\relax }\@writefile{lol}{\contentsline {lstlisting}{\numberline {16}LSTM model creation\tmspace +\thinmuskip {.1667em} layering\tmspace +\thinmuskip {.1667em} compiling and fitting}{68}{lstlisting.16}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {10.6}Future Prediction Forecasting}{70}{subsection.10.6}}
\@writefile{lol}{\defcounter {refsection}{0}\relax }\@writefile{lol}{\contentsline {lstlisting}{\numberline {17}Forecasting future price of next hour for Bitcoin}{70}{lstlisting.17}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {10.7}User Interface}{72}{subsection.10.7}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {10.7.1}Key Functions}{72}{subsubsection.10.7.1}}
\@writefile{lol}{\defcounter {refsection}{0}\relax }\@writefile{lol}{\contentsline {lstlisting}{\numberline {18}AJAX request and plotting performance data to HTML table}{72}{lstlisting.18}}
\@writefile{lol}{\defcounter {refsection}{0}\relax }\@writefile{lol}{\contentsline {lstlisting}{\numberline {19}Chart creation with AJAX request}{73}{lstlisting.19}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsubsection}{\numberline {10.7.2}Final Interface}{75}{subsubsection.10.7.2}}
\@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}Discussion of Results}{76}{section.12}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {section}{\numberline {13}Project Evaluation}{77}{section.13}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {section}{\numberline {14}Discussion: Contribution and Reflection}{77}{section.14}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {14.1}Limitations}{77}{subsection.14.1}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {section}{\numberline {15}Conclusion and Future Improvements}{78}{section.15}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {15.1}Conclusion}{78}{subsection.15.1}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {15.2}Future Improvements}{78}{subsection.15.2}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {section}{\numberline {16}Appendices}{83}{section.16}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {16.1}Appendix A - Project Initiation Document}{83}{subsection.16.1}}
\abx@aux@refcontextdefaultsdone
\abx@aux@defaultrefcontext{0}{1}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{2}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{3}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{4}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{5}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{6}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{7}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{8}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{9}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{10}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{11}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{12}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{13}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{14}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{15}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{16}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{17}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{18}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{19}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{20}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{21}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{22}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{23}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{24}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{25}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{26}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{27}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{28}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{29}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{30}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{31}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{32}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{33}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{34}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{35}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{36}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{37}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{38}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{39}{none/global//global/global}
\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}{90}{subsection.15.2}}
\abx@aux@defaultrefcontext{0}{SaTdpsmm}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{nlAeiBTCPSO}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{BTCFTsent}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{BTCRNN}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{ISO9000}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{StPNSentA}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{MLBTCpred}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{SearchTweets}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{ConStream}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{TweepyStream}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{PolClassPatients}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{LexiconSocSent}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{VADERPaper}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{WisCrowds}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{NNDLBegin}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{WhatNN}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{SupdictL}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{ErrorProp}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{BeginLSTMRNN}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{RNNLSTMtds}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{NNEgrad}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{RNNvanishGrad}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{LSTM}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{LSTMdia}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{LSTMmaths}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{LSTMforetime}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{TensorFlow}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{OptSGD}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{Optimisers}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{OptVariants}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{OverOpt}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{Adam}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{StudyNBC}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{TFIDFBOW}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{SpamCScratch}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{TweepyDoc}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{TFvsThe}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{btcCharts}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{langdectNLTK}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{LanNgram}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{StemvsLem}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{NValgor}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{SpamOrHamGit}{none/global//global/global}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {16.2}Appendix B - Log book}{96}{subsection.16.2}}

View File

@ -19,7 +19,7 @@
\refsection{0}
\datalist[entry]{none/global//global/global}
\entry{1}{inproceedings}{}
\entry{SaTdpsmm}{inproceedings}{}
\name{author}{4}{}{%
{{hash=452dff749c5d03968381e376f46bf0a0}{%
family={Pagolu},
@ -67,7 +67,7 @@
\verb https://arxiv.org/pdf/1610.09225.pdf
\endverb
\endentry
\entry{2}{inproceedings}{}
\entry{nlAeiBTCPSO}{inproceedings}{}
\name{author}{4}{}{%
{{hash=2a4d4d42d154959e1209b3434c0f35d9}{%
family={Indera},
@ -115,7 +115,7 @@
\verb https://www.ajol.info/index.php/jfas/article/viewFile/165614/155073
\endverb
\endentry
\entry{3}{inproceedings}{}
\entry{BTCFTsent}{inproceedings}{}
\name{author}{1}{}{%
{{hash=f2e3d1233a4ae1ff0dc165a2561130e0}{%
family={Evita\bibnamedelima Stenqvist},
@ -145,7 +145,7 @@
\verb http://www.diva-portal.org/smash/get/diva2:1110776/FULLTEXT01.pdf
\endverb
\endentry
\entry{4}{inproceedings}{}
\entry{BTCRNN}{inproceedings}{}
\name{author}{1}{}{%
{{hash=a0717771b02f10aa6a33d0602f6288db}{%
family={Yalcin},
@ -175,7 +175,35 @@
\verb https://towardsdatascience.com/using-recurrent-neural-networks-to-predict-bitcoin-btc-prices-c4ff70f9f3e4
\endverb
\endentry
\entry{5}{inproceedings}{}
\entry{ISO9000}{inproceedings}{}
\name{author}{1}{}{%
{{hash=5b512ee8a59deb284ad0a6a035ba10b1}{%
family={ISO},
familyi={I\bibinitperiod}}}%
}
\list{organization}{1}{%
{ISO}%
}
\strng{namehash}{5b512ee8a59deb284ad0a6a035ba10b1}
\strng{fullhash}{5b512ee8a59deb284ad0a6a035ba10b1}
\strng{bibnamehash}{5b512ee8a59deb284ad0a6a035ba10b1}
\strng{authorbibnamehash}{5b512ee8a59deb284ad0a6a035ba10b1}
\strng{authornamehash}{5b512ee8a59deb284ad0a6a035ba10b1}
\strng{authorfullhash}{5b512ee8a59deb284ad0a6a035ba10b1}
\field{sortinit}{6}
\field{sortinithash}{57e57fb8451e7fcfa45d1e069f6d3136}
\field{labelnamesource}{author}
\field{labeltitlesource}{title}
\field{title}{Quality management principles:ISO9000-IS9001}
\field{year}{2015}
\verb{urlraw}
\verb https://www.iso.org/files/live/sites/isoorg/files/archive/pdf/en/pub100080.pdf
\endverb
\verb{url}
\verb https://www.iso.org/files/live/sites/isoorg/files/archive/pdf/en/pub100080.pdf
\endverb
\endentry
\entry{StPNSentA}{inproceedings}{}
\name{author}{1}{}{%
{{hash=0082b92db99b10a1b0be2e2a81ee914f}{%
family={Intel-Corporation},
@ -190,8 +218,8 @@
\strng{authorbibnamehash}{0082b92db99b10a1b0be2e2a81ee914f}
\strng{authornamehash}{0082b92db99b10a1b0be2e2a81ee914f}
\strng{authorfullhash}{0082b92db99b10a1b0be2e2a81ee914f}
\field{sortinit}{8}
\field{sortinithash}{07edf88d4ea82509b9c4b4d13f41c452}
\field{sortinit}{9}
\field{sortinithash}{1dd72ab054147731c9d824b49aba0534}
\field{labelnamesource}{author}
\field{labeltitlesource}{title}
\field{title}{Stock Predictions through News Sentiment Analysis}
@ -203,7 +231,7 @@
\verb https://www.codeproject.com/Articles/1201444/Stock-Predictions-through-News-Sentiment-Analysis
\endverb
\endentry
\entry{6}{inproceedings}{}
\entry{MLBTCpred}{inproceedings}{}
\name{author}{1}{}{%
{{hash=be03763696a3a6a39ccce2baf4fb6f4e}{%
family={Sean\bibnamedelima McNally},
@ -222,8 +250,8 @@
\strng{authorbibnamehash}{be03763696a3a6a39ccce2baf4fb6f4e}
\strng{authornamehash}{be03763696a3a6a39ccce2baf4fb6f4e}
\strng{authorfullhash}{be03763696a3a6a39ccce2baf4fb6f4e}
\field{sortinit}{9}
\field{sortinithash}{1dd72ab054147731c9d824b49aba0534}
\field{sortinit}{1}
\field{sortinithash}{2174f786c6195e7fe2ee1c229b416e29}
\field{labelnamesource}{author}
\field{labeltitlesource}{title}
\field{booktitle}{2018 26th Euromicro International Conference on Parallel, Distributed and Network-based Processing (PDP)}
@ -238,7 +266,7 @@
\verb https://ieeexplore.ieee.org/abstract/document/8374483
\endverb
\endentry
\entry{7}{inproceedings}{}
\entry{SearchTweets}{inproceedings}{}
\name{author}{1}{}{%
{{hash=2491bc9c7d8731e1ae33124093bc7026}{%
family={Twitter},
@ -266,7 +294,7 @@
\verb https://developer.twitter.com/en/docs/tweets/search/overview
\endverb
\endentry
\entry{8}{inproceedings}{}
\entry{ConStream}{inproceedings}{}
\name{author}{1}{}{%
{{hash=2491bc9c7d8731e1ae33124093bc7026}{%
family={Twitter},
@ -294,7 +322,7 @@
\verb https://developer.twitter.com/en/docs/tutorials/consuming-streaming-data.html
\endverb
\endentry
\entry{9}{inproceedings}{}
\entry{TweepyStream}{inproceedings}{}
\name{author}{1}{}{%
{{hash=1e48a059b3f2c3703bea8d54a9e002c9}{%
family={Roesslein},
@ -324,7 +352,7 @@
\verb http://docs.tweepy.org/en/v3.4.0/streaming_how_to.html
\endverb
\endentry
\entry{10}{inproceedings}{}
\entry{PolClassPatients}{inproceedings}{}
\name{author}{1}{}{%
{{hash=ae1fc492a61542a18835322c490c5af1}{%
family={Mehrnoush\bibnamedelima Shamsfard},
@ -357,7 +385,7 @@
\verb https://www.sciencedirect.com/science/article/pii/S1532046415001276
\endverb
\endentry
\entry{11}{inproceedings}{}
\entry{LexiconSocSent}{inproceedings}{}
\name{author}{1}{}{%
{{hash=75d8d9e701bff6c60b3e05aa6c0c3f9f}{%
family={Chedia\bibnamedelima Dhaoui},
@ -390,7 +418,7 @@
\verb https://www.emeraldinsight.com/doi/pdfplus/10.1108/JCM-03-2017-2141
\endverb
\endentry
\entry{12}{inproceedings}{}
\entry{VADERPaper}{inproceedings}{}
\name{author}{2}{}{%
{{hash=45764413ab79a1c3696604be19148c89}{%
family={Hutto},
@ -412,8 +440,8 @@
\strng{authorbibnamehash}{13e8125b59ac4c2baf7ccab9e513e9a5}
\strng{authornamehash}{13e8125b59ac4c2baf7ccab9e513e9a5}
\strng{authorfullhash}{13e8125b59ac4c2baf7ccab9e513e9a5}
\field{sortinit}{1}
\field{sortinithash}{2174f786c6195e7fe2ee1c229b416e29}
\field{sortinit}{2}
\field{sortinithash}{cbff857e587bcb4635511624d773949e}
\field{labelnamesource}{author}
\field{labeltitlesource}{title}
\field{booktitle}{Eighth International Conference on Weblogs and Social Media (ICWSM-14)}
@ -426,7 +454,7 @@
\verb https://www.aaai.org/ocs/index.php/ICWSM/ICWSM14/paper/download/8109/8122
\endverb
\endentry
\entry{13}{inproceedings}{}
\entry{WisCrowds}{inproceedings}{}
\name{author}{1}{}{%
{{hash=47a5d7268039bf86cea626bcaefd4877}{%
family={Kenton},
@ -456,7 +484,7 @@
\verb https://www.investopedia.com/terms/w/wisdom-crowds.asp
\endverb
\endentry
\entry{14}{inproceedings}{}
\entry{NNDLBegin}{inproceedings}{}
\name{author}{1}{}{%
{{hash=98de2b3b288cf4bd291e8937e5e28c49}{%
family={Skymind},
@ -485,7 +513,7 @@
\verb https://skymind.ai/wiki/neural-network
\endverb
\endentry
\entry{15}{inproceedings}{}
\entry{WhatNN}{inproceedings}{}
\name{author}{1}{}{%
{{hash=b5590c43c6c12766886d1cdcae8c5fc3}{%
family={DeMuro},
@ -516,7 +544,7 @@
\verb https://www.techradar.com/uk/news/what-is-a-neural-network
\endverb
\endentry
\entry{16}{inproceedings}{}
\entry{SupdictL}{inproceedings}{}
\name{author}{1}{}{%
{{hash=7ec8fd610c35dade82ca0d76c0e6a7ee}{%
family={Bach},
@ -550,7 +578,7 @@
\endverb
\warn{\item Name "Mairal, J., Ponce, J., Sapiro, G., Zisserman, A." has too many commas: skipping name}
\endentry
\entry{17}{inproceedings}{}
\entry{ErrorProp}{inproceedings}{}
\name{author}{3}{}{%
{{hash=d198ae71c61c758b90826c452447133f}{%
family={Rumelhart},
@ -590,7 +618,7 @@
\verb https://apps.dtic.mil/docs/citations/ADA164453
\endverb
\endentry
\entry{18}{inproceedings}{}
\entry{BeginLSTMRNN}{inproceedings}{}
\name{author}{1}{}{%
{{hash=98de2b3b288cf4bd291e8937e5e28c49}{%
family={Skymind},
@ -619,7 +647,7 @@
\verb https://skymind.ai/wiki/lstm
\endverb
\endentry
\entry{19}{inproceedings}{}
\entry{RNNLSTMtds}{inproceedings}{}
\name{author}{1}{}{%
{{hash=ad6e7c0188bc1f913c6dad630fde9e39}{%
family={Donges},
@ -649,7 +677,7 @@
\verb https://towardsdatascience.com/recurrent-neural-networks-and-lstm-4b601dd822a5
\endverb
\endentry
\entry{20}{inproceedings}{}
\entry{NNEgrad}{inproceedings}{}
\name{author}{1}{}{%
{{hash=37ec6490760a0f7d5715b2e904f6cf20}{%
family={Jason\bibnamedelima Brownlee},
@ -679,7 +707,7 @@
\verb https://machinelearningmastery.com/exploding-gradients-in-neural-networks/
\endverb
\endentry
\entry{21}{inproceedings}{}
\entry{RNNvanishGrad}{inproceedings}{}
\name{author}{1}{}{%
{{hash=2397822f564bc95b5d3e07a3cc633029}{%
family={Team},
@ -709,7 +737,7 @@
\verb https://www.superdatascience.com/blogs/recurrent-neural-networks-rnn-the-vanishing-gradient-problem
\endverb
\endentry
\entry{22}{inproceedings}{}
\entry{LSTM}{inproceedings}{}
\name{author}{2}{}{%
{{hash=41b31e29fb2bdbf9f5c9c1b0d5b3e815}{%
family={Hochreiter},
@ -747,7 +775,7 @@
\verb https://www.bioinf.jku.at/publications/older/2604.pdf
\endverb
\endentry
\entry{23}{inproceedings}{}
\entry{LSTMdia}{inproceedings}{}
\name{author}{1}{}{%
{{hash=9979e7c606c1876cb09cf32b78628d71}{%
family={Yan},
@ -777,7 +805,7 @@
\verb https://medium.com/mlreview/understanding-lstm-and-its-diagrams-37e2f46f1714
\endverb
\endentry
\entry{24}{inproceedings}{}
\entry{LSTMmaths}{inproceedings}{}
\name{author}{1}{}{%
{{hash=dea937fb216bfbba25c1bfa1f36a63fe}{%
family={Olah},
@ -804,7 +832,7 @@
\verb https://colah.github.io/posts/2015-08-Understanding-LSTMs
\endverb
\endentry
\entry{25}{inproceedings}{}
\entry{LSTMforetime}{inproceedings}{}
\name{author}{1}{}{%
{{hash=7b57587d26dd7e449dd94fd493bd072e}{%
family={Kompella},
@ -834,7 +862,7 @@
\verb https://towardsdatascience.com/using-lstms-to-forecast-time-series-4ab688386b1f
\endverb
\endentry
\entry{26}{inproceedings}{}
\entry{TensorFlow}{inproceedings}{}
\true{moreauthor}
\true{morelabelname}
\name{author}{10}{}{%
@ -911,7 +939,7 @@
\verb https://www.usenix.org/system/files/conference/osdi16/osdi16-abadi.pdf
\endverb
\endentry
\entry{27}{inproceedings}{}
\entry{OptSGD}{inproceedings}{}
\name{author}{1}{}{%
{{hash=45ebe6bd838f67040a398bf6fd40841d}{%
family={Stanford},
@ -936,7 +964,7 @@
\verb http://deeplearning.stanford.edu/tutorial/supervised/OptimizationStochasticGradientDescent
\endverb
\endentry
\entry{28}{inproceedings}{}
\entry{Optimisers}{inproceedings}{}
\name{author}{1}{}{%
{{hash=cec3f268402d95f21749575ae2e51941}{%
family={Mitra},
@ -966,7 +994,7 @@
\verb https://www.quora.com/What-are-differences-between-update-rules-like-AdaDelta-RMSProp-AdaGrad-and-AdaM
\endverb
\endentry
\entry{29}{inproceedings}{}
\entry{OptVariants}{inproceedings}{}
\name{author}{2}{}{%
{{hash=ce674b69f5902bcf643d2e5e3b08dd23}{%
family={Mukkamala},
@ -1004,7 +1032,7 @@
\verb https://arxiv.org/pdf/1706.05507.pdf
\endverb
\endentry
\entry{30}{inproceedings}{}
\entry{OverOpt}{inproceedings}{}
\name{author}{1}{}{%
{{hash=fd768606d546daa3f555605b7786517f}{%
family={Khandelwal},
@ -1034,7 +1062,7 @@
\verb https://medium.com/datadriveninvestor/overview-of-different-optimizers-for-neural-networks-e0ed119440c3
\endverb
\endentry
\entry{31}{inproceedings}{}
\entry{Adam}{inproceedings}{}
\name{author}{1}{}{%
{{hash=2d6d5b61ff3872dbfed3eb5cbb52e470}{%
family={Diederik\bibnamedelimb P.\bibnamedelimi Kingma},
@ -1065,7 +1093,7 @@
\verb https://arxiv.org/pdf/1412.6980.pdf
\endverb
\endentry
\entry{32}{inproceedings}{}
\entry{StudyNBC}{inproceedings}{}
\true{moreauthor}
\true{morelabelname}
\name{author}{1}{}{%
@ -1099,7 +1127,7 @@
\verb https://www.cc.gatech.edu/~isbell/reading/papers/Rish.pdf
\endverb
\endentry
\entry{33}{inproceedings}{}
\entry{TFIDFBOW}{inproceedings}{}
\name{author}{1}{}{%
{{hash=98de2b3b288cf4bd291e8937e5e28c49}{%
family={Skymind},
@ -1128,7 +1156,7 @@
\verb https://skymind.ai/wiki/bagofwords-tf-idf
\endverb
\endentry
\entry{34}{inproceedings}{}
\entry{SpamCScratch}{inproceedings}{}
\name{author}{1}{}{%
{{hash=66cc3e81d0437f8fcef4bb3cb3294bc5}{%
family={Karmali},
@ -1145,8 +1173,8 @@
\strng{authorbibnamehash}{66cc3e81d0437f8fcef4bb3cb3294bc5}
\strng{authornamehash}{66cc3e81d0437f8fcef4bb3cb3294bc5}
\strng{authorfullhash}{66cc3e81d0437f8fcef4bb3cb3294bc5}
\field{sortinit}{5}
\field{sortinithash}{3c19c3776b658b3558e9e2e4840c01e2}
\field{sortinit}{6}
\field{sortinithash}{57e57fb8451e7fcfa45d1e069f6d3136}
\field{labelnamesource}{author}
\field{labeltitlesource}{title}
\field{title}{Spam Classifier in Python from scratch}
@ -1158,7 +1186,7 @@
\verb https://towardsdatascience.com/spam-classifier-in-python-from-scratch-27a98ddd8e73
\endverb
\endentry
\entry{35}{inproceedings}{}
\entry{TweepyDoc}{inproceedings}{}
\name{author}{1}{}{%
{{hash=1e48a059b3f2c3703bea8d54a9e002c9}{%
family={Roesslein},
@ -1185,7 +1213,7 @@
\verb http://docs.tweepy.org/en/v3.5.0/
\endverb
\endentry
\entry{36}{inproceedings}{}
\entry{TFvsThe}{inproceedings}{}
\name{author}{1}{}{%
{{hash=974f50284a1994b00c1f04d211402eb0}{%
family={Deoras},
@ -1215,7 +1243,7 @@
\verb https://www.analyticsindiamag.com/tensorflow-vs-theano-researchers-prefer-artificial-intelligence-framework
\endverb
\endentry
\entry{37}{inproceedings}{}
\entry{btcCharts}{inproceedings}{}
\name{author}{1}{}{%
{{hash=9fb73450a6ae06fd7652db34b9a3c981}{%
family={bitcoincharts},
@ -1240,7 +1268,7 @@
\verb http://api.bitcoincharts.com/v1/csv/
\endverb
\endentry
\entry{38}{inproceedings}{}
\entry{langdectNLTK}{inproceedings}{}
\name{author}{1}{}{%
{{hash=41b3b5daa9b33f52b08087b54f96f115}{%
family={Nolla},
@ -1269,7 +1297,7 @@
\verb http://blog.alejandronolla.com/2013/05/15/detecting-text-language-with-python-and-nltk/
\endverb
\endentry
\entry{39}{inproceedings}{}
\entry{LanNgram}{inproceedings}{}
\name{author}{1}{}{%
{{hash=90ecaa1e27a33fbd3ab56223485ab402}{%
family={Cryptography},
@ -1298,7 +1326,7 @@
\verb http://practicalcryptography.com/miscellaneous/machine-learning/tutorial-automatic-language-identification-ngram-b/
\endverb
\endentry
\entry{40}{inproceedings}{}
\entry{StemvsLem}{inproceedings}{}
\name{author}{1}{}{%
{{hash=b26f0ccdcc8e766bb4785cce3a550346}{%
family={Risueno},
@ -1328,7 +1356,7 @@
\verb https://blog.bitext.com/what-is-the-difference-between-stemming-and-lemmatization/
\endverb
\endentry
\entry{41}{inproceedings}{}
\entry{NValgor}{inproceedings}{}
\name{author}{1}{}{%
{{hash=f8880822642687df3e50f74258165974}{%
family={developers},
@ -1357,7 +1385,7 @@
\verb https://scikit-learn.org/stable/modules/naive_bayes.html
\endverb
\endentry
\entry{42}{inproceedings}{}
\entry{SpamOrHamGit}{inproceedings}{}
\name{author}{1}{}{%
{{hash=d757410543b5d3323e9db89d373ef2ac}{%
family={tejank10},

View File

@ -1924,88 +1924,89 @@
<bcf:datasource type="file" datatype="bibtex">report.bib</bcf:datasource>
</bcf:bibdata>
<bcf:section number="0">
<bcf:citekey order="1">1</bcf:citekey>
<bcf:citekey order="2">2</bcf:citekey>
<bcf:citekey order="3">3</bcf:citekey>
<bcf:citekey order="4">4</bcf:citekey>
<bcf:citekey order="5">1</bcf:citekey>
<bcf:citekey order="6">3</bcf:citekey>
<bcf:citekey order="7">1</bcf:citekey>
<bcf:citekey order="8">5</bcf:citekey>
<bcf:citekey order="9">6</bcf:citekey>
<bcf:citekey order="10">7</bcf:citekey>
<bcf:citekey order="11">8</bcf:citekey>
<bcf:citekey order="12">9</bcf:citekey>
<bcf:citekey order="13">7</bcf:citekey>
<bcf:citekey order="14">1</bcf:citekey>
<bcf:citekey order="15">3</bcf:citekey>
<bcf:citekey order="16">6</bcf:citekey>
<bcf:citekey order="17">10</bcf:citekey>
<bcf:citekey order="18">11</bcf:citekey>
<bcf:citekey order="19">12</bcf:citekey>
<bcf:citekey order="20">12</bcf:citekey>
<bcf:citekey order="21">12</bcf:citekey>
<bcf:citekey order="22">13</bcf:citekey>
<bcf:citekey order="23">12</bcf:citekey>
<bcf:citekey order="24">12</bcf:citekey>
<bcf:citekey order="25">12</bcf:citekey>
<bcf:citekey order="26">14</bcf:citekey>
<bcf:citekey order="27">15</bcf:citekey>
<bcf:citekey order="28">16</bcf:citekey>
<bcf:citekey order="29">15</bcf:citekey>
<bcf:citekey order="30">17</bcf:citekey>
<bcf:citekey order="31">18</bcf:citekey>
<bcf:citekey order="32">19</bcf:citekey>
<bcf:citekey order="33">20</bcf:citekey>
<bcf:citekey order="34">21</bcf:citekey>
<bcf:citekey order="35">22</bcf:citekey>
<bcf:citekey order="36">22</bcf:citekey>
<bcf:citekey order="37">23</bcf:citekey>
<bcf:citekey order="38">23</bcf:citekey>
<bcf:citekey order="39">22</bcf:citekey>
<bcf:citekey order="40">23</bcf:citekey>
<bcf:citekey order="41">24</bcf:citekey>
<bcf:citekey order="42">22</bcf:citekey>
<bcf:citekey order="43">25</bcf:citekey>
<bcf:citekey order="44">25</bcf:citekey>
<bcf:citekey order="45">26</bcf:citekey>
<bcf:citekey order="46">27</bcf:citekey>
<bcf:citekey order="47">28</bcf:citekey>
<bcf:citekey order="48">28</bcf:citekey>
<bcf:citekey order="49">28</bcf:citekey>
<bcf:citekey order="50">29</bcf:citekey>
<bcf:citekey order="51">30</bcf:citekey>
<bcf:citekey order="52">31</bcf:citekey>
<bcf:citekey order="53">30</bcf:citekey>
<bcf:citekey order="54">32</bcf:citekey>
<bcf:citekey order="55">32</bcf:citekey>
<bcf:citekey order="56">33</bcf:citekey>
<bcf:citekey order="57">33</bcf:citekey>
<bcf:citekey order="58">33</bcf:citekey>
<bcf:citekey order="59">34</bcf:citekey>
<bcf:citekey order="60">34</bcf:citekey>
<bcf:citekey order="61">35</bcf:citekey>
<bcf:citekey order="62">7</bcf:citekey>
<bcf:citekey order="63">8</bcf:citekey>
<bcf:citekey order="64">12</bcf:citekey>
<bcf:citekey order="65">12</bcf:citekey>
<bcf:citekey order="66">12</bcf:citekey>
<bcf:citekey order="67">11</bcf:citekey>
<bcf:citekey order="68">22</bcf:citekey>
<bcf:citekey order="69">5</bcf:citekey>
<bcf:citekey order="70">25</bcf:citekey>
<bcf:citekey order="71">25</bcf:citekey>
<bcf:citekey order="72">36</bcf:citekey>
<bcf:citekey order="73">12</bcf:citekey>
<bcf:citekey order="74">37</bcf:citekey>
<bcf:citekey order="75">38</bcf:citekey>
<bcf:citekey order="76">38</bcf:citekey>
<bcf:citekey order="77">39</bcf:citekey>
<bcf:citekey order="78">40</bcf:citekey>
<bcf:citekey order="79">40</bcf:citekey>
<bcf:citekey order="80">41</bcf:citekey>
<bcf:citekey order="81">34</bcf:citekey>
<bcf:citekey order="82">42</bcf:citekey>
<bcf:citekey order="1">SaTdpsmm</bcf:citekey>
<bcf:citekey order="2">nlAeiBTCPSO</bcf:citekey>
<bcf:citekey order="3">BTCFTsent</bcf:citekey>
<bcf:citekey order="4">BTCRNN</bcf:citekey>
<bcf:citekey order="5">SaTdpsmm</bcf:citekey>
<bcf:citekey order="6">ISO9000</bcf:citekey>
<bcf:citekey order="7">BTCFTsent</bcf:citekey>
<bcf:citekey order="8">SaTdpsmm</bcf:citekey>
<bcf:citekey order="9">StPNSentA</bcf:citekey>
<bcf:citekey order="10">MLBTCpred</bcf:citekey>
<bcf:citekey order="11">SearchTweets</bcf:citekey>
<bcf:citekey order="12">ConStream</bcf:citekey>
<bcf:citekey order="13">TweepyStream</bcf:citekey>
<bcf:citekey order="14">SearchTweets</bcf:citekey>
<bcf:citekey order="15">SaTdpsmm</bcf:citekey>
<bcf:citekey order="16">BTCFTsent</bcf:citekey>
<bcf:citekey order="17">MLBTCpred</bcf:citekey>
<bcf:citekey order="18">PolClassPatients</bcf:citekey>
<bcf:citekey order="19">LexiconSocSent</bcf:citekey>
<bcf:citekey order="20">VADERPaper</bcf:citekey>
<bcf:citekey order="21">VADERPaper</bcf:citekey>
<bcf:citekey order="22">VADERPaper</bcf:citekey>
<bcf:citekey order="23">WisCrowds</bcf:citekey>
<bcf:citekey order="24">VADERPaper</bcf:citekey>
<bcf:citekey order="25">VADERPaper</bcf:citekey>
<bcf:citekey order="26">VADERPaper</bcf:citekey>
<bcf:citekey order="27">NNDLBegin</bcf:citekey>
<bcf:citekey order="28">WhatNN</bcf:citekey>
<bcf:citekey order="29">SupdictL</bcf:citekey>
<bcf:citekey order="30">WhatNN</bcf:citekey>
<bcf:citekey order="31">ErrorProp</bcf:citekey>
<bcf:citekey order="32">BeginLSTMRNN</bcf:citekey>
<bcf:citekey order="33">RNNLSTMtds</bcf:citekey>
<bcf:citekey order="34">NNEgrad</bcf:citekey>
<bcf:citekey order="35">RNNvanishGrad</bcf:citekey>
<bcf:citekey order="36">LSTM</bcf:citekey>
<bcf:citekey order="37">LSTM</bcf:citekey>
<bcf:citekey order="38">LSTMdia</bcf:citekey>
<bcf:citekey order="39">LSTMdia</bcf:citekey>
<bcf:citekey order="40">LSTM</bcf:citekey>
<bcf:citekey order="41">LSTMdia</bcf:citekey>
<bcf:citekey order="42">LSTMmaths</bcf:citekey>
<bcf:citekey order="43">LSTM</bcf:citekey>
<bcf:citekey order="44">LSTMforetime</bcf:citekey>
<bcf:citekey order="45">LSTMforetime</bcf:citekey>
<bcf:citekey order="46">TensorFlow</bcf:citekey>
<bcf:citekey order="47">OptSGD</bcf:citekey>
<bcf:citekey order="48">Optimisers</bcf:citekey>
<bcf:citekey order="49">Optimisers</bcf:citekey>
<bcf:citekey order="50">Optimisers</bcf:citekey>
<bcf:citekey order="51">OptVariants</bcf:citekey>
<bcf:citekey order="52">OverOpt</bcf:citekey>
<bcf:citekey order="53">Adam</bcf:citekey>
<bcf:citekey order="54">Adam</bcf:citekey>
<bcf:citekey order="55">StudyNBC</bcf:citekey>
<bcf:citekey order="56">StudyNBC</bcf:citekey>
<bcf:citekey order="57">TFIDFBOW</bcf:citekey>
<bcf:citekey order="58">TFIDFBOW</bcf:citekey>
<bcf:citekey order="59">TFIDFBOW</bcf:citekey>
<bcf:citekey order="60">SpamCScratch</bcf:citekey>
<bcf:citekey order="61">SpamCScratch</bcf:citekey>
<bcf:citekey order="62">TweepyDoc</bcf:citekey>
<bcf:citekey order="63">SearchTweets</bcf:citekey>
<bcf:citekey order="64">ConStream</bcf:citekey>
<bcf:citekey order="65">VADERPaper</bcf:citekey>
<bcf:citekey order="66">VADERPaper</bcf:citekey>
<bcf:citekey order="67">VADERPaper</bcf:citekey>
<bcf:citekey order="68">LexiconSocSent</bcf:citekey>
<bcf:citekey order="69">LSTM</bcf:citekey>
<bcf:citekey order="70">StPNSentA</bcf:citekey>
<bcf:citekey order="71">LSTMforetime</bcf:citekey>
<bcf:citekey order="72">LSTMforetime</bcf:citekey>
<bcf:citekey order="73">TFvsThe</bcf:citekey>
<bcf:citekey order="74">VADERPaper</bcf:citekey>
<bcf:citekey order="75">btcCharts</bcf:citekey>
<bcf:citekey order="76">langdectNLTK</bcf:citekey>
<bcf:citekey order="77">langdectNLTK</bcf:citekey>
<bcf:citekey order="78">LanNgram</bcf:citekey>
<bcf:citekey order="79">StemvsLem</bcf:citekey>
<bcf:citekey order="80">StemvsLem</bcf:citekey>
<bcf:citekey order="81">NValgor</bcf:citekey>
<bcf:citekey order="82">SpamCScratch</bcf:citekey>
<bcf:citekey order="83">SpamOrHamGit</bcf:citekey>
<bcf:citekey order="0">*</bcf:citekey>
</bcf:section>
<!-- SORTING TEMPLATES -->

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'
[21] biber:313> INFO - === Fri Apr 26, 2019, 21:24:32
[37] Biber.pm:371> INFO - Reading 'document.bcf'
[89] Biber.pm:854> INFO - Using all citekeys in bib section 0
[100] Biber.pm:3981> INFO - Processing section 0
[108] Biber.pm:4154> INFO - Looking for bibtex format file 'report.bib' for section 0
[109] bibtex.pm:1468> INFO - LaTeX decoding ...
[148] bibtex.pm:1294> INFO - Found BibTeX data source 'report.bib'
[181] Utils.pm:169> WARN - year field 'Aug 2, 2017' in entry '34' is not an integer - this will probably not sort properly.
[219] Utils.pm:169> WARN - Name "Mairal, J., Ponce, J., Sapiro, G., Zisserman, A." has too many commas: skipping name
[226] Utils.pm:169> WARN - year field 'Feb 26, 2018' in entry '40' is not an integer - this will probably not sort properly.
[234] Utils.pm:169> WARN - year field 'Aug 2, 2017' in entry '42' is not an integer - this will probably not sort properly.
[236] Utils.pm:169> WARN - year field 'Mar 13, 2016' in entry '23' is not an integer - this will probably not sort properly.
[291] Utils.pm:169> WARN - BibTeX subsystem: warning: comma(s) at end of name (removing)
[291] Utils.pm:169> WARN - BibTeX subsystem: author, warning: comma(s) at end of name (removing)
[315] UCollate.pm:68> INFO - Overriding locale 'en-US' defaults 'variable = shifted' with 'variable = non-ignorable'
[315] UCollate.pm:68> INFO - Overriding locale 'en-US' defaults 'normalization = NFD' with 'normalization = prenormalized'
[315] Biber.pm:3809> INFO - Sorting list 'none/global//global/global' of type 'entry' with template 'none' and locale 'en-US'
[315] Biber.pm:3815> INFO - No sort tailoring available for locale 'en-US'
[338] bbl.pm:617> INFO - Writing 'document.bbl' with encoding 'ascii'
[353] bbl.pm:720> INFO - Output to document.bbl
[353] Biber.pm:110> INFO - WARNINGS: 7
[18] biber:313> INFO - === Sat Apr 27, 2019, 18:31:54
[33] Biber.pm:371> INFO - Reading 'document.bcf'
[79] 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
[97] bibtex.pm:1468> INFO - LaTeX decoding ...
[133] bibtex.pm:1294> INFO - Found BibTeX data source 'report.bib'
[145] Utils.pm:169> WARN - year field 'Aug 2, 2017' in entry 'SpamOrHamGit' is not an integer - this will probably not sort properly.
[193] Utils.pm:169> WARN - Name "Mairal, J., Ponce, J., Sapiro, G., Zisserman, A." has too many commas: skipping name
[196] Utils.pm:169> WARN - year field 'Aug 2, 2017' in entry 'SpamCScratch' is not an integer - this will probably not sort properly.
[217] Utils.pm:169> WARN - year field 'Mar 13, 2016' in entry 'LSTMdia' is not an integer - this will probably not sort properly.
[257] Utils.pm:169> WARN - year field 'Feb 26, 2018' in entry 'StemvsLem' is not an integer - this will probably not sort properly.
[260] Utils.pm:169> WARN - BibTeX subsystem: warning: comma(s) at end of name (removing)
[260] Utils.pm:169> WARN - BibTeX subsystem: author, warning: comma(s) at end of name (removing)
[281] UCollate.pm:68> INFO - Overriding locale 'en-US' defaults 'variable = shifted' with 'variable = non-ignorable'
[281] UCollate.pm:68> INFO - Overriding locale 'en-US' defaults 'normalization = NFD' with 'normalization = prenormalized'
[281] Biber.pm:3809> INFO - Sorting list 'none/global//global/global' of type 'entry' with template 'none' and locale 'en-US'
[281] Biber.pm:3815> INFO - No sort tailoring available for locale 'en-US'
[303] bbl.pm:617> INFO - Writing 'document.bbl' with encoding 'ascii'
[316] bbl.pm:720> INFO - Output to document.bbl
[317] 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) 27 APR 2019 14:55
This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/Debian) (preloaded format=pdflatex 2018.10.16) 27 APR 2019 19:19
entering extended mode
restricted \write18 enabled.
%&-line parsing enabled.
@ -454,6 +454,13 @@ Package: titling 2009/09/04 v2.1d maketitle typesetting
\thanksmargin=\skip72
\droptitle=\skip73
)
(/usr/share/texlive/texmf-dist/tex/latex/base/fontenc.sty
Package: fontenc 2017/04/05 v2.0i Standard LaTeX package
(/usr/share/texlive/texmf-dist/tex/latex/base/t1enc.def
File: t1enc.def 2017/04/05 v2.0i Standard LaTeX file
LaTeX Font Info: Redeclaring font encoding T1 on input line 48.
))
(/usr/share/texlive/texmf-dist/tex/latex/listings/listings.sty
\lst@mode=\count141
\lst@gtempboxa=\box37
@ -842,22 +849,22 @@ File: english.lbx 2017/12/19 v3.10 biblatex localization (PK/JW/AB)
(./document.aux)
\openout1 = `document.aux'.
LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 91.
LaTeX Font Info: ... okay on input line 91.
LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 91.
LaTeX Font Info: ... okay on input line 91.
LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 91.
LaTeX Font Info: ... okay on input line 91.
LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 91.
LaTeX Font Info: ... okay on input line 91.
LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 91.
LaTeX Font Info: ... okay on input line 91.
LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 91.
LaTeX Font Info: ... okay on input line 91.
LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 91.
LaTeX Font Info: ... okay on input line 91.
LaTeX Font Info: Checking defaults for PU/pdf/m/n on input line 91.
LaTeX Font Info: ... okay on input line 91.
LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 108.
LaTeX Font Info: ... okay on input line 108.
LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 108.
LaTeX Font Info: ... okay on input line 108.
LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 108.
LaTeX Font Info: ... okay on input line 108.
LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 108.
LaTeX Font Info: ... okay on input line 108.
LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 108.
LaTeX Font Info: ... okay on input line 108.
LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 108.
LaTeX Font Info: ... okay on input line 108.
LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 108.
LaTeX Font Info: ... okay on input line 108.
LaTeX Font Info: Checking defaults for PU/pdf/m/n on input line 108.
LaTeX Font Info: ... okay on input line 108.
(/usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii
[Loading MPS to PDF converter (version 2006.09.02).]
@ -948,14 +955,14 @@ Package biblatex Info: ... file 'document.bbl' found.
(./document.bbl
Package biblatex Warning: Biber reported the following issues
(biblatex) with '16':
(biblatex) with 'SupdictL':
(biblatex) - Name "Mairal, J., Ponce, J., Sapiro, G., Zisserman,
A." has too many commas: skipping name.
)
Package biblatex Info: Reference section=0 on input line 91.
Package biblatex Info: Reference segment=0 on input line 91.
Package hyperref Info: Link coloring OFF on input line 91.
Package biblatex Info: Reference section=0 on input line 108.
Package biblatex Info: Reference segment=0 on input line 108.
Package hyperref Info: Link coloring OFF on input line 108.
(/usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty
Package: nameref 2016/05/21 v2.44 Cross-referencing by name of section
@ -964,25 +971,25 @@ Package: gettitlestring 2016/05/16 v1.5 Cleanup title references (HO)
)
\c@section@level=\count357
)
LaTeX Info: Redefining \ref on input line 91.
LaTeX Info: Redefining \pageref on input line 91.
LaTeX Info: Redefining \nameref on input line 91.
LaTeX Info: Redefining \ref on input line 108.
LaTeX Info: Redefining \pageref on input line 108.
LaTeX Info: Redefining \nameref on input line 108.
(./document.out) (./document.out)
\@outlinefile=\write5
\openout5 = `document.out'.
<images/reading_logo.png, id=309, 504.88625pt x 183.68625pt>
<images/reading_logo.png, id=333, 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.
Package pdftex.def Info: images/reading_logo.png used on input line 111.
(pdftex.def) Requested size: 170.71916pt x 56.9057pt.
LaTeX Font Info: Try loading font information for U+msa on input line 94.
LaTeX Font Info: Try loading font information for U+msa on input line 111.
(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd
File: umsa.fd 2013/01/14 v3.01 AMS symbols A
)
LaTeX Font Info: Try loading font information for U+msb on input line 94.
LaTeX Font Info: Try loading font information for U+msb on input line 111.
(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd
File: umsb.fd 2013/01/14 v3.01 AMS symbols B
@ -995,298 +1002,257 @@ File: umsb.fd 2013/01/14 v3.01 AMS symbols B
\openout6 = `document.toc'.
[7] [8] [9]
LaTeX Font Info: Try loading font information for OMS+cmr on input line 190.
LaTeX Font Info: Try loading font information for OMS+cmr on input line 207.
(/usr/share/texlive/texmf-dist/tex/latex/base/omscmr.fd
File: omscmr.fd 2014/09/29 v2.5h Standard LaTeX font definitions
)
LaTeX Font Info: Font shape `OMS/cmr/m/n' in size <12> not available
(Font) Font shape `OMS/cmsy/m/n' tried instead on input line 190.
(Font) Font shape `OMS/cmsy/m/n' tried instead on input line 207.
[10] [11] [12]
Underfull \hbox (badness 10000) in paragraph at lines 206--208
[]
Missing character: There is no â in font cmr12!
Missing character: There is no € in font cmr12!
Missing character: There is no ™ in font cmr12!
Underfull \hbox (badness 10000) in paragraph at lines 215--217
Underfull \hbox (badness 10000) in paragraph at lines 223--225
[]
Underfull \hbox (badness 10000) in paragraph at lines 225--227
Underfull \hbox (badness 10000) in paragraph at lines 232--234
[]
Underfull \hbox (badness 10000) in paragraph at lines 242--244
[]
[13]
Underfull \hbox (badness 10000) in paragraph at lines 235--237
Underfull \hbox (badness 10000) in paragraph at lines 252--254
[]
Underfull \hbox (badness 10000) in paragraph at lines 244--246
Underfull \hbox (badness 10000) in paragraph at lines 261--263
[]
[14] [15] [16] [17] [18] [19]
Missing character: There is no â in font cmr12!
Missing character: There is no € in font cmr12!
Missing character: There is no ˜ in font cmr12!
Missing character: There is no â in font cmr12!
Missing character: There is no € in font cmr12!
Missing character: There is no ™ in font cmr12!
Missing character: There is no â in font cmr12!
Missing character: There is no € in font cmr12!
Missing character: There is no ˜ in font cmr12!
Missing character: There is no â in font cmr12!
Missing character: There is no € in font cmr12!
Missing character: There is no ™ in font cmr12!
Missing character: There is no â in font cmr12!
Missing character: There is no € in font cmr12!
Missing character: There is no ˜ in font cmr12!
Missing character: There is no â in font cmr12!
Missing character: There is no € in font cmr12!
Missing character: There is no ™ in font cmr12!
Missing character: There is no â in font cmr12!
Missing character: There is no € in font cmr12!
Missing character: There is no ˜ in font cmr12!
Missing character: There is no â in font cmr12!
Missing character: There is no € in font cmr12!
Missing character: There is no ™ in font cmr12!
Missing character: There is no â in font cmr12!
Missing character: There is no € in font cmr12!
Missing character: There is no ˜ in font cmr12!
Missing character: There is no â in font cmr12!
Missing character: There is no € in font cmr12!
Missing character: There is no ™ in font cmr12!
[20]
<images/perceptron.png, id=524, 706.64pt x 392.46625pt>
[14] [15] [16] [17] [18] [19] [20] [21] [22]
<images/perceptron.png, id=567, 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.
Package pdftex.def Info: images/perceptron.png used on input line 378.
(pdftex.def) Requested size: 284.52713pt x 170.72142pt.
[21 <./images/perceptron.png>]
<images/rnn_ffn.png, id=538, 844.15375pt x 342.27875pt>
[23 <./images/perceptron.png>]
<images/rnn_ffn.png, id=581, 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.
Package pdftex.def Info: images/rnn_ffn.png used on input line 398.
(pdftex.def) Requested size: 426.80307pt x 170.72112pt.
[22 <./images/rnn_ffn.png>]
<images/lstm.png, id=551, 1160.335pt x 1029.8475pt>
[24 <./images/rnn_ffn.png>]
<images/lstm.png, id=594, 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.
Package pdftex.def Info: images/lstm.png used on input line 416.
(pdftex.def) Requested size: 256.07123pt x 199.1616pt.
[23 <./images/lstm.png>] [24]
Missing character: There is no â in font cmr12!
Missing character: There is no € in font cmr12!
Missing character: There is no ™ in font cmr12!
[25]
Missing character: There is no â in font cmr12!
Missing character: There is no € in font cmr12!
Missing character: There is no ™ in font cmr12!
[26] [27]
Underfull \hbox (badness 10000) in paragraph at lines 487--490
[25 <./images/lstm.png>] [26] [27] [28] [29]
Underfull \hbox (badness 10000) in paragraph at lines 527--530
[]
[28]
Underfull \hbox (badness 10000) in paragraph at lines 504--506
[30]
Underfull \hbox (badness 10000) in paragraph at lines 544--546
[]
Overfull \hbox (9.85295pt too wide) detected at line 509
Overfull \hbox (9.8438pt too wide) detected at line 549
\OML/cmm/m/it/12 P\OT1/cmr/m/n/12 (\OML/cmm/m/it/12 w\OMS/cmsy/m/n/12 j\OML/cmm
/m/it/12 spam\OT1/cmr/m/n/12 ) = []
[]
[29]
Underfull \hbox (badness 10000) in paragraph at lines 516--518
[31]
Underfull \hbox (badness 10000) in paragraph at lines 556--558
[]
Underfull \hbox (badness 10000) in paragraph at lines 520--522
Underfull \hbox (badness 10000) in paragraph at lines 560--562
[]
Underfull \hbox (badness 10000) in paragraph at lines 523--527
Underfull \hbox (badness 10000) in paragraph at lines 563--567
[]
Underfull \hbox (badness 10000) in paragraph at lines 528--530
Underfull \hbox (badness 10000) in paragraph at lines 568--570
[]
Underfull \hbox (badness 10000) in paragraph at lines 531--535
Underfull \hbox (badness 10000) in paragraph at lines 571--575
[]
[30] [31]
LaTeX Font Info: Font shape `OMS/cmr/m/it' in size <12> not available
(Font) Font shape `OMS/cmsy/m/n' tried instead on input line 548.
[32] [33]
Missing character: There is no â in font cmr12!
Missing character: There is no € in font cmr12!
Missing character: There is no ™ in font cmr12!
[34] [35] [36]
<images/Generic_Flow.png, id=672, 1900.09875pt x 529.98pt>
[32] [33] [34] [35] [36] [37] [38]
<images/Generic_Flow.png, id=717, 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 639.
Package pdftex.def Info: images/Generic_Flow.png used on input line 679.
(pdftex.def) Requested size: 512.13474pt x 227.62009pt.
Overfull \hbox (71.28728pt too wide) in paragraph at lines 639--640
Overfull \hbox (71.28728pt too wide) in paragraph at lines 679--680
[][]
[]
[37 <./images/Generic_Flow.png (PNG copy)>]
Underfull \hbox (badness 10000) in paragraph at lines 650--652
[39 <./images/Generic_Flow.png (PNG copy)>]
Underfull \hbox (badness 10000) in paragraph at lines 690--692
[]
<images/Dataflow.png, id=678, 3767.07375pt x 1526.70375pt>
<images/Dataflow.png, id=722, 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 655.
Package pdftex.def Info: images/Dataflow.png used on input line 695.
(pdftex.def) Requested size: 512.09683pt x 227.62125pt.
Overfull \hbox (71.24937pt too wide) in paragraph at lines 655--657
Overfull \hbox (71.24937pt too wide) in paragraph at lines 695--697
[]
[]
[38 <./images/Dataflow.png (PNG copy)>]
<images/Data_Collector.png, id=683, 1152.305pt x 647.41875pt>
[40 <./images/Dataflow.png (PNG copy)>]
<images/Data_Collector.png, id=727, 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 663.
Package pdftex.def Info: images/Data_Collector.png used on input line 703.
(pdftex.def) Requested size: 426.78574pt x 227.61746pt.
[39 <./images/Data_Collector.png (PNG copy)>]
<images/Analysis_Engine.png, id=688, 1658.195pt x 719.68875pt>
[41 <./images/Data_Collector.png (PNG copy)>]
<images/Analysis_Engine.png, id=732, 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 678.
Package pdftex.def Info: images/Analysis_Engine.png used on input line 718.
(pdftex.def) Requested size: 483.67276pt x 227.62561pt.
Overfull \hbox (42.8253pt too wide) in paragraph at lines 678--680
Overfull \hbox (42.8253pt too wide) in paragraph at lines 718--720
[]
[]
[40 <./images/Analysis_Engine.png (PNG copy)>] [41]
<images/Neural_Network.png, id=698, 1502.61375pt x 1032.85875pt>
[42 <./images/Analysis_Engine.png (PNG copy)>] [43]
<images/Neural_Network.png, id=744, 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 696.
Package pdftex.def Info: images/Neural_Network.png used on input line 736.
(pdftex.def) Requested size: 483.6893pt x 341.42757pt.
Overfull \hbox (42.84184pt too wide) in paragraph at lines 696--698
Overfull \hbox (42.84184pt too wide) in paragraph at lines 736--738
[]
[]
[42 <./images/Neural_Network.png (PNG copy)>]
<images/Future_Predictions.png, id=703, 1596.96625pt x 490.83376pt>
[44 <./images/Neural_Network.png (PNG copy)>]
<images/Future_Predictions.png, id=749, 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 710.
Package pdftex.def Info: images/Future_Predictions.png used on input line 750.
(pdftex.def) Requested size: 512.1362pt x 227.62119pt.
Overfull \hbox (71.28874pt too wide) in paragraph at lines 710--712
Overfull \hbox (71.28874pt too wide) in paragraph at lines 750--752
[]
[]
[43 <./images/Future_Predictions.png (PNG copy)>]
<images/Frontend_Application.png, id=709, 804.00375pt x 599.23875pt>
[45 <./images/Future_Predictions.png (PNG copy)>]
<images/Frontend_Application.png, id=754, 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
Package pdftex.def Info: images/Frontend_Application.png used on input line 76
3.
(pdftex.def) Requested size: 284.52162pt x 256.07664pt.
[44 <./images/Frontend_Application.png (PNG copy)>]
<images/interface_design.png, id=714, 1086.0575pt x 1536.74126pt>
[46 <./images/Frontend_Application.png (PNG copy)>]
<images/interface_design.png, id=759, 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 742.
Package pdftex.def Info: images/interface_design.png used on input line 782.
(pdftex.def) Requested size: 227.61479pt x 369.88063pt.
[45 <./images/interface_design.png>]
Underfull \hbox (badness 10000) in paragraph at lines 753--755
[47 <./images/interface_design.png>] [48]
Underfull \hbox (badness 10000) in paragraph at lines 793--795
[]
(/usr/share/texlive/texmf-dist/tex/latex/listings/lstlang1.sty
File: lstlang1.sty 2015/06/04 1.6 listings language file
) [46] [47]
) [49] [50]
[51] [52]
Underfull \hbox (badness 10000) in paragraph at lines 943--945
[]
[53] [54] [55] [56] [57] [58] [59] [60] [61]
LaTeX Font Info: Font shape `OMS/cmr/m/n' in size <10> not available
(Font) Font shape `OMS/cmsy/m/n' tried instead on input line 833.
(Font) Font shape `OMS/cmsy/m/n' tried instead on input line 1221.
[48] [49]
Underfull \hbox (badness 10000) in paragraph at lines 903--905
[]
[50] [51]
Missing character: There is no  in font cmr10!
Missing character: There is no £ in font cmr10!
LaTeX Font Info: Try loading font information for OML+cmr on input line 958.
(/usr/share/texlive/texmf-dist/tex/latex/base/omlcmr.fd
File: omlcmr.fd 2014/09/29 v2.5h Standard LaTeX font definitions
)
LaTeX Font Info: Font shape `OML/cmr/m/n' in size <10> not available
(Font) Font shape `OML/cmm/m/it' tried instead on input line 958.
[52]
[53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67]
[62] [63] [64] [65] [66] [67]
[68] [69] [70] [71] [72]
Overfull \hbox (5.27716pt too wide) in paragraph at lines 1509--1509
\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 ,
Underfull \hbox (badness 10000) in paragraph at lines 1552--1554
[]
[73] [74]
<images/final_interface.png, id=1534, 1913.1475pt x 2695.06876pt>
File: images/final_interface.png Graphic file (type png)
<use images/final_interface.png>
Package pdftex.def Info: images/final_interface.png used on input line 1619.
(pdftex.def) Requested size: 398.32816pt x 540.60803pt.
[75 <./images/final_interface.png>] [76] [77] [78]
LaTeX Font Info: Try loading font information for T1+cmtt on input line 1678
.
(/usr/share/texlive/texmf-dist/tex/latex/base/t1cmtt.fd
File: t1cmtt.fd 2014/09/29 v2.5h Standard LaTeX font definitions
)
Overfull \hbox (40.38213pt too wide) in paragraph at lines 1679--1679
\T1/cmr/m/n/12 works,'' To-wards Data Sci-ence, 2018. [On-line]. Avail-able: []
$\T1/cmtt/m/n/12 https : / / towardsdatascience .
[]
[79]
Overfull \hbox (83.66737pt too wide) in paragraph at lines 1679--1679
\T1/cmr/m/n/12 works,'' Ma-chine Larn-ing Mas-tery, 2017. [On-line]. Avail-able
: []$\T1/cmtt/m/n/12 https : / / machinelearningmastery .
[]
Overfull \hbox (42.7786pt too wide) in paragraph at lines 1509--1509
\OT1/cmr/m/n/12 works,'' To-wards Data Sci-ence, 2018. [On-line]. Avail-able: [
]$\OT1/cmtt/m/n/12 https : / / towardsdatascience .
Overfull \hbox (28.45175pt too wide) in paragraph at lines 1679--1679
\T1/cmr/m/n/12 lem,'' Su-per Data Sci-ence, 2018. [On-line]. Avail-able: []$\T1
/cmtt/m/n/12 https : / / www . superdatascience .
[]
[73]
Overfull \hbox (86.07425pt too wide) in paragraph at lines 1509--1509
\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 .
[80]
Overfull \hbox (7.75049pt too wide) in paragraph at lines 1679--1679
\T1/cmr/m/n/12 2019. [On-line]. Avail-able: []$\T1/cmtt/m/n/12 https : / / medi
um . com / datadriveninvestor / overview -[]
[]
[81]
Overfull \hbox (9.24751pt too wide) in paragraph at lines 1679--1679
\T1/cmr/m/n/12 [On-line]. Avail-able: []$\T1/cmtt/m/n/12 http : / / blog . alej
andronolla . com / 2013 / 05 / 15 / detecting -[]
[]
Overfull \hbox (30.84552pt too wide) in paragraph at lines 1509--1509
\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 .
Overfull \hbox (0.88026pt too wide) in paragraph at lines 1679--1679
[]\T1/cmr/m/n/12 P. Cryp-tog-ra-phy, ``A tu-to-rial on au-to-matic lan-guage id
en-ti-fi-ca-tion - ngram based,''
[]
[74]
Overfull \hbox (9.16136pt too wide) in paragraph at lines 1509--1509
\OT1/cmr/m/n/12 2019. [On-line]. Avail-able: []$\OT1/cmtt/m/n/12 https : / / me
dium . com / datadriveninvestor / overview -[]
[]
[75]
Overfull \hbox (2.93918pt too wide) in paragraph at lines 1509--1509
[]\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,''
[]
[76]
[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=1513, 597.55246pt x 845.07718pt>
<PID.pdf, id=1659, 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 1514.
Package pdftex.def Info: PID.pdf used on input line 1684.
(pdftex.def) Requested size: 597.551pt x 845.07512pt.
@ -1294,7 +1260,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 1514.
Package pdftex.def Info: PID.pdf used on input line 1684.
(pdftex.def) Requested size: 597.551pt x 845.07512pt.
@ -1304,255 +1270,258 @@ 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=1516, page=1, 597.55246pt x 845.07718pt>
<PID.pdf, id=1662, 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 1514.
Package pdftex.def Info: PID.pdf , page1 used on input line 1684.
(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 1514.
Package pdftex.def Info: PID.pdf , page1 used on input line 1684.
(pdftex.def) Requested size: 562.1644pt x 795.0303pt.
[77]
[83]
File: PID.pdf Graphic file (type pdf)
<use PID.pdf, page 1>
Package pdftex.def Info: PID.pdf , page1 used on input line 1514.
Package pdftex.def Info: PID.pdf , page1 used on input line 1684.
(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 1514.
Package pdftex.def Info: PID.pdf , page1 used on input line 1684.
(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 1514.
Package pdftex.def Info: PID.pdf , page1 used on input line 1684.
(pdftex.def) Requested size: 562.1644pt x 795.0303pt.
[78 <./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=1547, page=2, 597.55246pt x 845.07718pt>
<PID.pdf, id=1692, 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 1514.
Package pdftex.def Info: PID.pdf , page2 used on input line 1684.
(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 1514.
Package pdftex.def Info: PID.pdf , page2 used on input line 1684.
(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 1514.
Package pdftex.def Info: PID.pdf , page2 used on input line 1684.
(pdftex.def) Requested size: 562.1644pt x 795.0303pt.
[79 <./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=1554, 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 1514.
(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 1514.
(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 1514.
(pdftex.def) Requested size: 562.1644pt x 795.0303pt.
[80 <./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=1568, 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 1514.
(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 1514.
(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 1514.
(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=1574, 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 1514.
(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 1514.
(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 1514.
(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=1580, 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 1514.
(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 1514.
(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 1514.
(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=1586, page=7, 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 1514.
(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 1514.
(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 1514.
(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=1592, page=8, 845.07718pt x 597.55246pt>
File: PID.pdf Graphic file (type pdf)
<use PID.pdf, page 8>
Package pdftex.def Info: PID.pdf , page8 used on input line 1514.
(pdftex.def) Requested size: 795.0303pt x 562.1644pt.
File: PID.pdf Graphic file (type pdf)
<use PID.pdf, page 8>
Package pdftex.def Info: PID.pdf , page8 used on input line 1514.
(pdftex.def) Requested size: 795.0303pt x 562.1644pt.
File: PID.pdf Graphic file (type pdf)
<use PID.pdf, page 8>
Package pdftex.def Info: PID.pdf , page8 used on input line 1514.
(pdftex.def) Requested size: 795.0303pt x 562.1644pt.
[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=1602, page=9, 845.07718pt x 597.55246pt>
<PID.pdf, id=1699, page=3, 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 1514.
(pdftex.def) Requested size: 795.0303pt x 562.1644pt.
<use PID.pdf, page 3>
Package pdftex.def Info: PID.pdf , page3 used on input line 1684.
(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 1514.
(pdftex.def) Requested size: 795.0303pt x 562.1644pt.
<use PID.pdf, page 3>
Package pdftex.def Info: PID.pdf , page3 used on input line 1684.
(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 1514.
(pdftex.def) Requested size: 795.0303pt x 562.1644pt.
<use PID.pdf, page 3>
Package pdftex.def Info: PID.pdf , page3 used on input line 1684.
(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=1612, page=10, 845.07718pt x 597.55246pt>
<PID.pdf, id=1713, page=4, 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 1514.
(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 1684.
(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 1514.
(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 1684.
(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 1514.
(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 1684.
(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=1624, page=11, 845.07718pt x 597.55246pt>
<PID.pdf, id=1719, page=5, 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 1514.
(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 1684.
(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 1514.
(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 1684.
(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 1514.
(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 1684.
(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=1630, page=12, 845.07718pt x 597.55246pt>
<PID.pdf, id=1725, page=6, 597.55246pt x 845.07718pt>
File: PID.pdf Graphic file (type pdf)
<use PID.pdf, page 12>
Package pdftex.def Info: PID.pdf , page12 used on input line 1514.
(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 1684.
(pdftex.def) Requested size: 562.1644pt x 795.0303pt.
File: PID.pdf Graphic file (type pdf)
<use PID.pdf, page 12>
Package pdftex.def Info: PID.pdf , page12 used on input line 1514.
(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 1684.
(pdftex.def) Requested size: 562.1644pt x 795.0303pt.
File: PID.pdf Graphic file (type pdf)
<use PID.pdf, page 12>
Package pdftex.def Info: PID.pdf , page12 used on input line 1514.
(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 1684.
(pdftex.def) Requested size: 562.1644pt x 795.0303pt.
[89 <./PID.pdf>]
Package atveryend Info: Empty hook `BeforeClearDocument' on input line 1519.
[90]
Package atveryend Info: Empty hook `AfterLastShipout' on input line 1519.
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=1731, page=7, 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 1684.
(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 1684.
(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 1684.
(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=1737, page=8, 845.07718pt x 597.55246pt>
File: PID.pdf Graphic file (type pdf)
<use PID.pdf, page 8>
Package pdftex.def Info: PID.pdf , page8 used on input line 1684.
(pdftex.def) Requested size: 795.0303pt x 562.1644pt.
File: PID.pdf Graphic file (type pdf)
<use PID.pdf, page 8>
Package pdftex.def Info: PID.pdf , page8 used on input line 1684.
(pdftex.def) Requested size: 795.0303pt x 562.1644pt.
File: PID.pdf Graphic file (type pdf)
<use PID.pdf, page 8>
Package pdftex.def Info: PID.pdf , page8 used on input line 1684.
(pdftex.def) Requested size: 795.0303pt x 562.1644pt.
[91 <./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=1747, 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 1684.
(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 1684.
(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 1684.
(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=1757, 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 1684.
(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 1684.
(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 1684.
(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=1770, 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 1684.
(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 1684.
(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 1684.
(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=1776, 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 1684.
(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 1684.
(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 1684.
(pdftex.def) Requested size: 795.0303pt x 562.1644pt.
[95 <./PID.pdf>]
Package atveryend Info: Empty hook `BeforeClearDocument' on input line 1689.
[96]
Package atveryend Info: Empty hook `AfterLastShipout' on input line 1689.
(./document.aux)
Package atveryend Info: Executing hook `AtVeryEndDocument' on input line 1519.
Package atveryend Info: Executing hook `AtEndAfterFileList' on input line 1519.
Package atveryend Info: Executing hook `AtVeryEndDocument' on input line 1689.
Package atveryend Info: Executing hook `AtEndAfterFileList' on input line 1689.
Package rerunfilecheck Info: File `document.out' has not changed.
(rerunfilecheck) Checksum: 59F160EAB469F5A1258FC6296E21E0C8;12216.
(rerunfilecheck) Checksum: A2611AC8121E52D2F7538E5EDEC264FB;13147.
Package logreq Info: Writing requests to 'document.run.xml'.
\openout1 = `document.run.xml'.
)
Here is how much of TeX's memory you used:
24875 strings out of 492982
390821 string characters out of 6134895
1019110 words of memory out of 5000000
27326 multiletter control sequences out of 15000+600000
13564 words of font info for 53 fonts, out of 8000000 for 9000
25087 strings out of 492982
394874 string characters out of 6134895
1018656 words of memory out of 5000000
27432 multiletter control sequences out of 15000+600000
20231 words of font info for 58 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/cmex10.pfb></usr/shar
e/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi10.pfb></usr/share/texl
ive/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi12.pfb></usr/share/texlive/te
xmf-dist/fonts/type1/public/amsfonts/cm/cmmi8.pfb></usr/share/texlive/texmf-dis
t/fonts/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/
amsfonts/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/cmsy
10.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/s
hare/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmti12.pfb></usr/share/t
exlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmtt12.pfb>
Output written on document.pdf (90 pages, 1526653 bytes).
45i,18n,78p,2008b,1838s stack positions out of 5000i,500n,10000p,200000b,80000s
{/usr/share/texmf/fonts/enc/dvips/cm-super/cm-super-t1.enc}</usr/share/texliv
e/texmf-dist/fonts/type1/public/amsfonts/cm/cmex10.pfb></usr/share/texlive/texm
f-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/fonts/
type1/public/amsfonts/cm/cmr12.pfb></usr/share/texlive/texmf-dist/fonts/type1/p
ublic/amsfonts/cm/cmr8.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/am
sfonts/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/cms
y8.pfb></usr/share/texmf/fonts/type1/public/cm-super/sfbx1000.pfb></usr/share/t
exmf/fonts/type1/public/cm-super/sfbx1200.pfb></usr/share/texmf/fonts/type1/pub
lic/cm-super/sfbx1440.pfb></usr/share/texmf/fonts/type1/public/cm-super/sfbx172
8.pfb></usr/share/texmf/fonts/type1/public/cm-super/sfrm0600.pfb></usr/share/te
xmf/fonts/type1/public/cm-super/sfrm1000.pfb></usr/share/texmf/fonts/type1/publ
ic/cm-super/sfrm1200.pfb></usr/share/texmf/fonts/type1/public/cm-super/sfrm1440
.pfb></usr/share/texmf/fonts/type1/public/cm-super/sfrm2488.pfb></usr/share/tex
mf/fonts/type1/public/cm-super/sfti1200.pfb></usr/share/texmf/fonts/type1/publi
c/cm-super/sftt1200.pfb>
Output written on document.pdf (96 pages, 2156782 bytes).
PDF statistics:
1851 PDF objects out of 2073 (max. 8388607)
1689 compressed objects within 17 object streams
765 named destinations out of 1000 (max. 500000)
744 words of extra memory for PDF output out of 10000 (max. 10000000)
2027 PDF objects out of 2073 (max. 8388607)
1851 compressed objects within 19 object streams
857 named destinations out of 1000 (max. 500000)
797 words of extra memory for PDF output out of 10000 (max. 10000000)

View File

@ -9,68 +9,74 @@
\BOOKMARK [2][-]{subsection.5.4}{\376\377\000T\000e\000c\000h\000n\000i\000c\000a\000l\000\040\000S\000p\000e\000c\000i\000f\000i\000c\000a\000t\000i\000o\000n}{section.5}% 9
\BOOKMARK [2][-]{subsection.5.5}{\376\377\000P\000r\000o\000j\000e\000c\000t\000\040\000C\000o\000n\000s\000t\000r\000a\000i\000n\000t\000s}{section.5}% 10
\BOOKMARK [1][-]{section.6}{\376\377\000Q\000u\000a\000l\000i\000t\000y\000\040\000G\000o\000a\000l\000s}{}% 11
\BOOKMARK [1][-]{section.7}{\376\377\000L\000i\000t\000e\000r\000a\000t\000u\000r\000e\000\040\000R\000e\000v\000i\000e\000w}{}% 12
\BOOKMARK [2][-]{subsection.7.1}{\376\377\000E\000x\000i\000s\000t\000i\000n\000g\000\040\000T\000o\000o\000l\000s}{section.7}% 13
\BOOKMARK [2][-]{subsection.7.2}{\376\377\000R\000e\000l\000a\000t\000e\000d\000\040\000r\000e\000s\000e\000a\000r\000c\000h}{section.7}% 14
\BOOKMARK [2][-]{subsection.7.3}{\376\377\000D\000a\000t\000a\000\040\000C\000o\000l\000l\000e\000c\000t\000i\000o\000n}{section.7}% 15
\BOOKMARK [3][-]{subsubsection.7.3.1}{\376\377\000T\000w\000i\000t\000t\000e\000r\000\040\000a\000n\000d\000\040\000T\000w\000i\000t\000t\000e\000r\000\040\000A\000P\000I}{subsection.7.3}% 16
\BOOKMARK [3][-]{subsubsection.7.3.2}{\376\377\000T\000w\000e\000e\000p\000y\000\040\000P\000y\000t\000h\000o\000n\000\040\000P\000a\000c\000k\000a\000g\000e}{subsection.7.3}% 17
\BOOKMARK [2][-]{subsection.7.4}{\376\377\000S\000e\000n\000t\000i\000m\000e\000n\000t\000\040\000A\000n\000a\000l\000y\000s\000i\000s}{section.7}% 18
\BOOKMARK [3][-]{subsubsection.7.4.1}{\376\377\000N\000a\000t\000u\000r\000a\000l\000\040\000L\000a\000n\000g\000u\000a\000g\000e\000\040\000P\000r\000o\000c\000e\000s\000s\000i\000n\000g}{subsection.7.4}% 19
\BOOKMARK [3][-]{subsubsection.7.4.2}{\376\377\000V\000a\000l\000e\000n\000c\000e\000\040\000A\000w\000a\000r\000e\000\040\000D\000i\000c\000t\000i\000o\000n\000a\000r\000y\000\040\000a\000n\000d\000\040\000s\000E\000n\000t\000i\000m\000e\000n\000t\000\040\000R\000e\000a\000s\000o\000n\000i\000n\000g}{subsection.7.4}% 20
\BOOKMARK [2][-]{subsection.7.5}{\376\377\000N\000e\000u\000r\000a\000l\000\040\000N\000e\000t\000w\000o\000r\000k\000s}{section.7}% 21
\BOOKMARK [3][-]{subsubsection.7.5.1}{\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\050\000R\000N\000N\000\051}{subsection.7.5}% 22
\BOOKMARK [3][-]{subsubsection.7.5.2}{\376\377\000L\000o\000n\000g\000-\000S\000h\000o\000r\000t\000\040\000T\000e\000r\000m\000\040\000M\000e\000m\000o\000r\000y\000\040\000\050\000L\000S\000T\000M\000\051}{subsection.7.5}% 23
\BOOKMARK [3][-]{subsubsection.7.5.3}{\376\377\000K\000e\000r\000a\000s\000\040\000a\000n\000d\000\040\000T\000e\000n\000s\000o\000r\000F\000l\000o\000w}{subsection.7.5}% 24
\BOOKMARK [3][-]{subsubsection.7.5.4}{\376\377\000O\000p\000t\000i\000m\000i\000s\000e\000r\000s}{subsection.7.5}% 25
\BOOKMARK [2][-]{subsection.7.6}{\376\377\000M\000a\000c\000h\000i\000n\000e\000\040\000L\000e\000a\000r\000n\000i\000n\000g}{section.7}% 26
\BOOKMARK [3][-]{subsubsection.7.6.1}{\376\377\000N\000a\000i\000v\000e\000\040\000B\000a\000y\000e\000s}{subsection.7.6}% 27
\BOOKMARK [2][-]{subsection.7.7}{\376\377\000B\000a\000g\000\040\000O\000f\000\040\000W\000o\000r\000d\000s}{section.7}% 28
\BOOKMARK [2][-]{subsection.7.8}{\376\377\000T\000F\000-\000I\000D\000F}{section.7}% 29
\BOOKMARK [2][-]{subsection.7.9}{\376\377\000A\000d\000d\000i\000c\000t\000i\000v\000e\000\040\000S\000m\000o\000o\000t\000h\000i\000n\000g}{section.7}% 30
\BOOKMARK [1][-]{section.8}{\376\377\000S\000o\000l\000u\000t\000i\000o\000n\000\040\000A\000p\000p\000r\000o\000a\000c\000h}{}% 31
\BOOKMARK [2][-]{subsection.8.1}{\376\377\000D\000a\000t\000a\000\040\000g\000a\000t\000h\000e\000r\000i\000n\000g}{section.8}% 32
\BOOKMARK [2][-]{subsection.8.2}{\376\377\000D\000a\000t\000a\000\040\000p\000r\000e\000-\000p\000r\000o\000c\000e\000s\000s\000i\000n\000g}{section.8}% 33
\BOOKMARK [2][-]{subsection.8.3}{\376\377\000S\000p\000a\000m\000\040\000F\000i\000l\000t\000e\000r\000i\000n\000g}{section.8}% 34
\BOOKMARK [2][-]{subsection.8.4}{\376\377\000L\000a\000n\000g\000u\000a\000g\000e\000\040\000D\000e\000t\000e\000c\000t\000i\000o\000n}{section.8}% 35
\BOOKMARK [2][-]{subsection.8.5}{\376\377\000S\000e\000n\000t\000i\000m\000e\000n\000t\000\040\000A\000n\000a\000l\000y\000s\000i\000s}{section.8}% 36
\BOOKMARK [2][-]{subsection.8.6}{\376\377\000N\000e\000u\000r\000a\000l\000\040\000N\000e\000t\000w\000o\000r\000k}{section.8}% 37
\BOOKMARK [2][-]{subsection.8.7}{\376\377\000P\000r\000i\000c\000e\000\040\000F\000o\000r\000e\000c\000a\000s\000t\000i\000n\000g}{section.8}% 38
\BOOKMARK [2][-]{subsection.8.8}{\376\377\000F\000r\000o\000n\000t\000e\000n\000d\000\040\000A\000p\000p\000l\000i\000c\000a\000t\000i\000o\000n}{section.8}% 39
\BOOKMARK [2][-]{subsection.8.9}{\376\377\000W\000i\000t\000h\000\040\000r\000e\000f\000e\000r\000e\000n\000c\000e\000\040\000t\000o\000\040\000I\000n\000i\000t\000i\000a\000l\000\040\000P\000I\000D}{section.8}% 40
\BOOKMARK [2][-]{subsection.8.10}{\376\377\000S\000o\000l\000u\000t\000i\000o\000n\000\040\000S\000u\000m\000m\000a\000r\000y}{section.8}% 41
\BOOKMARK [2][-]{subsection.8.11}{\376\377\000D\000a\000t\000a\000\040\000f\000l\000o\000w\000\040\000O\000v\000e\000r\000v\000i\000e\000w}{section.8}% 42
\BOOKMARK [1][-]{section.9}{\376\377\000S\000y\000s\000t\000e\000m\000\040\000D\000e\000s\000i\000g\000n}{}% 43
\BOOKMARK [2][-]{subsection.9.1}{\376\377\000D\000a\000t\000a\000f\000l\000o\000w\000\040\000D\000e\000s\000i\000g\000n\000s}{section.9}% 44
\BOOKMARK [2][-]{subsection.9.2}{\376\377\000I\000n\000t\000e\000r\000f\000a\000c\000e\000\040\000D\000e\000s\000i\000g\000n}{section.9}% 45
\BOOKMARK [1][-]{section.10}{\376\377\000I\000m\000p\000l\000e\000m\000e\000n\000t\000a\000t\000i\000o\000n}{}% 46
\BOOKMARK [2][-]{subsection.10.1}{\376\377\000D\000a\000t\000a\000\040\000c\000o\000l\000l\000e\000c\000t\000i\000o\000n}{section.10}% 47
\BOOKMARK [3][-]{subsubsection.10.1.1}{\376\377\000P\000r\000i\000c\000e\000\040\000T\000i\000m\000e\000-\000S\000e\000r\000i\000e\000s\000\040\000H\000i\000s\000t\000o\000r\000i\000c\000a\000l\000\040\000D\000a\000t\000a}{subsection.10.1}% 48
\BOOKMARK [3][-]{subsubsection.10.1.2}{\376\377\000P\000r\000i\000c\000e\000\040\000T\000i\000m\000e\000-\000S\000e\000r\000i\000e\000s\000\040\000L\000i\000v\000e\000\040\000D\000a\000t\000a}{subsection.10.1}% 49
\BOOKMARK [3][-]{subsubsection.10.1.3}{\376\377\000H\000i\000s\000t\000o\000r\000i\000c\000a\000l\000\040\000T\000w\000e\000e\000t\000\040\000C\000o\000l\000l\000e\000c\000t\000i\000o\000n}{subsection.10.1}% 50
\BOOKMARK [3][-]{subsubsection.10.1.4}{\376\377\000L\000i\000v\000e\000\040\000T\000w\000e\000e\000t\000\040\000C\000o\000l\000l\000e\000c\000t\000i\000o\000n}{subsection.10.1}% 51
\BOOKMARK [2][-]{subsection.10.2}{\376\377\000D\000a\000t\000a\000\040\000p\000r\000e\000-\000p\000r\000o\000c\000e\000s\000s\000i\000n\000g}{section.10}% 52
\BOOKMARK [3][-]{subsubsection.10.2.1}{\376\377\000T\000w\000e\000e\000t\000\040\000F\000i\000l\000t\000e\000r\000i\000n\000g}{subsection.10.2}% 53
\BOOKMARK [3][-]{subsubsection.10.2.2}{\376\377\000L\000a\000n\000g\000u\000a\000g\000e\000\040\000d\000e\000t\000e\000c\000t\000i\000o\000n\000\040\000f\000i\000l\000t\000e\000r\000i\000n\000g}{subsection.10.2}% 54
\BOOKMARK [3][-]{subsubsection.10.2.3}{\376\377\000S\000p\000a\000m\000\040\000f\000i\000l\000t\000e\000r\000\040\000-\000\040\000T\000o\000k\000e\000n\000i\000s\000a\000t\000i\000o\000n\000,\000\040\000N\000g\000r\000a\000m\000s\000,\000\040\000S\000t\000o\000p\000w\000o\000r\000d\000\040\000r\000e\000m\000o\000v\000a\000l\000\040\000a\000n\000d\000\040\000S\000t\000e\000m\000m\000i\000n\000g}{subsection.10.2}% 55
\BOOKMARK [2][-]{subsection.10.3}{\376\377\000S\000p\000a\000m\000\040\000F\000i\000l\000t\000e\000r\000i\000n\000g}{section.10}% 56
\BOOKMARK [3][-]{subsubsection.10.3.1}{\376\377\000N\000a\000i\000v\000e\000\040\000B\000a\000y\000e\000s\000\040\000m\000o\000d\000e\000l}{subsection.10.3}% 57
\BOOKMARK [3][-]{subsubsection.10.3.2}{\376\377\000C\000l\000a\000s\000s\000i\000f\000i\000c\000a\000t\000i\000o\000n}{subsection.10.3}% 58
\BOOKMARK [3][-]{subsubsection.10.3.3}{\376\377\000P\000r\000e\000d\000i\000c\000t}{subsection.10.3}% 59
\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\000D\000a\000t\000a\000s\000e\000t\000\040\000C\000r\000e\000a\000t\000i\000o\000n}{subsection.10.5}% 63
\BOOKMARK [3][-]{subsubsection.10.5.2}{\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}% 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\000U\000s\000e\000r\000\040\000I\000n\000t\000e\000r\000f\000a\000c\000e}{section.10}% 66
\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}{}% 67
\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}{}% 68
\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}{}% 69
\BOOKMARK [2][-]{subsection.13.1}{\376\377\000L\000i\000m\000i\000t\000a\000t\000i\000o\000n\000s}{section.13}% 70
\BOOKMARK [1][-]{section.14}{\376\377\000C\000o\000n\000c\000l\000u\000s\000i\000o\000n\000\040\000a\000n\000d\000\040\000F\000u\000t\000u\000r\000e\000\040\000I\000m\000p\000r\000o\000v\000e\000m\000e\000n\000t\000s}{}% 71
\BOOKMARK [2][-]{subsection.14.1}{\376\377\000C\000o\000n\000c\000l\000u\000s\000i\000o\000n}{section.14}% 72
\BOOKMARK [2][-]{subsection.14.2}{\376\377\000F\000u\000t\000u\000r\000e\000\040\000I\000m\000p\000r\000o\000v\000e\000m\000e\000n\000t\000s}{section.14}% 73
\BOOKMARK [1][-]{section.15}{\376\377\000A\000p\000p\000e\000n\000d\000i\000c\000e\000s}{}% 74
\BOOKMARK [2][-]{subsection.15.1}{\376\377\000A\000p\000p\000e\000n\000d\000i\000x\000\040\000A\000\040\000-\000\040\000P\000r\000o\000j\000e\000c\000t\000\040\000I\000n\000i\000t\000i\000a\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t}{section.15}% 75
\BOOKMARK [2][-]{subsection.15.2}{\376\377\000A\000p\000p\000e\000n\000d\000i\000x\000\040\000B\000\040\000-\000\040\000L\000o\000g\000\040\000b\000o\000o\000k}{section.15}% 76
\BOOKMARK [2][-]{subsection.6.1}{\376\377\000P\000r\000o\000c\000e\000s\000s\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n}{section.6}% 12
\BOOKMARK [2][-]{subsection.6.2}{\376\377\000Q\000u\000a\000l\000i\000t\000y\000\040\000O\000b\000j\000e\000c\000t\000i\000v\000e\000s}{section.6}% 13
\BOOKMARK [2][-]{subsection.6.3}{\376\377\000T\000o\000o\000l\000s\000\040\000t\000o\000\040\000E\000n\000s\000u\000r\000e\000\040\000Q\000u\000a\000l\000i\000t\000y}{section.6}% 14
\BOOKMARK [1][-]{section.7}{\376\377\000L\000i\000t\000e\000r\000a\000t\000u\000r\000e\000\040\000R\000e\000v\000i\000e\000w}{}% 15
\BOOKMARK [2][-]{subsection.7.1}{\376\377\000E\000x\000i\000s\000t\000i\000n\000g\000\040\000T\000o\000o\000l\000s}{section.7}% 16
\BOOKMARK [2][-]{subsection.7.2}{\376\377\000R\000e\000l\000a\000t\000e\000d\000\040\000r\000e\000s\000e\000a\000r\000c\000h}{section.7}% 17
\BOOKMARK [2][-]{subsection.7.3}{\376\377\000D\000a\000t\000a\000\040\000C\000o\000l\000l\000e\000c\000t\000i\000o\000n}{section.7}% 18
\BOOKMARK [3][-]{subsubsection.7.3.1}{\376\377\000T\000w\000i\000t\000t\000e\000r\000\040\000a\000n\000d\000\040\000T\000w\000i\000t\000t\000e\000r\000\040\000A\000P\000I}{subsection.7.3}% 19
\BOOKMARK [3][-]{subsubsection.7.3.2}{\376\377\000T\000w\000e\000e\000p\000y\000\040\000P\000y\000t\000h\000o\000n\000\040\000P\000a\000c\000k\000a\000g\000e}{subsection.7.3}% 20
\BOOKMARK [2][-]{subsection.7.4}{\376\377\000S\000e\000n\000t\000i\000m\000e\000n\000t\000\040\000A\000n\000a\000l\000y\000s\000i\000s}{section.7}% 21
\BOOKMARK [3][-]{subsubsection.7.4.1}{\376\377\000N\000a\000t\000u\000r\000a\000l\000\040\000L\000a\000n\000g\000u\000a\000g\000e\000\040\000P\000r\000o\000c\000e\000s\000s\000i\000n\000g}{subsection.7.4}% 22
\BOOKMARK [3][-]{subsubsection.7.4.2}{\376\377\000V\000a\000l\000e\000n\000c\000e\000\040\000A\000w\000a\000r\000e\000\040\000D\000i\000c\000t\000i\000o\000n\000a\000r\000y\000\040\000a\000n\000d\000\040\000s\000E\000n\000t\000i\000m\000e\000n\000t\000\040\000R\000e\000a\000s\000o\000n\000i\000n\000g}{subsection.7.4}% 23
\BOOKMARK [2][-]{subsection.7.5}{\376\377\000N\000e\000u\000r\000a\000l\000\040\000N\000e\000t\000w\000o\000r\000k\000s}{section.7}% 24
\BOOKMARK [3][-]{subsubsection.7.5.1}{\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\050\000R\000N\000N\000\051}{subsection.7.5}% 25
\BOOKMARK [3][-]{subsubsection.7.5.2}{\376\377\000L\000o\000n\000g\000-\000S\000h\000o\000r\000t\000\040\000T\000e\000r\000m\000\040\000M\000e\000m\000o\000r\000y\000\040\000\050\000L\000S\000T\000M\000\051}{subsection.7.5}% 26
\BOOKMARK [3][-]{subsubsection.7.5.3}{\376\377\000K\000e\000r\000a\000s\000\040\000a\000n\000d\000\040\000T\000e\000n\000s\000o\000r\000F\000l\000o\000w}{subsection.7.5}% 27
\BOOKMARK [3][-]{subsubsection.7.5.4}{\376\377\000O\000p\000t\000i\000m\000i\000s\000e\000r\000s}{subsection.7.5}% 28
\BOOKMARK [2][-]{subsection.7.6}{\376\377\000M\000a\000c\000h\000i\000n\000e\000\040\000L\000e\000a\000r\000n\000i\000n\000g}{section.7}% 29
\BOOKMARK [3][-]{subsubsection.7.6.1}{\376\377\000N\000a\000i\000v\000e\000\040\000B\000a\000y\000e\000s}{subsection.7.6}% 30
\BOOKMARK [2][-]{subsection.7.7}{\376\377\000B\000a\000g\000\040\000O\000f\000\040\000W\000o\000r\000d\000s}{section.7}% 31
\BOOKMARK [2][-]{subsection.7.8}{\376\377\000T\000F\000-\000I\000D\000F}{section.7}% 32
\BOOKMARK [2][-]{subsection.7.9}{\376\377\000A\000d\000d\000i\000c\000t\000i\000v\000e\000\040\000S\000m\000o\000o\000t\000h\000i\000n\000g}{section.7}% 33
\BOOKMARK [1][-]{section.8}{\376\377\000S\000o\000l\000u\000t\000i\000o\000n\000\040\000A\000p\000p\000r\000o\000a\000c\000h}{}% 34
\BOOKMARK [2][-]{subsection.8.1}{\376\377\000D\000a\000t\000a\000\040\000g\000a\000t\000h\000e\000r\000i\000n\000g}{section.8}% 35
\BOOKMARK [2][-]{subsection.8.2}{\376\377\000D\000a\000t\000a\000\040\000p\000r\000e\000-\000p\000r\000o\000c\000e\000s\000s\000i\000n\000g}{section.8}% 36
\BOOKMARK [2][-]{subsection.8.3}{\376\377\000S\000p\000a\000m\000\040\000F\000i\000l\000t\000e\000r\000i\000n\000g}{section.8}% 37
\BOOKMARK [2][-]{subsection.8.4}{\376\377\000L\000a\000n\000g\000u\000a\000g\000e\000\040\000D\000e\000t\000e\000c\000t\000i\000o\000n}{section.8}% 38
\BOOKMARK [2][-]{subsection.8.5}{\376\377\000S\000e\000n\000t\000i\000m\000e\000n\000t\000\040\000A\000n\000a\000l\000y\000s\000i\000s}{section.8}% 39
\BOOKMARK [2][-]{subsection.8.6}{\376\377\000N\000e\000u\000r\000a\000l\000\040\000N\000e\000t\000w\000o\000r\000k}{section.8}% 40
\BOOKMARK [2][-]{subsection.8.7}{\376\377\000P\000r\000i\000c\000e\000\040\000F\000o\000r\000e\000c\000a\000s\000t\000i\000n\000g}{section.8}% 41
\BOOKMARK [2][-]{subsection.8.8}{\376\377\000F\000r\000o\000n\000t\000e\000n\000d\000\040\000A\000p\000p\000l\000i\000c\000a\000t\000i\000o\000n}{section.8}% 42
\BOOKMARK [2][-]{subsection.8.9}{\376\377\000W\000i\000t\000h\000\040\000r\000e\000f\000e\000r\000e\000n\000c\000e\000\040\000t\000o\000\040\000I\000n\000i\000t\000i\000a\000l\000\040\000P\000I\000D}{section.8}% 43
\BOOKMARK [2][-]{subsection.8.10}{\376\377\000S\000o\000l\000u\000t\000i\000o\000n\000\040\000S\000u\000m\000m\000a\000r\000y}{section.8}% 44
\BOOKMARK [2][-]{subsection.8.11}{\376\377\000D\000a\000t\000a\000\040\000f\000l\000o\000w\000\040\000O\000v\000e\000r\000v\000i\000e\000w}{section.8}% 45
\BOOKMARK [1][-]{section.9}{\376\377\000S\000y\000s\000t\000e\000m\000\040\000D\000e\000s\000i\000g\000n}{}% 46
\BOOKMARK [2][-]{subsection.9.1}{\376\377\000D\000a\000t\000a\000f\000l\000o\000w\000\040\000D\000e\000s\000i\000g\000n\000s}{section.9}% 47
\BOOKMARK [2][-]{subsection.9.2}{\376\377\000I\000n\000t\000e\000r\000f\000a\000c\000e\000\040\000D\000e\000s\000i\000g\000n}{section.9}% 48
\BOOKMARK [1][-]{section.10}{\376\377\000I\000m\000p\000l\000e\000m\000e\000n\000t\000a\000t\000i\000o\000n}{}% 49
\BOOKMARK [2][-]{subsection.10.1}{\376\377\000D\000a\000t\000a\000\040\000c\000o\000l\000l\000e\000c\000t\000i\000o\000n}{section.10}% 50
\BOOKMARK [3][-]{subsubsection.10.1.1}{\376\377\000P\000r\000i\000c\000e\000\040\000T\000i\000m\000e\000-\000S\000e\000r\000i\000e\000s\000\040\000H\000i\000s\000t\000o\000r\000i\000c\000a\000l\000\040\000D\000a\000t\000a}{subsection.10.1}% 51
\BOOKMARK [3][-]{subsubsection.10.1.2}{\376\377\000P\000r\000i\000c\000e\000\040\000T\000i\000m\000e\000-\000S\000e\000r\000i\000e\000s\000\040\000L\000i\000v\000e\000\040\000D\000a\000t\000a}{subsection.10.1}% 52
\BOOKMARK [3][-]{subsubsection.10.1.3}{\376\377\000H\000i\000s\000t\000o\000r\000i\000c\000a\000l\000\040\000T\000w\000e\000e\000t\000\040\000C\000o\000l\000l\000e\000c\000t\000i\000o\000n}{subsection.10.1}% 53
\BOOKMARK [3][-]{subsubsection.10.1.4}{\376\377\000L\000i\000v\000e\000\040\000T\000w\000e\000e\000t\000\040\000C\000o\000l\000l\000e\000c\000t\000i\000o\000n}{subsection.10.1}% 54
\BOOKMARK [2][-]{subsection.10.2}{\376\377\000D\000a\000t\000a\000\040\000p\000r\000e\000-\000p\000r\000o\000c\000e\000s\000s\000i\000n\000g}{section.10}% 55
\BOOKMARK [3][-]{subsubsection.10.2.1}{\376\377\000T\000w\000e\000e\000t\000\040\000F\000i\000l\000t\000e\000r\000i\000n\000g}{subsection.10.2}% 56
\BOOKMARK [3][-]{subsubsection.10.2.2}{\376\377\000L\000a\000n\000g\000u\000a\000g\000e\000\040\000d\000e\000t\000e\000c\000t\000i\000o\000n\000\040\000f\000i\000l\000t\000e\000r\000i\000n\000g}{subsection.10.2}% 57
\BOOKMARK [3][-]{subsubsection.10.2.3}{\376\377\000S\000p\000a\000m\000\040\000f\000i\000l\000t\000e\000r\000\040\000-\000\040\000T\000o\000k\000e\000n\000i\000s\000a\000t\000i\000o\000n\000,\000\040\000N\000g\000r\000a\000m\000s\000,\000\040\000S\000t\000o\000p\000w\000o\000r\000d\000\040\000r\000e\000m\000o\000v\000a\000l\000\040\000a\000n\000d\000\040\000S\000t\000e\000m\000m\000i\000n\000g}{subsection.10.2}% 58
\BOOKMARK [2][-]{subsection.10.3}{\376\377\000S\000p\000a\000m\000\040\000F\000i\000l\000t\000e\000r\000i\000n\000g}{section.10}% 59
\BOOKMARK [3][-]{subsubsection.10.3.1}{\376\377\000N\000a\000i\000v\000e\000\040\000B\000a\000y\000e\000s\000\040\000m\000o\000d\000e\000l}{subsection.10.3}% 60
\BOOKMARK [3][-]{subsubsection.10.3.2}{\376\377\000C\000l\000a\000s\000s\000i\000f\000i\000c\000a\000t\000i\000o\000n}{subsection.10.3}% 61
\BOOKMARK [3][-]{subsubsection.10.3.3}{\376\377\000P\000r\000e\000d\000i\000c\000t}{subsection.10.3}% 62
\BOOKMARK [3][-]{subsubsection.10.3.4}{\376\377\000M\000e\000t\000r\000i\000c\000s}{subsection.10.3}% 63
\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}% 64
\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}% 65
\BOOKMARK [3][-]{subsubsection.10.5.1}{\376\377\000D\000a\000t\000a\000s\000e\000t\000\040\000C\000r\000e\000a\000t\000i\000o\000n}{subsection.10.5}% 66
\BOOKMARK [3][-]{subsubsection.10.5.2}{\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}% 67
\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}% 68
\BOOKMARK [2][-]{subsection.10.7}{\376\377\000U\000s\000e\000r\000\040\000I\000n\000t\000e\000r\000f\000a\000c\000e}{section.10}% 69
\BOOKMARK [3][-]{subsubsection.10.7.1}{\376\377\000K\000e\000y\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000s}{subsection.10.7}% 70
\BOOKMARK [3][-]{subsubsection.10.7.2}{\376\377\000F\000i\000n\000a\000l\000\040\000I\000n\000t\000e\000r\000f\000a\000c\000e}{subsection.10.7}% 71
\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}{}% 72
\BOOKMARK [1][-]{section.12}{\376\377\000D\000i\000s\000c\000u\000s\000s\000i\000o\000n\000\040\000o\000f\000\040\000R\000e\000s\000u\000l\000t\000s}{}% 73
\BOOKMARK [1][-]{section.13}{\376\377\000P\000r\000o\000j\000e\000c\000t\000\040\000E\000v\000a\000l\000u\000a\000t\000i\000o\000n}{}% 74
\BOOKMARK [1][-]{section.14}{\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}{}% 75
\BOOKMARK [2][-]{subsection.14.1}{\376\377\000L\000i\000m\000i\000t\000a\000t\000i\000o\000n\000s}{section.14}% 76
\BOOKMARK [1][-]{section.15}{\376\377\000C\000o\000n\000c\000l\000u\000s\000i\000o\000n\000\040\000a\000n\000d\000\040\000F\000u\000t\000u\000r\000e\000\040\000I\000m\000p\000r\000o\000v\000e\000m\000e\000n\000t\000s}{}% 77
\BOOKMARK [2][-]{subsection.15.1}{\376\377\000C\000o\000n\000c\000l\000u\000s\000i\000o\000n}{section.15}% 78
\BOOKMARK [2][-]{subsection.15.2}{\376\377\000F\000u\000t\000u\000r\000e\000\040\000I\000m\000p\000r\000o\000v\000e\000m\000e\000n\000t\000s}{section.15}% 79
\BOOKMARK [1][-]{section.16}{\376\377\000A\000p\000p\000e\000n\000d\000i\000c\000e\000s}{}% 80
\BOOKMARK [2][-]{subsection.16.1}{\376\377\000A\000p\000p\000e\000n\000d\000i\000x\000\040\000A\000\040\000-\000\040\000P\000r\000o\000j\000e\000c\000t\000\040\000I\000n\000i\000t\000i\000a\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t}{section.16}% 81
\BOOKMARK [2][-]{subsection.16.2}{\376\377\000A\000p\000p\000e\000n\000d\000i\000x\000\040\000B\000\040\000-\000\040\000L\000o\000g\000\040\000b\000o\000o\000k}{section.16}% 82

Binary file not shown.

Binary file not shown.

View File

@ -22,6 +22,7 @@
\usepackage[acronym,toc]{glossaries}
\usepackage[margin=1.2in]{geometry}
\usepackage{titling}
\usepackage[T1]{fontenc}
\usepackage{listings}
\usepackage{color}
@ -49,6 +50,22 @@
tabsize=2
}
\lstdefinelanguage{JavaScript}{
backgroundcolor=\color{backcolour},
keywords={\$, script, for, Object, typeof, new, true, false, catch, function, return, null, catch, switch, var, if, in, while, do, else, case, break},
keywordstyle=\color{magenta}\bfseries,
ndkeywords={class, export, boolean, throw, implements, import, this},
ndkeywordstyle=\color{darkgray}\bfseries,
identifierstyle=\color{black},
sensitive=false,
comment=[l]{//},
morecomment=[s]{/*}{*/},
commentstyle=\color{codegreen},
stringstyle=\color{codepurple},
morestring=[b]',
morestring=[b]"
}
\lstset{style=mystyle}
\usepackage[style=ieee,backend=biber]{biblatex}
@ -155,7 +172,7 @@
The chosen cryptocurrency that will be of focus for this project will be the currency Bitcoin (BTC), due to having the largest community and backing and has been known to lead other fiat currencies. Bitcoin is seen as one, if not the first cryptocurrency to bring a broader following to the peer-to-peer token transaction scene since 2009. Although it was not the first token to utilise blockchain technology, it allowed investors to openly trade a public cryptocurrency which provided pseudonymous means of transferring funds through the internet. Thus it has been around longer than most of the other fiat currencies and is the most popular crypto-token due to it's more extensive community base.
Most financial commodities are subject to the whim of public confidence and are the core of its base value. A platform that is frequently used for the public to convey their opinions on a commodity is that of Twitter which provides arguably biased information and opinions. Whether the opinions present a basis in facts or not, they are usually taken at face value and can influence the public opinion of given topics. As Bitcoin has been around since 2009 the opinions and information on the commodity are prevalent through the platform.
In the paper \textit{Sentiment Analysis of Twitter Data for Predicting Stock Market Movements} by \textit{Majhi et al.} \cite{1} 2.5 million tweets on Microsoft were extracted from Twitter, sentiment analysis and logistical regression performed on the data yielded 69.01\% accuracy for a 3-day period on the increase/decrease in stock price. These results showed a "\textit{good correlation between stock market movements and the sentiments of the public expressed in Twitter}".
In the paper \textit{Sentiment Analysis of Twitter Data for Predicting Stock Market Movements} by \textit{Majhi et al.} \cite{SaTdpsmm} 2.5 million tweets on Microsoft were extracted from Twitter, sentiment analysis and logistical regression performed on the data yielded 69.01\% accuracy for a 3-day period on the increase/decrease in stock price. These results showed a "\textit{good correlation between stock market movements and the sentiments of the public expressed in Twitter}".
The background of this project is in response to the volatility of the cryptocurrency market, which can fluctuate at a moments notice and can be seen to be social media driven. The history of the price of Bitcoin and what was being discussed on the currency around it's most volatile period to-date, Nov-2017 to Feb-2018, shows a strong bullish trend which saw Bitcoin reach a \$19,500 high in mid-Dec. While social media, such as Twitter, during that period was had an extremely positive outlook on the cryptocurrency. The trend was short lived and saw the market crash only a month later, with only a couple of sell-offs, expected for the holidays rush, accompanied by negative outlooks posted on social media turned the market against itself which saw the longest bearish market in Bitcoin's history and is still trying to recover today.
@ -199,7 +216,7 @@
\subsection{Project Motivation}
The motivation behind the project stems from a range of points, from personal and public issues with the volatility if the crypto-market, and how losses specifically could be mitigated. The personal motivations behind the conceptualisation of this began two years ago during the crash of late 2017-2018, which saw new investors blindly jump into the trend that was buying cryptocurrencies. During this period of November to December 2017 saw Bitcoin's price reach \$20,000 from \$5,000, new public investors jumped on the chance to buy into the trend of possibly making quick profits and the fear of missing out (FOMO). In late December, a few holiday sell-offs occurred from business and big investors, this coupled with a few negative outlooks posted on social media by news outlets caused the market to implode causing investors to panic sell one after the other and posting negativity on social, thus causing more decline in the market. As a result, this caused personal monetary loss and distress as being a long-term investor.
Another motivation is that at the time of writing, there are no publically available systems that combine sentiment analysis with a historical price to forecast the price of Bitcoin or any other cryptocurrency. There are papers and a few code repositories that implement a similar concepts \cite{2} - \textit{Use of a Multi-layer Perceptron network for moving averages in Bitcoin price}, \cite{3} - \textit{Predicting Bitcoin price fluctuation with Twitter sentiment analysis}, \cite{4} - \textit{Predict Tomorrows Bitcoin (BTC) Price with Recurrent Neural Networks} but are not operational. A system such as \cite{1} hosted on Coingecko, a popular cryptocurrency track site, provides a tool for basic sentiment analysis but doesn't give an evaluated indication of the direction of the market as a prediction. This leaves the public to the whim of volatility of the market without a means to know what the next, say an hour, could entail to possibly reduce losses if the market drops. Such systems are usually kept in-house of major corporations who invest significant time into tackling such a problem. Additionlly, this could be seen as a positive for major investors, as such a system could cause panic selling if public investors solely trusted such a system.
Another motivation is that at the time of writing, there are no publically available systems that combine sentiment analysis with a historical price to forecast the price of Bitcoin or any other cryptocurrency. There are papers and a few code repositories that implement a similar concepts \cite{nlAeiBTCPSO} - \textit{Use of a Multi-layer Perceptron network for moving averages in Bitcoin price}, \cite{BTCFTsent} - \textit{Predicting Bitcoin price fluctuation with Twitter sentiment analysis}, \cite{BTCRNN} - \textit{Predict Tomorrows Bitcoin (BTC) Price with Recurrent Neural Networks} but are not operational. A system such as \cite{SaTdpsmm} hosted on Coingecko, a popular cryptocurrency track site, provides a tool for basic sentiment analysis but doesn't give an evaluated indication of the direction of the market as a prediction. This leaves the public to the whim of volatility of the market without a means to know what the next, say an hour, could entail to possibly reduce losses if the market drops. Such systems are usually kept in-house of major corporations who invest significant time into tackling such a problem. Additionlly, this could be seen as a positive for major investors, as such a system could cause panic selling if public investors solely trusted such a system.
\newpage
\subsection{Technical Specification}
@ -263,8 +280,31 @@
\item ...
\end{itemize}
\newpage
\section{Quality Goals}
Although this project will be an investigation it is important to ensure that a specific level of quality is met and maintained throughout development to produce a final solution that fully meets the requirements set out in the technical specifiction. This section will outline the quality objectives, processes used to aid in ensuring quality, quality goals and the deveopment pipeline.
\textit{Goals}
\subsection{Process Description}
To maintain a level of quality through the project's development lifecycle various processes are to be defined. As stated in ISO 9001:2015 \cite{ISO9000} "Consistent and predictable results are achieved more effectively and efficiently when activities are understood and managed as interrelated processes". To achieve this, clearly defined processes of how this system should be developed along with tools to achieve this will need to be defined before the development of this project, to ensure an effective, transparent and well-tested system is created, of which should be outlined in the solution approach.
\subsection{Quality Objectives}
The objective of testing is to determine that the functionality provided works according to the specifications and satisfies the problem statement. This is to ensure that the system is performing both as intended and without failure.
The most important aspect of testing of the system is to ensure that predictions for Bitcoin price are calculated for the next hour interval. Testing should be conducted around this to both determine the accuracy of the predictions made by the system, and to validate the optimisers and other methods used for model creation. Suitable performance and accuracy metrics should be chosen and implemented to aid in justifying the accuracy of the developed solution for a regression model.
The development of this project should follow an agile methodology as closely as and when possible. Prior to functions and components being created after another has finished development, said completed function should be tested and fully operational with the existing functions and components it uses or provides for. Component testing should be conducted to determine what functions are operating as intended along with the development of the system.
Lastly, the testing of the user interface shouldn't be considered as part of the testing of the system due to the focus of this project not formulating around the development of the interface, but rather around the back-end prediction system. As long as what is intended to be displayed to the user and are displayed correctly as per the user interface design such testing will be sufficient.
\subsection{Tools to Ensure Quality}
\begin{itemize}
\item Version Control: A version control system will be used for the development of this project, such as Git - (Github), and will provide a means to track the versions of the code and to store it on a remote server as a backup.
\item Linting and Static code analysis: This will allow for an on-the-fly bug detection and code quality measures to be set for the python language. This will ensure that code is written in the best practice for the language and all code will conform to the same standard. The type of linting analyser that will be used will be determined by the Text editor used for development.
\item Text Editor/IDE: Visual Studio Editor will be used as the sole text editor for the development of this project, due to having an in-built python linter.
\end{itemize}
\newpage
@ -280,11 +320,11 @@
There has been an abundant amount of research conducted in this problem domain. Many theses globally have been published in recent years on the topic of cryptocurrency market predictions and analysis, and even more, research conducted on general stock markets further back.
The thesis written by \textit{Evita Stenqvist and Jacob Lonno} of the \textit{KTH Royal Institute of Technology} \cite{3} investigates the use of sentiment expressed through micro-blogging such as Twitter can have on the price fluctuations of Bitcoin. Its primary focus was creating an analyser for the sentiment of tweets more accurately \textit{"by not only taking into account negation, but also valence, common slang and smileys"}, than that of former researchers that \textit{"mused that accounting for negations in text may be a step in the direction of more accurate predictions."}. This would be built upon the lexicon-based sentiment analyser VADER to ascertain the overall sentiment scores were grouped into time-series for each interval from 5 minutes to 4 hours, along with the interval prices for Bitcoin. The model chosen was a naive binary classified vectors of predictions for a certain threshold to \textit{"ultimately compare the predictions to actual historical price data"}. The results of this research suggest that a binary classification model of varying threshold over time-shifts in time-series data was "lackluster", seeing the number of predictions decreasing rapidly as the threshold changed. This research is a reasonable basis of starting research upon, as it suggests tools such as VADER for sentiment analysis and that the use of a machine learning algorithm would be a next step in the project that would yield better more accurate results.
The thesis written by \textit{Evita Stenqvist and Jacob Lonno} of the \textit{KTH Royal Institute of Technology} \cite{BTCFTsent} investigates the use of sentiment expressed through micro-blogging such as Twitter can have on the price fluctuations of Bitcoin. Its primary focus was creating an analyser for the sentiment of tweets more accurately \textit{"by not only taking into account negation, but also valence, common slang and smileys"}, than that of former researchers that \textit{"mused that accounting for negations in text may be a step in the direction of more accurate predictions."}. This would be built upon the lexicon-based sentiment analyser VADER to ascertain the overall sentiment scores were grouped into time-series for each interval from 5 minutes to 4 hours, along with the interval prices for Bitcoin. The model chosen was a naive binary classified vectors of predictions for a certain threshold to \textit{"ultimately compare the predictions to actual historical price data"}. The results of this research suggest that a binary classification model of varying threshold over time-shifts in time-series data was "lackluster", seeing the number of predictions decreasing rapidly as the threshold changed. This research is a reasonable basis of starting research upon, as it suggests tools such as VADER for sentiment analysis and that the use of a machine learning algorithm would be a next step in the project that would yield better more accurate results.
Another thesis written by \textit{Pagolu, Venkata Sasank and Reddy Kamal Nayan, Panda Ganapati and Majhi, Babita} \cite{1} on "Sentiment Analysis of Twitter Data for Predicting Stock Market Movements" 2.5 million tweets on Microsoft were extracted from Twitter, sentiment analysis and logistical regression performed on the data yielded 69.01\% accuracy for a 3-day period on the increase/decrease in stock price. These results showed a "\textit{good correlation between stock market movements and the sentiments of the public expressed in Twitter}". Using various natural language pre-processing tweets for feature extraction such as N-gram representation the sentiment from tweets were extrapolated. Both Word2vec and a random forest classifier were compared for accuracy, Word2vec being chosen over the machine learning model. Word2vec, being a group of related shallow two-layer neural network models to produce word embeddings.
Another thesis written by \textit{Pagolu, Venkata Sasank and Reddy Kamal Nayan, Panda Ganapati and Majhi, Babita} \cite{SaTdpsmm} on "Sentiment Analysis of Twitter Data for Predicting Stock Market Movements" 2.5 million tweets on Microsoft were extracted from Twitter, sentiment analysis and logistical regression performed on the data yielded 69.01\% accuracy for a 3-day period on the increase/decrease in stock price. These results showed a "\textit{good correlation between stock market movements and the sentiments of the public expressed in Twitter}". Using various natural language pre-processing tweets for feature extraction such as N-gram representation the sentiment from tweets were extrapolated. Both Word2vec and a random forest classifier were compared for accuracy, Word2vec being chosen over the machine learning model. Word2vec, being a group of related shallow two-layer neural network models to produce word embeddings.
A topic that reoccurs in various papers and theses is that of the use and focus of regression techniques and machine learning methods. Few implement a fully fledged neural network; the above paper attempts to use a simple network to achieve predictions of classification of sentiment for stock market movement then correlated this with historical data of prices. An article posted on "Code Project" by Intel Corporation \cite{5} compares the accuracy of three machine learning algorithms; Random Forest, Logistic Regression and Multi-Layer Perceptron (MLP) classifiers on predicting the price fluctuations of Bitcoin with embedded price indices. Results showing \textit{"that using the MLP classifier (a.k.a. neural networks) showed better results than logistic regression and random forest trained models"}. This assumption can be backed up by the results from a thesis posted on IEEE \cite{6} which compares a Bayesian optimised recurrent neural network and a Long Short Term Memory (LSTM) network - showing the LSTM model achieving \textit{"the highest classification accuracy of 52\% and a RMSE of 8\%"}. With interest in neural networks personally and with little papers utilising them for this purpose a neural network will thus be implemented, and the accuracy of one's predictions with use of sentiment analysis data analysed and discussed.
A topic that reoccurs in various papers and theses is that of the use and focus of regression techniques and machine learning methods. Few implement a fully fledged neural network; the above paper attempts to use a simple network to achieve predictions of classification of sentiment for stock market movement then correlated this with historical data of prices. An article posted on "Code Project" by Intel Corporation \cite{StPNSentA} compares the accuracy of three machine learning algorithms; Random Forest, Logistic Regression and Multi-Layer Perceptron (MLP) classifiers on predicting the price fluctuations of Bitcoin with embedded price indices. Results showing \textit{"that using the MLP classifier (a.k.a. neural networks) showed better results than logistic regression and random forest trained models"}. This assumption can be backed up by the results from a thesis posted on IEEE \cite{MLBTCpred} which compares a Bayesian optimised recurrent neural network and a Long Short Term Memory (LSTM) network - showing the LSTM model achieving \textit{"the highest classification accuracy of 52\% and a RMSE of 8\%"}. With interest in neural networks personally and with little papers utilising them for this purpose a neural network will thus be implemented, and the accuracy of one's predictions with use of sentiment analysis data analysed and discussed.
\subsection{Data Collection}\label{tweet_collection}
@ -293,7 +333,7 @@
The Twitter API has an extensive range of endpoints that provide access from streaming tweets for a given hashtag, obtaining historical tweets for a given time-period and hashtag, posting tweets on a users account and to change settings on a user account with authentication. The exhaustive range of features provided by these endpoints makes data collection from Twitter straight forward as one can target a specific endpoint for the required data. Due to Twitter being the target for opinion mining within this project the Twitter API will ultimately need to be utilised. This can either be used for the gathering of historical tweets or streaming current tweets for the \#Bitcoin hashtag.
There are, however, limitations and rate limits imposed on users of the API. Twitter employs a tiering system for the API - Standard, Premium and Enterprise tiers, each of which provides different amounts of access for data collection. If the API were to be used to capture historical data for a span of 3 months, each tier is allowed to obtain varying amounts of data for different durations; \cite{7}
There are, however, limitations and rate limits imposed on users of the API. Twitter employs a tiering system for the API - Standard, Premium and Enterprise tiers, each of which provides different amounts of access for data collection. If the API were to be used to capture historical data for a span of 3 months, each tier is allowed to obtain varying amounts of data for different durations; \cite{SearchTweets}
\begin{itemize}
\item A Standard user would be able to capture 100 recent tweets for the past 7 days
@ -301,17 +341,17 @@
\item An Enterprise user would be able to capture up to 500 tweets per unlimited requests for a 30-day span and will be able to query the full-archive of tweets for a given hashtag up to 2000 tweets per unlimited amount of requests for a given time period
\end{itemize}
Each tier has individual costs while the standard user negating this as a basic tier. Due to only being elegable for the Premium tier for educational purposes, historical data gathering will be limited to 100 tweets per request with a limitation of 50 requests per month. Furthermore streaming tweets is an Enterprise feature which rules out the the Twitter API for use of streaming current real-time data \cite{8}.
Each tier has individual costs while the standard user negating this as a basic tier. Due to only being elegable for the Premium tier for educational purposes, historical data gathering will be limited to 100 tweets per request with a limitation of 50 requests per month. Furthermore streaming tweets is an Enterprise feature which rules out the the Twitter API for use of streaming current real-time data \cite{ConStream}.
\subsubsection{Tweepy Python Package}
Tweepy is a python package for accessing the Twitter API. It fundamentally accomplishes the same means if one to conduct a GET request to the Twitter API, except it simplifies this into a simple to use API that is easier to implement and automate in python \cite{9}. Consequently, it builds upon the existing Twitter API to provide features such as automated streaming of provided hashtags to the API. It realises this by initialising a listener instance for a provided set of API credentials, handling authentication, connections, creating and destroying sessions. Due to Twitter's streaming API being only available to Enterprise users \cite{7}, using Tweepy to stream data for a given hashtag will provide the real-time data needed. The streaming of current data by Tweepy is accomplished by setting up a stream which listens for new data for a given hashtag, which bypasses the need for the Enterprise tweet tracker provided by the Twitter API.
Tweepy is a python package for accessing the Twitter API. It fundamentally accomplishes the same means if one to conduct a GET request to the Twitter API, except it simplifies this into a simple to use API that is easier to implement and automate in python \cite{TweepyStream}. Consequently, it builds upon the existing Twitter API to provide features such as automated streaming of provided hashtags to the API. It realises this by initialising a listener instance for a provided set of API credentials, handling authentication, connections, creating and destroying sessions. Due to Twitter's streaming API being only available to Enterprise users \cite{SearchTweets}, using Tweepy to stream data for a given hashtag will provide the real-time data needed. The streaming of current data by Tweepy is accomplished by setting up a stream which listens for new data for a given hashtag, which bypasses the need for the Enterprise tweet tracker provided by the Twitter API.
\subsection{Sentiment Analysis}\label{sentiment}
In short, sentiment analysis is the process and discovery of computationally identifying and categorising the underlining opinions and subjectivity expressed in written language. This process determines the writer's attitude towards a particular topic as either being positive, neutral or negative in terms of opinion, known as polarity classification.
\subsubsection{Natural Language Processing}\label{algorithms}
Polarity classification is the focus of sentiment analysis and is a well-known problem in natural language processing that has had significant attention by researchers in recent years \cite{1}\cite{3}\cite{6}\cite{10}. Traditional approaches to this have usually been classified to dictionary-based approaches that use pre-constructed sentiment lexicons such as VADER or usually confined to machine learning approaches. The latter requires an extensive amount of natural language pre-processing to extrapolate vectors and features from the given text; this is then fed into a machine learning classifier which attempts to categorise words to a level of sentiment polarity. Natural language pre-processing techniques, supported by the NLTK (Natural Language Toolkit) python package that would be required for this approach would consist of;
Polarity classification is the focus of sentiment analysis and is a well-known problem in natural language processing that has had significant attention by researchers in recent years \cite{SaTdpsmm}\cite{BTCFTsent}\cite{MLBTCpred}\cite{PolClassPatients}. Traditional approaches to this have usually been classified to dictionary-based approaches that use pre-constructed sentiment lexicons such as VADER or usually confined to machine learning approaches. The latter requires an extensive amount of natural language pre-processing to extrapolate vectors and features from the given text; this is then fed into a machine learning classifier which attempts to categorise words to a level of sentiment polarity. Natural language pre-processing techniques, supported by the NLTK (Natural Language Toolkit) python package that would be required for this approach would consist of;
\begin{itemize}
\item Tokenisation: The act of splitting a stream of text into smaller units of typographical tokens which isolate unneeded punctuation.
@ -322,17 +362,17 @@
\item Ngrams: Are a contiguous sequence of n items from a given sample of text. The use of Ngrams in natural language processing can improve the accuracy of classification. For example: Good and Not Good have opposite meanings. By only using 1 token (1gram) not good (not and good) can be incorrectly classified. As the english language contains a significant amount of 2gram type word chains using 2gram can improve the accuracy of classification.
\end{itemize}
The former, seen and has been proven to provide higher accuracy than traditional machine learning approaches \cite{11}, and need little pre-processing conducted on the data as words have a pre-defined sentiment classification in a provided lexicon. Although these lexicons can be complex to create, they generally require little resources to use and alter.
The former, seen and has been proven to provide higher accuracy than traditional machine learning approaches \cite{LexiconSocSent}, and need little pre-processing conducted on the data as words have a pre-defined sentiment classification in a provided lexicon. Although these lexicons can be complex to create, they generally require little resources to use and alter.
\subsubsection{Valence Aware Dictionary and sEntiment Reasoning}\label{Vader}
VADER is a combined lexicon and rule-based sentiment analysis tool that is specifically attuned to sentiments expressed in social media and works well on texts from other domains. It is capable of detecting the polarity of a given text - positivity, neutrality, and negativity \cite{12}, and also calculate the compound score which is calculated by summing the valence scores of each word in the lexicon. VADER uses a human-centric approach to sentiment analysis, combining qualitative analysis and empirical validation by using human raters to rate the level of sentiment for words in its lexicon. Vader also has emoticon support which maps these colloquialisms have pre-defined intensities in its lexicon, which makes VADER specifically suitable for the social media domain were the use of emoticons, utf-8 emojis and slang such as "Lol" and "Yolo" are prevalent within the text. Additionally, VADER is provided as a lexicon and a python library under the MIT license, this means that it is open-source software. This means that the lexicon can be altered and added to abling it to be tailored to specific topic domains.
VADER is a combined lexicon and rule-based sentiment analysis tool that is specifically attuned to sentiments expressed in social media and works well on texts from other domains. It is capable of detecting the polarity of a given text - positivity, neutrality, and negativity \cite{VADERPaper}, and also calculate the compound score which is calculated by summing the valence scores of each word in the lexicon. VADER uses a human-centric approach to sentiment analysis, combining qualitative analysis and empirical validation by using human raters to rate the level of sentiment for words in its lexicon. Vader also has emoticon support which maps these colloquialisms have pre-defined intensities in its lexicon, which makes VADER specifically suitable for the social media domain were the use of emoticons, utf-8 emojis and slang such as "Lol" and "Yolo" are prevalent within the text. Additionally, VADER is provided as a lexicon and a python library under the MIT license, this means that it is open-source software. This means that the lexicon can be altered and added to abling it to be tailored to specific topic domains.
VADER was constructed by examining and extracting features from three pre-existing well-established and human-validated sentiment lexicons \cite{12} - (LIWC) Linguistic Inquiry and Word Count, (ANEW) Affective Norms for English Words, and (GI) General Inquirer. This is supplemented with additional lexicon features \textit{"commonly used to express sentiment in social media text (emoticons, acronyms and slang)"} \cite{12} and uses "wisdom-of-the-crowd" approach \cite{13} to establish a point of estimations of sentiment valance for each lexical feature candidate. This was evaluated for the impact of grammatical and syntactical rules and 7,500+ lexical features, with mean valence \textit{"<> zero, and SD <= 2.5"} as a human-validated "gold-standard" sentiment lexicon. \cite{12}\textit{Section 3.1}
VADER was constructed by examining and extracting features from three pre-existing well-established and human-validated sentiment lexicons \cite{VADERPaper} - (LIWC) Linguistic Inquiry and Word Count, (ANEW) Affective Norms for English Words, and (GI) General Inquirer. This is supplemented with additional lexicon features \textit{"commonly used to express sentiment in social media text (emoticons, acronyms and slang)"} \cite{VADERPaper} and uses "wisdom-of-the-crowd" approach \cite{WisCrowds} to establish a point of estimations of sentiment valance for each lexical feature candidate. This was evaluated for the impact of grammatical and syntactical rules and 7,500+ lexical features, with mean valence \textit{"<> zero, and SD <= 2.5"} as a human-validated "gold-standard" sentiment lexicon. \cite{VADERPaper}\textit{Section 3.1}
VADER is seen as a "Gold Standard" for sentiment analysis, in the paper for VADER, \cite{12} \textit{A Parsimonious Rule-based Model for Sentiment Analysis of Social Media Text}, it was compared against 11 other \textit{"highly regarded sentiment analysis tools/techniques on a corpus of over 4.2K tweets"} for polarity classification across 4 domains. Results showing VADER, across Social media text, Amazon reviews, movie reviews and Newspaper editorials, consistently outperforming other sentiment analysis tools and techniques showing a particular trend in performing significantly higher on analysis of sentiment in tweets. \cite{12} \textit{Section 4: Results}
VADER is seen as a "Gold Standard" for sentiment analysis, in the paper for VADER, \cite{VADERPaper} \textit{A Parsimonious Rule-based Model for Sentiment Analysis of Social Media Text}, it was compared against 11 other \textit{"highly regarded sentiment analysis tools/techniques on a corpus of over 4.2K tweets"} for polarity classification across 4 domains. Results showing VADER, across Social media text, Amazon reviews, movie reviews and Newspaper editorials, consistently outperforming other sentiment analysis tools and techniques showing a particular trend in performing significantly higher on analysis of sentiment in tweets. \cite{VADERPaper} \textit{Section 4: Results}
\subsection{Neural Networks}\label{networks}
A neural network is a set of perceptrons modelled loosely after the human brain that is designed to recognise patterns in whatever domain it is intended to be trained using. A neural network can consist of multiple machine perceptrons or clustering layers in a large mesh network, and the patterns they recognise are numerical which are contained in vectors. Pre-processed data, confined and processed into pre-defined vector labels, are used to teach a neural network for a given task. While this differs from how an algorithm is coded to a particular task, neural networks cannot be programmed directly for the task. The requirement is for them to learn from the information by use of different learning strategies; \cite{14}\cite{15}
A neural network is a set of perceptrons modelled loosely after the human brain that is designed to recognise patterns in whatever domain it is intended to be trained using. A neural network can consist of multiple machine perceptrons or clustering layers in a large mesh network, and the patterns they recognise are numerical which are contained in vectors. Pre-processed data, confined and processed into pre-defined vector labels, are used to teach a neural network for a given task. While this differs from how an algorithm is coded to a particular task, neural networks cannot be programmed directly for the task. The requirement is for them to learn from the information by use of different learning strategies; \cite{NNDLBegin}\cite{WhatNN}
\begin{center}
\includegraphics[width=10cm,height=6cm]{images/perceptron.png}
@ -341,18 +381,18 @@
\end{center}
\begin{itemize}
\item Supervised learning: Simplest of the learning forms, where a dataset have been labeled which indicate the correct classified data. The input data is learned upon until the desired result of the label is reached \cite{16}
\item Unsupervised learning: Is training the with a dataset without labels to learn from. The neural network analyses the dataset with a cost function which tells the neural network how far off target a prediction was. The neural network then adjusts input weights in attempt to increase accuracy. \cite{15}
\item Supervised learning: Simplest of the learning forms, where a dataset have been labeled which indicate the correct classified data. The input data is learned upon until the desired result of the label is reached \cite{SupdictL}
\item Unsupervised learning: Is training the with a dataset without labels to learn from. The neural network analyses the dataset with a cost function which tells the neural network how far off target a prediction was. The neural network then adjusts input weights in attempt to increase accuracy. \cite{WhatNN}
\item Reinforced learning: The neural network is reinforced with positive results and punished for negative results causing a network to learn over iterations.
\end{itemize}
\subsubsection{Recurrent Neural Network (RNN)}\label{types}
The type of neural network that is of focus for this project will be that of a Long-Short Term Memory (LSTM); however, it is crucial to understand how this is an extension of a Recurrent Neural Network (RNN) and how the underlying network works.
Recurrent Neural Networks (RNN) are a robust and powerful type of neural network and is considered to be among the most encouraging algorithms for the use of classification, due to the fact of having internal memory. RNNs are designed to recognise patterns in sequences of presented data or most suitably, time-series data, genomes, handwriting and stock market data. Although RNNs were conceptualised and invented back in the 1980s \cite{17}, they've only really shown their potential in recent years, with the increase of computational power due to the level of sequencing and internal memory store to retrain.
Due to this 'internal' memory loop, RNNs are able to remember data and adjust neurons based on failures and alternating parameters. The way this is accomplished, knowing how a standard neural network such as a feed-forward network, should initially be understood. \cite{18}
Recurrent Neural Networks (RNN) are a robust and powerful type of neural network and is considered to be among the most encouraging algorithms for the use of classification, due to the fact of having internal memory. RNNs are designed to recognise patterns in sequences of presented data or most suitably, time-series data, genomes, handwriting and stock market data. Although RNNs were conceptualised and invented back in the 1980s \cite{ErrorProp}, they've only really shown their potential in recent years, with the increase of computational power due to the level of sequencing and internal memory store to retrain.
Due to this 'internal' memory loop, RNNs are able to remember data and adjust neurons based on failures and alternating parameters. The way this is accomplished, knowing how a standard neural network such as a feed-forward network, should initially be understood. \cite{BeginLSTMRNN}
A standard, feed-forward neural network has a single data flow with an input layer, through hidden computational layers, to an output layer. Therefore any node in the network will never see the same data again. However, in an RNN data is cycled through a loop over the same node, thus two inputs into the perception. Decisions are influenced by previous data that it has previously learned from if any, which in turn affects output and the weights of the network. \cite{19}
A standard, feed-forward neural network has a single data flow with an input layer, through hidden computational layers, to an output layer. Therefore any node in the network will never see the same data again. However, in an RNN data is cycled through a loop over the same node, thus two inputs into the perception. Decisions are influenced by previous data that it has previously learned from if any, which in turn affects output and the weights of the network. \cite{RNNLSTMtds}
\begin{center}
\includegraphics[width=15cm,height=6cm]{images/rnn_ffn.png}
@ -363,64 +403,64 @@
The act of tweaking weights to alter the processing of the next iteration of data in an RNN is called backpropagation, which in short means going back through the network to find the partial derivatives of the error with respect to the weights after output has occurred. Along with gradient descent, an algorithm that adjusts the weights up or down depending on which would reduce the error. There are however a few obstacles of RNNs;
\begin{itemize}
\item Exploding Gradients: Is when gradient decsent assigns high importance to the weights. As in the algorithm assigns a ridiculously high or low value for the weights on iteration which can cause overlow and result in NaN values \cite{20}
\item Vanishing Gradients: Is when the values of a gradient are small enough that weights cannot be altered and the model stops learning. \cite{21}
\item Exploding Gradients: Is when gradient decsent assigns high importance to the weights. As in the algorithm assigns a ridiculously high or low value for the weights on iteration which can cause overlow and result in NaN values \cite{NNEgrad}
\item Vanishing Gradients: Is when the values of a gradient are small enough that weights cannot be altered and the model stops learning. \cite{RNNvanishGrad}
\end{itemize}
These issues are overcome by the concept of Long-Short Term Memory neural networks, coined by \textit{Sepp Hochreiter and Juergen Schmidhuber, 1997} \cite{22}.
These issues are overcome by the concept of Long-Short Term Memory neural networks, coined by \textit{Sepp Hochreiter and Juergen Schmidhuber, 1997} \cite{LSTM}.
\subsubsection{Long-Short Term Memory (LSTM)}\label{lstms}
LSTMs are an extension of recurrent neural networks capable of learning long-term dependancies and were conceptualised by \textit{Sepp Hochreiter and Juergen Schmidhuber, 1997} \cite{22}. LSTMs were explicity designed to avoid long-term dependancy problems such as exploding and vanishing gradients. As they are an extension of RNNs they operating in almost the exact same manner, but stores the actual gradients and weights in memory which allows for LSTMs to read, write and alter the values. A way of explaining how this works is seeing the memory block as a gated cell, where 'gated' is that the cell decides whether or not to store or alter data in it's memory based input data and the importance assigned to it. In a sense it learns over time of which values and data is important.
LSTMs are an extension of recurrent neural networks capable of learning long-term dependancies and were conceptualised by \textit{Sepp Hochreiter and Juergen Schmidhuber, 1997} \cite{LSTM}. LSTMs were explicity designed to avoid long-term dependancy problems such as exploding and vanishing gradients. As they are an extension of RNNs they operating in almost the exact same manner, but stores the actual gradients and weights in memory which allows for LSTMs to read, write and alter the values. A way of explaining how this works is seeing the memory block as a gated cell, where 'gated' is that the cell decides whether or not to store or alter data in it's memory based input data and the importance assigned to it. In a sense it learns over time of which values and data is important.
\begin{center}
\includegraphics[width=9cm,height=7cm]{images/lstm.png}
\newline
\textit{Figure 3: A conceptual design of an LSTM cell bank - from Medium article by Shi Yan: Understanding LSTM and its diagrams}\cite{23}
\textit{Figure 3: A conceptual design of an LSTM cell bank - from Medium article by Shi Yan: Understanding LSTM and its diagrams}\cite{LSTMdia}
\end{center}
The network takes in three initial inputs, the input of the current time step, output from the previous LSTM unit if any, and the memory of the previous unit. Outputs, $H_t$ - output of current network, and $C_t$ - the memory of the current unit. \cite{23}
The network takes in three initial inputs, the input of the current time step, output from the previous LSTM unit if any, and the memory of the previous unit. Outputs, $H_t$ - output of current network, and $C_t$ - the memory of the current unit. \cite{LSTMdia}
The various steps of the network decide what information is thrown away from the cell state, through use of a 'forget gate' which is influenced by the calculations of sigmoid memory gates which influence how much of old and new memory is used $C_{t_-1}$, $H_{t-1}$
and $X_t$, and merged based upon importance. The section of the cell that controls the outflow memory $H_t$ and $C_t$ determines how much of the new memory should be used by the next LSTM unit.
\textit{For a more in-detailed explanation of exactly how the calculations are made see} \cite{22},\cite{23} and \cite{24}.
\textit{For a more in-detailed explanation of exactly how the calculations are made see} \cite{LSTM},\cite{LSTMdia} and \cite{LSTMmaths}.
As mentioned in the foremost section of related work the use of an LSTM network would be optimal for the given problem domain over the use of machine learning algorithms, for time-series data. As detailed above, LSTMs are widely used for time-series data forecasting due to being able to remember previous data and weights over long sequence spans\cite{22}\cite{25}. The flexibility of LSTMs such as many-to-many models, useful \textit{"to predict multiple future time steps at once given all the previous inputs"} due to use of look-back windows and control of multiple 3D input parameters.\cite{25}
As mentioned in the foremost section of related work the use of an LSTM network would be optimal for the given problem domain over the use of machine learning algorithms, for time-series data. As detailed above, LSTMs are widely used for time-series data forecasting due to being able to remember previous data and weights over long sequence spans\cite{LSTM}\cite{LSTMforetime}. The flexibility of LSTMs such as many-to-many models, useful \textit{"to predict multiple future time steps at once given all the previous inputs"} due to use of look-back windows and control of multiple 3D input parameters.\cite{LSTMforetime}
\subsubsection{Keras and TensorFlow}
TensorFlow is an open-source numerical math computational library framework for dataflow differentiable programming, primarily used for machine and deep learning applications such as neural networks. TensorFlow bundles various machine learning and deep learning models and algorithms into one package for the Python language, but executes as byte code executed in C++ for performance. TensorFlow provides a range of conveniences to developers for the types of algorithms it supports such as debugging models and modifying graph operations separately instead of constructing and evaluating all at once, and compatibility to execute on CPUs or GPUs \cite{26}. However, TensorFlow's implementation and API, although provides an abstraction for development for machine and deep learning algorithms and simplifies implementation, it isn't all too friendly to programmers to use, especially new developers to the field of machine and deep learning.
TensorFlow is an open-source numerical math computational library framework for dataflow differentiable programming, primarily used for machine and deep learning applications such as neural networks. TensorFlow bundles various machine learning and deep learning models and algorithms into one package for the Python language, but executes as byte code executed in C++ for performance. TensorFlow provides a range of conveniences to developers for the types of algorithms it supports such as debugging models and modifying graph operations separately instead of constructing and evaluating all at once, and compatibility to execute on CPUs or GPUs \cite{TensorFlow}. However, TensorFlow's implementation and API, although provides an abstraction for development for machine and deep learning algorithms and simplifies implementation, it isn't all too friendly to programmers to use, especially new developers to the field of machine and deep learning.
Keras is a high-level built to run atop of deep learning libraries such as Tensorflow and Theanos - another deep learning library similar to Tensorflow. It is designed to further simplify the use and application of such deep learning libraries thus making implementing a neural network and similar supported algorithms friendlier to developers working in Python. It accomplishes this by being a modular API; neural layers, cost functions, optimisers, activation functions, and regularisation schemes are all standalone features of the API that can be combined to create functional or sequential models. Due to being a high-level API for a more refined and more natural development of deep learning libraries, it does not provide these low-level operations and algorithms; Keras relies on a back-end engine such as TensorFlow and supports a wide range of others.
\subsubsection{Optimisers}
There are three distinct optimisers used for LSTM networks; ADAgrad optimizer, RMSprop, Adam. The role of an optimiser
All three of which is a type of Stochastic Gradient Descent, which $\theta$ (weights of LSTM) is changed according to the gradient of the loss with respect to $\theta$. Where $\alpha$ is the learning rate and $L$ is the gradient loss. \cite{27}
All three of which is a type of Stochastic Gradient Descent, which $\theta$ (weights of LSTM) is changed according to the gradient of the loss with respect to $\theta$. Where $\alpha$ is the learning rate and $L$ is the gradient loss. \cite{OptSGD}
\[\theta_{t+1} = \theta_t - \alpha \delta L(\theta_t)\]
This is primarily used in recurrent LSTM neural networks to adjust weights up or down depending on which would reduce the error, \textit{see RNN section for non LSTM limitations}. The concept of using momentum $\mu$ in stochastic gradient decent helps to negate significant convergance and divergance during calculation of the weights and dampens the oscillation, by increasing the speed of the learning rate upon each iteration. \cite{28}
This is primarily used in recurrent LSTM neural networks to adjust weights up or down depending on which would reduce the error, \textit{see RNN section for non LSTM limitations}. The concept of using momentum $\mu$ in stochastic gradient decent helps to negate significant convergance and divergance during calculation of the weights and dampens the oscillation, by increasing the speed of the learning rate upon each iteration. \cite{Optimisers}
\[\theta_{t+1} = \theta_t + v_{t+1} \]
\begin{center}
where
\end{center}
\[v_{t+1} = \mu v_t - \alpha \delta L(\theta_t)\]\cite{28}
\[v_{t+1} = \mu v_t - \alpha \delta L(\theta_t)\]\cite{Optimisers}
\begin{itemize}
\item Adagrad (Adaptive Gradient): Is a method for adaptive rate learning through adaptively changing the learning parameters. This involves performing more substantial updates for infrequent parameters and smaller updates for frequent parameters. This algorithm fundamentally eliminates the need to tune the learning rate of the neural network manually and is well suited with sparse data in a large scale network. \cite{28}
\item Adagrad (Adaptive Gradient): Is a method for adaptive rate learning through adaptively changing the learning parameters. This involves performing more substantial updates for infrequent parameters and smaller updates for frequent parameters. This algorithm fundamentally eliminates the need to tune the learning rate of the neural network manually and is well suited with sparse data in a large scale network. \cite{Optimisers}
\[\theta_{t+1} = \theta_t + v_{t+1} \frac{\eta}{\sqrt{G_t + \epsilon}} \cdot g_t\]
\begin{center}
($G_t$ is the sum of the squares of the past gradients to $\theta$)
\end{center}
\item RMSProp (Root Mean Square Propagation): Aims to resolve Adagrads radically diminishing learning rates by using a moving average of the squared gradient. Thus utilises the magnitude of the recent gradient descent to normalise it, and gets adjusted automatically by choosing different learning rate for each parameter. \cite{29}
\item RMSProp (Root Mean Square Propagation): Aims to resolve Adagrads radically diminishing learning rates by using a moving average of the squared gradient. Thus utilises the magnitude of the recent gradient descent to normalise it, and gets adjusted automatically by choosing different learning rate for each parameter. \cite{OptVariants}
\[\theta_{t+1} = \theta_t - \frac{\eta}{\sqrt{(1 - \gamma) g^2_{t-1} + \gamma g_t + \epsilon}} \cdot g_t\]
\begin{center}
($\gamma$ - decay that takes value from 0-1. $g_t$ - moving average of squared gradients)
\end{center} \cite{30}
\end{center} \cite{OverOpt}
\item Adam (Adaptive Moment Estimation): Also aims to resolve Adagrads diminishing learning rates, by calculates the adaptive learning rate for each parameter. Being one of the most popular gradient descent optimisation algorithms, it estimates from the 1st and 2nd moments of gradients. Adam implements the exponential moving average of the gradients to scale the learning rate of the network and keeps an average of past gradients. \cite{31}
\item Adam (Adaptive Moment Estimation): Also aims to resolve Adagrads diminishing learning rates, by calculates the adaptive learning rate for each parameter. Being one of the most popular gradient descent optimisation algorithms, it estimates from the 1st and 2nd moments of gradients. Adam implements the exponential moving average of the gradients to scale the learning rate of the network and keeps an average of past gradients. \cite{Adam}
\[m_t = \beta_1 m_{t-1} + (1 - \beta_1) g_t\]
\[v_t = \beta_2 v_{t-1} + (1 - \beta_2) g^2_t\]
@ -438,7 +478,7 @@
\[\theta_{t+1} = \theta_t - \frac{\eta \vec{m}_t}{\sqrt{\vec{v}_t + \epsilon}} \]
\begin{center}
\textit{Diederik P. Kingma, Jimmy Lei Ba - Adam: A method for Stochastic Optimization}\cite{30}
\textit{Diederik P. Kingma, Jimmy Lei Ba - Adam: A method for Stochastic Optimization}\cite{Adam}
\end{center}
\end{itemize}
@ -446,7 +486,7 @@
\subsubsection{Naive Bayes}
To get an understanding of both how probability works and how a neural network will predict the next hour value based on the concepts of probability, using a well-established probability algorithm will aid in this understanding.
Bayes theorem works on conditional probability and is the probability of how often an event will happen given that that event has already occurred. There are numerous variations of the theorem such as Multinomial, which supports categorical features where each conforms to a multinomial distribution, and Gaussian naive Bayes, which support continuous-valued features each of which conforming to a Gaussian (normal) distribution. The classical multinomial Bayes theorem is defined as; \cite{32}
Bayes theorem works on conditional probability and is the probability of how often an event will happen given that that event has already occurred. There are numerous variations of the theorem such as Multinomial, which supports categorical features where each conforms to a multinomial distribution, and Gaussian naive Bayes, which support continuous-valued features each of which conforming to a Gaussian (normal) distribution. The classical multinomial Bayes theorem is defined as; \cite{StudyNBC}
\[P(H\cap A) = \frac{P(A\cap H) * P(H)}{P(A)} \]
@ -476,16 +516,16 @@
\[Probability \ of \ Outcome \cap Evidence = \frac{Probability \ of \ Likelihood \ of \ evidence * Prior}{Probability \ of \ Evidence} \]
The naive Bayes approach has many applications, especially for the topic of this project in classifying the probability occurrence of the next price. Although it is a robust algorithm has its drawbacks which make it not as suitable as a neural network for the given need of this project. The naive Bayes trap is an issue that may occur due to the size of the dataset that will be used. There are however other scenarios this algorithm could be used such as classification of spam data.\cite{32}
The naive Bayes approach has many applications, especially for the topic of this project in classifying the probability occurrence of the next price. Although it is a robust algorithm has its drawbacks which make it not as suitable as a neural network for the given need of this project. The naive Bayes trap is an issue that may occur due to the size of the dataset that will be used. There are however other scenarios this algorithm could be used such as classification of spam data.\cite{StudyNBC}
\subsection{Bag Of Words}
The Bag Of Words algorithm counts the occurance ('Term-Frequency') of a word in a given text or document. The counts allow the comparison for text classification and is used prior to TF-IDF (detailed below) to aid in identifying the probability of words in a given text and classify accordingly. \cite{33}
The Bag Of Words algorithm counts the occurance ('Term-Frequency') of a word in a given text or document. The counts allow the comparison for text classification and is used prior to TF-IDF (detailed below) to aid in identifying the probability of words in a given text and classify accordingly. \cite{TFIDFBOW}
\[P(w) \ and\ P(w|spam) = \frac{Total\ number\ of\ occurrences\ of\ w\ in\ dataset}{Total\ number\ of\ words\ in\ dataset}\]
\subsection{TF-IDF}
Stands for Term Frequency-Inverse Document Frequency is another way similar to Bag of Words that are used to judge the topic of a given text. Each word is given a weight (relevance not frequency) for how many times it occurs in the given text \cite{33}.
Term-frequency measures the number of times that a word appears in the text, but due to words such as 'and', 'the' and 'a' can frequently appear in text Inverse Document Frequency is used to change the weight of words that appear the most. Therefore words that appear the most are signalled to be less important and valuable, and therefore will not be used for classifications when used with such models as Naive Bayes for a given purpose. \cite{33}
Stands for Term Frequency-Inverse Document Frequency is another way similar to Bag of Words that are used to judge the topic of a given text. Each word is given a weight (relevance not frequency) for how many times it occurs in the given text \cite{TFIDFBOW}.
Term-frequency measures the number of times that a word appears in the text, but due to words such as 'and', 'the' and 'a' can frequently appear in text Inverse Document Frequency is used to change the weight of words that appear the most. Therefore words that appear the most are signalled to be less important and valuable, and therefore will not be used for classifications when used with such models as Naive Bayes for a given purpose. \cite{TFIDFBOW}
\newline
IDF is defined as:
@ -498,10 +538,10 @@
\[P(w|spam) = \frac{TF(w)*IDF(w)}{\sum _{a\ words\ x\ \epsilon\ train\ dataset} TF(x|spam)*IDF(x)}\]
\cite{34}
\cite{SpamCScratch}
\subsection{Addictive Smoothing}
Used alongside Bag Of Words, is a method of handling data that is in the test data but not in the training dataset. In case of $P(w)$ it would evaluate to 0, which will make the $P(w|spam)$ undefined as it will not be able to classify the word. Addictive smoothing tackles this by adding a number $\alpha$ to the numerator, and adding $alpha$ time the number of classes over the probability that is found in the denominator. \cite{34}
Used alongside Bag Of Words, is a method of handling data that is in the test data but not in the training dataset. In case of $P(w)$ it would evaluate to 0, which will make the $P(w|spam)$ undefined as it will not be able to classify the word. Addictive smoothing tackles this by adding a number $\alpha$ to the numerator, and adding $alpha$ time the number of classes over the probability that is found in the denominator. \cite{SpamCScratch}
\newline
For TF-IDF:
@ -531,7 +571,7 @@
\textbf{Tweets}
\newline
\newline
Historical tweets can be obtained through the Twitter API, and however is not a feature of the Tweepy package - \textit{not mentioned or method on official Tweepy Documentation} \cite{35}. The Twitter API, as explained in the Literature review, allows for historical tweets to be extracted from the platform, 100 per request and a maximum of 50 requests per month. This proposes an issue with not providing enough data, where the sentiment will need to be calculated per hour. Simply put, for a year of hourly price data, there will be 9050 records. Therefore the equivalent will be required for sentiment; however, the sentiment will be the average the sentiment per hour of tweets. Using a single request with 100 tweets per hour, per hour; 905,000 tweets will need to be extracted to provide the data required. A solution to this issue could be to use and create multiple accounts and manually extract data from the API and merge. Another option is the pay for the data from 3rd party companies who have access to the Enterprise API and can pull more data, 2000 per request \cite{7}\cite{8}. Due to the price for data of these 3rd parties the former could be a suitable, but more time-consuming option.
Historical tweets can be obtained through the Twitter API, and however is not a feature of the Tweepy package - \textit{not mentioned or method on official Tweepy Documentation} \cite{TweepyDoc}. The Twitter API, as explained in the Literature review, allows for historical tweets to be extracted from the platform, 100 per request and a maximum of 50 requests per month. This proposes an issue with not providing enough data, where the sentiment will need to be calculated per hour. Simply put, for a year of hourly price data, there will be 9050 records. Therefore the equivalent will be required for sentiment; however, the sentiment will be the average the sentiment per hour of tweets. Using a single request with 100 tweets per hour, per hour; 905,000 tweets will need to be extracted to provide the data required. A solution to this issue could be to use and create multiple accounts and manually extract data from the API and merge. Another option is the pay for the data from 3rd party companies who have access to the Enterprise API and can pull more data, 2000 per request \cite{SearchTweets}\cite{ConStream}. Due to the price for data of these 3rd parties the former could be a suitable, but more time-consuming option.
Live tweets can be collected by two methods from Twitter, from the Twitter API and using Twitter Python package such as Tweepy, detailed in the Literature review. Additionally, the limitations of the Twitter API are also discussed in the literature review which states how the Twitter API has a tiering system: Standard, Premium and Enterprise. Each tier has different levels of access to the API and can extract varying amounts of data from the platform. Thus concluding the section in the Literature review, the Twitter API will not be used for the extraction and streaming of live tweets due to it being restricted to Enterprise users. Therefore, Tweepy will be used to set up a looping authenticated streaming solution with the Twitter API which will allow the access of current recurring data. Natural language pre-processing will be apart of most systems in this project. Techniques such as tokenisation, stemming, stopword removal and character filtering will be prevalent, as these will be used to remove unwanted data and to sanitise the data for classification.
@ -550,7 +590,7 @@
As is the case, a suitable language detection system will be implemented to identify any tweets that contain non-English characters. Some tweet will regrettably make it past the initial API filters; thus such a system will be implemented that will drop the tweets if it predominately contains non-English characters. If however, the majority of the text in English but includes some non-English characters, these will be removed from the tweet.
\subsection{Sentiment Analysis}
As mentioned in the Litrature review, the VADER sentiment analysis performs exceptionally well on the social media domain when compared to idividual human rates and 10 other highly regarded sentiment analysers, stated in the results section of the paper \textit{VADER: A Parsimonious Rule-based Model for Sentiment Analysis of Social Media Text} \cite{12}. \newline Extraction of results from paper \cite{12}:
As mentioned in the Litrature review, the VADER sentiment analysis performs exceptionally well on the social media domain when compared to idividual human rates and 10 other highly regarded sentiment analysers, stated in the results section of the paper \textit{VADER: A Parsimonious Rule-based Model for Sentiment Analysis of Social Media Text} \cite{VADERPaper}. \newline Extraction of results from paper \cite{VADERPaper}:
\begin{center}
\begin{tabular}{l|c|c|c}
@ -567,10 +607,10 @@
\multirow{1}{*}{WSD} & 0.70 & 0.49 & 0.56 \\
\end{tabular}
\textbf{Analysis of Social Media Text (4,200 Tweets)}\cite{12}
\textbf{Analysis of Social Media Text (4,200 Tweets)}\cite{VADERPaper}
\end{center}
Due to the suitability for the given domain of social media and with the customisability, due to VADER's lexicon-dictionary based approach, makes this sentiment analyser most suitable for use in this project. This analyser will be utilised as the sentiment analyser of this project due to its feature set and need for little data pre-processing before polarity classification of the provided text. \cite{11} \textit{"is a widely used approach to sentiment analysis in the marketing research community, as it does not require any pre-processing or training of the classifier."}.
Due to the suitability for the given domain of social media and with the customisability, due to VADER's lexicon-dictionary based approach, makes this sentiment analyser most suitable for use in this project. This analyser will be utilised as the sentiment analyser of this project due to its feature set and need for little data pre-processing before polarity classification of the provided text. \cite{LexiconSocSent} \textit{"is a widely used approach to sentiment analysis in the marketing research community, as it does not require any pre-processing or training of the classifier."}.
This will be an intermediate system between the neural network and the data collection pre-processing system, as the later will provide the cleaned processed data for analysis and the former to feed in the classified polarity of each tweet alongside price data for model learning.
@ -579,9 +619,9 @@
\begin{itemize}
\item Nature of an RNN - Allows for backpropagation to find partial derivatives of the error with respect to the weights after an output has occurred, to tweak the current weights of the LSTM cell. In short, allows the tweaking of weights of the network based on previously seen data by looping the same node thus influencing decisions made on current data based on old weights and errors from previous.
\item Nature of an LSTM over RNN - LSTMs are extensions of RNNs \cite{22} that were designed to avoid long-term dependency problems such as exploding and vanishing gradients. Weights are not only just reused but are stored in memory and are propagated through the network.
\item Lack of use for the project's purpose - Other papers tend to focus on machine learning techniques, other neural networks such as Multi-layer Perceptron (MPL) and standard Recurrent Neural Networks, with use of time-series data. Especially with the use of a standard RNN, not overcoming its common issues with gradient descent. Stated in related research section of the literature review, \cite{5} - \textit{"using the MLP classifier (a.k.a neural networks) showed better results than logistical regression and random forest trained models"}
\item Prior use for time-series data and data forecasting - Although RNN LSTM networks have been used for the prediction of Bitcoin price there are a few papers on this \cite{25}. Regardless, LSTMs have been notably used with use for time-series data forecasting due to being able to remember previous data and weights over long sequence spans \cite{25} - \textit{"adds a great benefit in time series forecasting, where classical linear methods can be difficult to adapt to multivariate or multiple input forecasting problems"}.
\item Nature of an LSTM over RNN - LSTMs are extensions of RNNs \cite{LSTM} that were designed to avoid long-term dependency problems such as exploding and vanishing gradients. Weights are not only just reused but are stored in memory and are propagated through the network.
\item Lack of use for the project's purpose - Other papers tend to focus on machine learning techniques, other neural networks such as Multi-layer Perceptron (MPL) and standard Recurrent Neural Networks, with use of time-series data. Especially with the use of a standard RNN, not overcoming its common issues with gradient descent. Stated in related research section of the literature review, \cite{StPNSentA} - \textit{"using the MLP classifier (a.k.a neural networks) showed better results than logistical regression and random forest trained models"}
\item Prior use for time-series data and data forecasting - Although RNN LSTM networks have been used for the prediction of Bitcoin price there are a few papers on this \cite{LSTMforetime}. Regardless, LSTMs have been notably used with use for time-series data forecasting due to being able to remember previous data and weights over long sequence spans \cite{LSTMforetime} - \textit{"adds a great benefit in time series forecasting, where classical linear methods can be difficult to adapt to multivariate or multiple input forecasting problems"}.
\end{itemize}
Therefore, a recurrent long-short-term memory neural network will be used for this project to predict the next hour interval of Bitcoin price based on previous historical prices and hourly sentiment. This system will read in historical data, both price and sentiment - depending on the network for prediction with and without sentiment, this data will be merged, split and used to trained and test the network model for use for forecasting prices. The relative sizes for the training and test data can be decided upon system creation, but the standard sizing for training neural networks is 75:25 respectively.
@ -599,7 +639,7 @@
\multirow{3}{*}{Pytorch} & Graph definition is more imperative and dynamic than other frameworks & Not as widley adopted as TensorFlow \\ & Graph computation defined at runtime, allowing standard popular IDEs to support it & Visualisation is not as robust as TensorBoard \\ & Natively support common python deployment frameworks such as Flask & Not as deployable as TensorFlow, doesn't supper gRPC \\ & & \\
\end{tabular}}
\textbf{Comparison between TensorFlow, Theano and Pytorch}\cite{36}
\textbf{Comparison between TensorFlow, Theano and Pytorch}\cite{TFvsThe}
\end{table}
Due to the continued support and development of TensorFlow, the board community and support of a high-level wrapper - Keras, this library will be used for this project. Although, Pytorch is a good alternative it is not as easy to use as implement when compared to TensorFlow using Keras.
@ -610,7 +650,7 @@
This part of the system will be responsible for prediction the next time-step of Bitcoin's price for the next hour based on past data. It will use the trained model from the neural network to predict the future hour price when given live hourly data, price and sentiment. The system will also have a look back of 5 which will allow it to see historical data to aid in the predictions. This will occur on the hour every hour when new data is received and processed, this data will also be merged and the split into training and testing data. The sizing can be decided upon system creation, but the standard sizing for training is 75:25, training and testing respectively.
\subsection{Frontend Application}
The frontend application will display the predicted data to the stakeholders and users of the system, along with charting True hourly prices against Predicted, for both with and without sentiment embedded in the predictions. The interface will display this data in both tabular and chart form to provide variety to the user. Performance metrics will also be displayed at the bottom of the application to show the accuracy of the model. Due to this project focusing around the backend, how the predictions are made and the accuracy of the model, the interface will be somewhat of a second thought. It will aim to display the information in a clear and concise manner which will start to solve the problem of providing a system to the public to aid in investment decisions. The design will not be complicated but more basic and functional. Therefore a basic webpage coded in HTML with Jquery to plot data, and Ajax requests to obtain and load data, will be sufficient.
The frontend application will display the predicted data to the stakeholders and users of the system, along with charting True hourly prices against Predicted, for both with and without sentiment embedded in the predictions. The interface will display this data in both tabular and chart form to provide variety to the user. Performance metrics will also be displayed at the bottom of the application to show the accuracy of the model. Due to this project focusing around the backend, how the predictions are made and the accuracy of the model, the interface will be somewhat of a second thought. It will aim to display the information in a clear and concise manner which will start to solve the problem of providing a system to the public to aid in investment decisions. The design will not be complicated but more basic and functional. Therefore a basic webpage coded in HTML with JQuery to plot data, and AJAX requests to obtain and load data, will be sufficient.
\subsection{With reference to Initial PID}
Both the problem and solution have changed considerably from the original project initiation document (PID), which outlines the initial ideas, objectives and specification for the project. The reason for this was due to a change in direction which was caused by a number of factors; one being a change in passion after initial research into machine learning techniques and neural networks, instead of creating an application that just performed sentiment analysis the direction turned towards how this could be used to predict future prices. This change does still loosely keeps in-line with the initial idea of wanting to create a platform that will aid in investor decision making but takes it a step further by directly giving them predictions on market direction price as a basis for these decisions rather than just identifying opinion direction of the market.
@ -678,7 +718,7 @@
\includegraphics[width=17cm,height=8cm]{images/Analysis_Engine.png}
\textit{Figure 6: Analysis Engine Dataflow diagram}
\end{center}
This dataflow diagram shows the part of the system that is responsible for training a spam filter, creating the model that'll be used to identify if the tweets from the data collector are unwanted - spam. This system is also responsible for assigning the polarity classification to the tweet through sentiment analysis conducted by the VADER package \cite{12}.
This dataflow diagram shows the part of the system that is responsible for training a spam filter, creating the model that'll be used to identify if the tweets from the data collector are unwanted - spam. This system is also responsible for assigning the polarity classification to the tweet through sentiment analysis conducted by the VADER package \cite{VADERPaper}.
\begin{itemize}
\item Spam filter training - The initial step in this system is to train the Naive Bayes Classifier using the pre-labelled spam dataset which contains an unbiased amount of either spam or ham tweets with their respective labels.
\subitem This data is split into two samples, training and test sets 75:25 respectively and the Naive Bayes classifier trained and validated against these datasets after pre-processing of the data occurs on the data to prepare it.
@ -726,9 +766,9 @@
\end{center}
The above dataflow diagram shows the data flow for the front-end application and how the data is read into the system from the data files generated by the backend application (Neural network).
\begin{itemize}
\item Ajax Requests - These are API file requests for files hosted on the server in which the system is running on. This loads the data files into the application for use.
\item AJAX Requests - These are API file requests for files hosted on the server in which the system is running on. This loads the data files into the application for use.
\item CSS Styling - Contains design styling for page and charts, loaded upon loading of a webpage.
\item Charting and Tables - Accesses the loaded data from the Ajax requests and plots the data. Prediction data, only with sentiment and prices are plotted into a table. There will be separate charts and tables displaying the data from the backend that hasn't used sentiment in predictions to aid in establishing a correlation between sentiment and price and whether it affects the hourly price (Aiming to solve the problem statement)
\item Charting and Tables - Accesses the loaded data from the AJAX requests and plots the data. Prediction data, only with sentiment and prices are plotted into a table. There will be separate charts and tables displaying the data from the backend that hasn't used sentiment in predictions to aid in establishing a correlation between sentiment and price and whether it affects the hourly price (Aiming to solve the problem statement)
\item Stakeholders - There will be the four stakeholders, outlined in the problem articulation section, that would be the primary users of this application.
\end{itemize}
@ -755,7 +795,7 @@
\subsection{Data collection}\label{collection}
\subsubsection{Price Time-Series Historical Data}
Historical price data was extracted from a CSV historical price tracker, \textit{Bitcoin Charts} \cite{37}. This tracker provided the historical data from the three exchanges used for Live price collection - Coinbase, Bitfinex and Gemini, since the exchanges supported the cryptocurrency. The data used spans from \textit{2018-01-06} to \textit{2019-01-06}.
Historical price data was extracted from a CSV historical price tracker, \textit{Bitcoin Charts} \cite{btcCharts}. This tracker provided the historical data from the three exchanges used for Live price collection - Coinbase, Bitfinex and Gemini, since the exchanges supported the cryptocurrency. The data used spans from \textit{2018-01-06} to \textit{2019-01-06}.
\begin{lstlisting}[language=Python, caption=Historical price collection and averaging per exchange]
...
@ -973,7 +1013,7 @@ def processTweet(tweet, tweetFilter):
The language detection feature of the system is used as an additional filter for filtering out non-English tweets. As discussed in the solution approach, Tweepy/Twitter API provides a means to filter out non-English based tweets. This, however, will not work if the user has settings on Twitter such as the prefered language and the region set to be English. Due to this, non-English characters can still be contained within the collected tweets; thus these are detected and filtered with the language detection function.
\begin{lstlisting}[language=python, caption=Language detection and filter function \cite{38}]
\begin{lstlisting}[language=python, caption=Language detection and filter function \cite{langdectNLTK}]
def detectLaguage(self, text):
...
@ -1010,7 +1050,7 @@ def detectLaguage(self, text):
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-gram method could be used to distinguish the language of the 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 n-gram approach requires a corpus for each language to compare against to be presented, the word-based approach is sufficient for its use case. Therefore it could be used as a comparison between approaches and seen as a possible improvement at a later date.
Additionally, an n-gram method could be used to distinguish the language of the given text and may perform more accurately than the word-based approach that was implemented \cite{LanNgram}. This could be a later improvement, as the n-gram approach requires a corpus for each language to compare against to be presented, the word-based approach is sufficient for its use case. Therefore it could be used as a comparison between approaches and seen as a possible improvement at a later date.
\newpage
@ -1050,10 +1090,10 @@ def processTweet(tweet, gram = 2):
\item Tokenise words: This splits the text into individual words. A dictionary is then created from the tokens that are above the length of 2 - due to words that are of less 'is', 'he' and 'if' will not contribute to spam detection and are seen as generic words in the English language
\item Ngrams: This is implemented to provide richer word sequences for the spam filter classification, as explained in the litrature review use of ngrams can increase accuracy.
\item Stop words Removal: This removes stopwords such as 'this', 'we' and 'now' from the text. Due to these common words carrying less importance for sentiment analysis.
\item Stemming: Reduces words down to their smaller form, as in it remove suffixes from inflected words - 'studying' become 'study' \cite{40}. The Porter Stemmer works by removing the suffixes from the text - 'going' becomes 'go', however, this applies to other words such as 'leaves' becomes 'leav' which is not a word. However, this method will be applied equally to all words containing such suffixes so all variations will become so, thus still allowing the probability classifications to occur on the word as all variations will be the same.
\item Stemming: Reduces words down to their smaller form, as in it remove suffixes from inflected words - 'studying' become 'study' \cite{StemvsLem}. The Porter Stemmer works by removing the suffixes from the text - 'going' becomes 'go', however, this applies to other words such as 'leaves' becomes 'leav' which is not a word. However, this method will be applied equally to all words containing such suffixes so all variations will become so, thus still allowing the probability classifications to occur on the word as all variations will be the same.
\end{itemize}
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' as an example - by removing the suffixes down to create the actual root word.
As discovered from \cite{StemvsLem}, 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' as an example - by removing the suffixes down to create the actual root word.
Although lemmatisation will provide the classifier with an actual English word, stemming regardless still reduces the words down to a similar 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 for the use case.
\subsection{Spam Filtering}
@ -1142,7 +1182,7 @@ def testTweet(self, tweet):
\subsubsection{Naive Bayes model}
The spam filter classifier, using a Naive Bayes model, was coded from scratch. This was ultimately unneeded as the Scikit-learn python package comes with four inbuilt Naive Bayes classification models (Bernoulli, Complement, Multinomial, Gaussian)\cite{41}. The model was coded from scratch due to finding information on how this would be done with techniques such as TFIDF and Additive Smoothing as detailed in the literature review, the tutorial that helped the greatest \textit{Spam Classifier in Python from scratch} \cite{34} \cite{42}. For an explanation of how the maths work behind this classifier see Literature review sections 'Bag Of Words', 'TF-IDF' and 'Addictive Smoothing'.
The spam filter classifier, using a Naive Bayes model, was coded from scratch. This was ultimately unneeded as the Scikit-learn python package comes with four inbuilt Naive Bayes classification models (Bernoulli, Complement, Multinomial, Gaussian)\cite{NValgor}. The model was coded from scratch due to finding information on how this would be done with techniques such as TFIDF and Additive Smoothing as detailed in the literature review, the tutorial that helped the greatest \textit{Spam Classifier in Python from scratch} \cite{SpamCScratch} \cite{SpamOrHamGit}. For an explanation of how the maths work behind this classifier see Literature review sections 'Bag Of Words', 'TF-IDF' and 'Addictive Smoothing'.
The Naive Bayes model implemented was a multinomial Bayes model as the data used for classification was of multinomial distribution and categorical. This algorithm was not compared to the Scikit-learn's inbuilt model for accuracy as this was not the focus of this project.
@ -1470,13 +1510,135 @@ def create_sets(self, data, lookback, sentiment):
\newpage
\subsection{User Interface}
This section describes and discusses how the user interface is implemented, and what functions were used to both load data from the server and to display this data as graphical plots and tables on the interface.
The aim of the interface, although simple in design, is to display relevant and useful information to the stakeholders in aiding in market decisions.
The interface is a simple HTML page that uses JQuery and AJAX requests in conjunction to display the required data and consists of three charts and two tables - each displaying predictions and performance metrics. A snippet of the final interface can be seen in \textit{Figure 11} later in the section. This section will describe the reasoning behind the data displayed and the layout.
\subsubsection{Key Functions}
\textbf{Table Generation}
The below JQuery script, embedded in the HTML page, is one of two exact functions for loading data and generating a HTML table containing load data from an AJAX request, and fills a \textit{<div>} tag based on provided class name with the generated table data.
\begin{lstlisting}[language=JavaScript, caption=AJAX request and plotting performance data to HTML table]
<script>
// Create table with records based on amount loaded from data from AJAX request
function arrayToTable(tableData) {
var table = $('<table cellpadding="0" cellspacing="0" border="0"></table');
$(tableData).each(function (i, rowData) {
var row = $('<tr style="border:0;"></tr>');
$(rowData).each(function (j, cellData) {
row.append($('<td style="border:0;">'+cellData+'</td>'));
});
// For each record present add separatly inside table tags
table.append(row);
});
return table;
}
// Load data from server at base path
$.ajax({
type: "GET",
url: "metrics.csv",
success: function (data) {
$('.tbl-metrics').append(arrayToTable(Papa.parse(data).data));
// Fill div with class ^ with generated table
}
});
</script>
\end{lstlisting}
The data displayed in these tables consist of the perforance metrics of the trained model of the network: root mean squared error, mean squard error, mean absolute error, mean absolute percentage error and loss of the network. Another table on the interface shows the the hourly predictions made by the LSTM network, showing: date and time of prediction, next hourly prediction, current hourly price, hourly sentiment and the suggested market action (\textit{Buy} or \textit{Sell}) based on the hard-coded 0.25 (25\%) threshold in the network code. \textit{See figure 11 below for visual representation}
\newline
\textbf{Graph Generation}
The function shown in \textit{Listing 19} shows how charting is implemented as a function in the front-end application, likewise to the table function above in \textit{Listing 18}, this function is duplicated multiple times for each of the three graphs presented on the interface application.
This function uses an AJAX request to load the needed JSON data from the server and creates an array for each record present in the data. As shown in the function \textit{yhat\_inverse} and \textit{testY\_inverse} are the two data values generated by the neural network script, the former being the predicted next hour values time stepped by 1 record (1 hour), and the latter the true hourly data.
Each of the three charts uses the same parameters to plot data, but each represents different data and values that are saved to the JSON files by the neural network script.
\begin{lstlisting}[language=JavaScript, caption=Chart creation with AJAX request]
<script>
var chartData = unpack()
function unpack() {
var jsonD = {};
// Load relevant JSON files
$.ajax({
url: "updating.json",
dataType: "json",
type: "get",
async: false,
success: function(json){
jsonD = json;
}
});
var chartData = [];
for (var i = 0; i < Object.keys(jsonD).length; i++)
{
// Extract Values at postions and create array for plotting
chartData.push({
index: jsonD[i]["index"],
predict: jsonD[i]["yhat_inverse"],
true: jsonD[i]["testY_inverse"]
});
}
return chartData;
};
// JSON attributes and parameters for plotting the array generated
var chart = AmCharts.makeChart("chartdiv", {
"type": "serial",
"theme": "dark",
"legend": {
"useGraphSettings": true
},
"dataProvider": chartData,
"synchronizeGrid":true,
"valueAxes": [{
"id":"v1",
"axisColor": "#FF6600",
"axisThickness": 2,
"axisAlpha": 1,
"position": "left"
}, {
"id":"v2",
...
}],
...
// other JSON attribute parameters for defining a chart
...
</script>
\end{lstlisting}
\newpage
\subsubsection{Final Interface}
\begin{figure}[hbt!]
\centering
\includegraphics[width=14cm,height=19cm]{images/final_interface.png}
\begin{center}
\textit{Figure 11: Price Forecasting Dataflow diagram}
\end{center}
\end{figure}
\newpage
\section{Testing Metrics and Accuracy}
This section discusses the performance metrics used to validate the network, any additional validation step during training, speed of execution of the two networks, and outlines what these mean regarding the performance of the network.
Due to the project being primarily an investigation of the use of discussed tools on how these would be used for forecasting the price of the next hour of Bitcoin, based on both historical and live price, and sentiment data.
mean bias Error
k-fold cross validation was attempted, but issues with continuous data
How would this work what will it show or validate?
Validation params for network compiling, what do that do?
speed of execution - both networks are ~ 3:15 and no sent ~ 2:50 over 200 epochs on a batch size of 1000
\section{Discussion of Results}
\newpage
@ -1494,14 +1656,22 @@ def create_sets(self, data, lookback, sentiment):
\section{Conclusion and Future Improvements}
\subsection{Conclusion}
\subsection{Future Improvements}
Shifting the intial data by and hour and sequencing over previous data - will also allow proper use of look-back windows
Shifting the predicted data by and hour and sequencing over previous data - will also allow proper use of look-back windows
Another could be to predict the hour of sentiment and create a threshold for it.
Identify whether or not use of ngrams improved accuracy of spam classification
Identify whether use lemmatisation would change how spam classification occured
Look into use of other ngrams for use with language detection
Compare Scikit-learns in-built naive bayes algorithms and other variations performance for spam filtering against hand-coded version
Look into adding to the VADER lexicon for increasing performance and accuracy for topic domain of stock market language and what sentiment would be assigned to words
\newpage
\nocite{*}

View File

@ -20,134 +20,146 @@
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {5.5}Project Constraints}{15}{subsection.5.5}
\defcounter {refsection}{0}\relax
\contentsline {section}{\numberline {6}Quality Goals}{15}{section.6}
\contentsline {section}{\numberline {6}Quality Goals}{16}{section.6}
\defcounter {refsection}{0}\relax
\contentsline {section}{\numberline {7}Literature Review}{16}{section.7}
\contentsline {subsection}{\numberline {6.1}Process Description}{16}{subsection.6.1}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {7.1}Existing Tools}{16}{subsection.7.1}
\contentsline {subsection}{\numberline {6.2}Quality Objectives}{16}{subsection.6.2}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {7.2}Related research}{16}{subsection.7.2}
\contentsline {subsection}{\numberline {6.3}Tools to Ensure Quality}{17}{subsection.6.3}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {7.3}Data Collection}{17}{subsection.7.3}
\contentsline {section}{\numberline {7}Literature Review}{18}{section.7}
\defcounter {refsection}{0}\relax
\contentsline {subsubsection}{\numberline {7.3.1}Twitter and Twitter API}{17}{subsubsection.7.3.1}
\contentsline {subsection}{\numberline {7.1}Existing Tools}{18}{subsection.7.1}
\defcounter {refsection}{0}\relax
\contentsline {subsubsection}{\numberline {7.3.2}Tweepy Python Package}{18}{subsubsection.7.3.2}
\contentsline {subsection}{\numberline {7.2}Related research}{18}{subsection.7.2}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {7.4}Sentiment Analysis}{19}{subsection.7.4}
\contentsline {subsection}{\numberline {7.3}Data Collection}{19}{subsection.7.3}
\defcounter {refsection}{0}\relax
\contentsline {subsubsection}{\numberline {7.4.1}Natural Language Processing}{19}{subsubsection.7.4.1}
\contentsline {subsubsection}{\numberline {7.3.1}Twitter and Twitter API}{19}{subsubsection.7.3.1}
\defcounter {refsection}{0}\relax
\contentsline {subsubsection}{\numberline {7.4.2}Valence Aware Dictionary and sEntiment Reasoning}{20}{subsubsection.7.4.2}
\contentsline {subsubsection}{\numberline {7.3.2}Tweepy Python Package}{20}{subsubsection.7.3.2}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {7.5}Neural Networks}{21}{subsection.7.5}
\contentsline {subsection}{\numberline {7.4}Sentiment Analysis}{21}{subsection.7.4}
\defcounter {refsection}{0}\relax
\contentsline {subsubsection}{\numberline {7.5.1}Recurrent Neural Network (RNN)}{22}{subsubsection.7.5.1}
\contentsline {subsubsection}{\numberline {7.4.1}Natural Language Processing}{21}{subsubsection.7.4.1}
\defcounter {refsection}{0}\relax
\contentsline {subsubsection}{\numberline {7.5.2}Long-Short Term Memory (LSTM)}{23}{subsubsection.7.5.2}
\contentsline {subsubsection}{\numberline {7.4.2}Valence Aware Dictionary and sEntiment Reasoning}{22}{subsubsection.7.4.2}
\defcounter {refsection}{0}\relax
\contentsline {subsubsection}{\numberline {7.5.3}Keras and TensorFlow}{24}{subsubsection.7.5.3}
\contentsline {subsection}{\numberline {7.5}Neural Networks}{23}{subsection.7.5}
\defcounter {refsection}{0}\relax
\contentsline {subsubsection}{\numberline {7.5.4}Optimisers}{25}{subsubsection.7.5.4}
\contentsline {subsubsection}{\numberline {7.5.1}Recurrent Neural Network (RNN)}{24}{subsubsection.7.5.1}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {7.6}Machine Learning}{27}{subsection.7.6}
\contentsline {subsubsection}{\numberline {7.5.2}Long-Short Term Memory (LSTM)}{25}{subsubsection.7.5.2}
\defcounter {refsection}{0}\relax
\contentsline {subsubsection}{\numberline {7.6.1}Naive Bayes}{27}{subsubsection.7.6.1}
\contentsline {subsubsection}{\numberline {7.5.3}Keras and TensorFlow}{26}{subsubsection.7.5.3}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {7.7}Bag Of Words}{28}{subsection.7.7}
\contentsline {subsubsection}{\numberline {7.5.4}Optimisers}{27}{subsubsection.7.5.4}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {7.8}TF-IDF}{28}{subsection.7.8}
\contentsline {subsection}{\numberline {7.6}Machine Learning}{29}{subsection.7.6}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {7.9}Addictive Smoothing}{29}{subsection.7.9}
\contentsline {subsubsection}{\numberline {7.6.1}Naive Bayes}{29}{subsubsection.7.6.1}
\defcounter {refsection}{0}\relax
\contentsline {section}{\numberline {8}Solution Approach}{30}{section.8}
\contentsline {subsection}{\numberline {7.7}Bag Of Words}{30}{subsection.7.7}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {8.1}Data gathering}{30}{subsection.8.1}
\contentsline {subsection}{\numberline {7.8}TF-IDF}{30}{subsection.7.8}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {8.2}Data pre-processing}{31}{subsection.8.2}
\contentsline {subsection}{\numberline {7.9}Addictive Smoothing}{31}{subsection.7.9}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {8.3}Spam Filtering}{31}{subsection.8.3}
\contentsline {section}{\numberline {8}Solution Approach}{32}{section.8}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {8.4}Language Detection}{32}{subsection.8.4}
\contentsline {subsection}{\numberline {8.1}Data gathering}{32}{subsection.8.1}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {8.5}Sentiment Analysis}{32}{subsection.8.5}
\contentsline {subsection}{\numberline {8.2}Data pre-processing}{33}{subsection.8.2}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {8.6}Neural Network}{33}{subsection.8.6}
\contentsline {subsection}{\numberline {8.3}Spam Filtering}{33}{subsection.8.3}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {8.7}Price Forecasting}{35}{subsection.8.7}
\contentsline {subsection}{\numberline {8.4}Language Detection}{34}{subsection.8.4}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {8.8}Frontend Application}{35}{subsection.8.8}
\contentsline {subsection}{\numberline {8.5}Sentiment Analysis}{34}{subsection.8.5}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {8.9}With reference to Initial PID}{35}{subsection.8.9}
\contentsline {subsection}{\numberline {8.6}Neural Network}{35}{subsection.8.6}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {8.10}Solution Summary}{36}{subsection.8.10}
\contentsline {subsection}{\numberline {8.7}Price Forecasting}{37}{subsection.8.7}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {8.11}Data flow Overview}{37}{subsection.8.11}
\contentsline {subsection}{\numberline {8.8}Frontend Application}{37}{subsection.8.8}
\defcounter {refsection}{0}\relax
\contentsline {section}{\numberline {9}System Design}{38}{section.9}
\contentsline {subsection}{\numberline {8.9}With reference to Initial PID}{37}{subsection.8.9}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {9.1}Dataflow Designs}{38}{subsection.9.1}
\contentsline {subsection}{\numberline {8.10}Solution Summary}{38}{subsection.8.10}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {9.2}Interface Design}{45}{subsection.9.2}
\contentsline {subsection}{\numberline {8.11}Data flow Overview}{39}{subsection.8.11}
\defcounter {refsection}{0}\relax
\contentsline {section}{\numberline {10}Implementation}{46}{section.10}
\contentsline {section}{\numberline {9}System Design}{40}{section.9}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {10.1}Data collection}{46}{subsection.10.1}
\contentsline {subsection}{\numberline {9.1}Dataflow Designs}{40}{subsection.9.1}
\defcounter {refsection}{0}\relax
\contentsline {subsubsection}{\numberline {10.1.1}Price Time-Series Historical Data}{46}{subsubsection.10.1.1}
\contentsline {subsection}{\numberline {9.2}Interface Design}{47}{subsection.9.2}
\defcounter {refsection}{0}\relax
\contentsline {subsubsection}{\numberline {10.1.2}Price Time-Series Live Data}{47}{subsubsection.10.1.2}
\contentsline {section}{\numberline {10}Implementation}{49}{section.10}
\defcounter {refsection}{0}\relax
\contentsline {subsubsection}{\numberline {10.1.3}Historical Tweet Collection}{48}{subsubsection.10.1.3}
\contentsline {subsection}{\numberline {10.1}Data collection}{49}{subsection.10.1}
\defcounter {refsection}{0}\relax
\contentsline {subsubsection}{\numberline {10.1.4}Live Tweet Collection}{50}{subsubsection.10.1.4}
\contentsline {subsubsection}{\numberline {10.1.1}Price Time-Series Historical Data}{49}{subsubsection.10.1.1}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {10.2}Data pre-processing}{52}{subsection.10.2}
\contentsline {subsubsection}{\numberline {10.1.2}Price Time-Series Live Data}{50}{subsubsection.10.1.2}
\defcounter {refsection}{0}\relax
\contentsline {subsubsection}{\numberline {10.2.1}Tweet Filtering}{52}{subsubsection.10.2.1}
\contentsline {subsubsection}{\numberline {10.1.3}Historical Tweet Collection}{51}{subsubsection.10.1.3}
\defcounter {refsection}{0}\relax
\contentsline {subsubsection}{\numberline {10.2.2}Language detection filtering}{53}{subsubsection.10.2.2}
\contentsline {subsubsection}{\numberline {10.1.4}Live Tweet Collection}{53}{subsubsection.10.1.4}
\defcounter {refsection}{0}\relax
\contentsline {subsubsection}{\numberline {10.2.3}Spam filter - Tokenisation, Ngrams, Stopword removal and Stemming}{55}{subsubsection.10.2.3}
\contentsline {subsection}{\numberline {10.2}Data pre-processing}{55}{subsection.10.2}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {10.3}Spam Filtering}{56}{subsection.10.3}
\contentsline {subsubsection}{\numberline {10.2.1}Tweet Filtering}{55}{subsubsection.10.2.1}
\defcounter {refsection}{0}\relax
\contentsline {subsubsection}{\numberline {10.3.1}Naive Bayes model}{59}{subsubsection.10.3.1}
\contentsline {subsubsection}{\numberline {10.2.2}Language detection filtering}{56}{subsubsection.10.2.2}
\defcounter {refsection}{0}\relax
\contentsline {subsubsection}{\numberline {10.3.2}Classification}{60}{subsubsection.10.3.2}
\contentsline {subsubsection}{\numberline {10.2.3}Spam filter - Tokenisation, Ngrams, Stopword removal and Stemming}{58}{subsubsection.10.2.3}
\defcounter {refsection}{0}\relax
\contentsline {subsubsection}{\numberline {10.3.3}Predict}{61}{subsubsection.10.3.3}
\contentsline {subsection}{\numberline {10.3}Spam Filtering}{59}{subsection.10.3}
\defcounter {refsection}{0}\relax
\contentsline {subsubsection}{\numberline {10.3.4}Metrics}{61}{subsubsection.10.3.4}
\contentsline {subsubsection}{\numberline {10.3.1}Naive Bayes model}{62}{subsubsection.10.3.1}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {10.4}Sentiment Analysis}{62}{subsection.10.4}
\contentsline {subsubsection}{\numberline {10.3.2}Classification}{63}{subsubsection.10.3.2}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {10.5}Recurrent Neural Network - LSTM}{63}{subsection.10.5}
\contentsline {subsubsection}{\numberline {10.3.3}Predict}{64}{subsubsection.10.3.3}
\defcounter {refsection}{0}\relax
\contentsline {subsubsection}{\numberline {10.5.1}Dataset Creation}{63}{subsubsection.10.5.1}
\contentsline {subsubsection}{\numberline {10.3.4}Metrics}{64}{subsubsection.10.3.4}
\defcounter {refsection}{0}\relax
\contentsline {subsubsection}{\numberline {10.5.2}Training and Testing Model}{65}{subsubsection.10.5.2}
\contentsline {subsection}{\numberline {10.4}Sentiment Analysis}{65}{subsection.10.4}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {10.6}Future Prediction Forecasting}{67}{subsection.10.6}
\contentsline {subsection}{\numberline {10.5}Recurrent Neural Network - LSTM}{66}{subsection.10.5}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {10.7}User Interface}{69}{subsection.10.7}
\contentsline {subsubsection}{\numberline {10.5.1}Dataset Creation}{66}{subsubsection.10.5.1}
\defcounter {refsection}{0}\relax
\contentsline {section}{\numberline {11}Testing Metrics and Accuracy}{70}{section.11}
\contentsline {subsubsection}{\numberline {10.5.2}Training and Testing Model}{68}{subsubsection.10.5.2}
\defcounter {refsection}{0}\relax
\contentsline {section}{\numberline {12}Project Evaluation}{71}{section.12}
\contentsline {subsection}{\numberline {10.6}Future Prediction Forecasting}{70}{subsection.10.6}
\defcounter {refsection}{0}\relax
\contentsline {section}{\numberline {13}Discussion: Contribution and Reflection}{71}{section.13}
\contentsline {subsection}{\numberline {10.7}User Interface}{72}{subsection.10.7}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {13.1}Limitations}{71}{subsection.13.1}
\contentsline {subsubsection}{\numberline {10.7.1}Key Functions}{72}{subsubsection.10.7.1}
\defcounter {refsection}{0}\relax
\contentsline {section}{\numberline {14}Conclusion and Future Improvements}{72}{section.14}
\contentsline {subsubsection}{\numberline {10.7.2}Final Interface}{75}{subsubsection.10.7.2}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {14.1}Conclusion}{72}{subsection.14.1}
\contentsline {section}{\numberline {11}Testing Metrics and Accuracy}{76}{section.11}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {14.2}Future Improvements}{72}{subsection.14.2}
\contentsline {section}{\numberline {12}Discussion of Results}{76}{section.12}
\defcounter {refsection}{0}\relax
\contentsline {section}{\numberline {15}Appendices}{77}{section.15}
\contentsline {section}{\numberline {13}Project Evaluation}{77}{section.13}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {15.1}Appendix A - Project Initiation Document}{77}{subsection.15.1}
\contentsline {section}{\numberline {14}Discussion: Contribution and Reflection}{77}{section.14}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {15.2}Appendix B - Log book}{90}{subsection.15.2}
\contentsline {subsection}{\numberline {14.1}Limitations}{77}{subsection.14.1}
\defcounter {refsection}{0}\relax
\contentsline {section}{\numberline {15}Conclusion and Future Improvements}{78}{section.15}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {15.1}Conclusion}{78}{subsection.15.1}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {15.2}Future Improvements}{78}{subsection.15.2}
\defcounter {refsection}{0}\relax
\contentsline {section}{\numberline {16}Appendices}{83}{section.16}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {16.1}Appendix A - Project Initiation Document}{83}{subsection.16.1}
\defcounter {refsection}{0}\relax
\contentsline {subsection}{\numberline {16.2}Appendix B - Log book}{96}{subsection.16.2}

BIN
images/final_interface.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 530 KiB

BIN
images/final_interface2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 245 KiB

View File

@ -1,4 +1,4 @@
@inproceedings{1,
@inproceedings{SaTdpsmm,
title={Sentiment analysis of Twitter data for predicting stock market movements},
author={Pagolu, Venkata Sasank and Reddy, Kamal Nayan and Panda, Ganapati and Majhi, Babita},
booktitle={2016 international conference on signal processing, communication, power and embedded system (SCOPES)},
@ -8,7 +8,7 @@
url = {https://arxiv.org/pdf/1610.09225.pdf}
}
@inproceedings{2,
@inproceedings{nlAeiBTCPSO,
title={Non-linear autoregressive with exogeneous input (NARX) Bitcoin price prediction model using PSO-optimized parameters and moving average technical indicators},
author={Indera, NI and Yassin, IM and Zabidi, A and Rizman, ZI},
booktitle={Journal of Fundamental and Applied Sciences. Vol.35, No.35},
@ -18,7 +18,17 @@
url = {https://www.ajol.info/index.php/jfas/article/viewFile/165614/155073}
}
@inproceedings{3,
@inproceedings{ISO9000,
title={Quality management principles:ISO9000-IS9001},
author={ISO},
booktitle={},
pages={},
year={2015},
organization={ISO},
url={https://www.iso.org/files/live/sites/isoorg/files/archive/pdf/en/pub100080.pdf}
}
@inproceedings{BTCFTsent,
title={Predicting Bitcoin price fluctuation with Twitter sentiment analysis},
author={Evita Stenqvist, Jacob Lonno},
booktitle={},
@ -28,7 +38,7 @@
url = {http://www.diva-portal.org/smash/get/diva2:1110776/FULLTEXT01.pdf}
}
@inproceedings{4,
@inproceedings{BTCRNN,
title={Predict Tomorrows Bitcoin (BTC) Price with Recurrent Neural Networks},
author={Orhan Gazi Yalcin},
booktitle={},
@ -38,7 +48,7 @@
url = {https://towardsdatascience.com/using-recurrent-neural-networks-to-predict-bitcoin-btc-prices-c4ff70f9f3e4}
}
@inproceedings{5,
@inproceedings{StPNSentA,
title={Stock Predictions through News Sentiment Analysis},
author={Intel-Corporation},
booktitle={},
@ -48,7 +58,7 @@
url = {https://www.codeproject.com/Articles/1201444/Stock-Predictions-through-News-Sentiment-Analysis}
}
@inproceedings{6,
@inproceedings{MLBTCpred,
title={Predicting the Price of Bitcoin Using Machine Learning},
author={Sean McNally, Jason Roche, Simon Caton},
booktitle={2018 26th Euromicro International Conference on Parallel, Distributed and Network-based Processing (PDP)},
@ -58,7 +68,7 @@
url = {https://ieeexplore.ieee.org/abstract/document/8374483}
}
@inproceedings{7,
@inproceedings{SearchTweets,
title={Search Tweets},
author={Twitter},
booktitle={},
@ -68,7 +78,7 @@
url = {https://developer.twitter.com/en/docs/tweets/search/overview}
}
@inproceedings{8,
@inproceedings{ConStream,
title={Consuming streaming data},
author={Twitter},
booktitle={},
@ -78,7 +88,7 @@
url = {https://developer.twitter.com/en/docs/tutorials/consuming-streaming-data.html}
}
@inproceedings{9,
@inproceedings{TweepyStream,
title={Streaming With Tweepy},
author={Joshua Roesslein},
booktitle={},
@ -88,7 +98,7 @@
url = {http://docs.tweepy.org/en/v3.4.0/streaming_how_to.html}
}
@inproceedings{10,
@inproceedings{PolClassPatients,
title={Using Linked Data for polarity classification of patients experiences},
author={Mehrnoush Shamsfard, Samira Noferesti},
booktitle={Journal of Biomedical Informatics},
@ -98,7 +108,7 @@
url = {https://www.sciencedirect.com/science/article/pii/S1532046415001276}
}
@inproceedings{11,
@inproceedings{LexiconSocSent,
title={Social media sentiment analysis: lexicon versus machine learning},
author={Chedia Dhaoui, Cynthia M. Webster, Lay Peng Tan},
booktitle={Journal of Consumer Marketing, Volume 34. Issue 6},
@ -108,7 +118,7 @@
url = {https://www.emeraldinsight.com/doi/pdfplus/10.1108/JCM-03-2017-2141}
}
@inproceedings{12,
@inproceedings{VADERPaper,
title={VADER: A Parsimonious Rule-based Model for Sentiment Analysis of Social Media Text},
author={C.J. Hutto and Eric Gilbert},
booktitle={Eighth International Conference on Weblogs and Social Media (ICWSM-14)},
@ -118,7 +128,7 @@
url = {https://www.aaai.org/ocs/index.php/ICWSM/ICWSM14/paper/download/8109/8122}
}
@inproceedings{13,
@inproceedings{WisCrowds,
title={Wisdom of Crowds},
author={Will Kenton},
booktitle={},
@ -128,7 +138,7 @@
url = {https://www.investopedia.com/terms/w/wisdom-crowds.asp}
}
@inproceedings{14,
@inproceedings{NNDLBegin,
title={A Beginner's Guide to Neural Networks and Deep Learning},
author={Skymind},
booktitle={A.I. Wiki},
@ -138,7 +148,7 @@
url = {https://skymind.ai/wiki/neural-network}
}
@inproceedings{15,
@inproceedings{WhatNN,
title={What is a neural network},
author={Jonas DeMuro},
booktitle={World of tech},
@ -148,7 +158,7 @@
url = {https://www.techradar.com/uk/news/what-is-a-neural-network}
}
@inproceedings{16,
@inproceedings{SupdictL,
title={Supervised dictionary learning},
author={Mairal, J., Ponce, J., Sapiro, G., Zisserman, A. and Bach, F.R., },
booktitle={Advances in neural information processing systems },
@ -158,7 +168,7 @@
url = {http://papers.nips.cc/paper/3448-supervised-dictionary-learning}
}
@inproceedings{17,
@inproceedings{ErrorProp,
title={Learning internal representations by error propagation},
author={Rumelhart, David E and Hinton, Geoffrey E and Williams, Ronald J},
booktitle={},
@ -168,7 +178,7 @@
url = {https://apps.dtic.mil/docs/citations/ADA164453}
}
@inproceedings{18,
@inproceedings{BeginLSTMRNN,
title={A Beginner's Guide to LSTMs and Recurrent Neural Networks},
author={Skymind},
booktitle={A.I. Wiki},
@ -178,7 +188,7 @@
url = {https://skymind.ai/wiki/lstm}
}
@inproceedings{19,
@inproceedings{RNNLSTMtds,
title={Recurrent Neural Networks and LSTM},
author={Niklas Donges},
booktitle={},
@ -188,7 +198,7 @@
url = {https://towardsdatascience.com/recurrent-neural-networks-and-lstm-4b601dd822a5}
}
@inproceedings{20,
@inproceedings{NNEgrad,
title={A Gentle Introduction to Exploding Gradients in Neural Networks},
author={Jason Brownlee, PhD.},
booktitle={},
@ -198,7 +208,7 @@
url = {https://machinelearningmastery.com/exploding-gradients-in-neural-networks/}
}
@inproceedings{21,
@inproceedings{RNNvanishGrad,
title={Recurrent Neural Networks (RNN) - The Vanishing Gradient Problem},
author={Super Data Science Team},
booktitle={},
@ -208,7 +218,7 @@
url = {https://www.superdatascience.com/blogs/recurrent-neural-networks-rnn-the-vanishing-gradient-problem}
}
@inproceedings{22,
@inproceedings{LSTM,
title={Long short-term memory},
author={Hochreiter, Sepp and Schmidhuber, Jurgen},
booktitle={Neural computation, Volume 9. 8},
@ -218,7 +228,7 @@
url = {https://www.bioinf.jku.at/publications/older/2604.pdf}
}
@inproceedings{23,
@inproceedings{LSTMdia,
title={Understanding LSTM and its diagrams},
author={Shi Yan},
booktitle={},
@ -228,7 +238,7 @@
url = {https://medium.com/mlreview/understanding-lstm-and-its-diagrams-37e2f46f1714}
}
@inproceedings{24,
@inproceedings{LSTMmaths,
title={Understanding LSTM Networks},
author={Christopher Olah},
booktitle={},
@ -238,7 +248,7 @@
url = {https://colah.github.io/posts/2015-08-Understanding-LSTMs}
}
@inproceedings{25,
@inproceedings{LSTMforetime,
title={Using LSTMs to forecast time-series},
author={Ravindra Kompella},
booktitle={},
@ -248,7 +258,7 @@
url = {https://towardsdatascience.com/using-lstms-to-forecast-time-series-4ab688386b1f}
}
@inproceedings{26,
@inproceedings{TensorFlow,
title={Tensorflow: A system for large-scale machine learning},
author={Abadi, Martin and Barham, Paul and Chen, Jianmin and Chen, Zhifeng and Davis, Andy and Dean, Jeffrey and Devin, Matthieu and Ghemawat, Sanjay and Irving, Geoffrey and Isard, Michael and others},
booktitle={12th Symposium on Operating Systems Design and Implementation 16)},
@ -257,7 +267,7 @@
url={https://www.usenix.org/system/files/conference/osdi16/osdi16-abadi.pdf}
}
@inproceedings{27,
@inproceedings{OptSGD,
title={Optimization: Stochastic Gradient Descent},
author={Stanford},
booktitle={UFLDL Tutorial},
@ -266,7 +276,7 @@
url={http://deeplearning.stanford.edu/tutorial/supervised/OptimizationStochasticGradientDescent}
}
@inproceedings{28,
@inproceedings{Optimisers,
title={What are differences between update rules like AdaDelta, RMSProp, AdaGrad, and Adam},
author={Rajarshee Mitra},
booktitle={},
@ -276,7 +286,7 @@
url={https://www.quora.com/What-are-differences-between-update-rules-like-AdaDelta-RMSProp-AdaGrad-and-AdaM}
}
@inproceedings{29,
@inproceedings{OptVariants,
title={Variants of rmsprop and adagrad with logarithmic regret bounds},
author={Mukkamala, Mahesh Chandra and Hein, Matthias},
booktitle={Proceedings of the 34th International Conference on Machine Learning-Volume 70},
@ -286,7 +296,7 @@
url={https://arxiv.org/pdf/1706.05507.pdf}
}
@inproceedings{30,
@inproceedings{OverOpt,
title={Overview of different Optimizers for neural networks},
author={Renu Khandelwal},
booktitle={},
@ -296,7 +306,7 @@
url={https://medium.com/datadriveninvestor/overview-of-different-optimizers-for-neural-networks-e0ed119440c3}
}
@inproceedings{31,
@inproceedings{Adam,
title={Adam: A method for Stochastic Optimization},
author={Diederik P. Kingma, Jimmy Lei Ba},
booktitle={arXiv preprint arXiv:1412.6980},
@ -306,7 +316,7 @@
url={https://arxiv.org/pdf/1412.6980.pdf}
}
@inproceedings{32,
@inproceedings{StudyNBC,
title={An empirical study of the naive Bayes classifier},
author={Rish, Irina and others},
booktitle={IJCAI 2001 workshop on empirical methods in artificial intelligence},
@ -317,7 +327,7 @@
url={https://www.cc.gatech.edu/~isbell/reading/papers/Rish.pdf}
}
@inproceedings{33,
@inproceedings{TFIDFBOW,
title={A Beginner's Guide to Bag of Words and TF-IDF},
author={Skymind},
booktitle={A.I Wiki},
@ -327,7 +337,7 @@
url={https://skymind.ai/wiki/bagofwords-tf-idf}
}
@inproceedings{34,
@inproceedings{SpamCScratch,
title={Spam Classifier in Python from scratch},
author={Tejan Karmali},
booktitle={},
@ -337,7 +347,7 @@
url={https://towardsdatascience.com/spam-classifier-in-python-from-scratch-27a98ddd8e73}
}
@inproceedings{35,
@inproceedings{TweepyDoc,
title={Tweepy Documentation},
author={Joshua Roesslein},
booktitle={},
@ -348,7 +358,7 @@
url={http://docs.tweepy.org/en/v3.5.0/}
}
@inproceedings{36,
@inproceedings{TFvsThe,
title={Tensorflow Vs. Theano: What Do Researchers Prefer As An Artificial Intelligence Framework},
author={Srishti Deoras},
booktitle={},
@ -360,7 +370,7 @@
url={https://www.analyticsindiamag.com/tensorflow-vs-theano-researchers-prefer-artificial-intelligence-framework}
}
@inproceedings{37,
@inproceedings{btcCharts,
title={},
author={bitcoincharts},
booktitle={},
@ -370,7 +380,7 @@
url={http://api.bitcoincharts.com/v1/csv/}
}
@inproceedings{38,
@inproceedings{langdectNLTK,
title={Detecting Text Language With Python and NLTK},
author={Alejandro Nolla},
booktitle={},
@ -380,7 +390,7 @@
url={http://blog.alejandronolla.com/2013/05/15/detecting-text-language-with-python-and-nltk/}
}
@inproceedings{39,
@inproceedings{LanNgram,
title={A tutorial on Automatic Language Identification - ngram based},
author={Practical Cryptography},
booktitle={},
@ -390,7 +400,7 @@
url={http://practicalcryptography.com/miscellaneous/machine-learning/tutorial-automatic-language-identification-ngram-b/}
}
@inproceedings{40,
@inproceedings{StemvsLem,
title={What is the difference between stemming and lemmatization},
author={Tita Risueno},
booktitle={},
@ -400,7 +410,7 @@
url={https://blog.bitext.com/what-is-the-difference-between-stemming-and-lemmatization/}
}
@inproceedings{41,
@inproceedings{NValgor,
title={Naive Bayes},
author={scikit-learn developers},
booktitle={},
@ -410,7 +420,7 @@
url={https://scikit-learn.org/stable/modules/naive_bayes.html}
}
@inproceedings{42,
@inproceedings{SpamOrHamGit,
title={Spam-or-Ham},
author={Tejan Karmali - tejank10},
booktitle={},