Jekyll2021-04-28T12:46:26+00:00https://yusufsohoye.com/feed.xmlPineapple Coder đPersonal website.Yusuf SohoyeRe-Colouring Bob Dylan Photos2021-02-01T00:00:00+00:002021-02-01T00:00:00+00:00https://yusufsohoye.com/bob-dylan<p><img src="../assets/images/bobdylan/bobdylan_cover_comp_orig.jpg" alt="bobdylan_cover_comp_orig" /></p>
<p>Recently, Iâve been looking into the life of bob Dylan and the stories behind some of hismoqt iconic songs. Thereâs a couple of documentaries about his life; <a href="https://en.wikipedia.org/wiki/No_Direction_Home">No Direction Home</a> and the half-fiction <a href="https://en.wikipedia.org/wiki/Rolling_Thunder_Revue:_A_Bob_Dylan_Story_by_Martin_Scorsese">Rolling Thunder Revue</a> both directed by Martin Scorsese. Also some footage on YouTube such as the <a href="https://www.youtube.com/watch?v=-94ydQGO1AA">Donât Look Back</a> documentary.</p>
<p>A journey back into Bob Dylanâs life is as much about his life as it is about key events in American history, such as the <a href="https://en.wikipedia.org/wiki/A_Hard_Rain%27s_a-Gonna_Fall">Cuban Missile Crisis</a> and the <a href="https://en.wikipedia.org/wiki/Only_a_Pawn_in_Their_Game">Civil Rights Movement</a>. Itâs also a look back at the progression of technology such as the infamous introduction of the electric guitar at the <a href="https://youtu.be/6x608XzG9Hw">Newport Folk Festival</a>.</p>
<p>Improvements in photograph technology is also clear to see through Dylans life. In the early Woody Guthrie days there are black and white still images, and some silent clips of Dylan in NewYork. As he became more well known there are some black and white videos with sound, including lots of footage of the tour of the UK. I personally find it hard to imagine colour in historic black and white photos - I find it so difficult to imagine the world around the photo being in colour too. I saw <a href="https://www.youtube.com/watch?v=vubuBrcAwtY">this Vox piece</a> about how much contextual information goes into colourising photos and the results are quite impressive.</p>
<p>Anyway, I came across <a href="https://deoldify.ai">deoldify.ai</a>, a project using Generative adversarial network approach to re-colourising black and white images. GANs approach is quite cool as it uses 2 neural networks pitted against each other, where one tries to fool the other by generating fake data that it tries to pass off as real. The <strong>generator</strong> neural network creates the fake data, this is mixed with real data and fed to the <strong>discriminator</strong> who tries to differentiate between real and fake data. This feedback loop then allows the generator to improve itâs performance on generating fake data. As always, there is <strong>so much more</strong> to this deep learning method, Computerphile has a good <a href="https://youtu.be/Sw9r8CL98N0">video on it</a>.</p>
<p>Hopefully you could see how this method would be pretty applicable to this use case: Weâre training an algorithm to create a fake picture (colourised) that should pass off for a real one. DeOldify have setup a really clear <a href="https://github.com/jantic/DeOldify#about-deoldify">repo</a> to help anyone colourise their images (or videos). You could either clone the repo or use the google <a href="https://colab.research.google.com/github/jantic/DeOldify/blob/master/ImageColorizerColab.ipynb">collab</a> notebook, which removes the dependency hassle and also useful if you havenât got the required hardware.</p>
<p><img src="../assets/images/bobdylan/bobdylan_mississippi.png" alt="bobdylan_mississippi" /></p>
<p>Bob Dylan and Pete Seeger in Mississippi 1963 <a href="https://i.pinimg.com/originals/97/b8/bc/97b8bc918ef4c32ccbc9eb3e57d9a3f1.jpg">source</a></p>
<p><img src="../assets/images/bobdylan/bobdylan_infam_compare.png" alt="bobdylan_infam_compare" /></p>
<p>Dylan Playing the Electric Guitar at the Newport Folk festival 1965 <a href="https://media.npr.org/assets/img/2015/07/21/26_dge_wide-0de020d2a762b70974171405e89afc977be9522a.jpg?s=1400">source</a></p>
<p><img src="../assets/images/bobdylan/bobdylan_liverpool.png" alt="bobdylan_liverpool" /></p>
<p>Bob Dylan in Liverpool 1966 <a href="https://www.morrisonhotelgallery.com/photographs/bIjAIO/Bob-Dylan-Liverpool-England-1966">source</a></p>
<p>There is an interesting discussion on wether we should be colourising photos and if it could be <a href="https://paleofuture.gizmodo.com/are-colorized-photos-rewriting-history-1579276696">Rewriting History</a>, especially he algorithmically driven kind of colourising. We know that images and algorithms have a <a href="https://www.bbc.com/news/technology-54234822">problem with bias</a> so should be careful to involve experts such as those shown in the Vox explainer - where a lot of work goes into gaining lots of contextual information and verify the evidence before colourising. But for some small projects and maybe family photos, tools such as this make colourising much more accessible and the DeOldify project is makes it very accessible. DeOlidfy also have a very impressive video colourisation solution that <a href="https://youtu.be/o8dzxh7Ybqw">looks very good</a>.</p>
<p>If youâve got any artists or videos or old black-and-white images youâd like to see in colour then why not give DeOldify a go! My grandma has asked me to do some Elvis photos next so Iâll be focusing on that.</p>
<p><img src="../assets/images/bobdylan/bobdylan_cover.png" alt="bobdylan_cover_comp" /></p>Yusuf SohoyeWhere have you been my blue eyed son? Using DeOldify to re-colour black and white photos.Impact of COVID-19 on the UK BAME population2020-08-12T00:00:00+00:002020-08-12T00:00:00+00:00https://yusufsohoye.com/bame-covid<p><em>This article was originally posted on <a href="https://towardsdatascience.com/impact-of-covid-19-on-the-uk-bame-population-cc09244c5d63?source=friends_link&sk=3320d2532b918603631ea8c2a15be039">TDS</a></em></p>
<blockquote>
<p><em>ââŚthe virus knows no race or nationality; it canât peek at your driverâs license or census form to check whether you are black. Society checks for it, and provides the discrimination on the virusâs behalf.</em>â â <a href="https://www.theatlantic.com/ideas/archive/2020/05/we-dont-know-whats-behind-covid-19-racial-disparity/612106/">Game Wood â The Atlantic</a></p>
</blockquote>
<p><img src="https://miro.medium.com/max/5961/1*K1iZiiUzx3vLn5fvDY_hYw.jpeg" alt="Image for post" /></p>
<p>Photo by <a href="https://unsplash.com/@samuelryde?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Samuel Ryde</a> on <a href="https://unsplash.com/?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Unsplash</a></p>
<p>There is growing concern that coronavirus has had a <a href="https://www.bhf.org.uk/informationsupport/heart-matters-magazine/news/behind-the-headlines/coronavirus/coronavirus-and-bame-patients">greater impact on people from ethnic minorities</a>. Black, Asian and Minority Ethnic (BAME) communities account for 14% of the population but make up <a href="https://www.theguardian.com/world/2020/apr/07/bame-groups-hit-harder-covid-19-than-white-people-uk">a third</a> of critically ill coronavirus patients in hospitals is the headline statistic. The <a href="https://assets.publishing.service.gov.uk/government/uploads/system/uploads/attachment_data/file/892085/disparities_review.pdf">Public Health England report</a> finds that there is a disproportionate impact of Covid-19 on people from all non-white ethnic minorities.</p>
<p>This article compares <a href="https://github.com/VictimOfMaths/COVID_LA_Plots">excess death statistics</a> with openly available socio-economic data to present a descriptive picture of the situation in England and Wales. Descriptive analysis uses 2011 census data to determine the ethnic mix of local authorities; an approach similar to one <a href="https://www.ons.gov.uk/peoplepopulationandcommunity/birthsdeathsandmarriages/deaths/articles/coronavirusrelateddeathsbyethnicgroupenglandandwales/2march2020to10april2020">used by the ONS</a>. As a result, the unit of observation will be local authorities. A full breakdown of raw data, transformation and analysis can be found and reproduced on GitHub.</p>
<blockquote>
<p><em><strong>Note from the editors:*</strong> <a href="http://towardsdatascience.com/">*Towards Data Science*</a> *is a Medium publication primarily based on the study of data science and machine learning. We are not health professionals or epidemiologists, and the opinions of this article should not be interpreted as professional advice. To learn more about the coronavirus pandemic, you can click</em> <a href="https://www.who.int/emergencies/diseases/novel-coronavirus-2019/situation-reports"><em>here</em></a><em>.</em></p>
</blockquote>
<h1 id="whats-going-on">Whatâs going on?</h1>
<p><img src="../assets/images/bame_covid/excessdeaths.png" alt="Image for post" /></p>
<p>Local Authority Ethnicity share against Excess Deaths <a href="https://github.com/Quotennial/covid_bame/blob/master/notebooks/Excess Deaths and Ethnicity.ipynb">source</a></p>
<p>The above plot shows deaths occurring within a Local Authority against the proportional representation of a particular ethnicity in that Local Authority. Lines sloping upwards from left to right indicate that local authorities with higher proportion of BAME population see more excess deaths. Whereas the downward sloping purple line indicates that less ethnically diverse Local Authorities see lower number of excess deaths. It is important to note that data does cluster close to 0, and regression lines <a href="https://twitter.com/ryxcommar/status/1280268687455457281?s=20">fitted to this kind of clumped data</a> is not evidence of a relationship by itself. This is not measuring the impact to the BAME community directly, but instead comparing geographic areas more negatively affected by the virus, and itâs corresponding ethnic make up.</p>
<p><img src="../assets/images/bame_covid/struct1.png" alt="Image for post" /></p>
<h1 id="age">Age</h1>
<p>Before we look at the location specific factors affecting virusâ impact, we must consider the age of the afflicted, which we understand to be a contributing factor to the mortality of COVID-19. Data published by the ONS contains <a href="https://www.ons.gov.uk/peoplepopulationandcommunity/birthsdeathsandmarriages/deaths/datasets/countsandratiosofcoronavirusrelateddeathsbyethnicgroupenglandandwales">counts of coronavirus-related deaths by ethnic group in England and Wales</a> and show that 88% of Coronavirus-related deaths are people over 64.</p>
<p><img src="../assets/images/bame_covid/deathspop.png" alt="Image for post" /></p>
<p>COVID Deaths and Total Population <a href="https://github.com/Quotennial/covid_bame/blob/master/notebooks/Ethnicity And Age Breakdown.ipynb">source</a></p>
<p>The figure above shows ethnic breakdown of all recorded covid deaths. Interestingly, this breakdown is fairly similar to the 2011 census statistics which showed a 14% of the population were BAME and the covid data shows that 16.2% of COVID deaths are BAME. There doesnât seem to be a disproportionate effect on the BAME population.</p>
<p>To square this circle we can use a Dana Mackenzie blog post looking at <a href="http://causality.cs.ucla.edu/blog/index.php/2020/07/06/race-covid-mortality-and-simpsons-paradox-by-dana-mackenzie/">race and covid in the USA</a> through the Simpsons paradox. Presenting the below causal model, he assumes that ethnicity will influence chances of living to age 65 or older.</p>
<p><img src="../assets/images/bame_covid/struct2.png" alt="Image for post" /></p>
<p>This forms a chain, through which the causal effect can pass through. If we are to ask, what is the effect of ethnicity <strong>only</strong> on Covid mortality, then we must hold all other variables constant. It follows that we should control for age and split by age, creating two groups â0â64â and â65+â:</p>
<p><img src="../assets/images/bame_covid/deathsage.png" alt="Image for post" /></p>
<p>Covid Deaths by Ethnicity for different Age Groups <a href="https://github.com/Quotennial/covid_bame/blob/master/notebooks/Ethnicity And Age Breakdown.ipynb">source</a></p>
<p>Now we split COVID deaths by age; this shows a similar distribution, for the 65+ category. COVID deaths split by ethnicity roughly match the 2011 census ethnicity breakdown of the UK; 86% of the UK population are white and 85.7% of Covid deaths aged 65+ are also white. However, for the under 65 age bracket, there is a higher share of BAME deaths when compared to the UK population; 30.7% of covid deaths under 64 are from BAME communities, compared to 14% of the population.</p>
<p><img src="../assets/images/bame_covid/censusbyage.png" alt="Image for post" /></p>
<p>Population by Ethnicity for Different Age Groups <a href="https://github.com/Quotennial/covid_bame/blob/master/notebooks/Ethnicity And Age Breakdown.ipynb">source</a></p>
<p>Finally, we split the population by ethnicity <strong>and</strong> age, now we can see a clear disparity between ethnicities for both age brackets. Now the BAME population under 65 make up of 30.7% covid deaths but only 14.3% of the population. 2011 census shows that the BAME population make up just 2.3% of the 65+ population, but account for 14.3% of the COVID deaths. This seems to indicate a very disproportionate impact on the BAME population. As shown, <a href="https://www.youtube.com/watch?v=ebEkn-BiW5k">grouping data differently</a> can lead to different results; assumptions about causal paths are essential when making these grouping decisions.</p>
<h1 id="location-living-in-cities">Location: Living in Cities</h1>
<p>There may be some intrinsic/ biological condition that causes BAME people to be higher risk, but this is probably not the whole story. Poor living environments are well understood to contribute to health risks, recognised in multiple <a href="https://www.jstor.org/stable/j.ctt1729vxt">epidemiological studies</a>. Centric Lab <a href="https://www.thecentriclab.com/covid-19-poverty-a-london-data-study">released a report</a> taking an in-depth look at human health and urban environments. Economics Observatory also details the mechanisms through which <a href="https://www.coronavirusandtheeconomy.com/question/why-has-coronavirus-affected-cities-more-rural-areas">cities become coronavirus hotspots</a>, including occupational structures. These studies support the causal structure laid out below, where ethnicity will affect location decisions (immigrants settling in dense areas with increased employment opportunities), and these historic location patterns being passed down generations.</p>
<p><img src="../assets/images/bame_covid/struct3.png" alt="Image for post" /></p>
<p>To unpack âHigh Risk Urban Environmentsâ, below is a correlation matrix of area specific attributes obtained using openly available data. Correlations calculated using Spearmanâs and p-values shown <a href="https://github.com/Quotennial/covid_bame/blob/master/reports/figures/corr_pvals.csv">here</a>.</p>
<p><img src="../assets/images/bame_covid/corrmat.png" alt="Image for post" /></p>
<p>Correlation Matrix (Spearman) <a href="https://github.com/Quotennial/covid_bame/blob/master/notebooks/Excess Deaths and Ethnicity.ipynb">source</a></p>
<ul>
<li>Excess deaths are positively correlated with increased BAME populations, and negatively correlated with increased presence of white ethnic populations. The same pattern we saw in the first scatter plot.</li>
<li>Co-location of BAME population: Red cluster in the bottom right of the plot indicate co-location of BAME populations. In Local Authorities where there is a high proportion of any ethnic minority, there tends to be a higher proportion of other minorities as well.</li>
<li>Population density and BAME population: Population density is calculated using <a href="https://www.ons.gov.uk/peoplepopulationandcommunity/populationandmigration/populationestimates/datasets/populationestimatesforukenglandandwalesscotlandandnorthernireland">ONS population estimates</a> and size of local authority (then cross referenced with <a href="https://data.gov.uk/dataset/a76f46f9-c10b-4fe7-82f6-aa928471fcd1/land-area-and-population-density-ward-and-borough">GLA density estimates</a>). Showing that BAME ethnicities tend to live in more densely populated areas. When combined with government findings that ethnic minorities <a href="https://www.ethnicity-facts-figures.service.gov.uk/housing/housing-conditions/overcrowded-households/latest#by-ethnicity">live in cramped housing</a>; a picture of dense living for BAME populations emerges.</li>
<li>Excess deaths negatively correlated with higher number of people over 65, which also tend to be less densely populated and less ethnically diverse.</li>
<li>Portion Furloughed and the Index of Multiple Deprivation: Neither metrics show any real indication of a relationship.</li>
</ul>
<p>So far, we have only seen correlations that may give us a profile of the kind of high-risk local authorities. No fancy modelling or weighted metrics used so far, this follows from a <a href="https://www.tomforth.co.uk/coronavirusanddeprivation2/">piece Tom Forth wrote</a> about useful statistics and misleading metrics. He studies an adjacent concern â that most deprived areas are worse affected â but finds no evidence. I also find no strong relationship between deprivation and excess deaths. But Tom also highlights an important point about the social-justice element; BAME people are being affected but to uncover the real underlying factors â we must be unbiased in our analysis, not go trying to fit the data into our beliefs and hold our assumptions loosely.</p>
<p>Thus far data collection has been prioritised for monitoring, this can be an issue when trying to uncover causal links in âreal timeâ; the 2011 census data is a year away from being officially outdated. Data being collected and published about Coronavirus is an ongoing, iterative process; collection methods and data quality can change weekly. For example; the <a href="https://www.inyourarea.co.uk/news/why-the-coronavirus-figures-you-see-on-inyourarea-increased-so-much/">omission of pillar II testing</a> shows us how drastically the âdataâ can shift. Chris Giles of the FT compares the new <a href="https://www.ft.com/content/366653da-fc7b-4f3d-bf2f-ef95dfc18041">speedy economic data to fast food</a> â tempting but bad for you. Reliance on data without understanding the causal structure can be misleading.</p>
<h1 id="geospatial-analysis">Geospatial Analysis</h1>
<p>There has been no shortage of COVID map-dashboards; spatial analysis has been an <a href="https://www.wired.co.uk/article/uk-lockdown">important tool</a> in trying to contain and reduce the spread. The map below uses local Moranâs statistic which is: âthe correlation coefficient for the relationship between a variable (like excess deaths) and its surrounding valuesâ [<a href="https://mgimond.github.io/Spatial/spatial-autocorrelation.html#local-morans-i">ref</a>]. We use this measure to compare excess death rates of local authorities with neighbouring local authorities.</p>
<p><img src="../assets/images/bame_covid/morrans.png" alt="Image for post" /></p>
<p>Excess Deaths using Local Moranâs Statistic <a href="https://github.com/Quotennial/covid_bame/blob/master/notebooks/spatial_analysis.ipynb">source</a></p>
<p>The scatter plot on the left visualises the local authorities and relationship with their neighbours, coloured dots are statistically significant to p=0.05. The top right red quadrant shows that LA with high number of excess deaths are surrounded by other LA with similarly high excess deaths. Whereas the bottom left blue quadrant shows low excess deaths surrounded by other LA with low excess deaths.</p>
<p>On the map red areas indicate âcovid hotspotsâ, we see a London cluster of local authorities and regions around Liverpool and Manchester highlighted as high number of excess deaths with similarly high neighbours. There is also a cluster near Leicester and Birmingham where a local lockdown was put in place.</p>
<h1 id="conclusion">Conclusion</h1>
<p>The correlation matrix indicates the co-location of BAME population in dense areas and the spatial analysis shows the correlation of high excess deaths in urban areas â pointing towards the cityâs role in increasing COVID alongside more BAME people living in cities. However, this reasoning ignores the inequality and polarisation within cities. Cities are where very different socio-economic groups live side by side. Analysis and policy solely focused on regions as a whole will miss these differences and more granular data would benefit this effort.</p>
<p>In uncertain times such as these, we often seek data to cling onto and provide some certainty; but more data about our world does not necessarily mean we understand more about our world. Complex models and machine learning wonât cleanse the data of errors and omitted testing numbers â but reinforce them. This has been a first run at trying to understand the impacts of COVID on BAME population in the UK.</p>
<p>In the meantime, the code and data (raw and clean) is all <a href="https://github.com/Quotennial/covid_bame">online</a>. I am aware the statistical methods used are quite simple and believe that this will help communicate the picture better than hiding meaning (and my mistakes!) behind complex modelling and caveats. Sometimes simplicity can provide more clarity than complex modelling approaches, and in these uncertain times, clarity is in short supply.</p>Yusuf SohoyeUsing open data to provide a descriptive view of the socio-economic factors affecting the UK BAME population during COVID-19Ps and Qs: Textual Analysis of UK Rap Scene2020-02-14T00:00:00+00:002020-02-14T00:00:00+00:00https://yusufsohoye.com/lyric-analysis<p>UK rap music prides itself on lyricism; wordplay, themes, and multitiered rhyme schemes. These components of a rap song are just as important as the beat. There is much emphasis on <strong>what</strong> is being said; it could be an insult, reference to pop culture or a callback to someone in the rap-scene. This focus on words is a big part of grime and the best lyrics can earn an artist a wheel-up (or 3).</p>
<p>As a result, I thought it would be interesting to have a look at the words behind the UK Rap scene. This post wonât contain any code snippets (happy to share if anyone is interested). First we will look at some descriptive statistics relating to the contribution of each artist to the scene, before doing some natural language processing activities.</p>
<p><img src="../assets/images/lyric_proj/whatusayin.gif" alt="whatusayin" /></p>
<h1 id="the-data-set">The Data Set</h1>
<p><a href="https://genius.com">Genius</a> is a go-to for lyrics and understanding the multiple meanings of some lines. They kindly provide an <a href="https://docs.genius.com">API</a> through which to access this wealth of information. Using the API we can pull lyrics from any given artist. I created a list of UK rappers and queried the API, this process took a long time as not to overload the server with requests. I understand there may be some artists missing, so please let me know if youâd like to see anyone else in there! The data used contains all lyrics on LyricGenius related to the selected artists shown in the pie chart below. Contains <strong>4742</strong> songs from <strong>45</strong> artists containing <strong>2,220,363</strong> words.</p>
<div>
<iframe id="igraph" scrolling="no" style="border:none;" seamless="seamless" src="https://plot.ly/~ysohoye1/8.embed" height="525" width="100%"></iframe>
</div>
<p>The interactive chart shows contribution of songs by each rapper to this data set. Immediately we can see how productive Wiley has been, over 100 more songs than Ghetts. Other leading contributors include the old guard of Giggs, Kano and the once new kid on the block: Chip. M.I.A. is another veteran of the scene and contributes a similar amount to Skepta, Dizzee Rascal and JME. Bugzy Malone and Little Simz have the biggest contribution of the newer rap artists. By no means is this the definitive list of UK Rap contributions, this list is obtained from lyric genius and although it does a good job of posting freestyles and mixtapes - there will be some lyrics not posted.</p>
<p><img src="../assets/images/lyric_proj/headiewalk.gif" alt="headiewalk" /></p>
<h1 id="lyrics-for-lyrics">Lyrics for Lyrics</h1>
<p>Since song contributions looks more like a timeline of the rap scene, maybe a look at the words within the songs may help. The chart below looks at <strong>unique</strong> words; showing the average number of <strong>unique</strong> words per song on the y axis and the average number of words per song on the x. Moving up towards the top of the chart shows more unique words used in a song. Whereas moving rightward shows there are more words in a song. Size of the bubbles indicates the number of songs, this provides a good indication of sample size e.g. Mike Skinners solo effort only contains 1 song whereas The Streets have 119.</p>
<div>
<iframe id="igraph" scrolling="no" style="border:none;" seamless="seamless" src="https://plot.ly/~ysohoye1/11.embed" height="525" width="100%"></iframe>
</div>
<p>The trend is expected: as you say more words in a song you are bound to use more different words, therefore move to the top right of the graph. Two artists on the top right (Mic Righteous and <a href="https://www.youtube.com/watch?v=XFko_Xf-H30">Dave</a> ) are packing a lot of different words into their songs. This could be used as a measure of lyricism, they are 2 artists certainly knows for their lyrics. Not too far behind them are a selection of known wordsmiths: Cadet, Bugzy Malone, P Money, Lowkey, and Akala. Towards the bottom left of the chart we have the less wordy rappers, MIA and MIST have 126 and 142 unique words per song on average.</p>
<h1 id="where-do-you-know-me-from">Where do you know me from?</h1>
<p>Representing your city or area is an element of rap culture. Especially as the scene expands further out of London; area codes make good ad-libs. Geo-encoding is the method of extracting place names out of text. Using all lyrics in the data set, place names have been extracted. London is by far the most talked about place in the grime scene. In fairness, it has had a head start advantage as in the early days a lot of the scene was based in London therefore lotâs of rappers were talking about London, so much so that even East London makes the top 5. There is also references to Meridian Estate in Tottenham, where a lot of the original grime MCs were from. <em>Nice</em> is picked up a lot in the lyrics, but I donât think artists were referring to the area in France. A good example of the shortfalls of working with language and textual data, and why context is important.</p>
<div>
<iframe id="igraph" scrolling="no" style="border:none;" seamless="seamless" src="https://plot.ly/~ysohoye1/32.embed" height="525" width="100%"></iframe>
</div>
<h1 id="what-you-saying">What you saying?</h1>
<p>A large part of working with language dat is the cleaning of it; data must be cleaned, removing stop words and making sure all words are lower case. In this particular instance, it also meant censoring expletives, of which there were many different kinds.After this we can produce a word cloud, this is an image showing the most popular words in UK Rap lyrics, the size indicates the frequency of that word.</p>
<p><img src="../assets/images/lyric_proj/wordcloud.png" alt="wordcloud" /></p>
<p>Initial reaction to the output is that the UK rap scene is very knowledgeable and male dominated. Stormzy does have a song titled <a href="https://www.youtube.com/watch?v=PxbzujA69DA">âKnow Me Fromâ</a> which uses <em>Know</em> multiple times. The word cloud is mostly comprised of rap slang, these words are pretty good for keeping the <em>flow</em> going as well, so no surprised they are commonly used by all rappers.</p>
<p>I hope you enjoyed a different view of the UK Rap scene. Using the Genius API to create aggregate statistics of the scene showed some the dominance old rappers have in terms of output. A look into the uniqueness of words used by each artist also hints at the lyrics heavy weights. This type of analysis can be applied to other music genres and locations such as hip-hopâŚ</p>
<p>Thanks for reading!</p>
<p><img src="../assets/images/lyric_proj/sayit.gif" alt="sayit" /></p>
<h1 id="bonus-topic-modelling">Bonus: Topic Modelling</h1>
<p>Whilst wordclouds provide a nice visual representation of frequency, they are often plagued with stop words and it is difficult to ascertain meaning forth result. Throughout the article we have been cleaning the textual data, to such an extent we can now embark on topic modelling.</p>
<p>Topic modelling is an unsupervised machine learning technique which seeks to find a group of words (topic) from a series of documents (songs). In this case, pyLDAvis is utilised to perform the topic grouping and create the visualisation. This library employs the Latent Dirichlet Allocation (LDA) algorithm, at a high level the algorithm examines how words (and phrases) <strong>co- occur</strong>. If words that appear often in close proximity are assumed to represent a topic. LDA is a Bayesian approach, and uses Dirichlet priors. It treats documents (songs) as probability distributions over topics and topics as probability distributions over words. I think its a really cool approach to topic modelling and widely used as it generalises well, you can find a more in-depth explanation <a href="https://towardsdatascience.com/light-on-math-machine-learning-intuitive-guide-to-latent-dirichlet-allocation-437c81220158">here</a>.</p>
<p>The visualisation below is the output of the LDA - the circles represent topics, the words on the right are the words in that topic. Now some human intuition is needed to interpret the topic. Topic 10 provides an upbeat subject - shake, sauce, jest, rascal, and jump indicate the dancing side of UK rap, these may be the topics seen in the club tunes. Not all songs are for the club, Topic 1 is quite a positive one, about life, feeling, love, needs and people. It seems that the UK Rap scene has a sensitive side. As Kano said <a href="https://www.youtube.com/watch?v=LMFh-RVw92I">âThis <em>ainât for the club</em>, itâs for the mandem on the curbâ</a>. Have a click around the model and see what topics you can find!</p>
<div>
<link rel="stylesheet" type="text/css" href="https://cdn.rawgit.com/bmabey/pyLDAvis/files/ldavis.v1.0.0.css" />
<div id="ldavis_el7599850548684324807551071"></div>
<script type="text/javascript">
var ldavis_el7599850548684324807551071_data = {"mdsDat": {"x": [0.07589685842916692, 0.09829367575678247, 0.09224107589015149, 0.08631212251752882, 0.07587799215682584, 0.08989613496072998, -0.06712856992121807, 0.014153356872035465, -0.034158463057730085, -0.4313841836042726], "y": [0.05604639219403361, -0.03202729143139972, -0.017779227251195268, -0.05142229515533745, -0.027316366539484993, -0.04097387200196734, 0.31881229224229973, -0.014394601685275269, -0.12596550751168398, -0.06497952285998933], "topics": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "cluster": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], "Freq": [33.599002838134766, 16.051082611083984, 12.56255054473877, 11.80040454864502, 8.599226951599121, 8.109245300292969, 2.874864339828491, 2.634490728378296, 2.5550026893615723, 1.214128851890564]}, "tinfo": {"Category": ["Default", "Default", "Default", "Default", "Default", "Default", "Default", "Default", "Default", "Default", "Default", "Default", "Default", "Default", "Default", "Default", "Default", "Default", "Default", "Default", "Default", "Default", "Default", "Default", "Default", "Default", "Default", "Default", "Default", "Default", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic1", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic2", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic3", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic4", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic5", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic6", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic7", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic8", "Topic9", "Topic9", "Topic9", "Topic9", "Topic9", "Topic9", "Topic9", "Topic9", "Topic9", "Topic9", "Topic9", "Topic9", "Topic9", "Topic9", "Topic9", "Topic9", "Topic9", "Topic9", "Topic9", "Topic9", "Topic9", "Topic9", "Topic9", "Topic9", "Topic9", "Topic9", "Topic9", "Topic9", "Topic9", "Topic9", "Topic9", "Topic9", "Topic9", "Topic9", "Topic9", "Topic9", "Topic9", "Topic9", "Topic9", "Topic9", "Topic9", "Topic9", "Topic9", "Topic9", "Topic9", "Topic9", "Topic9", "Topic9", "Topic9", "Topic9", "Topic9", "Topic9", "Topic9", "Topic9", "Topic9", "Topic9", "Topic9", "Topic9", "Topic9", "Topic9", "Topic9", "Topic9", "Topic9", "Topic9", "Topic9", "Topic9", "Topic10", "Topic10", "Topic10", "Topic10", "Topic10", "Topic10", "Topic10", "Topic10", "Topic10", "Topic10", "Topic10", "Topic10", "Topic10", "Topic10", "Topic10", "Topic10", "Topic10", "Topic10", "Topic10", "Topic10", "Topic10", "Topic10", "Topic10", "Topic10", "Topic10", "Topic10", "Topic10", "Topic10", "Topic10", "Topic10", "Topic10", "Topic10", "Topic10", "Topic10", "Topic10", "Topic10", "Topic10", "Topic10", "Topic10", "Topic10", "Topic10", "Topic10", "Topic10", "Topic10", "Topic10", "Topic10", "Topic10", "Topic10", "Topic10", "Topic10", "Topic10", "Topic10", "Topic10"], "Freq": [4210.0, 2204.0, 4062.0, 4438.0, 2419.0, 2820.0, 1294.0, 1074.0, 3594.0, 1921.0, 1122.0, 3262.0, 3659.0, 5065.0, 1567.0, 932.0, 1533.0, 768.0, 1313.0, 658.0, 1728.0, 755.0, 1027.0, 1642.0, 2553.0, 532.0, 993.0, 2463.0, 789.0, 1646.0, 91.0080795288086, 84.27591705322266, 77.74119567871094, 69.49101257324219, 68.53626251220703, 54.13055419921875, 53.76803207397461, 53.47947311401367, 52.264888763427734, 51.31156921386719, 48.573219299316406, 48.384910583496094, 47.54595184326172, 46.12040710449219, 45.076725006103516, 44.79667282104492, 44.29998779296875, 44.79159164428711, 41.567867279052734, 41.12857437133789, 41.05646896362305, 40.85089111328125, 220.9418182373047, 38.71682357788086, 39.66270065307617, 38.2559814453125, 37.633338928222656, 37.553592681884766, 36.97992706298828, 36.90467071533203, 92.01628875732422, 104.74335479736328, 63.87541961669922, 90.49007415771484, 67.74877166748047, 522.7500610351562, 244.2697296142578, 143.13905334472656, 355.26800537109375, 73.12342071533203, 72.47102355957031, 175.472412109375, 143.2545623779297, 1084.3646240234375, 628.969482421875, 95.51133728027344, 1158.7344970703125, 691.2843017578125, 490.9951477050781, 747.8145751953125, 775.2416381835938, 732.837646484375, 412.4951171875, 1870.0594482421875, 291.0818786621094, 117.39276885986328, 2825.775146484375, 420.0763854980469, 768.552001953125, 300.73809814453125, 1338.16064453125, 375.0859069824219, 368.6392822265625, 271.5888977050781, 655.6063232421875, 1471.5145263671875, 488.3576965332031, 1064.4395751953125, 384.4496765136719, 1179.283203125, 870.8604125976562, 1266.73583984375, 1499.8643798828125, 977.9688720703125, 1156.0296630859375, 697.2655639648438, 1736.934814453125, 1551.979736328125, 1749.4749755859375, 1665.3704833984375, 770.4063110351562, 1446.681884765625, 1001.2109985351562, 996.0648803710938, 1299.9449462890625, 1103.7166748046875, 833.1779174804688, 1378.734619140625, 1182.988525390625, 1204.6903076171875, 1063.958251953125, 992.4310302734375, 863.2662353515625, 936.5215454101562, 869.4893188476562, 328.6652526855469, 403.1082458496094, 109.92826080322266, 84.59113311767578, 63.601871490478516, 147.0009765625, 59.482723236083984, 58.6533203125, 94.23670196533203, 62.04596710205078, 56.060604095458984, 54.44778823852539, 53.38206481933594, 467.8266906738281, 50.72282028198242, 50.47262954711914, 46.70657730102539, 43.05110549926758, 42.212406158447266, 41.219425201416016, 39.23756408691406, 137.7742919921875, 37.34607696533203, 35.69472122192383, 35.261146545410156, 62.01832580566406, 32.702327728271484, 709.17529296875, 32.23481369018555, 32.22364807128906, 244.67953491210938, 115.58683776855469, 211.3773651123047, 207.1282958984375, 66.56005096435547, 61.195098876953125, 441.86065673828125, 851.8279418945312, 528.142578125, 561.099853515625, 826.9197998046875, 1381.6025390625, 172.84271240234375, 537.1524658203125, 502.8155822753906, 233.6712188720703, 149.7981414794922, 858.112060546875, 417.1198425292969, 409.8568420410156, 172.67715454101562, 252.46719360351562, 392.60113525390625, 1546.2872314453125, 1302.6654052734375, 840.7456665039062, 385.38702392578125, 664.9578247070312, 294.0137023925781, 1566.4049072265625, 1160.6473388671875, 404.3802490234375, 472.4931945800781, 392.77716064453125, 568.8995971679688, 613.6573486328125, 719.393310546875, 658.7752685546875, 662.9434204101562, 885.7845458984375, 621.7700805664062, 631.9576416015625, 791.353515625, 528.0618286132812, 545.4883422851562, 507.3709411621094, 591.0593872070312, 562.9071655273438, 565.5352172851562, 509.26885986328125, 336.5907287597656, 166.49278259277344, 79.8294677734375, 71.95098876953125, 51.20991897583008, 44.5350227355957, 42.04634475708008, 40.032047271728516, 38.02640151977539, 37.5452766418457, 33.534671783447266, 33.08602523803711, 32.97243118286133, 32.747581481933594, 32.27304458618164, 31.05164337158203, 28.56014060974121, 26.089916229248047, 24.582965850830078, 24.39576530456543, 23.45093536376953, 24.084522247314453, 54.191986083984375, 22.01744842529297, 17.90260887145996, 17.70349884033203, 59.16054153442383, 16.795703887939453, 16.53832244873047, 16.339338302612305, 56.162662506103516, 46.438961029052734, 28.999143600463867, 1363.3822021484375, 143.80511474609375, 161.37777709960938, 73.71432495117188, 2978.60205078125, 112.9518814086914, 3012.0869140625, 90.76060485839844, 138.58934020996094, 154.8214569091797, 233.7877655029297, 90.93148803710938, 243.19525146484375, 164.92433166503906, 148.08055114746094, 212.3314208984375, 409.4605407714844, 110.925048828125, 2260.268310546875, 241.50006103515625, 197.48983764648438, 834.0927734375, 431.3441467285156, 192.0849609375, 280.3792419433594, 205.15609741210938, 147.77841186523438, 1056.1048583984375, 647.9683837890625, 507.34771728515625, 703.0901489257812, 769.1724853515625, 453.687255859375, 750.5567626953125, 745.91162109375, 513.0115966796875, 726.0538940429688, 755.650146484375, 371.6265563964844, 400.8896179199219, 535.5726928710938, 636.889404296875, 628.9656372070312, 465.3947448730469, 531.2536010742188, 495.312744140625, 466.0077209472656, 499.80023193359375, 400.0921325683594, 365.9117736816406, 84.87684631347656, 52.462059020996094, 132.9063262939453, 46.471107482910156, 46.30532455444336, 41.27992248535156, 38.24777603149414, 37.49045181274414, 36.82640075683594, 35.877376556396484, 60.731849670410156, 73.49678039550781, 29.171157836914062, 28.944887161254883, 178.12489318847656, 27.889572143554688, 27.323888778686523, 29.950300216674805, 26.61724281311035, 230.80426025390625, 25.86153793334961, 24.338577270507812, 23.70954132080078, 23.02964973449707, 23.41914939880371, 22.71405601501465, 21.543123245239258, 21.222919464111328, 21.22920036315918, 20.130809783935547, 143.03952026367188, 394.1908874511719, 64.48173522949219, 130.3213348388672, 50.42365646362305, 73.57691955566406, 102.06080627441406, 271.8868713378906, 39.35490036010742, 60.26753234863281, 148.79208374023438, 76.32455444335938, 92.98448944091797, 225.12376403808594, 167.12164306640625, 217.48373413085938, 370.1308898925781, 426.476806640625, 125.97154235839844, 354.624755859375, 1645.83154296875, 289.8437805175781, 855.7096557617188, 129.0661163330078, 294.9922790527344, 588.4771118164062, 690.7216186523438, 634.9782104492188, 483.55755615234375, 284.4532775878906, 332.1856384277344, 501.34893798828125, 494.748291015625, 368.3940734863281, 324.14508056640625, 267.29254150390625, 281.66131591796875, 558.421875, 296.0658874511719, 596.065673828125, 324.19696044921875, 418.5772399902344, 486.6177062988281, 401.4908752441406, 539.2404174804688, 468.5318298339844, 437.19281005859375, 443.8732604980469, 421.8556823730469, 363.5383605957031, 406.94805908203125, 355.3771057128906, 316.8123474121094, 114.16988372802734, 113.77223205566406, 86.73033142089844, 88.20008850097656, 78.23892211914062, 56.584556579589844, 57.34271240234375, 53.23455810546875, 43.52426528930664, 85.83740234375, 39.64058303833008, 34.64766311645508, 30.250886917114258, 28.989582061767578, 28.327360153198242, 57.54933547973633, 24.864837646484375, 23.174501419067383, 22.740703582763672, 22.73044204711914, 22.12797737121582, 21.63113784790039, 21.508031845092773, 21.494796752929688, 44.97459030151367, 20.206951141357422, 18.827646255493164, 18.803972244262695, 17.319435119628906, 17.180063247680664, 35.330265045166016, 185.6005401611328, 106.96614837646484, 47.52198791503906, 60.08995819091797, 39.849361419677734, 72.1292953491211, 65.01904296875, 64.02095031738281, 50.954437255859375, 325.1768798828125, 88.24272918701172, 246.88795471191406, 103.51284790039062, 156.71998596191406, 284.4604187011719, 1207.6304931640625, 337.1367492675781, 213.861083984375, 713.9436645507812, 158.21026611328125, 191.3572540283203, 331.40753173828125, 440.2074279785156, 818.116455078125, 490.01068115234375, 467.1004943847656, 269.5621643066406, 150.4171905517578, 387.4833068847656, 115.30389404296875, 343.9571228027344, 326.1668395996094, 523.9844970703125, 298.1543273925781, 365.239501953125, 399.7528991699219, 362.0754089355469, 479.1885070800781, 295.3678283691406, 375.7773742675781, 299.4200134277344, 280.9087219238281, 352.6239318847656, 400.78460693359375, 303.052978515625, 278.9751281738281, 241.7699432373047, 79.8096694946289, 77.54519653320312, 39.26837921142578, 34.114097595214844, 32.95481872558594, 31.586898803710938, 30.076772689819336, 29.93831443786621, 30.125484466552734, 25.834999084472656, 25.637332916259766, 24.267942428588867, 23.722318649291992, 23.720693588256836, 20.11723518371582, 18.77818489074707, 18.668787002563477, 18.10054588317871, 17.967487335205078, 18.27385139465332, 17.3939266204834, 17.12653160095215, 16.400087356567383, 16.163808822631836, 16.107627868652344, 16.0087890625, 15.627349853515625, 15.23434829711914, 15.227899551391602, 58.92295455932617, 155.15516662597656, 39.940914154052734, 50.02644348144531, 37.338008880615234, 27.067689895629883, 23.93329620361328, 40.57579040527344, 127.70746612548828, 49.226558685302734, 395.5389404296875, 424.2060241699219, 286.04742431640625, 201.8634490966797, 111.86651611328125, 317.1844787597656, 174.77806091308594, 521.83056640625, 254.97067260742188, 315.37921142578125, 371.5802307128906, 865.0535278320312, 179.69259643554688, 280.2411193847656, 317.27532958984375, 512.6815185546875, 191.26040649414062, 173.01609802246094, 447.1666564941406, 346.3951416015625, 736.8036499023438, 67.68446350097656, 150.3604736328125, 304.4151916503906, 341.1051025390625, 452.7588195800781, 199.3572235107422, 367.2326354980469, 362.109375, 417.2008361816406, 294.4828796386719, 265.6100769042969, 283.8758239746094, 397.4024658203125, 354.9677734375, 301.8566589355469, 354.3574523925781, 343.49749755859375, 368.3494873046875, 290.88055419921875, 284.7968444824219, 94.87760162353516, 70.5914077758789, 57.640865325927734, 42.94378662109375, 37.44505310058594, 31.692672729492188, 58.859981536865234, 25.27665901184082, 22.6602840423584, 20.35890769958496, 44.549354553222656, 19.368791580200195, 18.884002685546875, 18.196971893310547, 16.38947105407715, 16.341243743896484, 16.105405807495117, 13.700833320617676, 13.115447044372559, 12.836708068847656, 12.817259788513184, 12.794503211975098, 11.440138816833496, 11.38948917388916, 17.37885093688965, 9.94392204284668, 9.94392204284668, 9.938804626464844, 10.731995582580566, 9.701171875, 29.646791458129883, 17.969758987426758, 26.00271224975586, 33.18073654174805, 43.91619873046875, 495.8332214355469, 85.12259674072266, 92.87043762207031, 33.19559097290039, 22.10289192199707, 24.800256729125977, 51.581478118896484, 82.8670425415039, 520.8944702148438, 132.24148559570312, 163.30538940429688, 26.696929931640625, 139.85897827148438, 36.539241790771484, 40.93495178222656, 340.8305358886719, 69.65290832519531, 88.0888900756836, 200.53726196289062, 193.98573303222656, 191.62722778320312, 122.37511444091797, 223.66323852539062, 266.9594421386719, 87.81934356689453, 149.98741149902344, 64.2753677368164, 65.08463287353516, 96.33395385742188, 85.32316589355469, 100.5461654663086, 101.00585174560547, 71.8697509765625, 72.1920394897461, 94.62232208251953, 84.84309387207031, 78.47795104980469, 73.46781921386719, 72.08185577392578, 200.409912109375, 75.962158203125, 69.60072326660156, 55.87800979614258, 43.91184997558594, 32.32906723022461, 220.0004425048828, 21.484390258789062, 19.466899871826172, 30.405223846435547, 36.74312973022461, 14.381239891052246, 101.3296890258789, 22.99698257446289, 44.038394927978516, 11.672276496887207, 35.44075393676758, 11.53146743774414, 10.895217895507812, 10.244318008422852, 10.229849815368652, 58.23191833496094, 9.387250900268555, 9.313993453979492, 9.215163230895996, 9.01640510559082, 8.875181198120117, 8.766475677490234, 8.44979476928711, 8.150910377502441, 34.1772575378418, 19.347694396972656, 41.13288879394531, 429.17413330078125, 48.89799118041992, 109.17534637451172, 194.95579528808594, 44.37587356567383, 21.167186737060547, 136.4982452392578, 43.216617584228516, 115.74239349365234, 73.8562240600586, 408.94085693359375, 473.9420471191406, 62.79292678833008, 546.12109375, 89.18047332763672, 130.31105041503906, 74.87337493896484, 55.23026657104492, 87.13272094726562, 109.05642700195312, 243.76023864746094, 149.92227172851562, 75.22237396240234, 170.30325317382812, 414.4483947753906, 237.40716552734375, 270.85943603515625, 105.13988494873047, 125.40834045410156, 139.79737854003906, 129.30221557617188, 103.58465576171875, 142.24183654785156, 154.99481201171875, 153.549560546875, 115.09110260009766, 124.65425872802734, 120.30137634277344, 103.74652862548828, 170.76400756835938, 54.24838638305664, 49.04384231567383, 46.750877380371094, 104.48942565917969, 36.153202056884766, 24.295852661132812, 23.19443130493164, 18.875232696533203, 130.52020263671875, 16.736766815185547, 15.359848022460938, 14.647961616516113, 14.046056747436523, 13.431180953979492, 12.991289138793945, 12.572376251220703, 11.524713516235352, 11.349754333496094, 68.05168151855469, 11.312373161315918, 11.067593574523926, 11.006160736083984, 43.89358901977539, 10.758127212524414, 10.075735092163086, 9.150788307189941, 9.027168273925781, 8.951484680175781, 8.362244606018066, 34.419612884521484, 235.28289794921875, 193.65811157226562, 23.471492767333984, 84.3501205444336, 1279.7276611328125, 36.25807571411133, 83.12455749511719, 580.1734008789062, 31.964929580688477, 31.981592178344727, 1571.0850830078125, 70.71656799316406, 44.93966293334961, 125.99505615234375, 291.2667236328125, 160.2088165283203, 81.6899642944336, 113.52982330322266, 76.25147247314453, 55.42137908935547, 136.92562866210938, 359.25384521484375, 187.72354125976562, 209.75828552246094, 287.15472412109375, 182.15200805664062, 175.86578369140625, 134.1341552734375, 72.09691619873047, 112.48625183105469, 90.95527648925781, 108.06450653076172, 77.39663696289062, 78.1099624633789, 73.25076293945312, 89.36723327636719, 83.12609100341797, 58.02334213256836, 55.1738166809082, 53.27421951293945, 47.5753059387207, 46.625404357910156, 45.675697326660156, 43.7759895324707, 42.82622528076172, 40.55457305908203, 37.1273307800293, 37.12700653076172, 36.177452087402344, 34.277915954589844, 33.32796859741211, 32.37820816040039, 31.428363800048828, 31.428415298461914, 30.478574752807617, 29.528717041015625, 28.578996658325195, 28.578920364379883, 28.578907012939453, 28.57855796813965, 27.62913703918457, 27.629066467285156, 26.75531005859375, 26.67931365966797, 26.67926597595215, 26.67927360534668, 26.67925262451172, 89.5662841796875, 132.2562713623047, 168.0479736328125, 46.486751556396484, 147.835693359375, 150.98101806640625, 106.45478057861328, 120.45343780517578, 61.837459564208984, 119.15251159667969, 43.560794830322266, 61.408966064453125, 68.91631317138672, 55.89928436279297, 108.7090835571289, 73.89704132080078, 45.534278869628906, 53.13337707519531, 46.17569351196289, 51.537078857421875, 63.094181060791016], "Term": ["boy", "bad", "girl", "love", "give", "big", "dem", "fly", "gon", "people", "free", "need", "money", "let", "baby", "bang", "roll", "gyal", "well", "power", "bar", "hey", "die", "black", "feel", "ooh", "fire", "real", "body", "going", "strange", "strength", "refuse", "breddah", "akala", "simz", "lifetime", "powerful", "clipped", "hoodlum", "community", "poison", "rescue", "happiness", "justice", "eventually", "believing", "service", "ashamed", "mentally", "jumpman", "inspiration", "person", "stormy", "needle", "crawl", "pete", "hatred", "devs", "crispy", "within", "lived", "remain", "parent", "legacy", "soul", "felt", "memory", "tear", "decision", "awake", "breathe", "become", "heart", "pain", "filly", "world", "lost", "ha", "dream", "change", "trying", "sometimes", "feel", "death", "given", "life", "reason", "living", "child", "would", "mother", "pray", "read", "everything", "thing", "hope", "mind", "son", "ever", "find", "every", "could", "nothing", "people", "word", "day", "even", "think", "way", "thought", "need", "made", "really", "look", "keep", "much", "let", "tell", "love", "try", "right", "little", "said", "give", "jme", "skepta", "mout", "johnny", "hut", "par", "soundboy", "crackin", "murk", "eskimo", "bbk", "meridian", "bucky", "mc", "muh", "slack", "frisco", "poomplex", "murking", "skengman", "clart", "maman", "onstage", "headtop", "hench", "badboy", "gipset", "blud", "wobbling", "arff", "badman", "garms", "clash", "yuh", "blam", "hardy", "serious", "grime", "wiley", "lyric", "mic", "bar", "spitter", "tune", "spit", "rudeboy", "innit", "flow", "shut", "crew", "bredrin", "rave", "hype", "ting", "better", "beat", "bare", "fam", "dis", "boy", "big", "bus", "sound", "tight", "shot", "many", "two", "hear", "talk", "look", "road", "game", "think", "guy", "round", "care", "try", "said", "gon", "face", "lang", "galang", "trappin", "skadoosh", "gala", "payroll", "styling", "neva", "doh", "everythin", "hustla", "claimin", "blowin", "acita", "therapy", "mornin", "dunya", "boyz", "frisky", "unstoppable", "standby", "tempah", "lotta", "stalling", "idi", "dancin", "ridin", "muthaf", "emoji", "courvoisier", "callin", "shes", "chanel", "baby", "somethin", "feelin", "bon", "girl", "wha", "love", "purple", "dancing", "goin", "lady", "honey", "woo", "babe", "lil", "sex", "crazy", "honestly", "let", "gettin", "lookin", "night", "hey", "pretty", "calling", "huh", "blaze", "way", "call", "away", "keep", "right", "friend", "need", "gon", "good", "money", "tell", "high", "eye", "give", "try", "life", "could", "look", "think", "said", "boy", "thing", "put", "zoom", "dum", "ner", "vroom", "vossi", "postman", "cowboy", "mayday", "kodak", "sto", "motto", "ching", "erect", "interrupt", "cadet", "underrated", "sunglass", "aps", "nitties", "gunshot", "cro", "yak", "outchea", "strally", "gimmie", "merky", "heatwave", "wap", "paw", "crepe", "bruddas", "boom", "pat", "pagan", "spinner", "active", "certified", "hustle", "kray", "ugh", "benz", "pap", "nigger", "brudda", "click", "motherf", "dun", "mandem", "setting", "cash", "money", "ayy", "run", "lit", "chick", "came", "ing", "getting", "phone", "buy", "white", "hit", "black", "talking", "rap", "bag", "running", "big", "bro", "try", "bring", "done", "ting", "talk", "let", "look", "said", "need", "put", "new", "tell", "girl", "told", "bugzy", "malone", "mosh", "fester", "wot", "luv", "que", "playtime", "checkmate", "dippin", "fireman", "bandit", "dylan", "uummm", "happenin", "hump", "ussy", "brotherhood", "eskibeat", "outsider", "experienced", "som", "jag", "concentrate", "ogz", "blap", "oopsy", "sidetracked", "lukey", "honda", "alice", "bop", "eski", "marijua", "wickedest", "facial", "essie", "aha", "connected", "med", "eskiboy", "pit", "waste", "tunnel", "flying", "level", "gon", "king", "hole", "around", "brand", "rolling", "walk", "hold", "tell", "game", "new", "ready", "zone", "black", "anywhere", "top", "watch", "right", "nobody", "road", "gotta", "people", "money", "play", "better", "stop", "everybody", "ting", "let", "keep", "put", "roll", "ling", "opps", "headie", "kickback", "brrr", "upside", "swisher", "leanin", "pew", "jailhouse", "jaykae", "receiver", "ofb", "niz", "scored", "blacklisted", "confirmed", "uptown", "kalas", "mashing", "bong", "insurance", "dammit", "promising", "piping", "bailiff", "slowthai", "boasy", "iconic", "opp", "bizzle", "stunting", "whoo", "junk", "waps", "blad", "caine", "dude", "trill", "block", "gang", "soon", "dont", "wit", "smoke", "smoking", "coming", "trap", "fed", "bro", "real", "lock", "weed", "hood", "turn", "morning", "cah", "mad", "bout", "try", "sport", "jail", "high", "work", "gotta", "food", "going", "told", "even", "play", "free", "street", "money", "put", "good", "day", "said", "tell", "really", "life", "pstine", "olly", "widda", "cola", "est", "dans", "trump", "kylea", "apartheid", "det", "educated", "neo", "afghanistan", "israel", "symphony", "hon", "congo", "miyagi", "badly", "odyssey", "steez", "cultural", "oppression", "grenfell", "oppressor", "vicki", "leekx", "ibn", "colonial", "mea", "disco", "ooooh", "boof", "coca", "gaza", "power", "penny", "tion", "mcdold", "immigrant", "endz", "juju", "yesterday", "free", "freedom", "ghetto", "tha", "bull", "timer", "blinded", "roll", "upon", "history", "wrong", "dance", "war", "pick", "dem", "people", "rule", "bit", "pump", "regret", "men", "sing", "rock", "air", "country", "scared", "even", "talk", "black", "kill", "call", "nuh", "connection", "mmh", "lukatar", "weh", "lub", "pon", "morn", "brewin", "tah", "bankroll", "barn", "rub", "auhauhauh", "zombie", "mall", "giddy", "quint", "thomas", "homemade", "glenn", "pah", "limbaugh", "dresser", "strat", "shiv", "lairy", "begged", "winin", "macho", "deh", "bup", "seh", "ooh", "skrrt", "whine", "dub", "ole", "mingle", "pow", "mek", "brap", "skrr", "gyal", "bang", "sticky", "dem", "boring", "liar", "hmm", "pardon", "pie", "likkle", "body", "tonight", "internet", "somebody", "give", "fire", "need", "someone", "ride", "hand", "lie", "damn", "really", "gon", "look", "light", "feel", "put", "every", "ding", "bruddaz", "banga", "bamboo", "ohh", "celebration", "hubba", "merry", "wavelength", "standard", "suki", "badderman", "wooo", "stinkin", "dong", "illy", "und", "barnet", "spaceboy", "stinking", "mit", "revvin", "sck", "puni", "redder", "madon", "autumn", "grape", "pamera", "heavytrackerz", "bluku", "bye", "whoa", "caller", "yep", "bad", "bassline", "christmas", "fly", "deja", "choong", "boy", "skank", "grimey", "bass", "hey", "dirty", "base", "woah", "jungle", "breast", "fast", "big", "die", "well", "girl", "black", "live", "hand", "banger", "gun", "understand", "young", "blow", "best", "bang", "tego", "jest", "teraz", "dzisiaj", "czas", "nic", "przez", "siebie", "jeszcze", "tych", "pod", "dobry", "znowu", "przed", "szukam", "wiesz", "moje", "chce", "masz", "ziomal", "rok", "nocy", "chcesz", "dobrze", "ciebie", "twarz", "swoje", "juicy", "ludzie", "obok", "typie", "jej", "dada", "sauce", "bow", "brr", "shake", "dat", "normal", "doin", "thrown", "gangster", "jus", "rascal", "bin", "spare", "jump", "load", "rag", "wet", "drown", "spirit", "going"], "Total": [4210.0, 2204.0, 4062.0, 4438.0, 2419.0, 2820.0, 1294.0, 1074.0, 3594.0, 1921.0, 1122.0, 3262.0, 3659.0, 5065.0, 1567.0, 932.0, 1533.0, 768.0, 1313.0, 658.0, 1728.0, 755.0, 1027.0, 1642.0, 2553.0, 532.0, 993.0, 2463.0, 789.0, 1646.0, 91.88372802734375, 85.14289855957031, 78.60818481445312, 70.35803985595703, 69.40327453613281, 54.99750518798828, 54.63504409790039, 54.350303649902344, 53.13193893432617, 52.1786994934082, 49.440277099609375, 49.25473403930664, 48.41300964355469, 46.99601745605469, 45.94371032714844, 45.66362762451172, 45.166961669921875, 45.70985794067383, 42.43480682373047, 41.995601654052734, 41.924110412597656, 41.71786880493164, 225.8032684326172, 39.58399963378906, 40.55608367919922, 39.12297439575195, 38.50027084350586, 38.420562744140625, 37.8469123840332, 37.77165985107422, 94.74490356445312, 108.14254760742188, 65.63677978515625, 93.68004608154297, 69.87854766845703, 572.0270385742188, 262.4427185058594, 151.64944458007812, 390.6174621582031, 76.18505096435547, 75.47789001464844, 189.99673461914062, 154.54672241210938, 1302.6195068359375, 747.25439453125, 101.28274536132812, 1446.66552734375, 836.8381958007812, 585.9766845703125, 922.0293579101562, 969.8324584960938, 915.02880859375, 491.7732238769531, 2553.455078125, 340.39703369140625, 126.89180755615234, 4121.42724609375, 513.5992431640625, 998.7238159179688, 356.9521484375, 1876.402587890625, 462.0362243652344, 454.73651123046875, 323.21893310546875, 882.6905517578125, 2237.20458984375, 645.7642211914062, 1623.690185546875, 491.42041015625, 1864.8636474609375, 1300.94677734375, 2045.6722412109375, 2549.633544921875, 1539.12109375, 1921.073974609375, 1025.1810302734375, 3317.1865234375, 2997.521240234375, 3710.00537109375, 3705.392333984375, 1252.440185546875, 3262.2548828125, 1875.5010986328125, 2032.70166015625, 3721.718505859375, 2739.307373046875, 1514.55224609375, 5065.3623046875, 4053.51904296875, 4438.4169921875, 3863.74169921875, 3177.6630859375, 1821.247802734375, 3089.728515625, 2419.716064453125, 329.53558349609375, 404.85101318359375, 110.79957580566406, 85.46168518066406, 64.47232818603516, 149.09559631347656, 60.353084564208984, 59.523719787597656, 95.6356430053711, 62.98392868041992, 56.931522369384766, 55.318153381347656, 54.25239944458008, 475.52374267578125, 51.59311294555664, 51.34321212768555, 47.57719039916992, 43.9213981628418, 43.08284378051758, 42.08976364135742, 40.107940673828125, 140.91009521484375, 38.216426849365234, 36.565101623535156, 36.138919830322266, 63.60028076171875, 33.57268524169922, 728.2644653320312, 33.10516357421875, 33.09416961669922, 251.82252502441406, 119.65457916259766, 220.3302459716797, 218.22216796875, 68.7341537475586, 63.142967224121094, 479.5010681152344, 966.7835083007812, 601.5043334960938, 649.9714965820312, 978.4183349609375, 1728.762451171875, 190.489990234375, 675.6727905273438, 629.017822265625, 275.03387451171875, 171.3537139892578, 1231.82470703125, 542.9717407226562, 534.4163208007812, 205.90408325195312, 320.30194091796875, 535.8131103515625, 2766.073486328125, 2613.195068359375, 1521.4168701171875, 569.276611328125, 1145.7994384765625, 405.5755615234375, 4210.17041015625, 2820.06396484375, 636.005126953125, 808.3409423828125, 641.7020874023438, 1204.608154296875, 1371.427490234375, 1847.318603515625, 1667.95166015625, 1919.6339111328125, 3721.718505859375, 1802.41796875, 1923.5335693359375, 3710.00537109375, 1224.222900390625, 1491.7269287109375, 1217.75146484375, 3863.74169921875, 3089.728515625, 3594.26025390625, 1833.6546630859375, 337.4621887207031, 167.36427307128906, 80.70101165771484, 72.82252502441406, 52.08140182495117, 45.40660858154297, 42.91788864135742, 40.903770446777344, 38.897972106933594, 38.416831970214844, 34.406558990478516, 33.957862854003906, 33.84402084350586, 33.619083404541016, 33.14535140991211, 31.92320442199707, 29.431673049926758, 26.961454391479492, 25.45457649230957, 25.267356872558594, 24.322528839111328, 24.993396759033203, 56.26744079589844, 22.889102935791016, 18.774219512939453, 18.59759521484375, 62.180171966552734, 17.667367935180664, 17.41008758544922, 17.21096420288086, 59.69654083251953, 49.3974723815918, 30.782020568847656, 1567.1591796875, 161.4641571044922, 183.1571807861328, 81.51042175292969, 4062.748046875, 128.7713165283203, 4438.4169921875, 102.89762878417969, 168.21548461914062, 191.06390380859375, 310.3913879394531, 106.90330505371094, 330.1376647949219, 215.72386169433594, 190.57887268066406, 289.86346435546875, 631.3931884765625, 136.6656036376953, 5065.3623046875, 351.8903503417969, 278.782470703125, 1677.6041259765625, 755.7960815429688, 287.363525390625, 478.9377136230469, 319.7188720703125, 214.2471466064453, 3705.392333984375, 1956.56787109375, 1357.4775390625, 2739.307373046875, 3177.6630859375, 1351.4227294921875, 3262.2548828125, 3594.26025390625, 1841.7119140625, 3659.366455078125, 4053.51904296875, 1109.4993896484375, 1321.9359130859375, 2419.716064453125, 3863.74169921875, 4121.42724609375, 2549.633544921875, 3721.718505859375, 3710.00537109375, 3089.728515625, 4210.17041015625, 2237.20458984375, 2855.564208984375, 85.7459716796875, 53.33129119873047, 135.13978576660156, 47.34071350097656, 47.17453384399414, 42.148956298828125, 39.11682891845703, 38.35951614379883, 37.695613861083984, 36.74909973144531, 62.29197311401367, 75.68058776855469, 30.040199279785156, 29.8142032623291, 183.60768127441406, 28.759567260742188, 28.193069458007812, 30.918930053710938, 27.48629379272461, 238.41311645507812, 26.756513595581055, 25.207672119140625, 24.578678131103516, 23.899168014526367, 24.314485549926758, 23.599365234375, 22.412824630737305, 22.092185974121094, 22.115310668945312, 20.999916076660156, 151.90086364746094, 432.1716003417969, 68.57169342041016, 140.68115234375, 53.483009338378906, 79.2647476196289, 111.8802490234375, 311.8134460449219, 41.811092376708984, 65.90152740478516, 179.36056518554688, 86.9058837890625, 109.18026733398438, 293.0709228515625, 213.4003448486328, 290.7408142089844, 552.3267211914062, 657.5299072265625, 159.9686737060547, 555.5068359375, 3659.366455078125, 451.2972412109375, 2156.453369140625, 185.47743225097656, 572.3560180664062, 1542.1937255859375, 1995.3173828125, 1861.74267578125, 1259.6583251953125, 622.5333251953125, 830.6929321289062, 1600.0748291015625, 1642.0045166015625, 1051.36572265625, 877.0261840820312, 639.4945678710938, 719.7169189453125, 2820.06396484375, 794.9044799804688, 3863.74169921875, 1008.092041015625, 1884.8636474609375, 2766.073486328125, 1919.6339111328125, 5065.3623046875, 3721.718505859375, 3089.728515625, 3262.2548828125, 2855.564208984375, 1976.3623046875, 4053.51904296875, 4062.748046875, 1889.0067138671875, 115.04164123535156, 114.64389038085938, 87.60135650634766, 89.16320037841797, 79.10987854003906, 57.45553207397461, 58.26886749267578, 54.105533599853516, 44.39521408081055, 87.61302185058594, 40.51165771484375, 35.519283294677734, 31.124814987182617, 29.860586166381836, 29.2031192779541, 59.50141906738281, 25.73593521118164, 24.04552459716797, 23.611665725708008, 23.60142707824707, 22.998945236206055, 22.50223731994629, 22.379114151000977, 22.366945266723633, 46.87677001953125, 21.07809066772461, 19.698862075805664, 19.67495346069336, 18.19045066833496, 18.051164627075195, 37.148292541503906, 198.65394592285156, 113.89774322509766, 50.541160583496094, 67.67876434326172, 43.554256439208984, 83.65518188476562, 74.7284927368164, 73.89176177978516, 57.63984680175781, 471.1191711425781, 110.58074188232422, 379.38885498046875, 142.34527587890625, 237.78009033203125, 520.965087890625, 3594.26025390625, 701.407470703125, 392.3760070800781, 1967.9150390625, 284.1632385253906, 386.6377868652344, 876.9149780273438, 1492.142578125, 4053.51904296875, 1923.5335693359375, 1976.3623046875, 795.6827392578125, 305.48907470703125, 1642.0045166015625, 197.19776916503906, 1433.2191162109375, 1315.075439453125, 3177.6630859375, 1116.1529541015625, 1802.41796875, 2192.888916015625, 1921.073974609375, 3659.366455078125, 1384.9765625, 2613.195068359375, 1684.6170654296875, 1425.0260009765625, 2766.073486328125, 5065.3623046875, 2739.307373046875, 2855.564208984375, 1533.8360595703125, 80.6771011352539, 78.41262817382812, 40.24531173706055, 34.98149108886719, 33.82242202758789, 32.46588134765625, 30.944429397583008, 30.805692672729492, 31.019338607788086, 26.702550888061523, 26.50495719909668, 25.135412216186523, 24.58967399597168, 24.588115692138672, 21.016862869262695, 19.645652770996094, 19.536190032958984, 18.967966079711914, 18.834896087646484, 19.162025451660156, 18.26179313659668, 17.993932723999023, 17.267681121826172, 17.03131103515625, 16.975120544433594, 16.876962661743164, 16.4950008392334, 16.101755142211914, 16.097055435180664, 62.291934967041016, 169.65748596191406, 42.95415115356445, 54.072330474853516, 40.543495178222656, 29.375490188598633, 25.916269302368164, 46.44031524658203, 164.65087890625, 60.35200881958008, 689.0233764648438, 750.1658325195312, 474.7327575683594, 316.2512512207031, 166.13633728027344, 602.124267578125, 299.76800537109375, 1178.47998046875, 485.0002136230469, 645.5513916015625, 794.9044799804688, 2463.095703125, 322.24761962890625, 604.24658203125, 724.2130737304688, 1604.1129150390625, 405.41253662109375, 359.8490905761719, 1417.9461669921875, 1107.19677734375, 3863.74169921875, 99.15495300292969, 349.9210205078125, 1109.4993896484375, 1350.607177734375, 2192.888916015625, 568.3646240234375, 1646.1241455078125, 1889.0067138671875, 2997.521240234375, 1384.9765625, 1122.802734375, 1349.4661865234375, 3659.366455078125, 2855.564208984375, 1841.7119140625, 3317.1865234375, 3089.728515625, 4053.51904296875, 2032.70166015625, 4121.42724609375, 95.74652862548828, 71.46037292480469, 58.50984573364258, 43.81709671020508, 38.40275573730469, 32.56159973144531, 60.807865142822266, 26.145978927612305, 23.52922821044922, 21.22796630859375, 46.48848342895508, 20.237960815429688, 19.75291633605957, 19.065881729125977, 17.258407592773438, 17.21063804626465, 16.97439956665039, 14.569790840148926, 13.98549747467041, 13.70578384399414, 13.686847686767578, 13.673267364501953, 12.309072494506836, 12.260246276855469, 18.849414825439453, 10.81305980682373, 10.81305980682373, 10.807707786560059, 11.680278778076172, 10.570867538452148, 32.38786697387695, 19.638408660888672, 29.050674438476562, 37.430877685546875, 50.16930389404297, 658.8081665039062, 104.57816314697266, 118.44588470458984, 38.57735824584961, 24.83875274658203, 28.852928161621094, 68.2742691040039, 122.09092712402344, 1122.802734375, 224.83204650878906, 338.1253356933594, 32.568267822265625, 305.31256103515625, 51.90156173706055, 62.012840270996094, 1533.8360595703125, 147.65060424804688, 217.432373046875, 861.9170532226562, 884.20654296875, 906.7252807617188, 430.5502014160156, 1294.3990478515625, 1921.073974609375, 277.4488525390625, 841.99609375, 153.02565002441406, 162.45175170898438, 418.4082336425781, 327.57098388671875, 520.7547607421875, 557.3192138671875, 260.1749572753906, 348.10009765625, 2997.521240234375, 1919.6339111328125, 1642.0045166015625, 943.1227416992188, 1956.56787109375, 201.53981018066406, 76.83833312988281, 70.47515869140625, 56.752445220947266, 44.788455963134766, 33.20400619506836, 226.6138153076172, 22.358964920043945, 20.341344833374023, 32.1600341796875, 38.88618850708008, 15.25570011138916, 108.21675872802734, 24.617576599121094, 47.241058349609375, 12.54704761505127, 38.126747131347656, 12.405904769897461, 11.769808769226074, 11.119302749633789, 11.104294776916504, 63.577518463134766, 10.261693000793457, 10.188822746276855, 10.09023380279541, 9.890928268432617, 9.750038146972656, 9.641042709350586, 9.324379920959473, 9.025551795959473, 38.11233139038086, 21.529550552368164, 47.05772018432617, 532.5169067382812, 57.728023529052734, 135.0323944091797, 262.81573486328125, 53.84333801269531, 24.513566970825195, 190.1542205810547, 55.451351165771484, 174.83847045898438, 104.39898681640625, 768.6363525390625, 932.9474487304688, 86.88304901123047, 1294.3990478515625, 136.63710021972656, 221.4902801513672, 111.47489166259766, 76.00553131103516, 154.072509765625, 219.64027404785156, 789.060302734375, 371.346435546875, 129.15554809570312, 518.830322265625, 2419.716064453125, 993.6021728515625, 3262.2548828125, 505.4156494140625, 897.0108032226562, 1327.1492919921875, 1067.8314208984375, 488.8332824707031, 2032.70166015625, 3594.26025390625, 3721.718505859375, 1080.866943359375, 2553.455078125, 2855.564208984375, 2045.6722412109375, 171.63885498046875, 55.12276840209961, 49.91822814941406, 47.625301361083984, 106.60810089111328, 37.02772903442383, 25.170228958129883, 24.068897247314453, 19.74962615966797, 136.66192626953125, 17.611530303955078, 16.234285354614258, 15.522377967834473, 14.920537948608398, 14.332674980163574, 13.865771293640137, 13.446791648864746, 12.399125099182129, 12.224111557006836, 73.31279754638672, 12.187273979187012, 11.942371368408203, 11.880560874938965, 47.44623565673828, 11.632590293884277, 10.950480461120605, 10.025330543518066, 9.901668548583984, 9.827045440673828, 9.236723899841309, 38.39214324951172, 274.95550537109375, 230.3275146484375, 26.822805404663086, 105.77672576904297, 2204.07275390625, 44.80286407470703, 115.77429962158203, 1074.0985107421875, 40.0566520690918, 40.15906524658203, 4210.17041015625, 106.09356689453125, 63.13258361816406, 238.17218017578125, 755.7960815429688, 354.8183288574219, 150.0162811279297, 246.84559631347656, 142.30313110351562, 101.67942810058594, 496.81683349609375, 2820.06396484375, 1027.6357421875, 1313.091064453125, 4062.748046875, 1642.0045166015625, 1556.6956787109375, 1327.1492919921875, 216.39535522460938, 1139.3594970703125, 518.9386596679688, 1115.38330078125, 621.08349609375, 1319.62646484375, 932.9474487304688, 90.24988555908203, 84.00875091552734, 58.90599060058594, 56.05646514892578, 54.15686798095703, 48.45795440673828, 47.508052825927734, 46.558345794677734, 44.65863800048828, 43.7088737487793, 41.43752670288086, 38.009979248046875, 38.0096549987793, 37.06010055541992, 35.16056442260742, 34.21061706542969, 33.26085662841797, 32.311012268066406, 32.311065673828125, 31.361223220825195, 30.411365509033203, 29.461645126342773, 29.46156883239746, 29.46155548095703, 29.46120834350586, 28.51178550720215, 28.511716842651367, 27.638120651245117, 27.561962127685547, 27.561914443969727, 27.561922073364258, 27.561901092529297, 96.67359924316406, 167.31256103515625, 271.622802734375, 55.365882873535156, 275.68206787109375, 295.81988525390625, 182.10861206054688, 246.74386596679688, 98.30513000488281, 320.30828857421875, 58.842262268066406, 120.60283660888672, 159.6078643798828, 114.6361083984375, 579.484375, 259.5719909667969, 85.8009033203125, 156.33676147460938, 103.29971313476562, 197.1065673828125, 1646.1241455078125], "loglift": [30.0, 29.0, 28.0, 27.0, 26.0, 25.0, 24.0, 23.0, 22.0, 21.0, 20.0, 19.0, 18.0, 17.0, 16.0, 15.0, 14.0, 13.0, 12.0, 11.0, 10.0, 9.0, 8.0, 7.0, 6.0, 5.0, 4.0, 3.0, 2.0, 1.0, 1.0810999870300293, 1.080399990081787, 1.0795999765396118, 1.0782999992370605, 1.0780999660491943, 1.0748000144958496, 1.0746999979019165, 1.0744999647140503, 1.0742000341415405, 1.0738999843597412, 1.0729999542236328, 1.0729000568389893, 1.07260000705719, 1.0719000101089478, 1.0715999603271484, 1.0714999437332153, 1.0713000297546387, 1.0703999996185303, 1.0700000524520874, 1.0698000192642212, 1.0698000192642212, 1.069700002670288, 1.0688999891281128, 1.06850004196167, 1.0684000253677368, 1.0683000087738037, 1.0678999423980713, 1.0678000450134277, 1.0674999952316284, 1.0674999952316284, 1.0614999532699585, 1.0586999654769897, 1.0635000467300415, 1.055999994277954, 1.0597000122070312, 1.000599980354309, 1.0189000368118286, 1.0328999757766724, 0.9958000183105469, 1.0497000217437744, 1.0499999523162842, 1.0111000537872314, 1.014799952507019, 0.9072999954223633, 0.91839998960495, 1.031999945640564, 0.8687000274658203, 0.8996000289916992, 0.9138000011444092, 0.8812999725341797, 0.8666999936103821, 0.8686000108718872, 0.914900004863739, 0.77920001745224, 0.9341999888420105, 1.0128999948501587, 0.7132999897003174, 0.8896999955177307, 0.8287000060081482, 0.9193000197410583, 0.7526000142097473, 0.8822000026702881, 0.8808000087738037, 0.9165999889373779, 0.7932999730110168, 0.6717000007629395, 0.8112999796867371, 0.66839998960495, 0.8452000021934509, 0.6323999762535095, 0.689300000667572, 0.6114000082015991, 0.5601000189781189, 0.6371999979019165, 0.5827999711036682, 0.7052000164985657, 0.44369998574256897, 0.4323999881744385, 0.33899998664855957, 0.29089999198913574, 0.6047000288963318, 0.2775000035762787, 0.46299999952316284, 0.3774000108242035, 0.03880000114440918, 0.18170000612735748, 0.49300000071525574, -0.21060000360012054, -0.14090000092983246, -0.2134000062942505, -0.19900000095367432, -0.0731000006198883, 0.3440999984741211, -0.10300000011920929, 0.06719999760389328, 1.82669997215271, 1.8250999450683594, 1.8214999437332153, 1.819200038909912, 1.8157999515533447, 1.8151999711990356, 1.8149000406265259, 1.8147000074386597, 1.8147000074386597, 1.8143999576568604, 1.8140000104904175, 1.8135000467300415, 1.8131999969482422, 1.813099980354309, 1.812399983406067, 1.8122999668121338, 1.8108999729156494, 1.809399962425232, 1.809000015258789, 1.808500051498413, 1.8075000047683716, 1.8069000244140625, 1.806399941444397, 1.805299997329712, 1.804800033569336, 1.8042000532150269, 1.8030999898910522, 1.8028000593185425, 1.8028000593185425, 1.8027000427246094, 1.8006000518798828, 1.794800043106079, 1.7878999710083008, 1.7771999835968018, 1.7972999811172485, 1.7980999946594238, 1.7475999593734741, 1.7028000354766846, 1.6993000507354736, 1.6823999881744385, 1.6612000465393066, 1.6052000522613525, 1.732200026512146, 1.600000023841858, 1.6054999828338623, 1.6663999557495117, 1.6950000524520874, 1.467900037765503, 1.5657000541687012, 1.5640000104904175, 1.65339994430542, 1.5914000272750854, 1.518399953842163, 1.2477999925613403, 1.1332000494003296, 1.236299991607666, 1.4392999410629272, 1.2853000164031982, 1.507699966430664, 0.8406999707221985, 0.9416000247001648, 1.3765000104904175, 1.2924000024795532, 1.3385000228881836, 1.079200029373169, 1.0252000093460083, 0.8863000273704529, 0.9003999829292297, 0.7662000060081482, 0.3939000070095062, 0.7651000022888184, 0.7163000106811523, 0.28439998626708984, 0.9884999990463257, 0.8234000205993652, 0.9538999795913696, -0.04809999838471413, 0.1266999989748001, -0.019899999722838402, 0.54830002784729, 2.071899890899658, 2.069200038909912, 2.0636000633239746, 2.0624001026153564, 2.0576000213623047, 2.0550999641418457, 2.0539000034332275, 2.0529000759124756, 2.051800012588501, 2.051500082015991, 2.048799991607666, 2.0483999252319336, 2.0483999252319336, 2.0481998920440674, 2.047800064086914, 2.046799898147583, 2.0443999767303467, 2.041599988937378, 2.039599895477295, 2.039299964904785, 2.0380001068115234, 2.037400007247925, 2.036900043487549, 2.035599946975708, 2.026900053024292, 2.0251998901367188, 2.0246999263763428, 2.023900032043457, 2.023099899291992, 2.0225000381469727, 2.013400077819824, 2.012700080871582, 2.0148000717163086, 1.9351999759674072, 1.9586000442504883, 1.9479000568389893, 1.9738999605178833, 1.7640000581741333, 1.9434000253677368, 1.6868000030517578, 1.9488999843597412, 1.8806999921798706, 1.8640999794006348, 1.7910000085830688, 1.912600040435791, 1.7688000202178955, 1.805899977684021, 1.822100043296814, 1.763200044631958, 1.6413999795913696, 1.8658000230789185, 1.2675000429153442, 1.6979999542236328, 1.729699969291687, 1.3756999969482422, 1.5135999917984009, 1.6715999841690063, 1.5390000343322754, 1.6308000087738037, 1.7029999494552612, 0.8191999793052673, 0.9692999720573425, 1.0902999639511108, 0.7145000100135803, 0.6559000015258789, 0.9829000234603882, 0.6050999760627747, 0.5019999742507935, 0.7962999939918518, 0.4569999873638153, 0.39469999074935913, 0.9807000160217285, 0.8812999725341797, 0.5663999915122986, 0.271699994802475, 0.19460000097751617, 0.3736000061035156, 0.12770000100135803, 0.0608999989926815, 0.18279999494552612, -0.05660000070929527, 0.3531999886035919, 0.01979999989271164, 2.126800060272217, 2.1205999851226807, 2.1203999519348145, 2.118499994277954, 2.1184000968933105, 2.1161999702453613, 2.1145999431610107, 2.1140999794006348, 2.1136999130249023, 2.11299991607666, 2.1117000579833984, 2.107800006866455, 2.1077001094818115, 2.1073999404907227, 2.1066999435424805, 2.106300115585327, 2.1057000160217285, 2.1052000522613525, 2.1048998832702637, 2.104599952697754, 2.1029999256134033, 2.1019999980926514, 2.1010000705718994, 2.0999999046325684, 2.0994999408721924, 2.09879994392395, 2.0975000858306885, 2.09689998626709, 2.096100091934204, 2.0947999954223633, 2.076900005340576, 2.0450000762939453, 2.075500011444092, 2.060499906539917, 2.0780999660491943, 2.0625998973846436, 2.0452001094818115, 2.0, 2.0764999389648438, 2.0476999282836914, 1.9501999616622925, 2.007200002670288, 1.9765000343322754, 1.8732999563217163, 1.8926000595092773, 1.8466999530792236, 1.736799955368042, 1.7041000127792358, 1.8981000185012817, 1.6881999969482422, 1.3380000591278076, 1.6943000555038452, 1.2127000093460083, 1.774399995803833, 1.4742000102996826, 1.1735999584197998, 1.076200008392334, 1.061400055885315, 1.1796000003814697, 1.3538000583648682, 1.2204999923706055, 0.9764999747276306, 0.9373999834060669, 1.0882999897003174, 1.141700029373169, 1.2647000551223755, 1.1988999843597412, 0.5175999999046326, 1.149399995803833, 0.2680000066757202, 1.0025999546051025, 0.6323000192642212, 0.3993000090122223, 0.5723000168800354, -0.10300000011920929, 0.06469999998807907, 0.18160000443458557, 0.14239999651908875, 0.22470000386238098, 0.4438999891281128, -0.1615999937057495, -0.2994000017642975, 0.351500004529953, 2.4458999633789062, 2.4458999633789062, 2.44350004196167, 2.4426000118255615, 2.4423999786376953, 2.438199996948242, 2.4375, 2.437299966812134, 2.4337000846862793, 2.433000087738037, 2.43179988861084, 2.4286999702453613, 2.424999952316284, 2.4238998889923096, 2.423099994659424, 2.420099973678589, 2.419100046157837, 2.416599988937378, 2.4158999919891357, 2.4158999919891357, 2.414900064468384, 2.4140000343322754, 2.413800001144409, 2.4137001037597656, 2.412100076675415, 2.41129994392395, 2.4082999229431152, 2.4082000255584717, 2.404400110244751, 2.4040000438690186, 2.4033000469207764, 2.385499954223633, 2.390700101852417, 2.391900062561035, 2.3345999717712402, 2.3645999431610107, 2.305299997329712, 2.314300060272217, 2.3101000785827637, 2.330199956893921, 2.0827999114990234, 2.227799892425537, 2.023900032043457, 2.1349000930786133, 2.036600112915039, 1.8483999967575073, 1.3628000020980835, 1.720900058746338, 1.84660005569458, 1.4395999908447266, 1.867900013923645, 1.7502000331878662, 1.4803999662399292, 1.232800006866455, 0.8532000184059143, 1.0859999656677246, 1.0110000371932983, 1.3710999488830566, 1.7450000047683716, 1.0095000267028809, 1.9169000387191772, 1.0262999534606934, 1.0592999458312988, 0.6510999798774719, 1.1334999799728394, 0.857200026512146, 0.7513999938964844, 0.7846999764442444, 0.4205000102519989, 0.90829998254776, 0.51419997215271, 0.7261000275611877, 0.8295999765396118, 0.3937000036239624, -0.08330000191926956, 0.25189998745918274, 0.12759999930858612, 0.6060000061988831, 2.5013999938964844, 2.500999927520752, 2.487600088119507, 2.4870998859405518, 2.4862000942230225, 2.4846999645233154, 2.4837000370025635, 2.483599901199341, 2.4828999042510986, 2.479099988937378, 2.4788999557495117, 2.4769999980926514, 2.476300001144409, 2.4762001037597656, 2.468400001525879, 2.4670000076293945, 2.4667000770568848, 2.465399980545044, 2.4649999141693115, 2.4646999835968018, 2.4635000228881836, 2.4628000259399414, 2.460599899291992, 2.45989990234375, 2.459700107574463, 2.459399938583374, 2.4581000804901123, 2.4567999839782715, 2.456700086593628, 2.4565999507904053, 2.422800064086914, 2.4393999576568604, 2.4344000816345215, 2.429800033569336, 2.430299997329712, 2.4326000213623047, 2.37719988822937, 2.2581000328063965, 2.3083999156951904, 1.9571000337600708, 1.9421000480651855, 2.0055999755859375, 2.063199996948242, 2.1166999340057373, 1.8711999654769897, 1.9726999998092651, 1.6974999904632568, 1.8691999912261963, 1.795799970626831, 1.7517000436782837, 1.4658000469207764, 1.9280999898910522, 1.7438000440597534, 1.6868000030517578, 1.371500015258789, 1.7609000205993652, 1.7798999547958374, 1.3581000566482544, 1.3502000570297241, 0.8550999760627747, 2.1303000450134277, 1.6675000190734863, 1.2188999652862549, 1.1360000371932983, 0.934499979019165, 1.4644999504089355, 1.0119999647140503, 0.8603000044822693, 0.5401999950408936, 0.9639000296592712, 1.0706000328063965, 0.9531999826431274, 0.2921000123023987, 0.42719998955726624, 0.7037000060081482, 0.27559998631477356, 0.3154999911785126, 0.11389999836683273, 0.5680000185966492, -0.1599999964237213, 3.5399999618530273, 3.536900043487549, 3.5341999530792236, 3.5290000438690186, 3.523900032043457, 3.5220999717712402, 3.5165998935699463, 3.515399932861328, 3.5114998817443848, 3.5074000358581543, 3.5065999031066895, 3.5053000450134277, 3.504199981689453, 3.502500057220459, 3.497499942779541, 3.497299909591675, 3.4965999126434326, 3.4876999855041504, 3.4848999977111816, 3.4837000370025635, 3.4835000038146973, 3.4827001094818115, 3.4760000705718994, 3.4755001068115234, 3.467900037765503, 3.465399980545044, 3.465399980545044, 3.465399980545044, 3.4644999504089355, 3.4632999897003174, 3.460700035095215, 3.460400104522705, 3.4382998943328857, 3.4286000728607178, 3.4159998893737793, 3.265000104904175, 3.3433001041412354, 3.3059000968933105, 3.398900032043457, 3.432499885559082, 3.3977999687194824, 3.2688000202178955, 3.161600112915039, 2.781100034713745, 3.018399953842163, 2.8213999271392822, 3.350399971008301, 2.7685000896453857, 3.198199987411499, 3.1338000297546387, 2.0450000762939453, 2.797800064086914, 2.6456000804901123, 2.0910000801086426, 2.0322999954223633, 1.9948999881744385, 2.2911999225616455, 1.7934999465942383, 1.575600028038025, 2.3987998962402344, 1.8238999843597412, 2.6816999912261963, 2.634500026702881, 2.0804998874664307, 2.203900098800659, 1.9045000076293945, 1.8411999940872192, 2.262700080871582, 1.9759999513626099, 0.09350000321865082, 0.4300999939441681, 0.5083000063896179, 0.9968000054359436, 0.24799999594688416, 3.6308999061584473, 3.625, 3.624000072479248, 3.621000051498413, 3.6166999340057373, 3.609800100326538, 3.6068999767303467, 3.59660005569458, 3.5924999713897705, 3.580399990081787, 3.5797998905181885, 3.577500104904175, 3.57069993019104, 3.5683999061584473, 3.5662999153137207, 3.564199924468994, 3.5634000301361084, 3.5634000301361084, 3.559299945831299, 3.554500102996826, 3.554500102996826, 3.5487000942230225, 3.5473999977111816, 3.5467000007629395, 3.545799970626831, 3.5439000129699707, 3.5425000190734863, 3.5413999557495117, 3.5380001068115234, 3.534600019454956, 3.5274999141693115, 3.529599905014038, 3.5018999576568604, 3.4207000732421875, 3.4704999923706055, 3.4238998889923096, 3.3378000259399414, 3.4430999755859375, 3.4897000789642334, 3.305000066757202, 3.387200117111206, 3.2239999771118164, 3.2904000282287598, 3.0053999423980713, 2.959199905395508, 3.311800003051758, 2.7734999656677246, 3.2098000049591064, 3.1059999465942383, 3.2385001182556152, 3.317199945449829, 3.066499948501587, 2.9363999366760254, 2.4618000984191895, 2.7295000553131104, 3.095900058746338, 2.5225000381469727, 1.871999979019165, 2.204900026321411, 1.1478999853134155, 2.0664000511169434, 1.6690000295639038, 1.3859000205993652, 1.5252000093460083, 2.0848000049591064, 0.9768999814987183, 0.4927999973297119, 0.44859999418258667, 1.3967000246047974, 0.6168000102043152, 0.46950000524520874, 0.6549000144004822, 3.6619999408721924, 3.651099920272827, 3.649399995803833, 3.6486001014709473, 3.6470000743865967, 3.643199920654297, 3.6317999362945557, 3.6301000118255615, 3.621799945831299, 3.6210999488830566, 3.6161999702453613, 3.6117000579833984, 3.609100103378296, 3.6066999435424805, 3.6022000312805176, 3.6019999980926514, 3.599900007247925, 3.5940001010894775, 3.592900037765503, 3.592600107192993, 3.592600107192993, 3.5910000801086426, 3.5906999111175537, 3.5892999172210693, 3.5889999866485596, 3.583899974822998, 3.5757999420166016, 3.574700117111206, 3.5738000869750977, 3.567699909210205, 3.5578999519348145, 3.5113000869750977, 3.4937000274658203, 3.5336999893188477, 3.4407999515533447, 3.123500108718872, 3.4554998874664307, 3.3357999324798584, 3.0511999130249023, 3.441499948501587, 3.4393999576568604, 2.6814000606536865, 3.2614998817443848, 3.327199935913086, 3.030400037765503, 2.713599920272827, 2.871999979019165, 3.059299945831299, 2.890399932861328, 3.0432000160217285, 3.06030011177063, 2.3782999515533447, 1.606600046157837, 1.9671000242233276, 1.832900047302246, 1.0175000429153442, 1.4682999849319458, 1.4865000247955322, 1.3752000331878662, 2.568000078201294, 1.351699948310852, 1.9256999492645264, 1.332900047302246, 1.5845999717712402, 0.8400999903678894, 1.1226999759674072, 4.401299953460693, 4.400599956512451, 4.395999908447266, 4.395299911499023, 4.394700050354004, 4.3927998542785645, 4.392399787902832, 4.392000198364258, 4.391200065612793, 4.390699863433838, 4.389599800109863, 4.387599945068359, 4.387599945068359, 4.38700008392334, 4.385700225830078, 4.385000228881836, 4.384200096130371, 4.383399963378906, 4.383399963378906, 4.382599830627441, 4.381700038909912, 4.38070011138916, 4.38070011138916, 4.38070011138916, 4.38070011138916, 4.379700183868408, 4.379700183868408, 4.378699779510498, 4.378600120544434, 4.378600120544434, 4.378600120544434, 4.378600120544434, 4.334799766540527, 4.176000118255615, 3.930999994277954, 4.236299991607666, 3.7880001068115234, 3.7385001182556152, 3.874300003051758, 3.6940999031066895, 3.9475998878479004, 3.422300100326538, 4.110400199890137, 3.7362000942230225, 3.5713000297546387, 3.6928999423980713, 2.7376999855041504, 3.1547999382019043, 3.777600049972534, 3.331899881362915, 3.6059999465942383, 3.069700002670288, 1.1496000289916992], "logprob": [30.0, 29.0, 28.0, 27.0, 26.0, 25.0, 24.0, 23.0, 22.0, 21.0, 20.0, 19.0, 18.0, 17.0, 16.0, 15.0, 14.0, 13.0, 12.0, 11.0, 10.0, 9.0, 8.0, 7.0, 6.0, 5.0, 4.0, 3.0, 2.0, 1.0, -8.031200408935547, -8.107999801635742, -8.188699722290039, -8.30090045928955, -8.31470012664795, -8.550700187683105, -8.55739974975586, -8.562800407409668, -8.585800170898438, -8.60420036315918, -8.659000396728516, -8.6628999710083, -8.680399894714355, -8.710800170898438, -8.733699798583984, -8.739999771118164, -8.751099586486816, -8.740099906921387, -8.814800262451172, -8.825400352478027, -8.827199935913086, -8.832200050354004, -7.144199848175049, -8.8858003616333, -8.861700057983398, -8.89780044555664, -8.914199829101562, -8.916299819946289, -8.931699752807617, -8.933799743652344, -8.020099639892578, -7.890600204467773, -8.385199546813965, -8.03689956665039, -8.326299667358398, -6.2829999923706055, -7.043799877166748, -7.5782999992370605, -6.6691999435424805, -8.25, -8.258899688720703, -7.374599933624268, -7.577499866485596, -5.553400039672852, -6.0980000495910645, -7.982900142669678, -5.486999988555908, -6.003600120544434, -6.345699787139893, -5.924900054931641, -5.888899803161621, -5.945199966430664, -6.519899845123291, -5.008399963378906, -6.868500232696533, -7.776599884033203, -4.595600128173828, -6.501699924468994, -5.897600173950195, -6.835899829864502, -5.343100070953369, -6.6149001121521, -6.632299900054932, -6.93779993057251, -6.05649995803833, -5.2480998039245605, -6.351099967956543, -5.571899890899658, -6.5903000831604, -5.469399929046631, -5.772600173950195, -5.397900104522705, -5.229000091552734, -5.656599998474121, -5.4893999099731445, -5.994900226593018, -5.082200050354004, -5.194799900054932, -5.074999809265137, -5.124300003051758, -5.895199775695801, -5.265100002288818, -5.6331000328063965, -5.638299942016602, -5.372000217437744, -5.535699844360352, -5.81689977645874, -5.313199996948242, -5.466300010681152, -5.4481000900268555, -5.572400093078613, -5.641900062561035, -5.781400203704834, -5.699900150299072, -5.774199962615967, -6.008299827575684, -5.804200172424316, -7.103600025177002, -7.365600109100342, -7.650700092315674, -6.812900066375732, -7.717700004577637, -7.7316999435424805, -7.257599830627441, -7.67549991607666, -7.7769999504089355, -7.806099891662598, -7.825900077819824, -5.655300140380859, -7.876999855041504, -7.881999969482422, -7.959499835968018, -8.041000366210938, -8.060700416564941, -8.084500312805176, -8.133700370788574, -6.877799987792969, -8.183199882507324, -8.228400230407715, -8.240599632263184, -7.676000118255615, -8.315899848937988, -5.239299774169922, -8.330300331115723, -8.330699920654297, -6.303400039672852, -7.053400039672852, -6.449699878692627, -6.46999979019165, -7.605299949645996, -7.689300060272217, -5.712399959564209, -5.056000232696533, -5.533999919891357, -5.473499774932861, -5.085700035095215, -4.572400093078613, -6.651000022888184, -5.517099857330322, -5.583199977874756, -6.3495001792907715, -6.794099807739258, -5.048600196838379, -5.769999980926514, -5.787600040435791, -6.6519999504089355, -6.27209997177124, -5.830599784851074, -4.459799766540527, -4.631199836730957, -5.0690999031066895, -5.849100112915039, -5.303699970245361, -6.119800090789795, -4.446800231933594, -4.746699810028076, -5.801000118255615, -5.645400047302246, -5.830100059509277, -5.459700107574463, -5.383900165557861, -5.224999904632568, -5.313000202178955, -5.306700229644775, -5.016900062561035, -5.370800018310547, -5.354599952697754, -5.1296000480651855, -5.534200191497803, -5.501699924468994, -5.574100017547607, -5.421500205993652, -5.470300197601318, -5.46560001373291, -5.570400238037109, -5.739500045776367, -6.443399906158447, -7.178400039672852, -7.282299995422363, -7.622399806976318, -7.7621002197265625, -7.8196001052856445, -7.868599891662598, -7.920000076293945, -7.932799816131592, -8.045700073242188, -8.059200286865234, -8.062700271606445, -8.069499969482422, -8.084099769592285, -8.122699737548828, -8.206299781799316, -8.296799659729004, -8.356300354003906, -8.363900184631348, -8.403400421142578, -8.376799583435059, -7.565800189971924, -8.466500282287598, -8.673399925231934, -8.684599876403809, -7.478099822998047, -8.737199783325195, -8.752599716186523, -8.764800071716309, -7.530099868774414, -7.720200061798096, -8.191100120544434, -4.34060001373291, -6.589900016784668, -6.474599838256836, -7.2581000328063965, -3.5590999126434326, -6.831399917602539, -3.5478999614715576, -7.050099849700928, -6.626800060272217, -6.51609992980957, -6.103899955749512, -7.0482001304626465, -6.064499855041504, -6.4527997970581055, -6.5605998039245605, -6.200200080871582, -5.543499946594238, -6.8495001792907715, -3.835099935531616, -6.071499824523926, -6.272600173950195, -4.831999778747559, -5.491399765014648, -6.3003997802734375, -5.9222002029418945, -6.234600067138672, -6.562600135803223, -4.5960001945495605, -5.084499835968018, -5.329100131988525, -5.002799987792969, -4.913000106811523, -5.440899848937988, -4.9375, -4.943699836730957, -5.317999839782715, -4.970699787139893, -4.930699825286865, -5.640399932861328, -5.564599990844727, -5.275000095367432, -5.1016998291015625, -5.114299774169922, -5.41540002822876, -5.283100128173828, -5.353099822998047, -5.414100170135498, -5.344099998474121, -5.5665998458862305, -5.655900001525879, -7.054500102996826, -7.535699844360352, -6.606100082397461, -7.656899929046631, -7.6605000495910645, -7.775400161743164, -7.8516998291015625, -7.871699810028076, -7.889500141143799, -7.915599822998047, -7.3892998695373535, -7.198500156402588, -8.122599601745605, -8.13029956817627, -6.313300132751465, -8.167499542236328, -8.187999725341797, -8.096199989318848, -8.214200019836426, -6.054200172424316, -8.243000030517578, -8.30370044708252, -8.329899787902832, -8.359000205993652, -8.34220027923584, -8.37279987335205, -8.425700187683105, -8.440699577331543, -8.440400123596191, -8.493499755859375, -6.532599925994873, -5.518899917602539, -7.329400062561035, -6.625699996948242, -7.575300216674805, -7.197400093078613, -6.870200157165527, -5.890399932861328, -7.8231000900268555, -7.396900177001953, -6.493199825286865, -7.160699844360352, -6.9633002281188965, -6.079100131988525, -6.376999855041504, -6.11359977722168, -5.581900119781494, -5.440199851989746, -6.6596999168396, -5.62470006942749, -4.089700222015381, -5.826399803161621, -4.743800163269043, -6.63539981842041, -5.808800220489502, -5.118199825286865, -4.958000183105469, -5.042200088500977, -5.314599990844727, -5.845200061798096, -5.690000057220459, -5.27839994430542, -5.2916998863220215, -5.586599826812744, -5.714600086212158, -5.907400131225586, -5.855000019073486, -5.170599937438965, -5.805200099945068, -5.105400085449219, -5.714399814605713, -5.458899974822998, -5.308300018310547, -5.5005998611450195, -5.205599784851074, -5.346099853515625, -5.41540002822876, -5.400199890136719, -5.451099872589111, -5.599899768829346, -5.487100124359131, -5.622600078582764, -5.737400054931641, -6.4415998458862305, -6.445099830627441, -6.7164998054504395, -6.699699878692627, -6.819499969482422, -7.143499851226807, -7.130199909210205, -7.204599857330322, -7.406000137329102, -6.726799964904785, -7.4994001388549805, -7.633999824523926, -7.769800186157227, -7.812300205230713, -7.8354997634887695, -7.1265997886657715, -7.965799808502197, -8.036199569702148, -8.055100440979004, -8.0556001663208, -8.08240032196045, -8.10509967803955, -8.110899925231934, -8.111499786376953, -7.373199939727783, -8.173299789428711, -8.244000434875488, -8.245200157165527, -8.327500343322754, -8.33549976348877, -7.614500045776367, -5.955699920654297, -6.506800174713135, -7.3180999755859375, -7.083399772644043, -7.494200229644775, -6.9008002281188965, -7.0046000480651855, -7.020100116729736, -7.248300075531006, -5.394899845123291, -6.69920015335083, -5.670300006866455, -6.539599895477295, -6.124800205230713, -5.52869987487793, -4.082900047302246, -5.358799934387207, -5.814000129699707, -4.608500003814697, -6.1153998374938965, -5.925099849700928, -5.375899791717529, -5.0920000076293945, -4.472300052642822, -4.984899997711182, -5.032700061798096, -5.582499980926514, -6.165900230407715, -5.219600200653076, -6.431700229644775, -5.338799953460693, -5.391900062561035, -4.917799949645996, -5.4816999435424805, -5.27869987487793, -5.188399791717529, -5.287399768829346, -5.007199764251709, -5.491099834442139, -5.25029993057251, -5.477399826049805, -5.541299819946289, -5.313899993896484, -5.1859002113342285, -5.465400218963623, -5.5482001304626465, -5.691299915313721, -6.741000175476074, -6.769800186157227, -7.450200080871582, -7.59089994430542, -7.625500202178955, -7.667900085449219, -7.716899871826172, -7.721499919891357, -7.715199947357178, -7.868899822235107, -7.8765997886657715, -7.93149995803833, -7.95419979095459, -7.9542999267578125, -8.119000434875488, -8.187899589538574, -8.19379997253418, -8.224699974060059, -8.232000350952148, -8.215100288391113, -8.26449966430664, -8.279999732971191, -8.3233003616333, -8.337800025939941, -8.341300010681152, -8.34749984741211, -8.371600151062012, -8.397100448608398, -8.397500038146973, -7.044400215148926, -6.076200008392334, -7.433199882507324, -7.208099842071533, -7.5005998611450195, -7.822299957275391, -7.945300102233887, -7.417399883270264, -6.270899772644043, -7.2241997718811035, -5.140399932861328, -5.070400238037109, -5.4644999504089355, -5.813000202178955, -6.403299808502197, -5.361100196838379, -5.957099914550781, -4.86329984664917, -5.579500198364258, -5.366799831390381, -5.2027997970581055, -4.357800006866455, -5.9293999671936035, -5.485000133514404, -5.360799789428711, -4.88100004196167, -5.867000102996826, -5.967199802398682, -5.0177001953125, -5.2729997634887695, -4.5183000564575195, -6.905799865722656, -6.107600212097168, -5.402200222015381, -5.288400173187256, -5.005300045013428, -5.825500011444092, -5.214600086212158, -5.228700160980225, -5.086999893188477, -5.435400009155273, -5.538599967956543, -5.472099781036377, -5.135700225830078, -5.248600006103516, -5.410699844360352, -5.25029993057251, -5.281400203704834, -5.211599826812744, -5.447700023651123, -5.468800067901611, -5.531000137329102, -5.826700210571289, -6.029399871826172, -6.323699951171875, -6.460700035095215, -6.627500057220459, -6.008500099182129, -6.853700160980225, -6.9629998207092285, -7.070099830627441, -6.2870001792907715, -7.119999885559082, -7.145299911499023, -7.182400226593018, -7.2870001792907715, -7.289899826049805, -7.304500102996826, -7.46619987487793, -7.509799957275391, -7.531300067901611, -7.532800197601318, -7.534599781036377, -7.646500110626221, -7.650899887084961, -7.228400230407715, -7.7866997718811035, -7.7866997718811035, -7.787199974060059, -7.710400104522705, -7.811399936676025, -6.694300174713135, -7.194900035858154, -6.825399875640869, -6.581600189208984, -6.301300048828125, -3.8773999214172363, -5.639500141143799, -5.5524001121521, -6.581200122833252, -6.9878997802734375, -6.872799873352051, -6.140500068664551, -5.666399955749512, -3.8280999660491943, -5.198999881744385, -4.98799991607666, -6.799099922180176, -5.14300012588501, -6.485199928283691, -6.371600151062012, -4.252200126647949, -5.840099811553955, -5.605299949645996, -4.782599925994873, -4.815800189971924, -4.828100204467773, -5.276500225067139, -4.673500061035156, -4.496500015258789, -5.60830020904541, -5.0731000900268555, -5.920400142669678, -5.907899856567383, -5.5157999992370605, -5.637199878692627, -5.4730000495910645, -5.468400001525879, -5.808800220489502, -5.804299831390381, -5.533699989318848, -5.6427998542785645, -5.720799922943115, -5.786799907684326, -5.805799961090088, -4.695899963378906, -5.666100025177002, -5.753499984741211, -5.973100185394287, -6.214099884033203, -6.520299911499023, -4.602700233459473, -6.928999900817871, -7.027599811553955, -6.581699848175049, -6.392300128936768, -7.330399990081787, -5.377900123596191, -6.860899925231934, -6.21120023727417, -7.539100170135498, -6.428400039672852, -7.551199913024902, -7.607999801635742, -7.669600009918213, -7.671000003814697, -5.9319000244140625, -7.756899833679199, -7.764800071716309, -7.775400161743164, -7.797299861907959, -7.813000202178955, -7.825399875640869, -7.862199783325195, -7.898200035095215, -6.464700222015381, -7.033699989318848, -6.2795000076293945, -3.9344000816345215, -6.106599807739258, -5.303299903869629, -4.723499774932861, -6.20359992980957, -6.94379997253418, -5.079999923706055, -6.230100154876709, -5.244900226593018, -5.694200038909912, -3.9827001094818115, -3.835200071334839, -5.856500148773193, -3.69350004196167, -5.5055999755859375, -5.126399993896484, -5.680500030517578, -5.984799861907959, -5.528900146484375, -5.3043999671936035, -4.500100135803223, -4.986199855804443, -5.67579984664917, -4.858699798583984, -3.9693000316619873, -4.526500225067139, -4.394700050354004, -5.341000080108643, -5.164700031280518, -5.056099891662598, -5.134099960327148, -5.355899810791016, -5.03879976272583, -4.952899932861328, -4.962299823760986, -5.2505998611450195, -5.17080020904541, -5.206299781799316, -5.354300022125244, -4.825399875640869, -5.972099781036377, -6.07289981842041, -6.120800018310547, -5.3165998458862305, -6.377900123596191, -6.775400161743164, -6.821700096130371, -7.0278000831604, -5.094099998474121, -7.148099899291992, -7.23390007019043, -7.281400203704834, -7.323299884796143, -7.368100166320801, -7.401400089263916, -7.434199810028076, -7.521200180053711, -7.536499977111816, -5.7453999519348145, -7.53980016708374, -7.561600208282471, -7.567200183868408, -6.183899879455566, -7.590000152587891, -7.6554999351501465, -7.751800060272217, -7.765399932861328, -7.773799896240234, -7.841899871826172, -6.427000045776367, -4.504899978637695, -4.6996002197265625, -6.809899806976318, -5.530700206756592, -2.811300039291382, -6.375, -5.545300006866455, -3.602299928665161, -6.500999927520752, -6.500500202178955, -2.606100082397461, -5.706999778747559, -6.160299777984619, -5.12939977645874, -4.291399955749512, -4.889200210571289, -5.562699794769287, -5.23360013961792, -5.6315999031066895, -5.950699806213379, -5.046199798583984, -4.081600189208984, -4.7307000160217285, -4.619699954986572, -4.305600166320801, -4.760799884796143, -4.795899868011475, -5.066800117492676, -5.687600135803223, -5.242800235748291, -5.4552998542785645, -5.282899856567383, -5.616700172424316, -5.607500076293945, -5.671800136566162, -4.728899955749512, -4.801300048828125, -5.160799980163574, -5.211100101470947, -5.246200084686279, -5.359300136566162, -5.379499912261963, -5.400100231170654, -5.442500114440918, -5.4644999504089355, -5.519000053405762, -5.6072998046875, -5.6072998046875, -5.633200168609619, -5.687099933624268, -5.715199947357178, -5.744100093841553, -5.773900032043457, -5.773900032043457, -5.804599761962891, -5.836299896240234, -5.86899995803833, -5.86899995803833, -5.86899995803833, -5.86899995803833, -5.9028000831604, -5.9028000831604, -5.934899806976318, -5.937699794769287, -5.937699794769287, -5.937699794769287, -5.937699794769287, -4.7266998291015625, -4.336900234222412, -4.097400188446045, -5.382500171661377, -4.225500106811523, -4.204500198364258, -4.553899765014648, -4.4303998947143555, -5.097099781036377, -4.441199779510498, -5.447500228881836, -5.104100227355957, -4.988699913024902, -5.1981000900268555, -4.5329999923706055, -4.919000148773193, -5.403200149536133, -5.248799800872803, -5.389200210571289, -5.279300212860107, -5.077000141143799]}, "token.table": {"Topic": [3, 1, 4, 5, 7, 3, 5, 8, 10, 1, 2, 3, 4, 5, 6, 7, 1, 5, 10, 1, 2, 3, 4, 5, 6, 9, 7, 4, 2, 1, 2, 3, 4, 5, 6, 8, 9, 1, 3, 8, 9, 1, 8, 1, 2, 3, 5, 6, 7, 8, 9, 2, 3, 4, 10, 1, 2, 3, 4, 6, 1, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8, 9, 2, 6, 9, 7, 2, 4, 1, 2, 3, 4, 5, 6, 8, 6, 9, 5, 2, 4, 5, 6, 8, 9, 10, 9, 2, 4, 5, 6, 9, 10, 3, 8, 1, 2, 4, 5, 9, 1, 2, 3, 4, 5, 8, 9, 1, 2, 4, 8, 9, 2, 3, 5, 7, 8, 9, 2, 5, 9, 2, 1, 2, 3, 4, 5, 6, 8, 9, 1, 8, 8, 1, 1, 3, 4, 5, 1, 2, 3, 4, 5, 6, 7, 9, 10, 1, 2, 3, 4, 5, 6, 7, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 5, 6, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 4, 6, 8, 1, 2, 3, 4, 5, 6, 7, 8, 9, 6, 6, 10, 2, 4, 5, 1, 2, 3, 5, 1, 3, 7, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 7, 8, 9, 3, 1, 2, 5, 6, 7, 8, 9, 6, 1, 2, 3, 4, 5, 8, 1, 3, 6, 2, 7, 2, 4, 2, 5, 9, 1, 4, 5, 6, 8, 9, 1, 2, 3, 4, 5, 6, 8, 1, 2, 4, 5, 6, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 3, 1, 2, 3, 4, 5, 6, 10, 2, 8, 9, 1, 2, 3, 4, 8, 9, 1, 3, 1, 1, 2, 5, 6, 8, 8, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 10, 5, 2, 3, 10, 6, 2, 4, 5, 6, 9, 3, 4, 5, 10, 9, 2, 5, 1, 2, 3, 6, 7, 5, 8, 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 2, 3, 4, 9, 2, 3, 4, 2, 3, 4, 5, 6, 7, 8, 6, 7, 1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 10, 2, 3, 1, 3, 4, 6, 7, 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 10, 9, 2, 4, 5, 3, 10, 1, 2, 3, 4, 5, 6, 7, 8, 10, 10, 5, 1, 2, 3, 4, 5, 6, 9, 1, 2, 4, 7, 4, 9, 1, 7, 9, 1, 4, 9, 10, 3, 2, 2, 5, 2, 3, 4, 5, 6, 8, 9, 1, 3, 7, 7, 7, 1, 2, 3, 4, 5, 6, 8, 9, 1, 5, 6, 7, 3, 4, 5, 8, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 4, 5, 6, 7, 3, 4, 2, 1, 1, 2, 3, 4, 5, 6, 9, 4, 1, 2, 3, 4, 5, 6, 7, 10, 1, 4, 7, 10, 3, 10, 6, 1, 2, 3, 4, 5, 6, 8, 9, 10, 1, 2, 3, 4, 5, 7, 8, 9, 3, 1, 3, 9, 7, 2, 3, 6, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, 1, 6, 4, 8, 3, 9, 2, 3, 4, 5, 6, 7, 8, 7, 1, 1, 2, 3, 4, 5, 7, 9, 9, 5, 8, 1, 2, 3, 4, 5, 6, 8, 9, 10, 1, 2, 4, 5, 6, 8, 10, 7, 8, 10, 10, 10, 3, 2, 3, 4, 5, 6, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 3, 6, 7, 8, 1, 3, 4, 5, 6, 8, 1, 3, 4, 5, 10, 2, 4, 8, 1, 2, 6, 7, 8, 4, 2, 3, 4, 6, 3, 5, 10, 4, 7, 3, 2, 7, 4, 5, 10, 5, 2, 5, 2, 5, 10, 7, 1, 2, 3, 4, 5, 6, 7, 1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 3, 1, 2, 3, 4, 5, 6, 7, 9, 5, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 5, 1, 2, 4, 5, 6, 1, 2, 3, 4, 5, 6, 8, 9, 1, 2, 3, 4, 5, 6, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 3, 5, 6, 1, 3, 5, 6, 5, 1, 3, 1, 2, 3, 4, 5, 6, 8, 9, 1, 2, 4, 5, 6, 7, 8, 9, 5, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, 9, 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 10, 1, 5, 6, 7, 1, 2, 3, 4, 5, 6, 8, 9, 10, 2, 3, 3, 3, 1, 2, 3, 4, 5, 6, 7, 8, 9, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 7, 10, 2, 5, 1, 7, 8, 1, 2, 3, 4, 5, 6, 8, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 6, 7, 8, 5, 8, 4, 2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 5, 8, 8, 2, 3, 5, 6, 7, 1, 2, 3, 4, 5, 6, 8, 9, 10, 1, 2, 3, 4, 5, 6, 8, 9, 1, 2, 3, 4, 5, 6, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9, 7, 1, 2, 4, 5, 4, 5, 6, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9, 2, 4, 1, 2, 3, 4, 5, 6, 9, 2, 3, 4, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8, 9, 5, 1, 2, 7, 1, 6, 2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 6, 7, 8, 9, 4, 9, 2, 2, 3, 4, 8, 9, 1, 2, 3, 4, 5, 6, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 6, 7, 8, 1, 2, 3, 4, 5, 6, 10, 1, 2, 4, 5, 9, 8, 7, 5, 1, 3, 1, 2, 3, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 1, 3, 5, 6, 7, 9, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9, 4, 5, 3, 1, 3, 4, 8, 2, 1, 2, 5, 9, 10, 7, 6, 3, 9, 1, 7, 1, 2, 3, 4, 5, 6, 7, 8, 9, 2, 3, 5, 9, 1, 6, 1, 2, 4, 5, 6, 7, 8, 9, 4, 7, 5, 1, 2, 4, 5, 6, 7, 6, 6, 10, 10, 10, 2, 2, 10, 4, 6, 7, 1, 2, 3, 4, 5, 6, 8, 9, 10, 1, 1, 2, 4, 5, 8, 9, 1, 6, 3, 5, 10, 1, 6, 1, 2, 3, 4, 5, 6, 7, 8, 9, 6, 1, 2, 3, 4, 5, 6, 7, 9, 1, 2, 4, 5, 6, 7, 9, 4, 4, 10, 7, 1, 2, 3, 4, 5, 7, 8, 3, 6, 7, 1, 3, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 4, 5, 6, 8, 1, 2, 3, 4, 5, 7, 8, 1, 2, 3, 4, 5, 6, 8, 9, 1, 2, 3, 4, 5, 6, 7, 9, 1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 2, 4, 8, 9, 3, 4, 6, 8, 6, 1, 2, 3, 4, 5, 8, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 5, 1, 3, 4, 5, 6, 7, 9, 1, 2, 3, 4, 5, 6, 10, 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 3, 4, 5, 6, 1, 3, 4, 5, 6, 7, 8, 1, 3, 1, 2, 3, 4, 6, 7, 8, 10, 8, 10, 8, 5, 5, 1, 2, 5, 8, 1, 2, 3, 4, 5, 6, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9, 8, 5, 2, 5, 6, 2, 3, 4, 6, 7, 1, 2, 3, 4, 5, 6, 7, 8, 5, 8, 6, 10, 4, 2, 5, 4, 5, 7, 8, 7, 5, 7, 2, 4, 8, 1, 4, 5, 1, 2, 3, 4, 5, 6, 7, 9, 1, 2, 4, 9, 1, 2, 3, 6, 8, 1, 2, 3, 4, 5, 6, 7, 8, 10, 3, 8, 9, 7, 8, 10, 1, 2, 3, 4, 5, 6, 7, 8, 8, 3, 1, 3, 4, 6, 8, 9, 5, 1, 2, 3, 4, 6, 7, 8, 9, 1, 3, 4, 6, 7, 8, 9, 4, 10, 2, 1, 2, 3, 4, 5, 6, 7, 8, 2, 2, 5, 2, 3, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 7, 4, 6, 3, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 1, 4, 6, 1, 2, 3, 4, 5, 6, 7, 8, 9, 4, 6, 1, 2, 3, 4, 5, 7, 8, 9, 10, 1, 2, 5, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 8, 10, 7, 6, 5, 7, 8, 9, 4, 6, 8, 7, 2, 3, 4, 8, 7, 10, 5, 5, 6, 7, 1, 7, 6, 4, 5, 1, 4, 5, 5, 8, 1, 3, 4, 5, 6, 7, 9, 1, 2, 4, 6, 8, 2, 6, 1, 2, 5, 7, 8, 9, 1, 3, 8, 4, 10, 4, 3, 1, 2, 7, 1, 2, 3, 4, 5, 6, 7, 8, 1, 3, 5, 1, 6, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 6, 7, 1, 2, 5, 7, 8, 6, 1, 4, 5, 1, 2, 3, 4, 5, 6, 8, 9, 10, 5, 10, 1, 2, 3, 8, 2, 4, 2, 6, 8, 1, 2, 3, 5, 7, 9, 1, 1, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 7, 8, 9, 6, 10, 10, 7, 2, 3, 4, 6, 7, 5, 9, 1, 2, 3, 4, 8, 1, 2, 3, 4, 5, 6, 7, 8, 9, 5, 8, 1, 5, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 10, 1, 2, 3, 10, 1, 2, 3, 4, 1, 2, 3, 5, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 8, 9, 1, 2, 3, 4, 5, 6, 9, 6, 9, 1, 1, 3, 6, 7, 1, 10, 1, 9, 1, 2, 3, 4, 5, 6, 8, 9, 10, 3, 6, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 9, 1, 2, 3, 4, 5, 6, 7, 8, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 4, 5, 6, 1, 2, 3, 4, 5, 6, 7, 8, 9, 3, 8, 2, 4, 5, 6, 1, 2, 3, 4, 5, 6, 7, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8, 9, 4, 6, 9, 10, 1, 2, 3, 5, 7, 9, 9, 6, 4, 7, 8, 9, 1, 2, 4, 5, 1, 1, 4, 5, 1, 2, 3, 4, 6, 9, 10, 1, 3, 4, 5, 6, 7, 9, 10, 3, 8, 8, 1, 2, 3, 4, 5, 6, 8, 9, 10, 1, 2, 4, 5, 7, 9, 10, 5, 10, 1, 1, 2, 3, 4, 7, 3, 4, 5, 6, 7, 9, 2, 2, 4, 3, 4, 6, 8, 2, 5, 8, 10, 2, 6, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 5, 1, 2, 3, 5, 6, 8, 1, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 1, 2, 3, 4, 1, 2, 4, 5, 6, 7, 1, 2, 3, 4, 5, 6, 9, 1, 3, 7, 9, 1, 2, 3, 4, 5, 6, 7, 8, 2, 9, 1, 2, 5, 6, 10, 4, 5, 1, 2, 5, 7, 9, 10, 1, 2, 5, 7, 9, 1, 2, 1, 6, 10, 3, 7, 9, 3, 7, 1, 2, 3, 5, 8, 9, 5, 9, 4, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 4, 1, 8, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 6, 9, 3, 9, 4, 6, 10, 7, 10, 4, 8, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 9, 1, 2, 3, 5, 6, 8, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 3, 10, 3, 4, 7, 3, 1, 2, 3, 4, 5, 6, 7, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9, 8, 1, 2, 3, 4, 5, 6, 1, 10, 1, 2, 3, 5, 1, 2, 3, 7, 2, 3, 4, 5, 6, 8, 9, 1, 7, 1, 2, 3, 4, 5, 6, 9, 1, 2, 3, 5, 8, 9, 1, 2, 3, 4, 5, 6, 8, 9, 10, 1, 3, 4, 6, 8, 3, 2, 3, 6, 4, 7, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 4, 5, 6, 7, 9, 1, 2, 5, 1, 2, 3, 4, 5, 6, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 3, 4, 9, 4, 1, 3, 4, 6, 8, 9, 3, 1, 2, 4, 7, 6, 6, 5, 5, 7, 4, 4, 1, 2, 3, 4, 5, 6, 7, 4, 5, 6, 1, 2, 4, 5, 7, 8, 1, 3, 5, 8, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 8, 10, 8, 1, 2, 3, 4, 5, 6, 7, 9, 1, 2, 3, 4, 8, 9, 10, 2, 3, 5, 3, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9, 3, 4, 9, 5, 6, 9, 1, 5, 7, 10, 2, 5, 8, 9, 8, 1, 3, 6, 8, 1, 6, 1, 3, 4, 5, 9, 2, 3, 4, 5, 7, 8, 10, 9, 1, 2, 3, 4, 5, 7, 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8, 5, 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 4, 2, 9, 1, 7, 1, 2, 3, 4, 5, 6, 8, 9, 2, 3, 9, 10, 10, 1, 8, 1, 2, 3, 4, 5, 8, 4], "Freq": [0.9815853834152222, 0.05046379566192627, 0.933580219745636, 0.012615948915481567, 0.9618833065032959, 0.0267635527998209, 0.869815468788147, 0.0535271055996418, 0.040145330131053925, 0.21890506148338318, 0.3409177362918854, 0.06997784972190857, 0.10048101097345352, 0.04665189981460571, 0.043063290417194366, 0.18122468888759613, 0.9941893815994263, 0.9421698451042175, 0.026919137686491013, 0.1825578510761261, 0.060852617025375366, 0.045639462769031525, 0.040568411350250244, 0.5831708908081055, 0.050710514187812805, 0.035497359931468964, 0.9775076508522034, 0.9702793955802917, 0.9669377207756042, 0.3023504614830017, 0.1331358253955841, 0.11789126694202423, 0.052847810089588165, 0.3628205358982086, 0.002032608026638627, 0.023374993354082108, 0.005589672364294529, 0.9897535443305969, 0.040621381253004074, 0.9342917799949646, 0.8977259993553162, 0.9539217352867126, 0.026497825980186462, 0.5377621054649353, 0.0036833020858466625, 0.37348684668540955, 0.012523227371275425, 0.01915317215025425, 0.007366604171693325, 0.02283647283911705, 0.02209981344640255, 0.017726676538586617, 0.332375168800354, 0.6425920128822327, 0.004431669134646654, 0.02781333401799202, 0.01390666700899601, 0.7648667097091675, 0.1761511266231537, 0.018542222678661346, 0.06636211276054382, 0.8697265982627869, 0.020419113337993622, 0.0006380972918123007, 0.010209556668996811, 0.0057428753934800625, 0.02743818238377571, 0.062157656997442245, 0.05126872658729553, 0.07350029796361923, 0.10480597615242004, 0.022685276344418526, 0.07576882094144821, 0.0027222333010286093, 0.02631492167711258, 0.5807430744171143, 0.9748384356498718, 0.015723200514912605, 0.9239704608917236, 0.9295343160629272, 0.9729074239730835, 0.023826302960515022, 0.09382409602403641, 0.08131421357393265, 0.043784577399492264, 0.41751721501350403, 0.07975047826766968, 0.2658349275588989, 0.0156373493373394, 0.94803786277771, 0.9868704080581665, 0.985380232334137, 0.12969647347927094, 0.12004963308572769, 0.050377972424030304, 0.11040278524160385, 0.5080671906471252, 0.07824663817882538, 0.002143743447959423, 0.9816053509712219, 0.0046211713925004005, 0.3650725185871124, 0.1987103670835495, 0.08318108320236206, 0.33272433280944824, 0.013863514177501202, 0.02571607194840908, 0.9514946341514587, 0.14171987771987915, 0.7994157671928406, 0.03991294279694557, 0.018510350957512856, 0.0005784484674222767, 0.04742861166596413, 0.6762968897819519, 0.010539691895246506, 0.21079383790493011, 0.05445507541298866, 0.9176898002624512, 0.9678102135658264, 0.2933014929294586, 0.013331886380910873, 0.09332320094108582, 0.04666160047054291, 0.5466073155403137, 0.15954844653606415, 0.12176065146923065, 0.10916472226381302, 0.029390502721071243, 0.05038371682167053, 0.5290290117263794, 0.11160001158714294, 0.06696000695228577, 0.8035200834274292, 0.9836378693580627, 0.15709041059017181, 0.55277419090271, 0.030892256647348404, 0.1202826127409935, 0.04535246267914772, 0.015774769708514214, 0.03943692147731781, 0.038779642432928085, 0.9252865314483643, 0.06470534950494766, 0.9335089921951294, 0.9741633534431458, 0.027876807376742363, 0.12823331356048584, 0.8307288885116577, 0.011150723323225975, 0.36222371459007263, 0.28189796209335327, 0.10154388844966888, 0.024249285459518433, 0.11139515787363052, 0.0378895103931427, 0.020460335537791252, 0.05910763517022133, 0.000757790170609951, 0.21735844016075134, 0.4986233115196228, 0.07347327470779419, 0.024491092190146446, 0.14388516545295715, 0.03597129136323929, 0.0034440597519278526, 0.0026787130627781153, 0.06560134887695312, 0.4116927981376648, 0.062055330723524094, 0.19786785542964935, 0.07340259104967117, 0.05496329069137573, 0.0021276113111525774, 0.004964426625519991, 0.12730208039283752, 0.08144962042570114, 0.2819409966468811, 0.1253071129322052, 0.01253071054816246, 0.05638819932937622, 0.4323095381259918, 0.2256542593240738, 0.1603332906961441, 0.06175800785422325, 0.11876539885997772, 0.1235160157084465, 0.0997629314661026, 0.178148090839386, 0.013064193539321423, 0.015439501963555813, 0.0011876539792865515, 0.03536537289619446, 0.9136054515838623, 0.04715382680296898, 0.1443357765674591, 0.14007270336151123, 0.004263082053512335, 0.30146080255508423, 0.23568753898143768, 0.005481105297803879, 0.04750291258096695, 0.009744187816977501, 0.11084013432264328, 0.9671350717544556, 0.9260591864585876, 0.03858580067753792, 0.9747701287269592, 0.014548808336257935, 0.9488525390625, 0.06067758798599243, 0.14002519845962524, 0.6907910108566284, 0.10268514603376389, 0.3225138485431671, 0.016125692054629326, 0.6611533761024475, 0.07256647944450378, 0.07982312887907028, 0.002902659121900797, 0.1436816304922104, 0.12481434643268585, 0.5747265219688416, 0.14007778465747833, 0.09982554614543915, 0.07728429138660431, 0.10948608070611954, 0.3123573660850525, 0.012880715541541576, 0.019321072846651077, 0.10465581715106964, 0.12397688627243042, 0.9750614762306213, 0.009611892513930798, 0.9735474586486816, 0.001373127568513155, 0.01373127568513155, 0.0520939901471138, 0.0260469950735569, 0.8855978846549988, 0.9315754771232605, 0.2623373568058014, 0.05069321021437645, 0.15461428463459015, 0.14194099605083466, 0.08110913634300232, 0.3092285692691803, 0.08587858825922012, 0.9078593850135803, 0.930905282497406, 0.0688452199101448, 0.8949878215789795, 0.08561413735151291, 0.9116749167442322, 0.05033879354596138, 0.936301589012146, 0.010067759081721306, 0.2049223780632019, 0.03659328073263168, 0.04391193762421608, 0.014637312851846218, 0.6513604521751404, 0.03659328073263168, 0.07135136425495148, 0.08580227196216583, 0.26734182238578796, 0.21044136583805084, 0.0325145460665226, 0.312500923871994, 0.01896681822836399, 0.06994994729757309, 0.11044728010892868, 0.011044727638363838, 0.12149200588464737, 0.03681575879454613, 0.033134184777736664, 0.6185047626495361, 0.01781400665640831, 0.3719564378261566, 0.11876004189252853, 0.03776569291949272, 0.031827691942453384, 0.03824073076248169, 0.0014251205138862133, 0.008788242936134338, 0.3731440305709839, 0.9643396735191345, 0.07390118390321732, 0.12668775022029877, 0.08445850014686584, 0.12668775022029877, 0.5560184121131897, 0.03167193755507469, 0.0035191040951758623, 0.303136944770813, 0.6634695529937744, 0.028597824275493622, 0.02950449287891388, 0.039339322596788406, 0.24587078392505646, 0.07867864519357681, 0.05900898575782776, 0.5409157276153564, 0.9210684895515442, 0.07368547469377518, 0.9806981682777405, 0.02428315207362175, 0.8401970267295837, 0.03399641066789627, 0.08741934597492218, 0.014569890685379505, 0.9340581893920898, 0.12002871930599213, 0.24501730501651764, 0.11308491230010986, 0.3213992118835449, 0.10812504589557648, 0.020831430330872536, 0.036702997982501984, 0.010911702178418636, 0.02281537652015686, 0.04025641083717346, 0.10818909853696823, 0.0012580128386616707, 0.3723717927932739, 0.0025160256773233414, 0.4679807424545288, 0.005032051354646683, 0.0025160256773233414, 0.9565189480781555, 0.018061663955450058, 0.1264316439628601, 0.8308365941047668, 0.9756841063499451, 0.1979043185710907, 0.7677322626113892, 0.00341214332729578, 0.023885004222393036, 0.00682428665459156, 0.013166481629014015, 0.9414034485816956, 0.013166481629014015, 0.02633296325802803, 0.9796314835548401, 0.9769152998924255, 0.9909455180168152, 0.2325485646724701, 0.12118728458881378, 0.13428860902786255, 0.05240531265735626, 0.4585464894771576, 0.046447787433862686, 0.8825079798698425, 0.026729343459010124, 0.6352149844169617, 0.018867772072553635, 0.1242128387093544, 0.01572314277291298, 0.16194838285446167, 0.006289257667958736, 0.009433886036276817, 0.21524952352046967, 0.1108374372124672, 0.13653887808322906, 0.4562004804611206, 0.04176483303308487, 0.03855215385556221, 0.029095616191625595, 0.09456075727939606, 0.018184760585427284, 0.8546837568283081, 0.01633918657898903, 0.010892790742218494, 0.9694583415985107, 0.12505242228507996, 0.0778103917837143, 0.22509436309337616, 0.008336828090250492, 0.48075708746910095, 0.005557885393500328, 0.0778103917837143, 0.882853627204895, 0.10766507685184479, 0.22028370201587677, 0.1558852195739746, 0.3311921954154968, 0.12164157629013062, 0.07155387103557587, 0.0413990244269371, 0.03679913282394409, 0.014310773462057114, 0.00664428761228919, 0.8574792742729187, 0.11184512078762054, 0.05025416985154152, 0.9380778074264526, 0.22341109812259674, 0.5846271514892578, 0.04802294448018074, 0.07934226095676422, 0.06263862550258636, 0.32745561003685, 0.06419426947832108, 0.06095213443040848, 0.3812750577926636, 0.0538194365799427, 0.07586595416069031, 0.02917921356856823, 0.006484269630163908, 0.25292518734931946, 0.4163411259651184, 0.1437074840068817, 0.023814383894205093, 0.06815841048955917, 0.024635568261146545, 0.04762876778841019, 0.006569485180079937, 0.01642371341586113, 0.07200631499290466, 0.045003946870565414, 0.12601104378700256, 0.6390560269355774, 0.009000789374113083, 0.07560662925243378, 0.03240284323692322, 0.9722443222999573, 0.026814384385943413, 0.911689043045044, 0.053628768771886826, 0.9421083927154541, 0.03248649463057518, 0.7991070747375488, 0.027839859947562218, 0.06186635419726372, 0.04227534309029579, 0.0041244239546358585, 0.048461977392435074, 0.012373271398246288, 0.005155529826879501, 0.9594252109527588, 0.9843332171440125, 0.9910978078842163, 0.041931942105293274, 0.14676180481910706, 0.2446030080318451, 0.5154134631156921, 0.005241492763161659, 0.02970179356634617, 0.013977314345538616, 0.8432502746582031, 0.008404487743973732, 0.008404487743973732, 0.14007480442523956, 0.964580237865448, 0.013213427737355232, 0.14940586686134338, 0.04980195686221123, 0.7968313097953796, 0.11228743940591812, 0.1641124188899994, 0.7169121503829956, 0.9843452572822571, 0.9717925786972046, 0.9723760485649109, 0.9576533436775208, 0.0363091304898262, 0.03280219808220863, 0.01874411292374134, 0.7825666666030884, 0.028116168454289436, 0.05623233690857887, 0.02343014068901539, 0.06091836467385292, 0.9786956906318665, 0.08014773577451706, 0.8816250562667847, 0.9813520908355713, 0.9417583346366882, 0.2028036117553711, 0.10691738873720169, 0.025456519797444344, 0.09673477709293365, 0.031396374106407166, 0.4429434537887573, 0.0415789820253849, 0.05091303959488869, 0.9910947680473328, 0.9388854503631592, 0.9725540280342102, 0.9425959587097168, 0.09473315626382828, 0.027066616341471672, 0.8661317229270935, 0.9890896677970886, 0.5883198380470276, 0.03804468363523483, 0.18237915635108948, 0.05255657061934471, 0.06942173838615417, 0.022748367860913277, 0.012550823390483856, 0.020787300541996956, 0.012550823390483856, 0.26136258244514465, 0.1383684277534485, 0.14989912509918213, 0.007687135133892298, 0.16527339816093445, 0.276736855506897, 0.9296399354934692, 0.9714488983154297, 0.9912015199661255, 0.9712963104248047, 0.22014808654785156, 0.03959497809410095, 0.6477738618850708, 0.04909777268767357, 0.0031675982754677534, 0.03167598322033882, 0.007918995805084705, 0.9523847699165344, 0.0018712003948166966, 0.7671921253204346, 0.06174961104989052, 0.013098401948809624, 0.13285522162914276, 0.014969603158533573, 0.0056136008352041245, 0.0056136008352041245, 0.9795703887939453, 0.9717260003089905, 0.9507603049278259, 0.9786385893821716, 0.0620645135641098, 0.9309676885604858, 0.9265865087509155, 0.3191272020339966, 0.01841118559241295, 0.1350153535604477, 0.11046711355447769, 0.05318786948919296, 0.12683260440826416, 0.21275147795677185, 0.012274123728275299, 0.014319811016321182, 0.0033928724005818367, 0.27369171380996704, 0.326846718788147, 0.018095320090651512, 0.07803606241941452, 0.21940575540065765, 0.06333361566066742, 0.015833403915166855, 0.9678670763969421, 0.1486188918352127, 0.8263210654258728, 0.023779023438692093, 0.9827526807785034, 0.14197827875614166, 0.09127175807952881, 0.25353264808654785, 0.5104457139968872, 0.523636519908905, 0.09435707330703735, 0.0982760563492775, 0.06421104073524475, 0.06270373612642288, 0.10671693831682205, 0.015374474227428436, 0.005426285322755575, 0.018991997465491295, 0.009948189370334148, 0.8548840880393982, 0.002937746001407504, 0.011750984005630016, 0.03819069638848305, 0.002937746001407504, 0.02937745861709118, 0.06169266626238823, 0.9581932425498962, 0.026251869276165962, 0.07871468365192413, 0.8920997381210327, 0.17475250363349915, 0.7988685369491577, 0.26730552315711975, 0.01467862632125616, 0.07648336887359619, 0.002317677950486541, 0.04403587803244591, 0.17305327951908112, 0.4218173623085022, 0.9421533942222595, 0.9776226878166199, 0.648089587688446, 0.002919322345405817, 0.04962848126888275, 0.020435256883502007, 0.05644023045897484, 0.03892429918050766, 0.18294420838356018, 0.996277928352356, 0.9815892577171326, 0.01141382846981287, 0.09018699824810028, 0.02254674956202507, 0.04227515682578087, 0.18882903456687927, 0.0028183436952531338, 0.19164736568927765, 0.0028183436952531338, 0.4509349763393402, 0.0056366873905062675, 0.08629710972309113, 0.7248957753181458, 0.09862527251243591, 0.019725054502487183, 0.03698447719216347, 0.019725054502487183, 0.014793790876865387, 0.9262728095054626, 0.030875759199261665, 0.030875759199261665, 0.9734285473823547, 0.9843336343765259, 0.9769147038459778, 0.15805864334106445, 0.10942520946264267, 0.028369499370455742, 0.11347799748182297, 0.10131964087486267, 0.004052785690873861, 0.48633426427841187, 0.3262835443019867, 0.21911399066448212, 0.06366508454084396, 0.22229725122451782, 0.059951286762952805, 0.10345575958490372, 0.004244338721036911, 0.0005305423401296139, 0.9070184230804443, 0.1770744025707245, 0.07905106991529465, 0.6387326717376709, 0.018972257152199745, 0.08221311122179031, 0.8112540245056152, 0.09110338985919952, 0.01193020585924387, 0.01193020585924387, 0.07375036180019379, 0.8833208680152893, 0.30009764432907104, 0.04840284585952759, 0.058083415031433105, 0.13552796840667725, 0.4453061819076538, 0.2549314498901367, 0.0038049472495913506, 0.7419646978378296, 0.06680802255868912, 0.09110185503959656, 0.7774024605751038, 0.03644074127078056, 0.030367283150553703, 0.9750373363494873, 0.1901048719882965, 0.13035762310028076, 0.6698933839797974, 0.009052612818777561, 0.9853330254554749, 0.9638611674308777, 0.9811535477638245, 0.02151070348918438, 0.9679816961288452, 0.9764453768730164, 0.1039755791425705, 0.8664631843566895, 0.9653730988502502, 0.9394391775131226, 0.05267883092164993, 0.9740947484970093, 0.3077777624130249, 0.6898466944694519, 0.9843780994415283, 0.8606759309768677, 0.13149215281009674, 0.9634725451469421, 0.5177611112594604, 0.10041630268096924, 0.09574577957391739, 0.07973254472017288, 0.03536255285143852, 0.13911494612693787, 0.03169285133481026, 0.9854670166969299, 0.6322178244590759, 0.05308699235320091, 0.13298559188842773, 0.03485509380698204, 0.058449313044548035, 0.048260901123285294, 0.0252029150724411, 0.009115948341786861, 0.005362322553992271, 0.6193563342094421, 0.04106229543685913, 0.126608744263649, 0.036662764847278595, 0.027863701805472374, 0.0415511317551136, 0.014665106311440468, 0.05083903297781944, 0.03128555789589882, 0.010754411108791828, 0.26385483145713806, 0.3291167914867401, 0.09122640639543533, 0.03578881919384003, 0.19718939065933228, 0.008420898579061031, 0.021052246913313866, 0.05263061821460724, 0.9891497492790222, 0.7431823015213013, 0.02379089780151844, 0.09516359120607376, 0.07477138936519623, 0.038518596440553665, 0.01132899895310402, 0.001132899895310402, 0.012461898848414421, 0.9565656185150146, 0.5514639616012573, 0.03404098376631737, 0.3033429980278015, 0.019668124616146088, 0.021937523037195206, 0.0635431706905365, 0.0007564662955701351, 0.0030258651822805405, 0.0015129325911402702, 0.4259253442287445, 0.2775877118110657, 0.058898769319057465, 0.07525953650474548, 0.047991588711738586, 0.07907705008983612, 0.019087564200162888, 0.007089666556566954, 0.009271102026104927, 0.06887960433959961, 0.9183947443962097, 0.09163907170295715, 0.5803807973861694, 0.12480369210243225, 0.00872753094881773, 0.1946239322423935, 0.37840908765792847, 0.07648693770170212, 0.0362306572496891, 0.0684356838464737, 0.054345984011888504, 0.0684356838464737, 0.04226909950375557, 0.27575555443763733, 0.1672988384962082, 0.06041347235441208, 0.06970784813165665, 0.1456119567155838, 0.057315342128276825, 0.4879549443721771, 0.003098126733675599, 0.006196253467351198, 0.7323410511016846, 0.01096553448587656, 0.13706918060779572, 0.0011748786782845855, 0.013706917874515057, 0.03133009746670723, 0.019189685583114624, 0.048953279852867126, 0.005874393507838249, 0.021839166060090065, 0.8790264129638672, 0.03275875002145767, 0.06551750004291534, 0.9297266602516174, 0.007620710413902998, 0.015241420827805996, 0.04572426527738571, 0.9869542717933655, 0.9478415846824646, 0.049366749823093414, 0.6695123910903931, 0.033052850514650345, 0.20907850563526154, 0.0007686709286645055, 0.026134813204407692, 0.049963612109422684, 0.00845538079738617, 0.003074683714658022, 0.21437151730060577, 0.28280937671661377, 0.06038634106516838, 0.10970185697078705, 0.006038634106516838, 0.06743141263723373, 0.23852604627609253, 0.01912234164774418, 0.9873701333999634, 0.1298886090517044, 0.6965276598930359, 0.01136525347828865, 0.08036857843399048, 0.01948329247534275, 0.0008118037949316204, 0.0032472151797264814, 0.0016236075898632407, 0.0487082302570343, 0.007306234445422888, 0.14430706202983856, 0.013034186325967312, 0.1787545531988144, 0.06517092883586884, 0.028861412778496742, 0.020482292398810387, 0.008379119448363781, 0.5399877429008484, 0.07990576326847076, 0.016822265461087227, 0.029438966885209084, 0.029438966885209084, 0.6602739691734314, 0.13878369331359863, 0.012616699561476707, 0.033644530922174454, 0.23400470614433289, 0.13547641038894653, 0.24632075428962708, 0.0035188677720725536, 0.35012733936309814, 0.015834905207157135, 0.014075471088290215, 0.1300317496061325, 0.04364079236984253, 0.04542204737663269, 0.05700021609663963, 0.016031311824917793, 0.23690715432167053, 0.464017391204834, 0.007125027012079954, 0.3157912790775299, 0.022238822653889656, 0.06671646982431412, 0.5871049165725708, 0.36998045444488525, 0.04439765587449074, 0.33594226837158203, 0.10655437409877777, 0.08657542616128922, 0.045137614011764526, 0.005919687449932098, 0.002959843724966049, 0.002219882793724537, 0.9878683090209961, 0.9821416735649109, 0.9792363047599792, 0.9918484687805176, 0.263577401638031, 0.3285619914531708, 0.03275222331285477, 0.06498456746339798, 0.25473952293395996, 0.028073333203792572, 0.003119259374216199, 0.019235432147979736, 0.00519876554608345, 0.001333038555458188, 0.2079540193080902, 0.20262186229228973, 0.565208375453949, 0.006665193010121584, 0.014663424342870712, 0.028097931295633316, 0.1748315691947937, 0.08117179572582245, 0.1654655933380127, 0.14048965275287628, 0.040585897862911224, 0.3715170919895172, 0.9694572687149048, 0.025072170421481133, 0.07973002642393112, 0.8770303130149841, 0.03986501321196556, 0.03694332763552666, 0.01420897152274847, 0.6877142190933228, 0.022734355181455612, 0.09093742072582245, 0.022734355181455612, 0.12219715863466263, 0.3426896929740906, 0.07412409782409668, 0.03330213204026222, 0.3410782814025879, 0.08056967705488205, 0.09238655865192413, 0.006982705090194941, 0.027930820360779762, 0.0010742623126134276, 0.11829932779073715, 0.3726428747177124, 0.014787415973842144, 0.4820697605609894, 0.011829933151602745, 0.05245661363005638, 0.9179907441139221, 0.9459381699562073, 0.9829419255256653, 0.020921800285577774, 0.05464281886816025, 0.7332475185394287, 0.08737927675247192, 0.01870655082166195, 0.0024613882414996624, 0.0014768328983336687, 0.010583968833088875, 0.07064183801412582, 0.3591330349445343, 0.11695586889982224, 0.22151359915733337, 0.08844012767076492, 0.005785802844911814, 0.024796297773718834, 0.004959259647876024, 0.17109444737434387, 0.007438889238983393, 0.9220453500747681, 0.03152291849255562, 0.03940364718437195, 0.9005524516105652, 0.06280621141195297, 0.8112468719482422, 0.06804006546735764, 0.005233850795775652, 0.04710466042160988, 0.35841768980026245, 0.10448786616325378, 0.07836589962244034, 0.03644925728440285, 0.13060984015464783, 0.22294795513153076, 0.007897338829934597, 0.02186955325305462, 0.038271717727184296, 0.19113807380199432, 0.15747329592704773, 0.20755313336849213, 0.03922921419143677, 0.33609139919281006, 0.02142304554581642, 0.04312431067228317, 0.004173320718109608, 0.32686978578567505, 0.02117595076560974, 0.27854520082473755, 0.03855108842253685, 0.12651273608207703, 0.16397787630558014, 0.030949465930461884, 0.0135743273422122, 0.32286176085472107, 0.07569923251867294, 0.13498175144195557, 0.07569923251867294, 0.18240778148174286, 0.20657680928707123, 0.000912038900423795, 0.0004560194502118975, 0.9089376926422119, 0.8972087502479553, 0.002068715402856469, 0.8812727928161621, 0.025858944281935692, 0.08998912572860718, 0.04751904308795929, 0.1267174482345581, 0.09503808617591858, 0.7127856612205505, 0.1369190365076065, 0.4028579294681549, 0.0008776860777288675, 0.06056034192442894, 0.045639678835868835, 0.20099012553691864, 0.029841328039765358, 0.024575211107730865, 0.09830084443092346, 0.029360800981521606, 0.9689064025878906, 0.1846069097518921, 0.4312939941883087, 0.10618980973958969, 0.13477937877178192, 0.04819383844733238, 0.08413500338792801, 0.010618980973958969, 0.04423418268561363, 0.059846244752407074, 0.3629804849624634, 0.5321111679077148, 0.0013010053662583232, 0.8379172682762146, 0.030717946588993073, 0.00511965760961175, 0.07850141823291779, 0.0034131051506847143, 0.023891735821962357, 0.018772078678011894, 0.0017065525753423572, 0.4453153908252716, 0.11453119665384293, 0.053498126566410065, 0.09343335032463074, 0.022604841738939285, 0.053498126566410065, 0.010548925958573818, 0.10548926144838333, 0.10096829384565353, 0.9588016867637634, 0.9788063168525696, 0.9660616517066956, 0.01583707705140114, 0.9890537261962891, 0.9690569639205933, 0.9845453500747681, 0.29497256875038147, 0.3950953781604767, 0.10072234272956848, 0.001199075486510992, 0.08393528312444687, 0.06774776428937912, 0.0425671823322773, 0.004796301946043968, 0.008993065916001797, 0.8321693539619446, 0.004606103524565697, 0.10747574269771576, 0.005373787134885788, 0.03608114272356033, 0.009212207049131393, 0.005373787134885788, 0.9815808534622192, 0.8661079406738281, 0.9684849381446838, 0.0013231082120910287, 0.5702596306800842, 0.03175459802150726, 0.01058486569672823, 0.3850244879722595, 0.13519610464572906, 0.028841836377978325, 0.33528634905815125, 0.07661113142967224, 0.10545296221971512, 0.2739974558353424, 0.005407844204455614, 0.0018026147736236453, 0.036953601986169815, 0.4921070337295532, 0.013797393068671227, 0.009198262356221676, 0.009198262356221676, 0.004599131178110838, 0.009198262356221676, 0.40472355484962463, 0.05978870391845703, 0.13249380886554718, 0.1306188851594925, 0.1931159645318985, 0.3131103515625, 0.056247368454933167, 0.09374561905860901, 0.011874444782733917, 0.024998830631375313, 0.04124807193875313, 0.0018749122973531485, 0.026911890134215355, 0.07176504284143448, 0.044853150844573975, 0.1794126033782959, 0.6727972626686096, 0.27544283866882324, 0.26002877950668335, 0.1139301285147667, 0.01541407685726881, 0.2948779761791229, 0.03082815371453762, 0.009382481686770916, 0.14017167687416077, 0.2548575699329376, 0.04842294007539749, 0.5453951954841614, 0.010194303467869759, 0.8993369936943054, 0.9296575784683228, 0.9417675137519836, 0.18292824923992157, 0.8122014403343201, 0.07483398169279099, 0.06547973304986954, 0.8512365221977234, 0.14636576175689697, 0.09665663540363312, 0.10770311206579208, 0.12151119858026505, 0.06489802896976471, 0.4377164840698242, 0.00414242735132575, 0.013808091171085835, 0.006904045585542917, 0.9774103164672852, 0.755693793296814, 0.14711251854896545, 0.007742763962596655, 0.05729645490646362, 0.026325397193431854, 0.004645658656954765, 0.9535074234008789, 0.03440522402524948, 0.031277477741241455, 0.6411883234977722, 0.09383243322372437, 0.031277477741241455, 0.021894235163927078, 0.04066072031855583, 0.05004396662116051, 0.05629945918917656, 0.01680632121860981, 0.9747666716575623, 0.9881836771965027, 0.09300433099269867, 0.01924227550625801, 0.8723164796829224, 0.016035228967666626, 0.992673933506012, 0.11384566873311996, 0.7334647178649902, 0.11944463104009628, 0.013064256869256496, 0.018663223832845688, 0.9252655506134033, 0.9318474531173706, 0.9587615728378296, 0.9375605583190918, 0.08051934093236923, 0.885712742805481, 0.3117298483848572, 0.062145501375198364, 0.11677340418100357, 0.3463108241558075, 0.05462789908051491, 0.07617835700511932, 0.004009386990219355, 0.014534028246998787, 0.013531682081520557, 0.8753822445869446, 0.070030577480793, 0.0408511720597744, 0.00583588145673275, 0.982792317867279, 0.9447628855705261, 0.09291122108697891, 0.046455610543489456, 0.10839642584323883, 0.030970407649874687, 0.06968341767787933, 0.046455610543489456, 0.5806951522827148, 0.007742601912468672, 0.972690761089325, 0.9440948367118835, 0.9830594658851624, 0.2772054076194763, 0.05429796874523163, 0.1371738165616989, 0.09144920855760574, 0.42866817116737366, 0.008573363535106182, 0.9736897349357605, 0.9809485673904419, 0.9796131253242493, 0.9879922866821289, 0.9852517247200012, 0.9983747601509094, 0.9945977330207825, 0.9769116044044495, 0.014646806754171848, 0.2197020947933197, 0.7616339325904846, 0.02243373729288578, 0.11044301092624664, 0.11734569817781448, 0.13115108013153076, 0.24849677085876465, 0.07765524089336395, 0.07075255364179611, 0.0345134399831295, 0.1880982518196106, 0.977957546710968, 0.0632452666759491, 0.09135428071022034, 0.1405450403690338, 0.1405450403690338, 0.02108175680041313, 0.534071147441864, 0.049329739063978195, 0.9126001596450806, 0.13595670461654663, 0.1189621165394783, 0.7477618455886841, 0.9794594049453735, 0.9556729197502136, 0.40302157402038574, 0.05840892717242241, 0.2566342055797577, 0.11499257385730743, 0.11061190068721771, 0.045997027307748795, 0.0007301115547306836, 0.0032855020835995674, 0.006571004167199135, 0.9719425439834595, 0.4220023453235626, 0.4177611172199249, 0.025447377935051918, 0.02014584094285965, 0.0063618444837629795, 0.014844303019344807, 0.07740243524312973, 0.014844303019344807, 0.24949833750724792, 0.14399617910385132, 0.045622553676366806, 0.48046252131462097, 0.011405638419091702, 0.03136550635099411, 0.03991973400115967, 0.9815465807914734, 0.932766854763031, 0.04783419519662857, 0.9561699628829956, 0.103095643222332, 0.04510434344410896, 0.753886878490448, 0.03221738710999489, 0.009665216319262981, 0.051547821611166, 0.9230732917785645, 0.9986304044723511, 0.9738459587097168, 0.924807608127594, 0.973116934299469, 0.014310543425381184, 0.27224114537239075, 0.060410287231206894, 0.4461674988269806, 0.1064089760184288, 0.07916511595249176, 0.014214185997843742, 0.008094188757240772, 0.009081285446882248, 0.004343223292380571, 0.1170903816819191, 0.2610539495944977, 0.005758543498814106, 0.5451421141624451, 0.047987859696149826, 0.021114658564329147, 0.09932715445756912, 0.10835690051317215, 0.022574353963136673, 0.09932715445756912, 0.03611896559596062, 0.03611896559596062, 0.5869331955909729, 0.473857581615448, 0.12455149739980698, 0.1938508301973343, 0.07304523885250092, 0.0009364773868583143, 0.011237729340791702, 0.12080558389425278, 0.0009364773868583143, 0.6856848001480103, 0.011161182075738907, 0.15261703729629517, 0.011889085173606873, 0.051923759281635284, 0.06915080547332764, 0.009948010556399822, 0.007279031910002232, 0.9883766174316406, 0.38672658801078796, 0.06198727712035179, 0.15820634365081787, 0.0767902135848999, 0.10177015513181686, 0.037932515144348145, 0.0037007329519838095, 0.10639607161283493, 0.06568801403045654, 0.2913855314254761, 0.2003275603055954, 0.4962660074234009, 0.009105797857046127, 0.776581346988678, 0.13117928802967072, 0.0892019122838974, 0.8770482540130615, 0.9916072487831116, 0.03774043917655945, 0.021565966308116913, 0.16174474358558655, 0.6955024003982544, 0.021565966308116913, 0.05930640548467636, 0.47385093569755554, 0.0768703743815422, 0.11201111972332001, 0.12409074604511261, 0.047769445925951004, 0.12463982403278351, 0.009883333928883076, 0.022512037307024002, 0.007687037345021963, 0.5062004327774048, 0.07901351898908615, 0.13297396898269653, 0.010278181172907352, 0.029549770057201385, 0.1021394208073616, 0.02119874767959118, 0.005139090586453676, 0.11305999010801315, 0.0006423863233067095, 0.9709407091140747, 0.027741162106394768, 0.769982635974884, 0.07509583979845047, 0.06408178061246872, 0.01602044515311718, 0.05707283690571785, 0.007008944638073444, 0.011014056392014027, 0.1849198043346405, 0.14639483392238617, 0.0308199655264616, 0.16565731167793274, 0.046229951083660126, 0.13868984580039978, 0.28508469462394714, 0.024825628846883774, 0.18619221448898315, 0.13964416086673737, 0.015516018494963646, 0.06516727805137634, 0.5585766434669495, 0.0031032036058604717, 0.0062064072117209435, 0.3493010103702545, 0.2380620688199997, 0.14267602562904358, 0.12601704895496368, 0.041916120797395706, 0.03493009880185127, 0.01692766323685646, 0.04137873277068138, 0.009135564789175987, 0.021522156894207, 0.7066441178321838, 0.07174052298069, 0.1793513000011444, 0.0179351307451725, 0.825727105140686, 0.015534663572907448, 0.027484405785799026, 0.03704419732093811, 0.05855373293161392, 0.00836481899023056, 0.027484405785799026, 0.017772266641259193, 0.9597024321556091, 0.27149319648742676, 0.006759166717529297, 0.6786203384399414, 0.013968944549560547, 0.01306772232055664, 0.004731416702270508, 0.011039972305297852, 0.0004506111145019531, 0.9637391567230225, 0.9796109795570374, 0.9867416024208069, 0.9345563054084778, 0.9920715689659119, 0.09538879990577698, 0.8631147742271423, 0.04154028370976448, 0.8863723874092102, 0.10085009038448334, 0.2334362268447876, 0.06770355999469757, 0.20028969645500183, 0.07264027744531631, 0.3152447044849396, 0.009873435832560062, 0.5337240099906921, 0.04478802904486656, 0.09704073518514633, 0.16262321174144745, 0.08797648549079895, 0.05011994019150734, 0.015995725989341736, 0.00746467150747776, 0.9132019281387329, 0.9564002752304077, 0.9943835735321045, 0.9793478846549988, 0.0070967236533761024, 0.0070967236533761024, 0.25854337215423584, 0.00456253020092845, 0.6478793025016785, 0.08516722917556763, 0.001520843361504376, 0.40760448575019836, 0.44770869612693787, 0.016041679307818413, 0.015312512405216694, 0.006562505383044481, 0.05468754470348358, 0.05177087336778641, 0.0007291672518476844, 0.9497209787368774, 0.03957170620560646, 0.9393578767776489, 0.9594236612319946, 0.9645585417747498, 0.9841780066490173, 0.014720611274242401, 0.051843881607055664, 0.025921940803527832, 0.8554240465164185, 0.051843881607055664, 0.9459961652755737, 0.8848045468330383, 0.10409465432167053, 0.10820295661687851, 0.10820295661687851, 0.7754545211791992, 0.9429641962051392, 0.03297077864408493, 0.01978246681392193, 0.5664324760437012, 0.00239001028239727, 0.00239001028239727, 0.09799042344093323, 0.052580226212739944, 0.023900102823972702, 0.22944098711013794, 0.023900102823972702, 0.9762927293777466, 0.9761714339256287, 0.974602460861206, 0.9555901288986206, 0.1461542546749115, 0.8452417254447937, 0.006132346112281084, 0.001022057724185288, 0.002044115448370576, 0.6552973985671997, 0.033873457461595535, 0.2063201516866684, 0.002463524229824543, 0.0541975311934948, 0.0061588105745613575, 0.0030794052872806787, 0.035721100866794586, 0.0030794052872806787, 0.12238121032714844, 0.8566684722900391, 0.9025808572769165, 0.9608923196792603, 0.9932577610015869, 0.962091863155365, 0.06913764774799347, 0.03361237421631813, 0.1983949989080429, 0.4498046338558197, 0.13089697062969208, 0.10848872363567352, 0.004645613022148609, 0.004918884020298719, 0.9392206072807312, 0.971080482006073, 0.28612831234931946, 0.07646532356739044, 0.06906545162200928, 0.4711250364780426, 0.0863318145275116, 0.012333116494119167, 0.9931353330612183, 0.8116246461868286, 0.002164332428947091, 0.004328664857894182, 0.03246498852968216, 0.03895798325538635, 0.028136322274804115, 0.06709430366754532, 0.012985995039343834, 0.08942672610282898, 0.048152852803468704, 0.7463692426681519, 0.04471336305141449, 0.017197448760271072, 0.013757958076894283, 0.03783438354730606, 0.9792593717575073, 0.01605343259871006, 0.9927836060523987, 0.5499975085258484, 0.11356491595506668, 0.06206454709172249, 0.1327124834060669, 0.04885932430624962, 0.07989159971475601, 0.001320522278547287, 0.01122443936765194, 0.9885040521621704, 0.982897162437439, 0.01045635249465704, 0.9748660326004028, 0.9622259736061096, 0.4435582160949707, 0.030040571466088295, 0.2302088737487793, 0.13610218465328217, 0.02421637810766697, 0.02574906125664711, 0.01869872212409973, 0.08307137340307236, 0.008889556862413883, 0.9862885475158691, 0.938829779624939, 0.984166145324707, 0.007399745285511017, 0.9779049754142761, 0.12801297008991241, 0.2109937071800232, 0.09967807680368423, 0.1841767579317093, 0.23629270493984222, 0.11435150355100632, 0.0025299005210399628, 0.0005059801042079926, 0.021251164376735687, 0.0025299005210399628, 0.9905494451522827, 0.1282283067703247, 0.8518022894859314, 0.009159164503216743, 0.31711891293525696, 0.03218876197934151, 0.49713754653930664, 0.014902204275131226, 0.02503570355474949, 0.07689537853002548, 0.002980440855026245, 0.0244396161288023, 0.008941322565078735, 0.9823077917098999, 0.9760813117027283, 0.2365267276763916, 0.2634047567844391, 0.1451413929462433, 0.07257069647312164, 0.26698848605155945, 0.00358373811468482, 0.006271542049944401, 0.004479672759771347, 0.9843306541442871, 0.20317545533180237, 0.14277194440364838, 0.038438599556684494, 0.027456142008304596, 0.5820702314376831, 0.6354275941848755, 0.11630014330148697, 0.08316434919834137, 0.02403969317674637, 0.014293871819972992, 0.09031128138303757, 0.032486073672771454, 0.001949164317920804, 0.001299442956224084, 0.9923597574234009, 0.9796126484870911, 0.9485046863555908, 0.9760194420814514, 0.9599637389183044, 0.021332528442144394, 0.009380150586366653, 0.9755356311798096, 0.037144798785448074, 0.11143440008163452, 0.8171855807304382, 0.9935576319694519, 0.9681700468063354, 0.19154322147369385, 0.0018778746016323566, 0.8056082129478455, 0.9165711998939514, 0.050920624285936356, 0.9645227193832397, 0.04816032946109772, 0.9471530914306641, 0.8936497569084167, 0.05305204540491104, 0.9018847346305847, 0.9947377443313599, 0.9764561057090759, 0.9745173454284668, 0.042649637907743454, 0.9240754842758179, 0.028433090075850487, 0.07864414900541306, 0.9122721552848816, 0.8417481184005737, 0.030779343098402023, 0.001338232308626175, 0.001338232308626175, 0.09769096225500107, 0.0267646461725235, 0.9158398509025574, 0.03452010080218315, 0.0460268035531044, 0.8745092749595642, 0.0230134017765522, 0.0115067008882761, 0.9859446287155151, 0.006707106251269579, 0.06578468531370163, 0.03947081044316292, 0.06578468531370163, 0.03947081044316292, 0.7236315608024597, 0.06578468531370163, 0.9607168436050415, 0.010674632154405117, 0.010674632154405117, 0.933329701423645, 0.04374983161687851, 0.9495683908462524, 0.9910451769828796, 0.07649780809879303, 0.10518448054790497, 0.8127892017364502, 0.6017467379570007, 0.018739517778158188, 0.039561204612255096, 0.0005205421475693583, 0.18843626976013184, 0.009890301153063774, 0.13898475468158722, 0.001561626442708075, 0.9787280559539795, 0.008857267908751965, 0.008857267908751965, 0.9870060682296753, 0.9671385884284973, 0.10399645566940308, 0.12543083727359772, 0.24054141342639923, 0.38423117995262146, 0.05795222148299217, 0.08811913430690765, 0.17419572174549103, 0.2647774815559387, 0.1486470103263855, 0.09754960238933563, 0.02787131443619728, 0.2833583652973175, 0.07139495760202408, 0.3115416169166565, 0.03245225176215172, 0.012980900704860687, 0.5646691918373108, 0.9425559043884277, 0.15373381972312927, 0.036172665655612946, 0.7957985997200012, 0.3003661036491394, 0.07292541861534119, 0.06137287989258766, 0.032491523772478104, 0.21299999952316284, 0.21227796375751495, 0.06498304754495621, 0.04043389856815338, 0.002166101709008217, 0.9795671105384827, 0.9894412755966187, 0.9745256304740906, 0.02206396870315075, 0.004412793554365635, 0.97081458568573, 0.9790216684341431, 0.9727405905723572, 0.099918894469738, 0.1788022369146347, 0.7152089476585388, 0.13964611291885376, 0.03491152822971344, 0.0075894626788794994, 0.03642942011356354, 0.7528746724128723, 0.0288399588316679, 0.9751555323600769, 0.811458945274353, 0.11435193568468094, 0.015393530018627644, 0.019791681319475174, 0.03958336263895035, 0.055678606033325195, 0.027839303016662598, 0.6681432723999023, 0.12179694324731827, 0.013919651508331299, 0.055678606033325195, 0.006959825754165649, 0.027839303016662598, 0.024359390139579773, 0.9394461512565613, 0.9713950753211975, 0.9893059730529785, 0.9922030568122864, 0.37902143597602844, 0.006534852087497711, 0.05227881669998169, 0.14376674592494965, 0.4182305335998535, 0.06322946399450302, 0.9273654818534851, 0.01943679340183735, 0.01943679340183735, 0.8843741416931152, 0.0680287778377533, 0.01943679340183735, 0.2882092297077179, 0.1586376577615738, 0.12817081809043884, 0.14778165519237518, 0.09770398586988449, 0.1243186891078949, 0.010155611671507359, 0.04202321916818619, 0.0031517413444817066, 0.9782239198684692, 0.9672813415527344, 0.33799177408218384, 0.09323911368846893, 0.0349646657705307, 0.5361248850822449, 0.40705740451812744, 0.03762715309858322, 0.0034206504933536053, 0.3694302439689636, 0.002280433662235737, 0.1254238486289978, 0.010261951014399529, 0.0034206504933536053, 0.03990758955478668, 0.024875037372112274, 0.38141724467277527, 0.08291678875684738, 0.5057924389839172, 0.04370875656604767, 0.7867576479911804, 0.09678367525339127, 0.06868518888950348, 0.8415348529815674, 0.04950205236673355, 0.030938781797885895, 0.06187756359577179, 0.015469390898942947, 0.16086813807487488, 0.21365299820899963, 0.12944857776165009, 0.00502712931483984, 0.3393312394618988, 0.11688075959682465, 0.028905993327498436, 0.00502712931483984, 0.00125678232870996, 0.26551952958106995, 0.17214110493659973, 0.08647654205560684, 0.08972448855638504, 0.01502174697816372, 0.35118407011032104, 0.00568390404805541, 0.004059931728988886, 0.010555822402238846, 0.4899882972240448, 0.10281882435083389, 0.12643271684646606, 0.058542776852846146, 0.008363253436982632, 0.14315922558307648, 0.06985776871442795, 0.0004919561324641109, 0.8177582025527954, 0.06425242871046066, 0.05646425858139992, 0.007788173388689756, 0.013629303313791752, 0.029205650091171265, 0.007788173388689756, 0.9548282027244568, 0.9456191658973694, 0.9922630786895752, 0.5047652721405029, 0.07386808842420578, 0.018467022106051445, 0.40011879801750183, 0.9750630855560303, 0.015235360711812973, 0.9914690256118774, 0.9210901260375977, 0.07692214846611023, 0.04793699085712433, 0.2842774987220764, 0.18617390096187592, 0.10033323615789413, 0.11928507685661316, 0.1393517255783081, 0.04236292466521263, 0.004459254909306765, 0.9488555192947388, 0.032164596021175385, 0.3121790885925293, 0.13657835125923157, 0.2420017421245575, 0.06514221429824829, 0.16490106284618378, 0.03933708369731903, 0.003776360070332885, 0.020455284044146538, 0.015420136973261833, 0.19362878799438477, 0.3450919985771179, 0.0066577233374118805, 0.07711862772703171, 0.20250575244426727, 0.14979876577854156, 0.003883671946823597, 0.021637599915266037, 0.05568839982151985, 0.07297100871801376, 0.1113767996430397, 0.21507245302200317, 0.2227535992860794, 0.040326084941625595, 0.19394925236701965, 0.08833332359790802, 0.9864733219146729, 0.022818606346845627, 0.2666516900062561, 0.15907828509807587, 0.11865674704313278, 0.15777435898780823, 0.05085289105772972, 0.22231841087341309, 0.0006519601447507739, 0.0013039202895015478, 0.11380160599946976, 0.06724639981985092, 0.24312160909175873, 0.49400240182876587, 0.080178402364254, 0.21518683433532715, 0.36534836888313293, 0.22122010588645935, 0.030836742371320724, 0.042903292924165726, 0.09251023083925247, 0.004022183828055859, 0.02346273884177208, 0.004022183828055859, 0.055444277822971344, 0.9333119988441467, 0.8508042693138123, 0.03999507427215576, 0.029087325558066368, 0.07635422796010971, 0.3243841230869293, 0.08289816230535507, 0.12614937126636505, 0.039646945893764496, 0.06487682461738586, 0.043251216411590576, 0.31717556715011597, 0.003604267956689, 0.1905907243490219, 0.20774851739406586, 0.030142083764076233, 0.39694806933403015, 0.09088997542858124, 0.024113668128848076, 0.019012698903679848, 0.03941657394170761, 0.0013911731075495481, 0.3737580478191376, 0.05001966655254364, 0.029178138822317123, 0.3918207287788391, 0.09587102383375168, 0.036125313490629196, 0.015283786691725254, 0.008336611092090607, 0.3032628893852234, 0.18221665918827057, 0.15082231163978577, 0.141436368227005, 0.07735307514667511, 0.11101298779249191, 0.0038838363252580166, 0.011651509441435337, 0.018124569207429886, 0.09562940150499344, 0.10160623490810394, 0.00597683759406209, 0.7889425754547119, 0.45963791012763977, 0.1723642200231552, 0.07181842625141144, 0.05458199977874756, 0.20683705806732178, 0.03160010650753975, 0.9258822202682495, 0.9516168236732483, 0.06375149637460709, 0.021250497549772263, 0.8712704181671143, 0.021250497549772263, 0.056308530271053314, 0.9217914938926697, 0.01668400876224041, 0.00625650305300951, 0.9844703674316406, 0.06876346468925476, 0.7876542210578918, 0.13752692937850952, 0.07589780539274216, 0.0034499000757932663, 0.7313788533210754, 0.13454610109329224, 0.010349700227379799, 0.03794890269637108, 0.0034499000757932663, 0.15234941244125366, 0.11607573926448822, 0.08705680817365646, 0.06891997158527374, 0.010882101021707058, 0.007254733704030514, 0.02539156749844551, 0.5368502736091614, 0.9312217235565186, 0.040487900376319885, 0.9099246859550476, 0.07388294488191605, 0.4723527729511261, 0.0041507272981107235, 0.19010330736637115, 0.08467483520507812, 0.05395945534110069, 0.08301454782485962, 0.00913160014897585, 0.02988523617386818, 0.040517762303352356, 0.7679957747459412, 0.07551037520170212, 0.07366865873336792, 0.031309179961681366, 0.005525149405002594, 0.003683432936668396, 0.965694785118103, 0.9880076050758362, 0.9818627238273621, 0.35717448592185974, 0.11600539088249207, 0.19232472777366638, 0.07021378725767136, 0.25948575139045715, 0.9887050986289978, 0.10368206351995468, 0.028276925906538963, 0.16966156661510468, 0.028276925906538963, 0.6692205667495728, 0.9741085767745972, 0.9954279065132141, 0.002470044419169426, 0.02873591147363186, 0.13410091400146484, 0.12452228367328644, 0.7088191509246826, 0.08661304414272308, 0.03464521840214729, 0.8488078713417053, 0.03464521840214729, 0.9738385677337646, 0.9699908494949341, 0.13452371954917908, 0.06477068364620209, 0.10795113444328308, 0.14448845386505127, 0.021590227261185646, 0.5264694094657898, 0.09006965160369873, 0.10674921423196793, 0.10007739067077637, 0.08339782804250717, 0.03335912898182869, 0.5837847590446472, 0.9776805639266968, 0.4047566056251526, 0.12142698466777802, 0.061677198857069016, 0.07324167340993881, 0.009637062437832355, 0.32766011357307434, 0.5638923048973083, 0.09497133642435074, 0.019785694777965546, 0.003957138862460852, 0.01780712604522705, 0.06727136671543121, 0.20774979889392853, 0.02572140470147133, 0.08670654892921448, 0.01857997477054596, 0.891838788986206, 0.8377845287322998, 0.022368034347891808, 0.10980670899152756, 0.028468405827879906, 0.7814083099365234, 0.0752919465303421, 0.06308244168758392, 0.059012606739997864, 0.014244422316551208, 0.00406983494758606, 0.22117707133293152, 0.07793858647346497, 0.018958033993840218, 0.03580962121486664, 0.04002251848578453, 0.6024442315101624, 0.004212896339595318, 0.9142924547195435, 0.040207888931035995, 0.006992676295340061, 0.03845972195267677, 0.27587369084358215, 0.5839120149612427, 0.033401746302843094, 0.01113391574472189, 0.016082322224974632, 0.007422610651701689, 0.04577276483178139, 0.024742035195231438, 0.9775805473327637, 0.8998609185218811, 0.1744651049375534, 0.10467906296253204, 0.0872325524687767, 0.1482953280210495, 0.48850226402282715, 0.9348763227462769, 0.03739505261182785, 0.5834407210350037, 0.0862477570772171, 0.015220193192362785, 0.03551378473639488, 0.015220193192362785, 0.2638166844844818, 0.1526188850402832, 0.7996593713760376, 0.022256920114159584, 0.012718240730464458, 0.011128460057079792, 0.08924353122711182, 0.9081842303276062, 0.23196017742156982, 0.6857953071594238, 0.08068180084228516, 0.9611560702323914, 0.03658663481473923, 0.9585698246955872, 0.945625364780426, 0.9498169422149658, 0.09207779914140701, 0.10358752310276031, 0.023019449785351753, 0.05754862353205681, 0.7251126766204834, 0.9383039474487305, 0.05456073209643364, 0.9275324940681458, 0.9796158075332642, 0.2795887589454651, 0.2617805600166321, 0.16858430206775665, 0.04511411115527153, 0.17748840153217316, 0.04630132392048836, 0.0011872134637087584, 0.009497707709670067, 0.00712328078225255, 0.002968033542856574, 0.9852465987205505, 0.962376594543457, 0.9903821349143982, 0.8919515609741211, 0.3623655140399933, 0.1756249964237213, 0.03779271990060806, 0.10374472290277481, 0.10152162611484528, 0.2104535847902298, 0.003705168841406703, 0.0022231012117117643, 0.0029641350265592337, 0.9865766763687134, 0.9312254786491394, 0.04656127467751503, 0.9786128997802734, 0.9652767181396484, 0.957682192325592, 0.9694797992706299, 0.9820523858070374, 0.9270843863487244, 0.9669924378395081, 0.031094495207071304, 0.932834804058075, 0.203163743019104, 0.3453783392906189, 0.1312750279903412, 0.20889399945735931, 0.018232643604278564, 0.04271647706627846, 0.044279277324676514, 0.004167461302131414, 0.0015627979300916195, 0.16930359601974487, 0.2710759937763214, 0.04755719006061554, 0.3500209152698517, 0.06562892347574234, 0.09416323900222778, 0.0009511437965556979, 0.0009511437965556979, 0.9088175296783447, 0.04608089104294777, 0.007680148351937532, 0.00512009859085083, 0.007680148351937532, 0.023040445521473885, 0.986150860786438, 0.2918451726436615, 0.08782492578029633, 0.18650461733341217, 0.10040658712387085, 0.20179995894432068, 0.09078531712293625, 0.006660879123955965, 0.02047603577375412, 0.013568457216024399, 0.9602536559104919, 0.9846197366714478, 0.12281893938779831, 0.030704734846949577, 0.8290278315544128, 0.9654445648193359, 0.6579639911651611, 0.04425165429711342, 0.17879456281661987, 0.004469864070415497, 0.05900220200419426, 0.033970966935157776, 0.006257809232920408, 0.01564452424645424, 0.47142788767814636, 0.21320724487304688, 0.13342298567295074, 0.06442039459943771, 0.03530992195010185, 0.03800533711910248, 0.0024258724879473448, 0.023180559277534485, 0.018059272319078445, 0.9345946311950684, 0.6147997975349426, 0.0910223126411438, 0.08223945647478104, 0.06786751002073288, 0.06147998198866844, 0.08223945647478104, 0.36620673537254333, 0.6306893825531006, 0.07791777700185776, 0.6124337315559387, 0.062334220856428146, 0.2462201714515686, 0.019267242401838303, 0.23120690882205963, 0.019267242401838303, 0.7128880023956299, 0.5589150190353394, 0.05097478628158569, 0.17606183886528015, 0.1276177167892456, 0.06760485470294952, 0.005061326082795858, 0.013737885281443596, 0.2110668569803238, 0.7851687073707581, 0.27527695894241333, 0.07411302626132965, 0.17416560649871826, 0.16781306266784668, 0.10587574541568756, 0.1916351020336151, 0.010587574914097786, 0.13195225596427917, 0.005385806318372488, 0.43086451292037964, 0.021543225273489952, 0.4039354920387268, 0.005385806318372488, 0.11931183189153671, 0.30421027541160583, 0.021629629656672478, 0.2169940322637558, 0.24001912772655487, 0.08861171454191208, 0.0013954599853605032, 0.004186380188912153, 0.00348865007981658, 0.02061854675412178, 0.026804111897945404, 0.4206183850765228, 0.5257729887962341, 0.0041237096302211285, 0.9913134574890137, 0.04970837011933327, 0.13255564868450165, 0.8119033575057983, 0.01644524186849594, 0.9702692031860352, 0.2753807306289673, 0.15296053886413574, 0.16486608982086182, 0.15425461530685425, 0.03804602101445198, 0.19074773788452148, 0.0005176329286769032, 0.011646741069853306, 0.011646741069853306, 0.8010676503181458, 0.05901453644037247, 0.020764373242855072, 0.045900195837020874, 0.029507268220186234, 0.02732154354453087, 0.0010928617557510734, 0.008742894046008587, 0.006557170767337084, 0.09176038950681686, 0.7947633862495422, 0.008880037814378738, 0.03996017202734947, 0.05920025333762169, 0.0014800062635913491, 0.0029600125271826982, 0.08430206030607224, 0.182654470205307, 0.730617880821228, 0.2830224633216858, 0.054235585033893585, 0.09974360466003418, 0.11782213300466537, 0.09974360466003418, 0.3198029100894928, 0.004987180233001709, 0.02057211846113205, 0.9820500612258911, 0.13587260246276855, 0.38921278715133667, 0.12883538007736206, 0.11963285505771637, 0.006495901849120855, 0.14290983974933624, 0.02652493119239807, 0.03681011125445366, 0.010285177268087864, 0.0027066257316619158, 0.9837819337844849, 0.9796123504638672, 0.07587077468633652, 0.9104493260383606, 0.9667733907699585, 0.9735890626907349, 0.6551834344863892, 0.036613188683986664, 0.05781029909849167, 0.04817524924874306, 0.0269781406968832, 0.1753579080104828, 0.9498421549797058, 0.31831905245780945, 0.02031823806464672, 0.18286412954330444, 0.4740922152996063, 0.9856501221656799, 0.9489683508872986, 0.9714043736457825, 0.9711798429489136, 0.924807608127594, 0.9751023650169373, 0.9716795086860657, 0.20412468910217285, 0.2178090363740921, 0.1265801191329956, 0.06614096462726593, 0.3774596154689789, 0.00456144567579031, 0.002280722837895155, 0.9505623579025269, 0.06808397173881531, 0.9191336035728455, 0.22719119489192963, 0.4830569922924042, 0.008822958916425705, 0.06727506220340729, 0.21175101399421692, 0.0033086095936596394, 0.20295798778533936, 0.1317909061908722, 0.6510470509529114, 0.013179090805351734, 0.1391555219888687, 0.20607182383537292, 0.09809323400259018, 0.13763469457626343, 0.2478945255279541, 0.16424913704395294, 0.0015208253171294928, 0.005322888493537903, 0.9620435237884521, 0.4493451416492462, 0.04857785254716873, 0.2849900722503662, 0.03805265203118324, 0.06045243889093399, 0.06935837864875793, 0.016732370480895042, 0.012414339929819107, 0.019701017066836357, 0.09267739951610565, 0.047993652522563934, 0.15556563436985016, 0.1423259973526001, 0.029789162799715996, 0.46338698267936707, 0.06454318761825562, 0.0033099069260060787, 0.9823960065841675, 0.5262392163276672, 0.06701743602752686, 0.12337300926446915, 0.03883965313434601, 0.08377179503440857, 0.0007615617942065, 0.0007615617942065, 0.15992797911167145, 0.07675737887620926, 0.20468634366989136, 0.006396448239684105, 0.27504727244377136, 0.031982239335775375, 0.06396447867155075, 0.3390117585659027, 0.046594228595495224, 0.8775246143341064, 0.06989134103059769, 0.12589570879936218, 0.8072137236595154, 0.06665067374706268, 0.26002389192581177, 0.05176401510834694, 0.10834328085184097, 0.39966633915901184, 0.07463648170232773, 0.04694875702261925, 0.019261028617620468, 0.014445771463215351, 0.02407628484070301, 0.09117452055215836, 0.06512465327978134, 0.8422788977622986, 0.03698749467730522, 0.9246873259544373, 0.01849374733865261, 0.10342978686094284, 0.8865410089492798, 0.9912861585617065, 0.9646128416061401, 0.8777991533279419, 0.08644992113113403, 0.011637489311397076, 0.02327497862279415, 0.857965886592865, 0.012038305401802063, 0.15047882497310638, 0.6741451025009155, 0.16251713037490845, 0.9710285067558289, 0.021109314635396004, 0.05266449972987175, 0.3078847825527191, 0.16204461455345154, 0.012153346091508865, 0.4618271589279175, 0.9666165709495544, 0.7360565662384033, 0.02120327576994896, 0.11510349810123444, 0.08784214407205582, 0.009087118320167065, 0.0302903950214386, 0.966346800327301, 0.679879903793335, 0.04096837341785431, 0.06437887251377106, 0.11997880786657333, 0.046820998191833496, 0.04584556072950363, 0.37760794162750244, 0.11846523731946945, 0.07181955128908157, 0.0799640342593193, 0.0518285408616066, 0.25247904658317566, 0.0014808154664933681, 0.045905280858278275, 0.8011527061462402, 0.0013824895722791553, 0.10921667516231537, 0.0027649791445583105, 0.026958545669913292, 0.007603692822158337, 0.047695890069007874, 0.0027649791445583105, 0.9859704375267029, 0.713066577911377, 0.07674258947372437, 0.11031747609376907, 0.03357488289475441, 0.028778472915291786, 0.02504792995750904, 0.004796411842107773, 0.006928150542080402, 0.5209317803382874, 0.06729185581207275, 0.12298167496919632, 0.004640817642211914, 0.03712654113769531, 0.012762248516082764, 0.23320110142230988, 0.9520910978317261, 0.1985313892364502, 0.7941255569458008, 0.3112434446811676, 0.6798211932182312, 0.34517282247543335, 0.000896552752237767, 0.18558642268180847, 0.18200021982192993, 0.03317245468497276, 0.15151742100715637, 0.004482763819396496, 0.09682770073413849, 0.9485746026039124, 0.04124237224459648, 0.009164971299469471, 0.9565953612327576, 0.9734368920326233, 0.042336054146289825, 0.9313932061195374, 0.17676572501659393, 0.019640637561678886, 0.26842203736305237, 0.0360078327357769, 0.4910159111022949, 0.0065468791872262955, 0.9913002252578735], "Term": ["acita", "active", "active", "active", "afghanistan", "aha", "aha", "aha", "aha", "air", "air", "air", "air", "air", "air", "air", "akala", "alice", "alice", "anywhere", "anywhere", "anywhere", "anywhere", "anywhere", "anywhere", "anywhere", "apartheid", "aps", "arff", "around", "around", "around", "around", "around", "around", "around", "around", "ashamed", "auhauhauh", "auhauhauh", "autumn", "awake", "awake", "away", "away", "away", "away", "away", "away", "away", "away", "ayy", "ayy", "ayy", "ayy", "babe", "babe", "babe", "babe", "babe", "baby", "baby", "baby", "baby", "baby", "baby", "baby", "bad", "bad", "bad", "bad", "bad", "bad", "bad", "bad", "bad", "badboy", "badboy", "badderman", "badly", "badman", "badman", "bag", "bag", "bag", "bag", "bag", "bag", "bag", "bailiff", "bamboo", "bandit", "bang", "bang", "bang", "bang", "bang", "bang", "bang", "banga", "banger", "banger", "banger", "banger", "banger", "banger", "bankroll", "bankroll", "bar", "bar", "bar", "bar", "bar", "bare", "bare", "bare", "bare", "bare", "barn", "barnet", "base", "base", "base", "base", "base", "bass", "bass", "bass", "bass", "bass", "bass", "bassline", "bassline", "bassline", "bbk", "beat", "beat", "beat", "beat", "beat", "beat", "beat", "beat", "become", "become", "begged", "believing", "benz", "benz", "benz", "benz", "best", "best", "best", "best", "best", "best", "best", "best", "best", "better", "better", "better", "better", "better", "better", "better", "better", "big", "big", "big", "big", "big", "big", "big", "big", "big", "bin", "bin", "bin", "bin", "bin", "bin", "bit", "bit", "bit", "bit", "bit", "bit", "bit", "bit", "bit", "bit", "bizzle", "bizzle", "bizzle", "black", "black", "black", "black", "black", "black", "black", "black", "black", "blacklisted", "blad", "blad", "blam", "blam", "blap", "blaze", "blaze", "blaze", "blaze", "blinded", "blinded", "blinded", "block", "block", "block", "block", "block", "block", "blow", "blow", "blow", "blow", "blow", "blow", "blow", "blow", "blow", "blowin", "blud", "blud", "blud", "blud", "bluku", "bluku", "bluku", "boasy", "body", "body", "body", "body", "body", "body", "bon", "bon", "bong", "boof", "boof", "boom", "boom", "bop", "bop", "bop", "boring", "boring", "boring", "boring", "boring", "boring", "bout", "bout", "bout", "bout", "bout", "bout", "bout", "bow", "bow", "bow", "bow", "bow", "bow", "bow", "boy", "boy", "boy", "boy", "boy", "boy", "boy", "boy", "boy", "boyz", "brand", "brand", "brand", "brand", "brand", "brand", "brand", "brap", "brap", "brap", "breast", "breast", "breast", "breast", "breast", "breast", "breathe", "breathe", "breddah", "bredrin", "bredrin", "bredrin", "bredrin", "bredrin", "brewin", "bring", "bring", "bring", "bring", "bring", "bring", "bring", "bring", "bring", "bro", "bro", "bro", "bro", "bro", "bro", "bro", "bro", "brotherhood", "brr", "brr", "brr", "brrr", "brudda", "brudda", "brudda", "brudda", "brudda", "bruddas", "bruddas", "bruddas", "bruddas", "bruddaz", "bucky", "bugzy", "bull", "bull", "bull", "bull", "bull", "bup", "bup", "bus", "bus", "bus", "bus", "bus", "bus", "bus", "bus", "buy", "buy", "buy", "buy", "buy", "buy", "bye", "bye", "bye", "bye", "cadet", "cadet", "cadet", "cah", "cah", "cah", "cah", "cah", "cah", "cah", "caine", "caine", "call", "call", "call", "call", "call", "call", "call", "call", "call", "caller", "caller", "callin", "callin", "calling", "calling", "calling", "calling", "calling", "came", "came", "came", "came", "came", "came", "came", "came", "care", "care", "care", "care", "care", "care", "care", "care", "care", "cash", "cash", "cash", "cash", "cash", "cash", "cash", "celebration", "certified", "certified", "certified", "chanel", "chanel", "change", "change", "change", "change", "change", "change", "change", "change", "chce", "chcesz", "checkmate", "chick", "chick", "chick", "chick", "chick", "chick", "chick", "child", "child", "child", "child", "ching", "ching", "choong", "choong", "choong", "christmas", "christmas", "christmas", "ciebie", "claimin", "clart", "clash", "clash", "click", "click", "click", "click", "click", "click", "click", "clipped", "coca", "coca", "cola", "colonial", "coming", "coming", "coming", "coming", "coming", "coming", "coming", "coming", "community", "concentrate", "confirmed", "congo", "connected", "connected", "connected", "connection", "could", "could", "could", "could", "could", "could", "could", "could", "could", "country", "country", "country", "country", "country", "country", "courvoisier", "cowboy", "crackin", "crawl", "crazy", "crazy", "crazy", "crazy", "crazy", "crazy", "crazy", "crepe", "crew", "crew", "crew", "crew", "crew", "crew", "crew", "crew", "crispy", "cro", "cultural", "czas", "dada", "dada", "dammit", "damn", "damn", "damn", "damn", "damn", "damn", "damn", "damn", "damn", "dance", "dance", "dance", "dance", "dance", "dance", "dance", "dance", "dancin", "dancing", "dancing", "dancing", "dans", "dat", "dat", "dat", "dat", "day", "day", "day", "day", "day", "day", "day", "day", "day", "day", "death", "death", "death", "death", "death", "death", "death", "decision", "decision", "deh", "deh", "deja", "deja", "dem", "dem", "dem", "dem", "dem", "dem", "dem", "det", "devs", "die", "die", "die", "die", "die", "die", "die", "ding", "dippin", "dippin", "dirty", "dirty", "dirty", "dirty", "dirty", "dirty", "dirty", "dirty", "dirty", "dis", "dis", "dis", "dis", "dis", "dis", "dis", "disco", "disco", "disco", "dobry", "dobrze", "doh", "doin", "doin", "doin", "doin", "doin", "doin", "doin", "done", "done", "done", "done", "done", "done", "done", "done", "dong", "dont", "dont", "dont", "dont", "dont", "dream", "dream", "dream", "dream", "dream", "dresser", "drown", "drown", "drown", "drown", "drown", "dub", "dub", "dub", "dude", "dude", "dude", "dude", "dude", "dum", "dun", "dun", "dun", "dun", "dunya", "dylan", "dzisiaj", "educated", "educated", "emoji", "endz", "endz", "erect", "eski", "eski", "eskibeat", "eskiboy", "eskiboy", "eskimo", "essie", "essie", "est", "even", "even", "even", "even", "even", "even", "even", "eventually", "ever", "ever", "ever", "ever", "ever", "ever", "ever", "ever", "ever", "every", "every", "every", "every", "every", "every", "every", "every", "every", "every", "everybody", "everybody", "everybody", "everybody", "everybody", "everybody", "everybody", "everybody", "everythin", "everything", "everything", "everything", "everything", "everything", "everything", "everything", "everything", "experienced", "eye", "eye", "eye", "eye", "eye", "eye", "eye", "eye", "eye", "face", "face", "face", "face", "face", "face", "face", "face", "face", "facial", "facial", "fam", "fam", "fam", "fam", "fam", "fast", "fast", "fast", "fast", "fast", "fast", "fast", "fast", "fed", "fed", "fed", "fed", "fed", "fed", "fed", "fed", "feel", "feel", "feel", "feel", "feel", "feel", "feel", "feel", "feel", "feelin", "feelin", "feelin", "feelin", "felt", "felt", "felt", "felt", "fester", "filly", "filly", "find", "find", "find", "find", "find", "find", "find", "find", "fire", "fire", "fire", "fire", "fire", "fire", "fire", "fire", "fireman", "flow", "flow", "flow", "flow", "flow", "flow", "flow", "flow", "flow", "flow", "fly", "fly", "fly", "fly", "fly", "fly", "fly", "fly", "flying", "flying", "flying", "flying", "flying", "flying", "flying", "flying", "food", "food", "food", "food", "food", "food", "food", "free", "free", "free", "free", "free", "free", "free", "free", "freedom", "freedom", "freedom", "freedom", "friend", "friend", "friend", "friend", "friend", "friend", "friend", "friend", "friend", "frisco", "frisky", "gala", "galang", "game", "game", "game", "game", "game", "game", "game", "game", "game", "gang", "gang", "gang", "gang", "gang", "gang", "gangster", "gangster", "gangster", "gangster", "gangster", "gangster", "gangster", "garms", "garms", "gaza", "gaza", "gaza", "gettin", "gettin", "gettin", "gettin", "gettin", "gettin", "gettin", "getting", "getting", "getting", "getting", "getting", "getting", "getting", "getting", "getting", "ghetto", "ghetto", "ghetto", "ghetto", "ghetto", "giddy", "giddy", "gimmie", "gipset", "girl", "girl", "girl", "girl", "girl", "girl", "girl", "girl", "girl", "give", "give", "give", "give", "give", "give", "give", "give", "give", "given", "given", "given", "glenn", "goin", "goin", "goin", "goin", "goin", "going", "going", "going", "going", "going", "going", "going", "going", "going", "gon", "gon", "gon", "gon", "gon", "gon", "gon", "gon", "good", "good", "good", "good", "good", "good", "good", "good", "gotta", "gotta", "gotta", "gotta", "gotta", "gotta", "gotta", "gotta", "grape", "grenfell", "grime", "grime", "grime", "grime", "grimey", "grimey", "grimey", "grimey", "gun", "gun", "gun", "gun", "gun", "gun", "gun", "gun", "gun", "gunshot", "gunshot", "guy", "guy", "guy", "guy", "guy", "guy", "guy", "gyal", "gyal", "gyal", "gyal", "gyal", "ha", "ha", "ha", "ha", "ha", "ha", "ha", "ha", "hand", "hand", "hand", "hand", "hand", "hand", "hand", "hand", "hand", "happenin", "happiness", "hardy", "hardy", "hatred", "headie", "headtop", "hear", "hear", "hear", "hear", "hear", "hear", "hear", "hear", "hear", "heart", "heart", "heart", "heart", "heart", "heart", "heart", "heatwave", "heavytrackerz", "hench", "hey", "hey", "hey", "hey", "hey", "high", "high", "high", "high", "high", "high", "high", "high", "high", "history", "history", "history", "history", "history", "history", "history", "history", "hit", "hit", "hit", "hit", "hit", "hit", "hit", "hit", "hit", "hit", "hmm", "hmm", "hmm", "hmm", "hmm", "hold", "hold", "hold", "hold", "hold", "hold", "hold", "hole", "hole", "hole", "hole", "hole", "homemade", "hon", "honda", "honestly", "honestly", "honey", "honey", "honey", "hood", "hood", "hood", "hood", "hood", "hood", "hood", "hood", "hood", "hoodlum", "hope", "hope", "hope", "hope", "hope", "hope", "hubba", "huh", "huh", "huh", "huh", "huh", "huh", "huh", "huh", "huh", "hump", "hump", "hustla", "hustle", "hustle", "hustle", "hustle", "hut", "hype", "hype", "hype", "hype", "hype", "ibn", "iconic", "idi", "illy", "immigrant", "immigrant", "ing", "ing", "ing", "ing", "ing", "ing", "ing", "ing", "ing", "innit", "innit", "innit", "innit", "inspiration", "insurance", "internet", "internet", "internet", "internet", "internet", "internet", "internet", "internet", "interrupt", "israel", "jag", "jail", "jail", "jail", "jail", "jail", "jail", "jailhouse", "jaykae", "jej", "jest", "jeszcze", "jme", "johnny", "juicy", "juju", "juju", "juju", "jump", "jump", "jump", "jump", "jump", "jump", "jump", "jump", "jump", "jumpman", "jungle", "jungle", "jungle", "jungle", "jungle", "jungle", "junk", "junk", "jus", "jus", "jus", "justice", "kalas", "keep", "keep", "keep", "keep", "keep", "keep", "keep", "keep", "keep", "kickback", "kill", "kill", "kill", "kill", "kill", "kill", "kill", "kill", "king", "king", "king", "king", "king", "king", "king", "kodak", "kray", "kray", "kylea", "lady", "lady", "lady", "lady", "lady", "lady", "lairy", "lang", "leanin", "leekx", "legacy", "legacy", "let", "let", "let", "let", "let", "let", "let", "let", "let", "level", "level", "level", "level", "level", "level", "liar", "liar", "liar", "liar", "liar", "liar", "liar", "lie", "lie", "lie", "lie", "lie", "lie", "lie", "lie", "life", "life", "life", "life", "life", "life", "life", "life", "lifetime", "light", "light", "light", "light", "light", "light", "light", "light", "light", "likkle", "likkle", "likkle", "likkle", "lil", "lil", "lil", "limbaugh", "ling", "lit", "lit", "lit", "lit", "lit", "lit", "little", "little", "little", "little", "little", "little", "little", "little", "little", "live", "live", "live", "live", "live", "live", "live", "live", "live", "live", "lived", "lived", "living", "living", "living", "living", "living", "living", "living", "load", "load", "load", "load", "load", "load", "load", "lock", "lock", "lock", "lock", "lock", "lock", "lock", "lock", "look", "look", "look", "look", "look", "look", "look", "look", "look", "lookin", "lookin", "lookin", "lookin", "lookin", "lost", "lost", "lost", "lost", "lost", "lost", "lost", "lotta", "lotta", "love", "love", "love", "love", "love", "love", "love", "love", "lub", "ludzie", "lukatar", "lukey", "luv", "lyric", "lyric", "lyric", "macho", "mad", "mad", "mad", "mad", "mad", "mad", "mad", "made", "made", "made", "made", "made", "made", "made", "made", "madon", "mall", "malone", "maman", "maman", "maman", "mandem", "mandem", "mandem", "mandem", "mandem", "many", "many", "many", "many", "many", "many", "many", "many", "marijua", "marijua", "mashing", "masz", "mayday", "mc", "mc", "mcdold", "mcdold", "mcdold", "mcdold", "mea", "med", "med", "mek", "mek", "mek", "memory", "memory", "memory", "men", "men", "men", "men", "men", "men", "men", "men", "mentally", "meridian", "merky", "merry", "mic", "mic", "mic", "mic", "mic", "mind", "mind", "mind", "mind", "mind", "mind", "mind", "mind", "mind", "mingle", "mingle", "mit", "miyagi", "mmh", "moje", "money", "money", "money", "money", "money", "money", "money", "money", "morn", "mornin", "morning", "morning", "morning", "morning", "morning", "morning", "mosh", "mother", "mother", "mother", "mother", "mother", "mother", "mother", "mother", "motherf", "motherf", "motherf", "motherf", "motherf", "motherf", "motherf", "motto", "motto", "mout", "much", "much", "much", "much", "much", "much", "much", "much", "muh", "murk", "murk", "murking", "muthaf", "need", "need", "need", "need", "need", "need", "need", "need", "need", "needle", "neo", "ner", "ner", "neva", "new", "new", "new", "new", "new", "new", "new", "new", "new", "new", "nic", "nigger", "nigger", "nigger", "night", "night", "night", "night", "night", "night", "night", "night", "night", "nitties", "niz", "nobody", "nobody", "nobody", "nobody", "nobody", "nobody", "nobody", "nobody", "nocy", "normal", "normal", "normal", "normal", "normal", "nothing", "nothing", "nothing", "nothing", "nothing", "nothing", "nothing", "nothing", "nothing", "nuh", "obok", "odyssey", "ofb", "ogz", "ogz", "ohh", "ohh", "ole", "ole", "ole", "olly", "onstage", "ooh", "ooh", "ooh", "ooooh", "ooooh", "oopsy", "opp", "opp", "oppression", "oppressor", "oppressor", "opps", "outchea", "outsider", "pagan", "pagan", "pagan", "pah", "pah", "pain", "pain", "pain", "pain", "pain", "pain", "pamera", "pap", "pap", "pap", "pap", "pap", "par", "par", "pardon", "pardon", "pardon", "pardon", "pardon", "pardon", "parent", "parent", "parent", "pat", "pat", "paw", "payroll", "penny", "penny", "penny", "people", "people", "people", "people", "people", "people", "people", "people", "person", "person", "person", "pete", "pew", "phone", "phone", "phone", "phone", "phone", "phone", "pick", "pick", "pick", "pick", "pick", "pick", "pie", "pie", "pie", "pie", "pie", "piping", "pit", "pit", "pit", "play", "play", "play", "play", "play", "play", "play", "play", "play", "playtime", "pod", "poison", "pon", "pon", "pon", "poomplex", "postman", "pow", "pow", "pow", "power", "power", "power", "power", "power", "power", "powerful", "pray", "pray", "pray", "pray", "pray", "pretty", "pretty", "pretty", "pretty", "pretty", "pretty", "pretty", "pretty", "pretty", "promising", "przed", "przez", "pstine", "pump", "pump", "pump", "pump", "pump", "puni", "puni", "purple", "purple", "purple", "purple", "purple", "put", "put", "put", "put", "put", "put", "put", "put", "put", "que", "quint", "rag", "rag", "rag", "rag", "rap", "rap", "rap", "rap", "rap", "rap", "rap", "rap", "rap", "rascal", "rascal", "rascal", "rascal", "rave", "rave", "rave", "rave", "read", "read", "read", "read", "read", "ready", "ready", "ready", "ready", "ready", "ready", "ready", "ready", "ready", "real", "real", "real", "real", "real", "real", "real", "real", "real", "really", "really", "really", "really", "really", "really", "really", "really", "reason", "reason", "reason", "reason", "reason", "reason", "reason", "receiver", "redder", "refuse", "regret", "regret", "regret", "regret", "remain", "remain", "rescue", "revvin", "ride", "ride", "ride", "ride", "ride", "ride", "ride", "ride", "ride", "ridin", "ridin", "right", "right", "right", "right", "right", "right", "right", "right", "right", "road", "road", "road", "road", "road", "road", "road", "road", "rock", "rock", "rock", "rock", "rock", "rock", "rock", "rock", "rok", "roll", "roll", "roll", "roll", "roll", "roll", "roll", "roll", "roll", "rolling", "rolling", "rolling", "rolling", "rolling", "round", "round", "round", "round", "round", "round", "round", "round", "round", "rub", "rub", "rudeboy", "rudeboy", "rudeboy", "rudeboy", "rule", "rule", "rule", "rule", "rule", "rule", "rule", "rule", "run", "run", "run", "run", "run", "run", "run", "run", "run", "running", "running", "running", "running", "running", "running", "running", "running", "said", "said", "said", "said", "said", "said", "said", "said", "said", "sauce", "sauce", "sauce", "sauce", "scared", "scared", "scared", "scared", "scared", "scared", "sck", "scored", "seh", "seh", "seh", "seh", "serious", "serious", "serious", "serious", "service", "setting", "setting", "setting", "sex", "sex", "sex", "sex", "sex", "sex", "sex", "shake", "shake", "shake", "shake", "shake", "shake", "shake", "shake", "shes", "shes", "shiv", "shot", "shot", "shot", "shot", "shot", "shot", "shot", "shot", "shot", "shut", "shut", "shut", "shut", "shut", "shut", "shut", "sidetracked", "siebie", "simz", "sing", "sing", "sing", "sing", "sing", "skadoosh", "skank", "skank", "skank", "skank", "skank", "skengman", "skepta", "skepta", "skrr", "skrr", "skrr", "skrr", "skrrt", "skrrt", "skrrt", "skrrt", "slack", "slowthai", "smoke", "smoke", "smoke", "smoke", "smoke", "smoke", "smoking", "smoking", "smoking", "smoking", "smoking", "smoking", "som", "somebody", "somebody", "somebody", "somebody", "somebody", "somebody", "someone", "someone", "someone", "someone", "someone", "someone", "someone", "someone", "somethin", "somethin", "somethin", "sometimes", "sometimes", "sometimes", "sometimes", "son", "son", "son", "son", "son", "son", "soon", "soon", "soon", "soon", "soon", "soon", "soon", "soul", "soul", "soul", "soul", "sound", "sound", "sound", "sound", "sound", "sound", "sound", "sound", "soundboy", "spaceboy", "spare", "spare", "spare", "spare", "spare", "spinner", "spinner", "spirit", "spirit", "spirit", "spirit", "spirit", "spirit", "spit", "spit", "spit", "spit", "spit", "spitter", "spitter", "sport", "sport", "sport", "stalling", "standard", "standard", "standby", "steez", "sticky", "sticky", "sticky", "sticky", "sticky", "stinkin", "stinking", "stinking", "sto", "stop", "stop", "stop", "stop", "stop", "stop", "stop", "stop", "stop", "stop", "stormy", "strally", "strange", "strat", "street", "street", "street", "street", "street", "street", "street", "street", "street", "strength", "stunting", "stunting", "styling", "suki", "sunglass", "swisher", "swoje", "symphony", "szukam", "tah", "tah", "talk", "talk", "talk", "talk", "talk", "talk", "talk", "talk", "talk", "talking", "talking", "talking", "talking", "talking", "talking", "talking", "talking", "tear", "tear", "tear", "tear", "tear", "tear", "tego", "tell", "tell", "tell", "tell", "tell", "tell", "tell", "tell", "tell", "tempah", "teraz", "tha", "tha", "tha", "therapy", "thing", "thing", "thing", "thing", "thing", "thing", "thing", "thing", "think", "think", "think", "think", "think", "think", "think", "think", "think", "thomas", "thought", "thought", "thought", "thought", "thought", "thought", "thrown", "thrown", "tight", "tight", "tight", "tight", "timer", "timer", "timer", "timer", "ting", "ting", "ting", "ting", "ting", "ting", "ting", "tion", "tion", "told", "told", "told", "told", "told", "told", "told", "tonight", "tonight", "tonight", "tonight", "tonight", "tonight", "top", "top", "top", "top", "top", "top", "top", "top", "top", "trap", "trap", "trap", "trap", "trap", "trappin", "trill", "trill", "trill", "trump", "trump", "try", "try", "try", "try", "try", "try", "try", "try", "try", "trying", "trying", "trying", "trying", "trying", "trying", "trying", "trying", "trying", "tune", "tune", "tune", "tune", "tune", "tune", "tune", "tunnel", "tunnel", "tunnel", "turn", "turn", "turn", "turn", "turn", "turn", "turn", "turn", "twarz", "two", "two", "two", "two", "two", "two", "two", "two", "two", "two", "tych", "typie", "ugh", "ugh", "und", "underrated", "understand", "understand", "understand", "understand", "understand", "understand", "unstoppable", "upon", "upon", "upon", "upon", "upside", "uptown", "ussy", "uummm", "vicki", "vossi", "vroom", "walk", "walk", "walk", "walk", "walk", "walk", "walk", "wap", "waps", "waps", "war", "war", "war", "war", "war", "war", "waste", "waste", "waste", "waste", "watch", "watch", "watch", "watch", "watch", "watch", "watch", "watch", "wavelength", "way", "way", "way", "way", "way", "way", "way", "way", "way", "weed", "weed", "weed", "weed", "weed", "weed", "weed", "weed", "weh", "well", "well", "well", "well", "well", "well", "well", "well", "wet", "wet", "wet", "wet", "wet", "wet", "wet", "wha", "wha", "wha", "whine", "whine", "whine", "white", "white", "white", "white", "white", "white", "white", "white", "white", "whoa", "whoa", "whoa", "whoo", "whoo", "whoo", "wickedest", "wickedest", "widda", "wiesz", "wiley", "wiley", "wiley", "wiley", "winin", "wit", "wit", "wit", "wit", "within", "within", "woah", "woah", "woah", "woah", "woah", "wobbling", "woo", "woo", "woo", "woo", "woo", "woo", "wooo", "word", "word", "word", "word", "word", "word", "work", "work", "work", "work", "work", "work", "work", "work", "world", "world", "world", "world", "world", "world", "world", "world", "wot", "would", "would", "would", "would", "would", "would", "would", "would", "wrong", "wrong", "wrong", "wrong", "wrong", "wrong", "wrong", "yak", "yep", "yep", "yesterday", "yesterday", "young", "young", "young", "young", "young", "young", "young", "young", "yuh", "yuh", "yuh", "ziomal", "znowu", "zombie", "zombie", "zone", "zone", "zone", "zone", "zone", "zone", "zoom"]}, "R": 30, "lambda.step": 0.01, "plot.opts": {"xlab": "PC1", "ylab": "PC2"}, "topic.order": [10, 3, 6, 2, 4, 9, 7, 1, 5, 8]};
function LDAvis_load_lib(url, callback){
var s = document.createElement('script');
s.src = url;
s.async = true;
s.onreadystatechange = s.onload = callback;
s.onerror = function(){console.warn("failed to load library " + url);};
document.getElementsByTagName("head")[0].appendChild(s);
}
if(typeof(LDAvis) !== "undefined"){
// already loaded: just create the visualization
!function(LDAvis){
new LDAvis("#" + "ldavis_el7599850548684324807551071", ldavis_el7599850548684324807551071_data);
}(LDAvis);
}else if(typeof define === "function" && define.amd){
// require.js is available: use it to load d3/LDAvis
require.config({paths: {d3: "https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.5/d3.min"}});
require(["d3"], function(d3){
window.d3 = d3;
LDAvis_load_lib("https://cdn.rawgit.com/bmabey/pyLDAvis/files/ldavis.v1.0.0.js", function(){
new LDAvis("#" + "ldavis_el7599850548684324807551071", ldavis_el7599850548684324807551071_data);
});
});
}else{
// require.js not available: dynamically load d3 & LDAvis
LDAvis_load_lib("https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.5/d3.min.js", function(){
LDAvis_load_lib("https://cdn.rawgit.com/bmabey/pyLDAvis/files/ldavis.v1.0.0.js", function(){
new LDAvis("#" + "ldavis_el7599850548684324807551071", ldavis_el7599850548684324807551071_data);
})
});
}
</script>
</div>
<p><img src="../assets/images/lyric_proj/dance.gif" alt="dance" /></p>Yusuf SohoyeUnderstanding the words behind the UK Rap sceneMachine Learning to Help My Golf Game2020-02-14T00:00:00+00:002020-02-14T00:00:00+00:00https://yusufsohoye.com/golf-swing<p>Inspired by an article using the Google Video Intelligence API to <a href="https://daleonai.com/machine-learning-for-sports">analyse a tennis serve</a>, i wanted to see if i could use the Google Video Intelligence API to give me some insight into my golf swing.</p>
<h2 id="the-api">The API</h2>
<p>To work your way round the Google Cloud ecosystem may be a bit confusing at first, <a href="https://www.youtube.com/watch?v=h1zU0Qor9J8&list=PL3JVwFmb_BnTW_-D0OWrewMvg43_y-Nrm&index=1">this tutorial series</a> shows you everything you need to know to get setup. Google Video Intelligence API is free to use up to a certain point so just watch your billing. The video should help you get your credentials set up, I didnât want to set up the storage bucket so will use the videos from my local files and Google has a really nice <a href="https://cloud.google.com/video-intelligence/docs/people-detection">code snippet</a> to do that. Eventually you should get to a point where you can list the available features from the <code class="language-plaintext highlighter-rouge">VideoIntelligenceServiceClient</code>.</p>
<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">[</span><span class="o"><</span><span class="n">Feature</span><span class="p">.</span><span class="n">FEATURE_UNSPECIFIED</span><span class="p">:</span> <span class="mi">0</span><span class="o">></span><span class="p">,</span>
<span class="o"><</span><span class="n">Feature</span><span class="p">.</span><span class="n">LABEL_DETECTION</span><span class="p">:</span> <span class="mi">1</span><span class="o">></span><span class="p">,</span>
<span class="o"><</span><span class="n">Feature</span><span class="p">.</span><span class="n">SHOT_CHANGE_DETECTION</span><span class="p">:</span> <span class="mi">2</span><span class="o">></span><span class="p">,</span>
<span class="o"><</span><span class="n">Feature</span><span class="p">.</span><span class="n">EXPLICIT_CONTENT_DETECTION</span><span class="p">:</span> <span class="mi">3</span><span class="o">></span><span class="p">,</span>
<span class="o"><</span><span class="n">Feature</span><span class="p">.</span><span class="n">FACE_DETECTION</span><span class="p">:</span> <span class="mi">4</span><span class="o">></span><span class="p">,</span>
<span class="o"><</span><span class="n">Feature</span><span class="p">.</span><span class="n">SPEECH_TRANSCRIPTION</span><span class="p">:</span> <span class="mi">6</span><span class="o">></span><span class="p">,</span>
<span class="o"><</span><span class="n">Feature</span><span class="p">.</span><span class="n">TEXT_DETECTION</span><span class="p">:</span> <span class="mi">7</span><span class="o">></span><span class="p">,</span>
<span class="o"><</span><span class="n">Feature</span><span class="p">.</span><span class="n">OBJECT_TRACKING</span><span class="p">:</span> <span class="mi">9</span><span class="o">></span><span class="p">,</span>
<span class="o"><</span><span class="n">Feature</span><span class="p">.</span><span class="n">LOGO_RECOGNITION</span><span class="p">:</span> <span class="mi">12</span><span class="o">></span><span class="p">,</span>
<span class="o"><</span><span class="n">Feature</span><span class="p">.</span><span class="n">CELEBRITY_RECOGNITION</span><span class="p">:</span> <span class="mi">13</span><span class="o">></span><span class="p">,</span>
<span class="o"><</span><span class="n">Feature</span><span class="p">.</span><span class="n">PERSON_DETECTION</span><span class="p">:</span> <span class="mi">14</span><span class="o">></span><span class="p">]</span>
</code></pre></div></div>
<p>I donât think I did much tutorial-ing thereâŚ. but i showed you the places you can find clearer instructions so thatâs still helpful, right?</p>
<h2 id="using-the-api-for-my-swing">Using the API for my swing</h2>
<p>So I used the object detection API first, came back with some great detected objects, including calling me a professional golfer!</p>
<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span><span class="s">'entity'</span><span class="p">:</span> <span class="p">{</span><span class="s">'entity_id'</span><span class="p">:</span> <span class="s">'/m/07npwc'</span><span class="p">,</span>
<span class="s">'description'</span><span class="p">:</span> <span class="s">'professional golfer'</span><span class="p">,</span>
<span class="s">'language_code'</span><span class="p">:</span> <span class="s">'en-US'</span><span class="p">},</span>
<span class="s">'category_entities'</span><span class="p">:</span> <span class="p">[{</span><span class="s">'entity_id'</span><span class="p">:</span> <span class="s">'/m/01g317'</span><span class="p">,</span>
<span class="s">'description'</span><span class="p">:</span> <span class="s">'person'</span><span class="p">,</span>
<span class="s">'language_code'</span><span class="p">:</span> <span class="s">'en-US'</span><span class="p">}],</span>
<span class="s">'segments'</span><span class="p">:</span> <span class="p">[{</span><span class="s">'segment'</span><span class="p">:</span> <span class="p">{</span><span class="s">'start_time_offset'</span><span class="p">:</span> <span class="p">{},</span>
<span class="s">'end_time_offset'</span><span class="p">:</span> <span class="p">{</span><span class="s">'seconds'</span><span class="p">:</span> <span class="mi">28</span><span class="p">,</span> <span class="s">'nanos'</span><span class="p">:</span> <span class="mi">595233000</span><span class="p">}},</span>
<span class="s">'confidence'</span><span class="p">:</span> <span class="mf">0.5179229974746704</span><span class="p">}]}</span>
</code></pre></div></div>
<p>A great confidence boost for a bogey golfer such as myself. To delve deeper into the movement we need to use the PersonDetection feature of the API which is in Beta at time of writing, the code snippets are on <a href="https://cloud.google.com/video-intelligence/docs/people-detection">google</a> and Dale Markowitz provides a <a href="https://github.com/google/making_with_ml/blob/master/sports_ai/Sports_AI_Analysis.ipynb">superb helper function</a> that just⌠works! So now we have a timeline for where each body part is.</p>
<p>In practice i used a video of my own swing, but for the purposes of the world wide web I thought <a href="https://www.youtube.com/watch?v=-lOywb34_3U">Collin Morikawaâs swing</a> would be more appropriate and from now on we will be looking at his swing. We can start by plotting the path of the left wrist, that shows us the swing path.</p>
<p><img src="../assets/images/golfswing/lwrist.png" alt="lwrist" /></p>
<h2 id="visualising-it">Visualising it</h2>
<p>To Visualise the swing - use the <a href="https://github.com/wbobeirne/video-intelligence-player">Video Intelligence Player package</a> and I used FFmpeg (via brew) to convert MOV to mp4.</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>brew <span class="nb">install </span>ffmpeg
ffmpeg <span class="nt">-i</span> morikawa_swing.MOV video.mp4
</code></pre></div></div>
<p>Following the instructions in the repo, <code class="language-plaintext highlighter-rouge">npm start</code> should give us output like below.</p>
<h2><img src="../assets/images/golfswing/morikowa_swing_overlay.gif" alt="morikowa_swing_overlay" /></h2>
<h2 id="elbow-angle">Elbow angle</h2>
<p>Drawing the line between right wrist, right elbow and right shoulder, we can see the angle of the elbow thought the swing. The image below shows the angle change through the start of the downswing sequence.</p>
<p><img src="../assets/images/golfswing/elbow.png" alt="elbow" /></p>
<p>We can try and put values to this using the function below, putting in our shoulder, elbow and wrist co-ordinates.</p>
<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">import</span> <span class="nn">math</span>
<span class="k">def</span> <span class="nf">getAngle</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">c</span><span class="p">):</span>
<span class="n">ang</span> <span class="o">=</span> <span class="n">math</span><span class="p">.</span><span class="n">degrees</span><span class="p">(</span><span class="n">math</span><span class="p">.</span><span class="n">atan2</span><span class="p">(</span><span class="n">c</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">-</span><span class="n">b</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">c</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">-</span><span class="n">b</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="o">-</span> <span class="n">math</span><span class="p">.</span><span class="n">atan2</span><span class="p">(</span><span class="n">a</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">-</span><span class="n">b</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">-</span><span class="n">b</span><span class="p">[</span><span class="mi">0</span><span class="p">]))</span>
<span class="k">return</span> <span class="n">ang</span> <span class="o">+</span> <span class="mi">360</span> <span class="k">if</span> <span class="n">ang</span> <span class="o"><</span> <span class="mi">0</span> <span class="k">else</span> <span class="n">ang</span>
</code></pre></div></div>
<p>Now this sort-of works, in the results below we can see how the shoulder-elbow-wrist stays fairly straight at the beginning of the swing (near 180). The angle then decreases in the backswing as the elbow bends. There is a quick straightening of the elbow as we come into the downswing but then things get funny as the body rotates and the angles seem flipped (250 degree angle!!!).</p>
<p><img src="../assets/images/golfswing/angle_deg.png" alt="angle_deg" /></p>Yusuf SohoyeUsing the Google Video Intelligence API as my Swing CoachThe One with the Data Analysis2019-08-29T00:00:00+00:002019-08-29T00:00:00+00:00https://yusufsohoye.com/friends-analysis<p>FRIENDS is one of my favourite shows (probably <em>the</em> favourite) and Iâm sure Iâm not alone in having rewatched the entire series more than once. Iâve always wondered if there was anything left to know about this oh-so familiar group. After seeing <a href="http://giorasimchoni.com/2017/06/04/2017-06-04-the-one-with-friends/">this post using R </a>to look at the show, I thought I would give it a go myself. This post dives into the showâs scripts to find out more, including the most popular characters and their journey through the seasons. This produces some interesting findings about the characters we know so well, some expected and some surprising results! We will use the data collected in a <a href="https://quotennial.github.io/friends-engineering/">previous post</a> to analyse the T.V. show. It has been a really enjoyable hobby project and one I have been wanting to do for a while. Hopefully it provides an alternative look at the most looked-at show. As always, feel free to skip the coding bits and jump to the visualisations, hope you enjoy it!</p>
<p><img src="../assets/images/friends/excited2.gif" alt="excited2" class="align-center" /></p>
<h1 id="the-most-popular-friend">The Most Popular Friend</h1>
<p>This section looks at each characterâs role in the show. The previous post walked through the process of putting the data into a SQL database. This was in order to make a query like âwho had the most number of lines during the whole seriesâ fairly simple:</p>
<div class="language-sql highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">SELECT</span> <span class="nb">char</span><span class="p">,</span> <span class="k">COUNT</span><span class="p">(</span><span class="n">line</span><span class="p">)</span> <span class="k">AS</span> <span class="s1">'spoken_lines'</span>
<span class="k">FROM</span> <span class="n">lines</span>
<span class="k">GROUP</span> <span class="k">BY</span> <span class="nb">char</span>
<span class="k">ORDER</span> <span class="k">BY</span> <span class="n">spoken_lines</span> <span class="k">DESC</span>
</code></pre></div></div>
<p><img src="../assets/images/friends/most_lines.png" alt="most_lines" class="align-center" /></p>
<p>Rachel just edges the top spot with 9294 lines over the entire series Ross coming in a very close second (9070), both averaging around 39-ish lines per episode. This isnât entirely a shock, as they were both the main plot throughout 10 seasons. Almost inseparable are Monica and Chandler, 8403 and 8398 respectively.</p>
<div class="language-sql highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cm">/*number of lines per season*/</span>
<span class="k">SELECT</span> <span class="nb">char</span><span class="p">,</span> <span class="n">season</span><span class="p">,</span> <span class="k">count</span><span class="p">(</span><span class="n">line</span><span class="p">)</span> <span class="k">AS</span> <span class="n">total_lines</span>
<span class="k">FROM</span> <span class="n">lines</span>
<span class="k">WHERE</span> <span class="nb">char</span> <span class="k">IN</span> <span class="p">(</span><span class="s1">'Rachel'</span><span class="p">,</span> <span class="s1">'Ross'</span><span class="p">,</span> <span class="s1">'Monica'</span><span class="p">,</span><span class="s1">'Chandler'</span><span class="p">,</span><span class="s1">'Joey'</span><span class="p">,</span> <span class="s1">'Phoebe'</span><span class="p">)</span>
<span class="k">GROUP</span> <span class="k">BY</span> <span class="n">season</span><span class="p">,</span> <span class="nb">char</span>
</code></pre></div></div>
<p><img src="../assets/images/friends/season_lines.png" alt="season_lines" /></p>
<p>A look at the number of lines breakdown throughout the series confirms this pattern, we can see Ross and Rachel dominating the lines until around Season 4. This is when the London episodes happen and Chandler and Monica have a bigger joint story, translating in more lines. I think it is a shame Phoebe never got more lines, staying rooted at around 800 lines per season. Rachel did say it:</p>
<blockquote>
<p><em>Ugh, it was just a matter of time before someone had to leave the group. I just always assumed Phoebe would be the one to go.</em> - Rachel 5.05</p>
</blockquote>
<h2 id="most-spoken-about">Most Spoken About</h2>
<p><img src="../assets/images/friends/stoptalking.gif" alt="script_mentions" /></p>
<p>Being the one doing the most talking does not necessarily mean youâre the most popular, so now we will take a look at whoâs talked about the most. This is a pretty difficult task to accurately capture all mentions of each character. A possible solution is a list of nicknames for each character (let me know if I have missed any out!). Itâs pertinent to note, this is the method we will use to find any reference to each character throughout this post, using the nicknames detailed below.</p>
<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">nicknames</span> <span class="o">=</span> <span class="p">[[</span><span class="s">'Rachel'</span><span class="p">,</span> <span class="s">'Rach'</span><span class="p">],</span>
<span class="p">[</span><span class="s">'Ross'</span><span class="p">,</span> <span class="s">'Ross-A-Tron'</span><span class="p">,</span> <span class="s">'Professor Geller'</span><span class="p">],</span>
<span class="p">[</span><span class="s">'Monica'</span><span class="p">,</span> <span class="s">'Mon'</span><span class="p">],</span>
<span class="p">[</span><span class="s">'Chandler'</span><span class="p">,</span> <span class="s">'Chan'</span><span class="p">],</span>
<span class="p">[</span><span class="s">'Joey'</span><span class="p">,</span> <span class="s">'Joe'</span><span class="p">],</span>
<span class="p">[</span><span class="s">'Phoebe'</span><span class="p">,</span> <span class="s">'Phoebes'</span><span class="p">]]</span>
</code></pre></div></div>
<p>In order to get the count, we first iterate through the characters, keeping a count of the mentions. Using a nested for-loop to get each characters nickname, we use the pandas <code class="language-plaintext highlighter-rouge">count()</code> method to keep a tally of the number of mentions.</p>
<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># SQL query to get all lines
</span><span class="n">all_lines</span> <span class="o">=</span> <span class="n">pd</span><span class="p">.</span><span class="n">read_sql</span><span class="p">(</span><span class="s">"""
SELECT line
FROM lines"""</span><span class="p">,</span> <span class="n">conn</span><span class="p">)</span>
<span class="n">char_mention</span> <span class="o">=</span> <span class="p">[]</span> <span class="c1"># list to hold the character mention totals
</span>
<span class="k">for</span> <span class="n">name_list</span> <span class="ow">in</span> <span class="n">nicknames</span><span class="p">:</span> <span class="c1"># loop for each character
</span> <span class="n">mention_counter</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># keep track of the mentions
</span> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">name_list</span><span class="p">:</span> <span class="c1"># loop for each nickname
</span> <span class="n">mentions</span> <span class="o">=</span> <span class="n">all_lines</span><span class="p">[</span><span class="s">'line'</span><span class="p">].</span><span class="nb">str</span><span class="p">.</span><span class="n">count</span><span class="p">(</span><span class="n">name</span><span class="p">).</span><span class="nb">sum</span><span class="p">()</span>
<span class="n">mention_counter</span> <span class="o">+=</span> <span class="n">mentions</span>
<span class="n">char_mention</span><span class="p">.</span><span class="n">append</span><span class="p">([</span><span class="n">name_list</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">mention_counter</span><span class="p">])</span> <span class="c1">#append the name and mention count
</span></code></pre></div></div>
<p><img src="../assets/images/friends/mentions_agg.png" alt="mentions_agg" /></p>
<p>When using only full names, Ross is the most mentioned. âChanâ, âJoeâ, âMonâ and âRachâ are all mentioned more than their full names. This supports the decision to include the nicknames but does also highlight how sensitive the results are to picking the right names.</p>
<p><img src="../assets/images/friends/mentions.png" alt="mentions" /></p>
<h1 id="words">Words</h1>
<h2 id="catchphrases">Catchphrases</h2>
<p>There are a few running catchphrases, for example âSmelly Cat â was mentioned 37 times throughout the whole show. The infamous âWe were on a breakâ line was referred to 17 times. And Joeyâs pick up line âHow you doinââ was said 37 times.</p>
<h2 id="largest-vocabulary">Largest Vocabulary</h2>
<p><img src="../assets/images/friends/wisdomous.gif" alt="wisdomous" class="align-center" /></p>
<div class="language-sql highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">SELECT</span> <span class="nb">char</span><span class="p">,</span> <span class="n">line</span>
<span class="k">FROM</span> <span class="n">lines</span>
<span class="k">WHERE</span> <span class="nb">char</span> <span class="k">IN</span> <span class="p">(</span><span class="s1">'Rachel'</span><span class="p">,</span> <span class="s1">'Ross'</span><span class="p">,</span> <span class="s1">'Monica'</span><span class="p">,</span><span class="s1">'Chandler'</span><span class="p">,</span><span class="s1">'Joey'</span><span class="p">,</span> <span class="s1">'Phoebe'</span><span class="p">)</span>
</code></pre></div></div>
<p>Another interesting aspect to look at is the lexicon of words each character uses. This is done by first selecting all the lines said by the main characters as shown above. After which all non alphabetical characters are removed. Every line by each characters is then split into words (using the space in between to split) and added to a set. A set allows no repeated values which is perfect for our use in this case.</p>
<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># function to remove all non alphabetical characters keep spaces
</span><span class="k">def</span> <span class="nf">alphanumonly</span><span class="p">(</span><span class="n">text</span><span class="p">):</span>
<span class="s">'''Remove all non letters from string'''</span>
<span class="n">regex</span> <span class="o">=</span> <span class="n">re</span><span class="p">.</span><span class="nb">compile</span><span class="p">(</span><span class="s">'[^a-zA-Z ]'</span><span class="p">)</span>
<span class="c1">#First parameter is the replacement, second parameter is your input string
</span> <span class="k">return</span><span class="p">(</span><span class="n">regex</span><span class="p">.</span><span class="n">sub</span><span class="p">(</span><span class="s">''</span><span class="p">,</span> <span class="n">text</span><span class="p">))</span>
</code></pre></div></div>
<p>Unsurprisingly Ross tops the list his passion for dinosaurs is a running joke throughout the series. Despite his career, starting off at the New York Museum of Prehistoric History and then professor at New York University, some real-life paleontologists <a href="https://redditblog.com/2015/10/24/an-actual-paleontologist-grades-friends-paleontologist-ross-gellar/">arenât convinced</a>. Iâm sure Iâm not the only one surprised to see Joey in not-last-place. Given the roleâs stereotypical caricature it appears Joey does have a couple of words up his sleeve, even if they are made up!</p>
<p><img src="../assets/images/friends/vocabross1.png" alt="vocabross1" /></p>
<h1 id="how-you-doin">How you Doinâ?</h1>
<h2 id="ross-and-rachel">Ross and Rachel</h2>
<p>As we have calculated a sentiment score for each line, we are able to monitor this score throughout the course of a season. The chart below tracks the sentiment score for Rachel and Ross throughout the first 2 seasons, <strong>click the blue dots</strong> to get a possible explanation of each score. Total sentiment score per episode is presented, as the scores range in-between -1 to 1 the total will give an indication of the majority of sentiment throughout a particular episode.</p>
<div class="iactiveImg" data-ii="7508"></div>
<script src="https://interactive-img.com/js/include.js"></script>
<p>Episode 104 is where Rachel gets her first paycheck, may be the cause of such positive sentiment as is episode 117 with a guest appearance from George Clooney. Ross really experiences the highs and lows throughout the first episodes, finding out he was having a boy in episode 112 before saying bye to marcel in episode 121. Before finally, both characters show a spike on episode 207, The One where Ross Finds Out and a conflicted Ross finds out Rachel has feelings for him. This may be why Rossâ overall sentiment for that episode was âmuted but positiveâ.</p>
<h1 id="networks">Networks</h1>
<p>So far we have mostly looked at out FRIENDS isolation, here we will see how they interact. Looking at how many times a character mentions another characters name the show so we can draw networks relating each character to another. The table below shows the results; read from left to right tells us that Rachel mentioned herself 187 times and mentioned Joey the most: 739 times. Read from top to bottom can be understood as Rachel mentioned Chandler 321 times, Ross mentioned him 332 times and his wife (Monica) mentioned him the most: 622.</p>
<table>
<thead>
<tr>
<th>Â </th>
<th>Rachel</th>
<th>Ross</th>
<th>Monica</th>
<th>Chandler</th>
<th>Joey</th>
<th>Phoebe</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Rachel</strong></td>
<td>187</td>
<td>550</td>
<td>566</td>
<td>321</td>
<td>739</td>
<td>222</td>
</tr>
<tr>
<td><strong>Ross</strong></td>
<td>662</td>
<td>95</td>
<td>375</td>
<td>332</td>
<td>415</td>
<td>126</td>
</tr>
<tr>
<td><strong>Monica</strong></td>
<td>482</td>
<td>226</td>
<td>171</td>
<td>622</td>
<td>487</td>
<td>275</td>
</tr>
<tr>
<td><strong>Chandler</strong></td>
<td>185</td>
<td>189</td>
<td>458</td>
<td>163</td>
<td>585</td>
<td>88</td>
</tr>
<tr>
<td><strong>Joey</strong></td>
<td>398</td>
<td>353</td>
<td>306</td>
<td>502</td>
<td>282</td>
<td>119</td>
</tr>
<tr>
<td><strong>Phoebe</strong></td>
<td>366</td>
<td>207</td>
<td>426</td>
<td>318</td>
<td>354</td>
<td>133</td>
</tr>
</tbody>
</table>
<p>The table throws up some interesting findings, Rachel was mentioned the most by Ross (622, and one <a href="https://youtu.be/5-1-W-qH6Fc?t=253">cost him his marrige</a> ) and Ross was mentioned by Rachel the most: 550. Interestingly, although Monica says chandler the most, Chandler says Joey the most.</p>
<p><img src="../assets/images/friends/excited.gif" alt="excited" class="align-center" /></p>
<p>The table does provide some insight but it isnât the most ascetically pleasing way to look at the findings. So we can create a chord diagram using <a href="https://github.com/fengwangPhysics/matplotlib-chord-diagram/blob/master/matplotlib-chord.py">this fucntion</a> provided on Github. The size of the chords for each characters section represents how many times they said the connecting characters name. In other words, if you were to read the values from left to right in the table, that is what each characters portion shows. This makes it clearer just how much both Joey and Monica occupy Chandlerâs mentions by looking at the pink slice.</p>
<p><img src="../assets/images/friends/centrality.png" alt="centrality" /></p>
<h2 id="graph-and-centrality">Graph and Centrality</h2>
<p>We have visualised this network of FRIENDS connected by mentions, now letâs calculate a centrality score for each of them. Centrality aims to answer the question: <em>Who is the most important or central person in this network?</em>. Obviously this is a subjective question depending on the definition of importance. Before we define our measure of importance, we must first convert our table into a graph data structure. We will use networkx to create a directed, weighted graph using the values in the table above (stored in <code class="language-plaintext highlighter-rouge">network_data</code>). Nodes are the characters and the weights are the number of mentions. We can also check the graph has been created correctly by checking the edge weights between nodes.</p>
<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">import</span> <span class="nn">networkx</span> <span class="k">as</span> <span class="n">nx</span>
<span class="n">A</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">array</span><span class="p">(</span><span class="n">network_data</span><span class="p">)</span> <span class="c1">#turn the list of list into a numpy array
</span><span class="n">G</span> <span class="o">=</span> <span class="n">nx</span><span class="p">.</span><span class="n">DiGraph</span><span class="p">(</span><span class="n">A</span><span class="p">)</span> <span class="c1">#use a directed graph
</span>
<span class="n">mapping</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">:</span><span class="s">'Rachel'</span><span class="p">,</span> <span class="mi">1</span><span class="p">:</span><span class="s">'Ross'</span><span class="p">,</span> <span class="mi">2</span><span class="p">:</span><span class="s">'Monica'</span><span class="p">,</span><span class="mi">3</span><span class="p">:</span><span class="s">'Chandler'</span><span class="p">,</span><span class="mi">4</span><span class="p">:</span><span class="s">'Joey'</span><span class="p">,</span> <span class="mi">5</span><span class="p">:</span><span class="s">'Phoebe'</span><span class="p">}</span>
<span class="n">H</span> <span class="o">=</span> <span class="n">nx</span><span class="p">.</span><span class="n">relabel_nodes</span><span class="p">(</span><span class="n">G</span><span class="p">,</span> <span class="n">mapping</span><span class="p">)</span> <span class="c1">#relabel the nodes
</span>
<span class="n">H</span><span class="p">[</span><span class="s">'Phoebe'</span><span class="p">][</span><span class="s">'Monica'</span><span class="p">]</span> <span class="c1">#check the edge weight
</span></code></pre></div></div>
<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">out</span><span class="p">:</span> <span class="p">{</span><span class="s">'weight'</span><span class="p">:</span> <span class="mi">426</span><span class="p">}</span> <span class="c1"># yay! it matches our table
</span></code></pre></div></div>
<p>Our graph is now initialised, we will be using the the <a href="https://www.youtube.com/watch?v=9vs1zSqd070">Eigenvector Centrality</a> as a measure of importance (also used in Googleâs page rank). This algorithm aims quantify influence of people in a social network, based on connections with important people. In this case we are defining âimportanceâ as connections with important people. With an emphasis on links with other people, it is easy to see how this may be applied to other larger networks such as Twitter. Using âinteractionsâ (retweets and likes) as weights, this algorithm may be able to give you the most connected accounts in a network, potentially gaining more insight than a count of the highest number of followers. Valuable information for anyone looking to gauge (or alter) public opinion.</p>
<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># Compute the degree centrality of the Twitter network
</span><span class="n">cent_scores</span> <span class="o">=</span> <span class="n">nx</span><span class="p">.</span><span class="n">algorithms</span><span class="p">.</span><span class="n">centrality</span><span class="p">.</span><span class="n">eigenvector_centrality_numpy</span><span class="p">(</span><span class="n">H</span><span class="p">,</span><span class="n">weight</span><span class="o">=</span><span class="s">'weight'</span><span class="p">)</span>
</code></pre></div></div>
<p>Networkx makes life easy, apply the <code class="language-plaintext highlighter-rouge">eigenvector_centrality_numpy</code> method and define the weights to calculate the scores for each node. The result in order of importance is shown below. I was surprised upon initially looking at the results, however when I thought about the measure it started to make sense. I think Joey could be seen as the glue of the group, always interacting with the other characters. To see Ross and Rachel at the lower end isnât entirely surprising given that they occupy most of each others time. This post hasnât been great for Phoebe đâ .These results are subjective, as as is the interpretation and I would love to hear what you think about the centrality scores.</p>
<table>
<thead>
<tr>
<th style="text-align: center">Character</th>
<th style="text-align: center">Centrality Score</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: center">Joey</td>
<td style="text-align: center">0.549413</td>
</tr>
<tr>
<td style="text-align: center">Chandler</td>
<td style="text-align: center">0.443715</td>
</tr>
<tr>
<td style="text-align: center">Monica</td>
<td style="text-align: center">0.427912</td>
</tr>
<tr>
<td style="text-align: center">Rachel</td>
<td style="text-align: center">0.420983</td>
</tr>
<tr>
<td style="text-align: center">Ross</td>
<td style="text-align: center">0.326894</td>
</tr>
<tr>
<td style="text-align: center">Phoebe</td>
<td style="text-align: center">0.184572</td>
</tr>
</tbody>
</table>
<p>I hope you enjoyed this alternative view on the popular show. Whilst I understand FRIENDS may not be everyoneâs cup of tea I do think this kind of analysis can be applied to almost any long running series. Maybe you could try out something similar for your favourite show and let me know what you find!</p>
<p>Thanks for reading đ</p>Yusuf SohoyeAnalysing the FRIENDS series using the show's scripts.The One with the Data Engineering2019-08-29T00:00:00+00:002019-08-29T00:00:00+00:00https://yusufsohoye.com/friends-engineering<p>This post will provide an in-depth walkthrough of how to format and export text files into a SQLite database using python. The text files used in this projects contain all scripts from the T.V. show F.R.I.E.N.D.S. and was downloaded from <a href="https://fangj.github.io/friends/">this repository</a>. The aim of this project is to provide a more accessible data set to better serve analysis to be completed in <a href="https://quotennial.github.io/friends-analysis/">this blog post</a>.</p>
<h1 id="iterating-through-scripts">Iterating Through Scripts</h1>
<p>Each script is a text file containing some information about the episode, the title, writers and transcribers before the script actually starts. We need to find a way to turn a <strong>script</strong> into rows in a database and then work out how to do this for <strong>multiple scripts.</strong></p>
<p><img src="../assets/images/friends/scriptsample.png" alt="scriptsample" class="align-center" /></p>
<p>We will start trying to iterate through the scripts. They are stored in multiple text files and helpfully titled using the format <code class="language-plaintext highlighter-rouge">season.episode</code>. We can utilise the OS library in python to navigate through our text files.</p>
<p><img src="../assets/images/friends/scriptfiles.png" alt="scriptfiles" class="align-center" /></p>
<p>As it stands, the code below will iterate through all the files in our <code class="language-plaintext highlighter-rouge">scripts</code> folder to obtain the <code class="language-plaintext highlighter-rouge">filename</code>. This filename is then split using the <code class="language-plaintext highlighter-rouge">.</code> separator and those numbers are stored in variables to be appended to the master list. The <code class="language-plaintext highlighter-rouge">master_list</code> is created as eventually we will want to store the results in a DataFrame.</p>
<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">import</span> <span class="nn">os</span>
<span class="n">master_array</span> <span class="o">=</span> <span class="p">[]</span> <span class="c1">#append results to array to create data frame
</span>
<span class="k">for</span> <span class="n">filename</span> <span class="ow">in</span> <span class="n">os</span><span class="p">.</span><span class="n">listdir</span><span class="p">(</span><span class="s">'/scripts/'</span><span class="p">):</span>
<span class="n">split_name</span> <span class="o">=</span> <span class="n">filename</span><span class="p">.</span><span class="n">split</span><span class="p">(</span><span class="s">'.'</span><span class="p">)</span> <span class="c1">#obtain the season and episodes
</span> <span class="n">season</span> <span class="o">=</span> <span class="n">split_name</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
<span class="n">episode</span> <span class="o">=</span> <span class="n">split_name</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
<span class="c1">#TODO method to get each line of the script
</span> <span class="n">master_array</span><span class="p">.</span><span class="n">append</span><span class="p">([</span><span class="n">season</span><span class="p">,</span> <span class="n">episode</span><span class="p">])</span>
</code></pre></div></div>
<h1 id="regular-expressions">Regular Expressions</h1>
<p>Now we know how to move through our FRIENDS files, we need to see how to isolate the lines from each file. To do so I will be using regular expressions, the scripts are quite messy and all formatted differently depending on the transcriber. The pertinent pattern is <code class="language-plaintext highlighter-rouge">character_name: speech</code> however this can sometimes span multiple lines. Regular Expressions is like a really powerful <code class="language-plaintext highlighter-rouge">ctrl-F</code>, they are used to search for patterns in strings, a nice intro on can be found <a href="https://medium.com/front-end-weekly/a-practical-beginners-guide-to-regex-regular-expressions-2faccbda117d">here</a>. The aim of our regular expression is to match the space before our intended line as indicated by the pink dots. We aim to find this space as we can then split the whole file using these positions, giving us groups of character-speech pairs.</p>
<p><img src="../assets/images/friends/scriptsample_regex.png" alt="scriptsample" class="align-center" /></p>
<p>The regular expression used is shown below. First we mathc the string before a colon <code class="language-plaintext highlighter-rouge">\w+(?=:)</code>, so now we have âfoundâ the names of each character. However if we want to match the space before we must use <code class="language-plaintext highlighter-rouge">\s</code>. You can <a href="https://regex101.com/r/GFOGbq/2">test it out for yourself</a>, as you can see in the example, the regular expression also matches the space before the writers and transcribers, this will need to be removed after. Now we implement the regular expression in python. In the below code we are also able to split the character name and the speech.</p>
<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">script</span> <span class="o">=</span><span class="n">f</span><span class="p">.</span><span class="n">read</span><span class="p">()</span> <span class="c1">#read the script file
</span>
<span class="n">pattern</span> <span class="o">=</span> <span class="n">re</span><span class="p">.</span><span class="nb">compile</span><span class="p">(</span><span class="sa">r</span><span class="s">'\s(?=\w+(?=:))'</span><span class="p">)</span> <span class="c1"># store the regex
</span><span class="n">result</span> <span class="o">=</span> <span class="n">re</span><span class="p">.</span><span class="n">split</span><span class="p">(</span><span class="n">pattern</span><span class="p">,</span> <span class="n">script</span><span class="p">)</span> <span class="c1"># split the script where our pattern matched (pink dot)
</span>
<span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">result</span><span class="p">:</span>
<span class="n">split_line</span> <span class="o">=</span> <span class="n">item</span><span class="p">.</span><span class="n">split</span><span class="p">(</span><span class="s">':'</span><span class="p">)</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">character</span> <span class="o">=</span> <span class="n">split_line</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
<span class="n">speech</span> <span class="o">=</span> <span class="n">split_line</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
<span class="k">except</span><span class="p">:</span>
<span class="k">pass</span>
</code></pre></div></div>
<p>This is combined with our loop in the previous section and the <code class="language-plaintext highlighter-rouge">mater_array</code> is converted to a pandas data frame:</p>
<table>
<thead>
<tr>
<th><strong>season</strong></th>
<th><strong>episode</strong></th>
<th><strong>char</strong></th>
<th><strong>line</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>23</td>
<td>Ross</td>
<td>Sheâs not here yet. Sheâs not here. Sheâs havâŚ</td>
</tr>
<tr>
<td>1</td>
<td>23</td>
<td>Monica</td>
<td>Iâm sure everythingâs fine. Has her water broâŚ</td>
</tr>
<tr>
<td>1</td>
<td>23</td>
<td>Ross</td>
<td>I donât know, but when I spoke to her, she saâŚ</td>
</tr>
<tr>
<td>1</td>
<td>23</td>
<td>Joey</td>
<td>Do we have to know about that?</td>
</tr>
<tr>
<td>1</td>
<td>23</td>
<td>Monica</td>
<td>Joey, what are you gonna do when you have a bâŚ</td>
</tr>
</tbody>
</table>
<h1 id="cleaning">Cleaning</h1>
<p>Despite our best efforts, the results are still not 100% ready for analysis. Our first issue is that there are multiple names for each character, this can be seen by executing <code class="language-plaintext highlighter-rouge">sorted(df['char'].unique())</code>, this will return a list of all unique values in the column. To rectify this takes some manual work which involves looking at the multiple spellings of a certain name, case sensitive! To change the names we use the pandas <code class="language-plaintext highlighter-rouge">replace</code> method:</p>
<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># Ensure all names are refering to the correct person
</span><span class="n">df</span><span class="p">[</span><span class="s">'char'</span><span class="p">].</span><span class="n">replace</span><span class="p">({</span><span class="s">'CHAN'</span><span class="p">:</span><span class="s">'Chandler'</span><span class="p">,</span><span class="s">'CHANDLER'</span><span class="p">:</span><span class="s">'Chandler'</span><span class="p">,</span> <span class="s">'Chandlers'</span><span class="p">:</span><span class="s">'Chandler'</span><span class="p">,</span>
<span class="s">'JOEY'</span><span class="p">:</span><span class="s">'Joey'</span><span class="p">,</span>
<span class="s">'MNCA'</span><span class="p">:</span><span class="s">'Monica'</span><span class="p">,</span><span class="s">'MONICA'</span><span class="p">:</span><span class="s">'Monica'</span><span class="p">,</span>
<span class="s">'PHOE'</span><span class="p">:</span><span class="s">'Phoebe'</span><span class="p">,</span><span class="s">'PHOEBE'</span><span class="p">:</span><span class="s">'Phoebe'</span><span class="p">,</span> <span class="s">'Pheebs'</span><span class="p">:</span><span class="s">'Phoebe'</span><span class="p">,</span>
<span class="s">'Rache'</span><span class="p">:</span><span class="s">'Rachel'</span><span class="p">,</span><span class="s">'RACHEL'</span><span class="p">:</span><span class="s">'Rachel'</span><span class="p">,</span> <span class="s">'RACH'</span><span class="p">:</span><span class="s">'Rachel'</span><span class="p">,</span>
<span class="s">'ROSS'</span><span class="p">:</span><span class="s">'Ross'</span><span class="p">},</span><span class="n">inplace</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
</code></pre></div></div>
<p>Now we need to address the issues caused by our regular expression, as it caught the authors and transcribers. The format of these lines all end in <strong>by</strong>. Therefore the regular expression takes the last word before the colon as the character name. This means we can drop all of these rows by removing the character <strong>by</strong>. Bye by.</p>
<ul>
<li>Written <strong>by</strong>:</li>
<li>Transcibed <strong>by</strong>:</li>
</ul>
<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">df</span> <span class="o">=</span> <span class="n">df</span><span class="p">[</span><span class="n">df</span><span class="p">.</span><span class="n">char</span> <span class="o">!=</span> <span class="s">'by'</span><span class="p">]</span>
</code></pre></div></div>
<p><img src="../assets/images/friends/clean.gif" alt="clean" class="align-center" /></p>
<h1 id="sentiment-again">Sentiment (Again)</h1>
<p>Sentiment analysis is on the table when dealing with strings, a more in-depth discussion can be found in a <a href="https://quotennial.github.io/loveisland/">previous blog post</a>. Similar methods are used, for each line in the database a sentiment score is calculated and stored in the <code class="language-plaintext highlighter-rouge">line_sent</code> column:</p>
<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">df</span><span class="p">[</span><span class="s">'line_sent'</span><span class="p">]</span> <span class="o">=</span> <span class="n">df</span><span class="p">[</span><span class="s">'line'</span><span class="p">].</span><span class="nb">apply</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">TextBlob</span><span class="p">(</span><span class="n">x</span><span class="p">).</span><span class="n">sentiment</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
</code></pre></div></div>
<h1 id="export-to-sql">Export to SQL</h1>
<p>Now this may not be a necessary step as most of the SQL commands we would be using could be done using pandas. However, I think sometimes altering different data frame scan sometimes get messy and SQL language may provide a ore readable way to access this data. Therefore we are now going to move the pandas dataframe into a SQL database. I am using <a href="https://sqlitebrowser.org">DB Browser for SQLite</a>.</p>
<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">import</span> <span class="nn">sqlite3</span>
<span class="n">conn</span> <span class="o">=</span> <span class="n">sqlite3</span><span class="p">.</span><span class="n">connect</span><span class="p">(</span><span class="s">'friends_script.db'</span><span class="p">)</span> <span class="c1">#connect to the database
</span><span class="n">df</span><span class="p">.</span><span class="n">to_sql</span><span class="p">(</span><span class="s">'lines'</span><span class="p">,</span> <span class="n">conn</span><span class="p">,</span> <span class="n">if_exists</span><span class="o">=</span><span class="s">'replace'</span><span class="p">,</span> <span class="n">index</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span> <span class="c1"># save into the 'lines' table
</span></code></pre></div></div>
<table>
<thead>
<tr>
<th>season</th>
<th>episode</th>
<th>char</th>
<th>line</th>
<th>line_sent</th>
</tr>
</thead>
<tbody>
<tr>
<td>season(int)</td>
<td>episode(int)</td>
<td>Character Name (str)</td>
<td>speech(str)</td>
<td>sentiment score (float)</td>
</tr>
</tbody>
</table>
<p>Finally our scripts are formatted and placed in a SQL database. Data wrangling in this way can transform raw data into a more useful data set. Even though we are not adding too much to the data set, the different organisational structure can enable a wider breadth of analysis. Now we have the scripts formatted in this way, we can utilise SQL to gain further insights into the show as carried out in <a href="https://quotennial.github.io/friends-analysis/">this article</a>.</p>
<p><img src="../assets/images/friends/This-is-brand-new-information-friends-gif.gif" alt="This-is-brand-new-information-friends-gif" class="align-center" /></p>Yusuf SohoyeCleaning and formatting FRIENDS scripts into a SQLite databaseDynamic Web Scraping2019-05-05T00:00:00+00:002019-05-05T00:00:00+00:00https://yusufsohoye.com/dynamic-scraping<h1 id="interactive-map-scraping">Interactive Map Scraping</h1>
<p>Web-scraping can throw up lots of different data sets, but sometimes the html structure can get a bit complicated. This post provides a simple example workflow of a simple scraping project and how to create neat, alternative datasets from the web. In this example we are able to access the data held in an interactive map with a little bit of searching within the HTML script.</p>
<p>The <a href="https://www.bpf.org.uk/what-we-do/bpf-build-rent-map-uk">map used</a> was created by the British Property Federation and shows build-to-rent statistics in the UK. Initial thoughts are to scrape the full HTML and then parse through the all data to find the relevant information. The preferred tool of choice is <a href="http://chromedriver.chromium.org/getting-started">selenium using a Chrome driver</a>.</p>
<h2 id="initial-look">Initial Look</h2>
<p><img src="../assets/images/map_scrape/image-20190129213726123.png" alt="image-20190129213726123" /></p>
<p>Letâs have a look at how the web client works. As you can see from the screenshot, clicking on a build-to-rent property will display a callout with additional details. The map is a great visual tool showing the geographic distribution of these properties, but further analysis is hard.</p>
<p>Letâs search the HTML and see if we can find out something about the underlying structure. First, select a property, then find the name of the property development in the HTML, for example: <em>property_1</em>. Then select another property marker and search for <em>property_1</em>, this is to try and get a better sense of the structure of the HTML. No luck, it seems that each specific property information is loaded on request.</p>
<h2 id="intercepting-json-packages">Intercepting JSON Packages</h2>
<p>Using <a href="https://onlinejournalismblog.com/2017/05/10/how-to-find-data-behind-chart-map-using-inspector/">this</a> very helpful website to utilise the network tab in the inspect module as shown below. <img src="../assets/images/map_scrape/image-20190129214436938.png" alt="image-20190129214436938" /></p>
<p>As the top right of the inspect pane shows, the page loads a file when the marker is clicked. This element contains a JSON-type file. Opening the link directly confirms this is, in fact, a JSON element.</p>
<pre><code class="language-JSON">/**/ typeof _cdbi_layer_attributes_0_4 === 'function' && _cdbi_layer_attributes_0_4({"title":"Surrey House","prs_units":322,"deliverer_contact":"Salmon Harvester Properties","buyer_funder_contact":"Salmon Harvester Properties","manager":"-","planning_status":"Detailed Application","prs_type":"Build to rent","owner":"Salmon Harvester Properties"});
</code></pre>
<p>To get an idea of the structure, we repeat this process a few times to find consistent results. This allows us to note down the addresses.</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>https://cartocdn-gusc-b.global.ssl.fastly.net/savills/api/v1/map/savills@465f18a4@abe58d5bc799578ceeba1b9ab6e7945f:1539185524180/1/attributes/265?callback=_cdbi_layer_attributes_0_20
https://cartocdn-gusc-b.global.ssl.fastly.net/savills/api/v1/map/savills@465f18a4@abe58d5bc799578ceeba1b9ab6e7945f:1539185524180/1/attributes/48?callback=_cdbi_layer_attributes_0_16
https://cartocdn-gusc-b.global.ssl.fastly.net/savills/api/v1/map/savills@465f18a4@abe58d5bc799578ceeba1b9ab6e7945f:1539185524180/1/attributes/285?callback=_cdbi_layer_attributes_0_22
https://cartocdn-gusc-b.global.ssl.fastly.net/savills/api/v1/map/savills@465f18a4@abe58d5bc799578ceeba1b9ab6e7945f:1539185524180/1/attributes/528?callback=_cdbi_layer_attributes_0_21
https://cartocdn-gusc-b.global.ssl.fastly.net/savills/api/v1/map/savills@465f18a4@abe58d5bc799578ceeba1b9ab6e7945f:1539185524180/1/attributes/506?callback=_cdbi_layer_attributes_0_4
</code></pre></div></div>
<p>It may be a bit difficult to see in this view, but the web addresses are identical bar a number in-between the layer and call back attribute (the last digits are irrelevant). Test out this hypothesis by only changing this number, there are no changes to the web page. This makes life a little easier as we only need to change one element of the web address.</p>
<h1 id="selenium-to-scrape-the-data">Selenium to scrape the data</h1>
<p>Using Python we can set up an empty file to hold the scraped elements and define our browser element.</p>
<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">from</span> <span class="nn">selenium</span> <span class="kn">import</span> <span class="n">webdriver</span>
<span class="kn">import</span> <span class="nn">webbrowser</span>
<span class="kn">import</span> <span class="nn">string</span>
<span class="kn">from</span> <span class="nn">io</span> <span class="kn">import</span> <span class="nb">open</span>
<span class="n">text_file</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="s">"scraped_data.txt"</span><span class="p">,</span> <span class="s">"w"</span><span class="p">)</span>
<span class="s">'''Scrapes data from interactive map.'''</span>
<span class="c1">#Open the website using Chrome
</span><span class="n">chromedriver</span> <span class="o">=</span> <span class="s">"pythoncode/chromedriver"</span>
<span class="n">browser</span> <span class="o">=</span> <span class="n">webdriver</span><span class="p">.</span><span class="n">Chrome</span><span class="p">(</span><span class="n">chromedriver</span><span class="p">)</span>
</code></pre></div></div>
<p>Next, we can use a formatted string which includes a variable weâll call {prop_no} to loop through webpages. This allows us to iterate through the webpages and store output in a text file on a new line. At this moment we are unsure how many properties are not his map, a speculative loop from 0 to 1000 with a try/except block should find all properties.</p>
<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">#Itterate through the webpages
</span><span class="k">for</span> <span class="n">property_number</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">1000</span><span class="p">):</span>
<span class="n">prop_no</span> <span class="o">=</span> <span class="n">property_number</span>
<span class="c1">#Store results in a text file
</span> <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="s">"scraped_data.txt"</span><span class="p">,</span> <span class="s">"a"</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
<span class="n">url</span> <span class="o">=</span><span class="sa">f</span><span class="s">"https://cartocdn-gusc-b.global.ssl.fastly.net/savills/api/v1/map/savills@465f18a4@abe58d5bc799578ceeba1b9ab6e7945f:1539185524180/1/attributes/</span><span class="si">{</span><span class="n">prop_no</span><span class="si">}</span><span class="s">?callback=_cdbi_layer_attributes_0_22"</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">browser</span><span class="p">.</span><span class="n">get</span><span class="p">(</span><span class="n">url</span><span class="p">)</span>
<span class="n">results</span> <span class="o">=</span> <span class="n">browser</span><span class="p">.</span><span class="n">page_source</span>
<span class="c1">#Only want relevant JSON, strip away the HTML
</span> <span class="n">results</span> <span class="o">=</span> <span class="n">results</span><span class="p">[</span><span class="mi">215</span><span class="p">:</span><span class="o">-</span><span class="mi">22</span><span class="p">].</span><span class="n">encode</span><span class="p">(</span><span class="s">'utf-8'</span><span class="p">)</span>
<span class="n">f</span><span class="p">.</span><span class="n">write</span><span class="p">(</span><span class="sa">f</span><span class="s">"</span><span class="si">{</span><span class="n">results</span><span class="si">}</span><span class="se">\n</span><span class="s">"</span><span class="p">)</span>
<span class="k">except</span><span class="p">:</span>
<span class="k">print</span><span class="p">(</span><span class="n">prop_no</span><span class="p">)</span>
<span class="k">break</span>
</code></pre></div></div>
<p><strong>Result</strong>: No more results were returned after we reached property number 568. Our script returns all of the data in a text file.</p>
<h1 id="cleaning-the-json-data">Cleaning the JSON data</h1>
<p>We could have used a parser to manipulate the data as it was being scraped. Instead, we now have a text file with JSON data for each property. This is easy enough to split using the the excel split tool. Less than a minute using the import external data tool and we have a clean looking dataset. We also have more features then shown on the website so that is nice.<img src="../assets/images/map_scrape/image-20190129233250146.png" alt="image-20190129233250146" /></p>
<h1 id="further-steps">Further Steps</h1>
<p>Unfortunately, our scraping has lost the longitude and latitude elements of the original web interface. An extremely useful tool provided by Google is the Google Maps API. The set up can be a bit fiddly but the documentation is really clear if you have never used it before. The <a href="https://developers.google.com/maps/documentation/geocoding/start">geocode Google API</a> is exactly what we need. Create a function to take the addresses from the csv file as input, pass that as an argument to the google api and return the longitude and latitude.</p>
<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">def</span> <span class="nf">get_long_lat</span><span class="p">(</span><span class="n">address</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="c1"># Geocoding an address
</span> <span class="n">geocode_result</span> <span class="o">=</span> <span class="n">gmaps</span><span class="p">.</span><span class="n">geocode</span><span class="p">(</span><span class="n">address</span><span class="p">)</span>
<span class="c1">#returns a JSON type value
</span> <span class="n">result</span> <span class="o">=</span> <span class="p">(</span><span class="n">geocode_result</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
<span class="n">location_dict</span> <span class="o">=</span> <span class="n">result</span><span class="p">.</span><span class="n">get</span><span class="p">(</span><span class="s">'geometry'</span><span class="p">)</span> <span class="c1">#get part of the return object
</span> <span class="n">location</span> <span class="o">=</span> <span class="n">location_dict</span><span class="p">.</span><span class="n">get</span><span class="p">(</span><span class="s">'location'</span><span class="p">)</span>
<span class="k">return</span><span class="p">(</span><span class="n">location</span><span class="p">)</span>
<span class="k">except</span><span class="p">:</span>
<span class="k">return</span><span class="p">(</span><span class="s">"Error"</span><span class="p">)</span>
<span class="k">print</span><span class="p">(</span><span class="sa">f</span><span class="s">"</span><span class="si">{</span><span class="n">address</span><span class="si">}</span><span class="s"> not found"</span><span class="p">)</span>
</code></pre></div></div>
<p>We then create a function to iterate through the original csv file and append the relevant longitude and latitude values. We now have a clean data set that can be used with other location specific variables or distance-related calculations.</p>
<p>This project has enabled us to generate a data set from an online visualisation tool. Using the built in âinspect elementâ tools in our browsers, we can create aggregated the information and allow us to perform more in-depth analysis. I hope this has been a useful run through of an example web-scraping project. Any thoughts or comments please let me know!</p>Yusuf SohoyeWeb Scraping an interactive map.Love Island Twitter Analysis2019-05-05T00:00:00+00:002019-05-05T00:00:00+00:00https://yusufsohoye.com/loveisland<p>This article will look at the twittersphere in relation to this yearâs Love Island series. If you want to skip straight to the Love Island results, feel free to do so using the contents navigator. In this article we will use the Twitter API to gauge sentiment about Love Island contestants. In addition we will also use <a href="https://textblob.readthedocs.io/en/dev/quickstart.html">TextBlob</a> to parse our selected tweets and use the natural language processing tools in the package.</p>
<p>Firstly letâs import the packages we will be using including some visualisation libraries.</p>
<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">import</span> <span class="nn">tweepy</span>
<span class="kn">from</span> <span class="nn">textblob</span> <span class="kn">import</span> <span class="n">TextBlob</span>
<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="n">np</span>
<span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="n">plt</span>
<span class="kn">import</span> <span class="nn">seaborn</span> <span class="k">as</span> <span class="n">sns</span>
<span class="kn">import</span> <span class="nn">datetime</span>
</code></pre></div></div>
<h1 id="twitter-api">Twitter API</h1>
<p>To make use of the twitter API, you must register a developer account which can be linked to your personal account. To do so use this <a href="https://apps.twitter.com/">link</a> and follow the instructions. The process shouldnât take too long. After you have successfully registered, we need to define our API Keys:</p>
<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># Define API keys
</span><span class="n">consumer_key</span> <span class="o">=</span> <span class="s">'your-consumer_key'</span>
<span class="n">consumer_secret</span> <span class="o">=</span> <span class="s">'your-consumer_secret'</span>
<span class="n">access_token</span> <span class="o">=</span> <span class="s">'your-access_token'</span>
<span class="n">access_token_secret</span> <span class="o">=</span> <span class="s">'your-access_token_secret'</span>
</code></pre></div></div>
<p>and authenticate our connection to the API:</p>
<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># Authenticate your application
</span><span class="n">auth</span> <span class="o">=</span> <span class="n">tweepy</span><span class="p">.</span><span class="n">OAuthHandler</span><span class="p">(</span><span class="n">consumer_key</span><span class="p">,</span> <span class="n">consumer_secret</span><span class="p">)</span>
<span class="n">auth</span><span class="p">.</span><span class="n">set_access_token</span><span class="p">(</span><span class="n">access_token</span><span class="p">,</span> <span class="n">access_token_secret</span><span class="p">)</span>
<span class="n">api</span> <span class="o">=</span> <span class="n">tweepy</span><span class="p">.</span><span class="n">API</span><span class="p">(</span><span class="n">auth</span><span class="p">)</span>
</code></pre></div></div>
<p>Now that we have successfully connected to the twitter API, we are ready to collect some tweets.</p>
<h1 id="sentiment-analysis">Sentiment Analysis</h1>
<p>Before we start asking Twitter for some some tweets, letâs first talk about what sentiment analysis is. Sentiment analysis is part of the broader Natural Language Processing tools. Since language is tricky for for computers - words have many meanings and sarcasm is hard to pick up across text, therefore context is often key. These issues are illustrated in the example below:</p>
<p><img src="../assets/images/love_island/maxresdefault.jpg" alt="maxresdefault" class="align-center" /></p>
<p>This example could be an instruction to fly (verb) over the boat, or it could be a description of a fly (noun) over the boat. In addition, it could mean that the boat has a red front part (bow), or it might be that the fly has a red accessory with which he can play the violin (bow).</p>
<p>This rather obscure example is for illustrative purposes, but complicated semantics occur in everyday text on a regular basis.</p>
<h1 id="bag-of-words-method">Bag of words method</h1>
<h2 id="tokenisation">Tokenisation</h2>
<p>One approach to managing text is the bag of words method. The <strong>bag of words</strong> method starts by accessing all the words in a piece of text, removing grammar and disregarding word order. This is in the tokenisation stage. We can take the lyrics from Nina Simoneâs seminal classic <em>Feeling Good</em></p>
<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">lyrics</span> <span class="o">=</span> <span class="n">TextBlob</span><span class="p">(</span><span class="s">"""Birds flying high, you know how I feel.
Sun in the sky, you know how I feel."""</span><span class="p">)</span>
<span class="n">lyrics</span><span class="p">.</span><span class="n">words</span>
</code></pre></div></div>
<p>Our TextBlob library very helpfully splits the words into individual âtokensâ for us to use:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>WordList(['Birds', 'flying', 'high', 'you', 'know', 'how', 'I', 'feel', 'Sun', 'in', 'the', 'sky', 'you', 'know', 'how', 'I', 'feel'])
</code></pre></div></div>
<p>After these tokens are split, we can use speech tagging methods to get a better sense of the composition of the sentence:</p>
<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">lyrics</span><span class="p">.</span><span class="n">tags</span>
</code></pre></div></div>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>[('Birds', 'NNS'),
('flying', 'VBG'),
('high', 'JJ'),
('you', 'PRP'),
('know', 'VBP'),
('how', 'WRB'),
('I', 'PRP'),
('feel', 'VBP'),
('Sun', 'NNP'),
('in', 'IN'),
('the', 'DT'),
('sky', 'NN'),
('you', 'PRP'),
('know', 'VBP'),
('how', 'WRB'),
('I', 'PRP'),
('feel', 'VBP')]
</code></pre></div></div>
<p>These tags are able to classify the individual tokens, for example: Noun Plural (NNS), Adjective (JJ) and others, full list available <a href="https://blog.thedigitalgroup.com/assets/uploads/POS-Tags.png">here</a>. Now we can begin to do many things, like remove âstop wordsâ which are words such as âtheâ, âaâ, âanâ, âinâ. These donât offer any new information and take up space.</p>
<h2 id="stemming-and-lemmatisation">Stemming and Lemmatisation</h2>
<p>We can also use stemming and lemmatisation to get all possible versions of the word. Stemming works by cutting off the end or the beginning of the word, taking into account a list of common prefixes and suffixes that can be found in an inflected word.</p>
<table>
<thead>
<tr>
<th>Word</th>
<th>Stem</th>
</tr>
</thead>
<tbody>
<tr>
<td>Studies</td>
<td>Studi</td>
</tr>
<tr>
<td>Studying</td>
<td>Study</td>
</tr>
</tbody>
</table>
<p>Lemitisation takes into consideration the morphological analysis of the words.</p>
<table>
<thead>
<tr>
<th>Word</th>
<th>Lemma</th>
</tr>
</thead>
<tbody>
<tr>
<td>Studies</td>
<td>Study</td>
</tr>
<tr>
<td>Studying</td>
<td>Study</td>
</tr>
</tbody>
</table>
<h2 id="sentiment">Sentiment</h2>
<p>In simple terms, sentiment analysis is used to find the authorâs attitude towards something. Tools aim to categorise pieces of text as positive, neutral, or negative. Sentiment analysis utilises tokenisation and algorithms designed to identify positive and negative words to gain the overall text sentiment.</p>
<blockquote>
<p>I <strong><em>hate</em></strong> liars so much Tom needs to go đĄ #LoveIsland</p>
</blockquote>
<p>The above tweet was given a polarity score of -0.30000000000000004, negative number signifying negative sentiment on a scale of -1 to +1.</p>
<p>TextBlob is one implementation of Natural Language Processing and is built on the Natural Language Toolkit <a href="http://www.nltk.org">library</a>. If you would like to know more about natural language processing, <a href="https://medium.com/@ageitgey/natural-language-processing-is-fun-9a0bff37854e">this article</a> is a good place to start.</p>
<h1 id="textblob">TextBlob</h1>
<p>The library we will use for Natural Language processing in python is the TextBlob package. The TextBlob documentation provides some useful code examples with many more elsewhere online. We are able to write a function to get the sentiment scores from a string. The input will be tweets for us.</p>
<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">def</span> <span class="nf">get_sentiment_scores</span><span class="p">(</span><span class="n">search_string</span><span class="p">):</span>
<span class="s">'''Takes in twitter search term, outputs array in the format:
[ [sentiment_score],[subjectivity_score] ]'''</span>
<span class="n">sent_for_term</span> <span class="o">=</span> <span class="p">[]</span>
<span class="n">subj_for_term</span> <span class="o">=</span> <span class="p">[]</span>
<span class="c1"># Use tweepy to search the string, returns 100 score pairs
</span> <span class="n">public_tweets</span> <span class="o">=</span> <span class="n">api</span><span class="p">.</span><span class="n">search</span><span class="p">(</span><span class="n">q</span><span class="o">=</span><span class="n">search_string</span><span class="p">,</span> <span class="n">count</span><span class="o">=</span><span class="mi">100</span><span class="p">)</span>
<span class="k">for</span> <span class="n">tweet</span> <span class="ow">in</span> <span class="n">public_tweets</span><span class="p">:</span>
<span class="c1"># TextBlob returns tuple
</span> <span class="n">analysis</span> <span class="o">=</span> <span class="n">TextBlob</span><span class="p">(</span><span class="n">tweet</span><span class="p">.</span><span class="n">text</span><span class="p">)</span>
<span class="c1"># Store the sentiment and subjectivity scores
</span> <span class="n">sent_for_term</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">analysis</span><span class="p">.</span><span class="n">sentiment</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
<span class="n">subj_for_term</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">analysis</span><span class="p">.</span><span class="n">sentiment</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
<span class="n">score_collect</span> <span class="o">=</span> <span class="p">([</span><span class="n">sent_for_term</span><span class="p">,</span> <span class="n">subj_for_term</span><span class="p">])</span>
<span class="k">return</span> <span class="p">(</span><span class="n">score_collect</span><span class="p">)</span>
</code></pre></div></div>
<p>The search string is the term weâre looking for. It would be the term you would type into the Twitter search bar on the web client. The <code class="language-plaintext highlighter-rouge">public_tweets</code> variable holds 100 tweets and the corresponding metadata: very messy. So we use TextBlob (which has itâs own twitter methods) to parse these messy tweets into what we want, the <code class="language-plaintext highlighter-rouge">tweet.text</code>! Now we have the text, we use the TextBlob sentiment method to get the sentiment and subjectivity of each tweet.</p>
<h2 id="plotting">Plotting</h2>
<p>To plot our results we may use the seaborn joint plot, which will allow us to plot sentiment against subjectivity. This will allow us to retrieve and plot the sentiment scores against the subjectivity scores. This function calls the previous <code class="language-plaintext highlighter-rouge">get_sentiment_scores</code> function to get the sentiment scores and then plot it.</p>
<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code> <span class="s">'''Takes search terms, passed to obtain scores, then prints a joint plot'''</span>
<span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">search_terms</span><span class="p">:</span>
<span class="c1"># Call to the function to query tweepy and store the scores
</span> <span class="n">scores</span> <span class="o">=</span> <span class="n">get_sentiment_scores</span><span class="p">(</span><span class="n">item</span><span class="p">)</span>
<span class="c1"># Zip the sentiment and subjectivity ready to plot
</span> <span class="n">x_coords</span><span class="p">,</span> <span class="n">y_coords</span> <span class="o">=</span> <span class="nb">zip</span><span class="p">(</span><span class="n">np</span><span class="p">.</span><span class="n">array</span><span class="p">(</span><span class="n">scores</span><span class="p">))</span>
<span class="n">h</span> <span class="o">=</span> <span class="n">sns</span><span class="p">.</span><span class="n">jointplot</span><span class="p">(</span><span class="n">x_coords</span><span class="p">,</span> <span class="n">y_coords</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="s">"kde"</span><span class="p">,</span> <span class="n">space</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s">"navy"</span><span class="p">)</span>
<span class="n">h</span><span class="p">.</span><span class="n">ax_joint</span><span class="p">.</span><span class="n">set_xlabel</span><span class="p">(</span><span class="s">'Sentiment Score'</span><span class="p">)</span>
<span class="n">h</span><span class="p">.</span><span class="n">ax_joint</span><span class="p">.</span><span class="n">set_ylabel</span><span class="p">(</span><span class="s">'Subjectivity Score'</span><span class="p">)</span>
<span class="n">h</span><span class="p">.</span><span class="n">fig</span><span class="p">.</span><span class="n">suptitle</span><span class="p">(</span><span class="sa">f</span><span class="s">'</span><span class="si">{</span><span class="n">now</span><span class="p">.</span><span class="n">strftime</span><span class="p">(</span><span class="s">"%Y-%m-%d %H:%M"</span><span class="p">)</span><span class="si">}</span><span class="s"> Search item: </span><span class="si">{</span><span class="n">item</span><span class="si">}</span><span class="s">'</span><span class="p">)</span>
<span class="n">plt</span><span class="p">.</span><span class="n">show</span><span class="p">()</span>
</code></pre></div></div>
<p>Using the <code class="language-plaintext highlighter-rouge">print_analysis</code> function we are able to pass in a search term gathering the top 100 tweets containing that term.</p>
<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">print_analysis</span><span class="p">(</span><span class="s">"#loveisland"</span><span class="p">)</span>
</code></pre></div></div>
<p><img src="../assets/images/love_island/loveisland_sentiment.png" alt="loveisland_sentiment" class="align-center" /></p>
<p>As the figure shows, there is a positive sentiment relating to the show. Lots of excitement, however the classification also provides the subjectivity score. We can see the more extreme the sentiment scores, the more subjective a tweet is likely to be. These are the tweets in the top right of the figure. This passes the common sense test. As we use more excitable language we may stray from strictly the facts and use language to express how we feel.</p>
<h1 id="regular-sentiment-checker">Regular Sentiment Checker</h1>
<p>By altering the <code class="language-plaintext highlighter-rouge">print_analysis</code> function to store the sentiment scores, we are able to track sentiment through time. The function now appends the sentiment scores to a csv file.</p>
<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">def</span> <span class="nf">append_analysis</span><span class="p">(</span><span class="o">*</span><span class="n">search_terms</span><span class="p">):</span>
<span class="s">'''Takes search terms, passed to obtain scores, then prints a joint plot'''</span>
<span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">search_terms</span><span class="p">:</span>
<span class="c1"># Call to the function to query tweepy and store the scores
</span> <span class="n">scores</span> <span class="o">=</span> <span class="n">get_sentiment_scores</span><span class="p">(</span><span class="n">item</span><span class="p">)</span>
<span class="n">append_list</span> <span class="o">=</span> <span class="n">scores</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
<span class="c1">#append the info at the start
</span> <span class="n">append_list</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="n">now</span><span class="p">.</span><span class="n">strftime</span><span class="p">(</span><span class="s">"%Y-%m-%d %H:%M"</span><span class="p">))</span>
<span class="n">append_list</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="n">item</span><span class="p">)</span>
<span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="s">'loveisland_sentiment.csv'</span><span class="p">,</span> <span class="s">'a'</span><span class="p">)</span> <span class="k">as</span> <span class="n">csvFile</span><span class="p">:</span>
<span class="n">writer</span> <span class="o">=</span> <span class="n">csv</span><span class="p">.</span><span class="n">writer</span><span class="p">(</span><span class="n">csvFile</span><span class="p">)</span>
<span class="n">writer</span><span class="p">.</span><span class="n">writerow</span><span class="p">(</span><span class="n">append_list</span><span class="p">)</span>
<span class="n">csvFile</span><span class="p">.</span><span class="n">close</span><span class="p">()</span>
</code></pre></div></div>
<p>We can loop through the list of names currently in the villa.</p>
<h1 id="love-island-results">Love Island Results</h1>
<p><img src="../assets/images/love_island/curtis.gif" alt="curtis" class="align-center" /></p>
<p>Finally, using the methods above, we are able to iterate through tweets mentioning each individual islander to get the sentiment scores from the twittersphere. The programme was run around midday every day. This was done in order to get a more representative sample as twists and turns of each episode may skew the tweets if scraping was done during the episode.</p>
<p>We also use sentiment totals rather than the average sentiment as we want to obtain a magnitude score. The average will standardise the result, summing the total would mean if there are more people tweeting then we can see a larger sentiment score (either positive or negative). If people were feeling really positive about someone, then more people would be tweeting about them leading to a higher score, taking the mean sentiment values would lose this characteristic that implicitly measures the number of tweets mentioning about the individual islander.</p>
<h2 id="total-sentiment">Total Sentiment</h2>
<p>This total score was calculated for the period 20/06 -27/06. The</p>
<p><img src="../assets/images/love_island/sentiment_total.png" alt="sentiment_total" class="align-center" /></p>
<p>As shown, Michael is by far an away the most popular islander over the course of the week.</p>
<p><img src="../assets/images/love_island/michael.gif" alt="michael" class="align-center" /></p>
<h2 id="most-talked-about-islander">Most Talked about Islander</h2>
<p><img src="../assets/images/love_island/total_tweets.png" alt="total_tweets" class="align-center" /></p>
<p>No competition, Yewande is very much the front runner in this, considering she hasnât been on the island for the whole duration of the data set this is very impressive. At the other end of the table, Arabella has the fewest mentions. However, domain knowledge informs me many on Twitter use a large variety of aliases instead of her real name. Hereâs Yewande walking to the top of the mentions:</p>
<p><img src="../assets/images/love_island/Yewande.gif" alt="Yewande" class="align-center" /></p>
<h2 id="sentiment-over-time">Sentiment Over Time</h2>
<p><img src="../assets/images/love_island/sent_time.png" alt="sent_time" class="align-center" /></p>
<p>This may look like a muddle of squiggles, but if you pick out an islander you can follow their journey though the publicâs opinion. For example our favourite man Micheal starts strong and continues to have spikes throughout the week. Whereas Maura in the light green, starts off negative and picks up as the week goes on. Maybe you can pinpoint moments throughout the week to explain these dips and peaks in sentiment scores?</p>
<p>Thanks for reading, I hope this has been a helpful introduction into tweepy and sentiment analysis. If you did enjoy the Love Island theme or have any other thoughts then please let me know!</p>
<h1 id="ps---more-serious-application">P.S. - More Serious Application</h1>
<p>The same methods can be applied to politics and brand management. To be able to access the general publics sentiment about your product is a key tool in the armoury for these organisations.</p>
<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">print_analysis</span><span class="p">(</span><span class="s">"#boris"</span><span class="p">)</span>
</code></pre></div></div>
<p>â <img src="../assets/images/love_island/boris_sentiment.png" alt="boris_sentiment" class="align-center" /></p>
<p>Using our <code class="language-plaintext highlighter-rouge">print_analysis</code> function we are able to search the top 100 tweets using the #boris, and the joint plot uncovers some interesting results. The bottom dark blue spot indicates a fairly neutral tweet, we can interpret this as fact based, maybe news reports and updates. As the subjectivity increases we can see the sentiment splits, these more opinion based tweets can give us an insight into how the twittersphere is feeling about this British prime ministerial candidate.</p>Yusuf SohoyeUsing the Twitter API to see how we feel about Love IslandBuilding a Chatbot2019-01-01T00:00:00+00:002019-01-01T00:00:00+00:00https://yusufsohoye.com/chatbot<p>In the Avengers saga, Tony Stark utilises a number of AI powered assistants to try and <em>create a suit or armour around the world</em>. His most recent assistant is <a href="https://ironman.fandom.com/wiki/F.R.I.D.A.Y.">F.R.I.D.A.Y.</a>, in this article will use the <a href="https://pypi.org/project/SpeechRecognition/">speech_recognition</a> library to scaffold our own virtual assistant. We will also be using the selenium web browser module to give our chatbot some previewed wisdom. An earlier implementation is aviablable in full <a href="https://github.com/Quotennial/Jarvis-Like-Bot/blob/master/Jarvis.py">here</a>. This article will run through the main features and layout of the program.</p>
<h1 id="a-tour-of-the-program">A Tour of the Program</h1>
<p>The program is written in python to help with evening meal plans, it is voice activated apart from the âFood for deliveryâ function. The program starts with the options menu:</p>
<p><img src="../assets/images/chatbot/start_menu.png" alt="start_menu" /></p>
<h2 id="cooking-at-home">Cooking at home</h2>
<p><img src="../assets/images/chatbot/thanos_cooking.png" alt="thanos_cooking" />Even the genocidal warlord from titan enjoys some home-cooking looking over a grateful universe. Using the voice command <em>âcooking at homeâ</em>, FRIDAY will ask you for some ingredients, after youâve said what ingredients you have in stock, the program will use selenium to search and return the best recipes for your ingredients.</p>
<p><img src="../assets/images/chatbot/recipe.png" alt="recipe" /></p>
<p>The code uses selenium to open the website https://recipeland.com and enters the terms in the search box before searching and parsing the top 3 results and outputting the results.</p>
<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">def</span> <span class="nf">search_recipe</span><span class="p">(</span><span class="n">search_term</span><span class="p">,</span> <span class="n">num_results</span><span class="o">=</span><span class="mi">3</span><span class="p">):</span>
<span class="c1">#Open the website using Chrome
</span> <span class="n">url</span> <span class="o">=</span><span class="s">"https://recipeland.com/recipes/by_ingredient"</span>
<span class="n">chromedriver</span> <span class="o">=</span> <span class="s">"/Users/yusufsohoye/pythoncode/chromedriver"</span>
<span class="n">driver</span> <span class="o">=</span> <span class="n">webdriver</span><span class="p">.</span><span class="n">Chrome</span><span class="p">(</span><span class="n">chromedriver</span><span class="p">)</span>
<span class="n">driver</span><span class="p">.</span><span class="n">get</span><span class="p">(</span><span class="n">url</span><span class="p">)</span>
<span class="c1">#Search for the ingredients
</span> <span class="n">search_box</span><span class="o">=</span><span class="n">driver</span><span class="p">.</span><span class="n">find_element_by_id</span><span class="p">(</span><span class="s">"recipes-by-ingredients"</span><span class="p">)</span>
<span class="n">search_box</span><span class="p">.</span><span class="n">send_keys</span><span class="p">(</span><span class="n">search_term</span><span class="p">)</span>
<span class="n">search_box</span><span class="p">.</span><span class="n">submit</span>
<span class="n">search_box</span><span class="p">.</span><span class="n">send_keys</span><span class="p">(</span><span class="sa">u</span><span class="s">'</span><span class="se">\ue007</span><span class="s">'</span><span class="p">)</span>
<span class="c1">#Save the results
</span> <span class="n">links</span> <span class="o">=</span> <span class="n">driver</span><span class="p">.</span><span class="n">find_elements_by_xpath</span><span class="p">(</span><span class="s">"//h2//a"</span><span class="p">)</span>
<span class="n">results</span> <span class="o">=</span><span class="p">[]</span>
<span class="k">for</span> <span class="n">link</span> <span class="ow">in</span> <span class="n">links</span><span class="p">[:</span><span class="n">num_results</span><span class="p">]:</span>
<span class="c1">#Print the title and the link
</span> <span class="n">title</span> <span class="o">=</span> <span class="n">link</span><span class="p">.</span><span class="n">get_attribute</span><span class="p">(</span><span class="s">"title"</span><span class="p">)</span>
<span class="n">href</span> <span class="o">=</span> <span class="n">link</span><span class="p">.</span><span class="n">get_attribute</span><span class="p">(</span><span class="s">"href"</span><span class="p">)</span>
<span class="k">print</span><span class="p">(</span><span class="n">title</span><span class="p">)</span>
<span class="k">print</span><span class="p">(</span><span class="n">href</span><span class="p">)</span>
<span class="n">results</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">href</span><span class="p">)</span>
<span class="k">return</span> <span class="n">results</span>
</code></pre></div></div>
<h2 id="restaurant">Restaurant</h2>
<p>â <img src="../assets/images/chatbot/tony_donut.gif" alt="tony_donut" /></p>
<p>Sometimes we might fancy eating out, F.R.I.D.A.Y. can help with that too! Just use the voice command <em>âbook a restaurantâ</em> and your browser will direct to a selection of restaurants in your chosen area.</p>
<p><img src="../assets/images/chatbot/restaurant_friday.png" alt="restaurant_friday" /></p>
<p>The browser uses your stated location, in this case London, and searches the yelp page to provide you with the recommendations.</p>
<p><img src="../assets/images/chatbot/yelp.png" alt="yelp" /></p>
<h2 id="program-layout">Program Layout</h2>
<p>As mentioned, the full code can be found on the GitHub <a href="https://github.com/Quotennial/Jarvis-Like-Bot/blob/master/Jarvis.py">repo</a>, we start the program by listening for our users input. After that the string in the <code class="language-plaintext highlighter-rouge">f.recognize_google(audio)</code> variable is used to determine the next steps. Looking for key words such as âhomeâ, ârestaurantâ, âdeliveryâ and âbyeâ to direct to certain functions.</p>
<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># The first selection menu
</span><span class="n">f</span> <span class="o">=</span> <span class="n">sRec</span><span class="p">.</span><span class="n">Recognizer</span><span class="p">()</span>
<span class="k">with</span> <span class="n">sRec</span><span class="p">.</span><span class="n">Microphone</span><span class="p">()</span> <span class="k">as</span> <span class="n">source</span><span class="p">:</span>
<span class="k">print</span><span class="p">(</span><span class="s">"""Hello I'm FRIDAY, your virtual assistant. What can I help you with?
- Cooking at home,
- getting a food delivery,
- or booking a restaurant?"""</span><span class="p">)</span>
<span class="n">audio</span> <span class="o">=</span> <span class="n">f</span><span class="p">.</span><span class="n">listen</span><span class="p">(</span><span class="n">source</span><span class="p">)</span>
<span class="k">print</span><span class="p">(</span><span class="n">f</span><span class="p">.</span><span class="n">recognize_google</span><span class="p">(</span><span class="n">audio</span><span class="p">))</span>
</code></pre></div></div>
<h1 id="closing-down">Closing Down</h1>
<p>As with any great hero story, there is always an end. When youâre finished with your new virtual assistant just say a friendly bye.</p>
<p><img src="../assets/images/chatbot/bye.png" alt="bye" /></p>
<p>I hope this has been a helpful overview of how to implement the speech recognition in python. If you have got any other ideas for how to use the recognition tool please let me know!</p>Yusuf SohoyeBuilding a chatbot in python