{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Evaluating Topic Models\n", "\n", "## PyData Berlin 2017 Talk\n", "\n", "#### This notebook is a companion to the talk I gave at the PyData Berlin 2017 conference on evaluating topic models\n", "\n", "Unsupervised models in natural language processing (NLP) have a long history but have recently become very popular. Word2vec, GloVe, LSI and LDA provide powerful computational tools to deal with natural language and make exploring and modelling large document collections feasible.\n", "\n", "Often evaluating the model output requires an existing understanding of what should come out. For topic models the output should reflect our understanding of the relatedness of topical categories, for instance **sports**, **travel** or **machine learning**. Distributional models of language such as `word2vec` and `GloVe` should capture some, or ideally all, of the semantics of how language is used.\n", "\n", "This is a lot to ask! Not necessarily because it isn't learneable, after all we've learned it, but because we are not necessarily able to represent the desired output as an evaluation function and data set that can be optimised. As an example topic models are often evaluated with respect to the semantic coherence of the topics based on a set of top words from the topics. It is not clear if a set of words such as `{cat, dog, horse, pet}` captures the semantics of an animalness or a petsiness fully. Nevertheless these methods are useful in determining if the distributed word representation are capturing some of the information conveyed by words and if a topic model is understandable to a human.\n", "\n", "This notebook explores a number of these issues in context and aims to provide an overview of the research that has been done in the past 10 or so years, mostly focusing on topic models.\n", "\n", "The notebook is split into three parts\n", "\n", "1. Eye Balling models\n", " - ways of making visual, manual inspection of models easier\n", "2. Intrinsic Evaluation Methods\n", " - how to measure the internal coherence of topic models\n", "3. Putting a Number on Human Judgements\n", " - quantitative methods for evaluating human judgement\n", "--- \n", "**Random collection of other stuff**\n", "\n", "While preparing the talk and the notebook I experimented with a lot of different software packages and corpora. These are dumped as a somewhat unorganised collection of \"other things\" at the end of the notebook" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Why Evaluate Models\n", "\n", "We would like to be able to say if a model is objectively good or bad, and compare different models to each other. This requires us to have an objective measure for the quality of the model but many of the tasks mentioned above require subjective evaluation.\n", "\n", "In practical applications one needs to evaluate if \"the correct thing\" has been learned, often this means applying implicit knowledge and \"eye-balling\". Documents that talk about *football* should be in the same category and *cat* is more similar to *dog* than to *pen*. Ideally this information should be captured in a single metric that can be maximised. It is not clear how to formulate such a metric however, over the years there has been numerous attempts from various different angles at formulating semantic coherence, none capture the desired outcome fully and there are numerous issues one should be aware of in applying those metrics.\n", "\n", "Some of the issues are related to the metrics being used or issues one should be aware of when applying those metrics, but others are related to external factors, like which kind of held out data to use. Natural language is messy, ambiguous and full of interpretation, that's where a lot of the expressive richness comes from. Sometimes trying to cleanse the ambiguity also reduces language to an unnatural form. \n", "\n", "----" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Topic Models" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Topic models aim to capture the way in which words co-occur in the context of a document and divide the source corpus into some number of (soft) clusters. There are a large number of variations on the topic model, initial work was done be Deerwester in developing Latent Semantic Analysis (LSA/LSI), now the canonical example is Latent Dirichlet Allocation or LDA. The unit upon which topic models work is a sparse document-term matrix depicted below.\n", "\n", "Each row is a document, each column is a term and the entries in each cell usually represent the frequency of each term in each document." ] }, { "cell_type": "code", "execution_count": 127, "metadata": { "ExecuteTime": { "end_time": "2017-06-23T08:47:01.826896Z", "start_time": "2017-06-23T08:47:01.816969Z" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
catmatnoonredsatthe
01101012
11101111
21111011
\n", "
" ], "text/plain": [ " cat mat no on red sat the\n", "0 1 1 0 1 0 1 2\n", "1 1 1 0 1 1 1 1\n", "2 1 1 1 1 0 1 1" ] }, "execution_count": 127, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "from sklearn.feature_extraction.text import CountVectorizer\n", "\n", "documents = ['The cat sat on the mat', 'A red cat sat on the mat', 'No cat sat on the mat']\n", "\n", "vectoriser = CountVectorizer().fit(documents)\n", "X = vectoriser.transform(documents)\n", "pd.DataFrame(X.A, columns=sorted(vectoriser.vocabulary_.keys(), key=lambda k: vectoriser.vocabulary_[k])) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In the case of LDA a Bayesian model is fitted using the data from this matrix. Each topic in the model becomes a probability distribution over terms (the columns). Conceptually this is saying that semantic concepts can be represented as probabilities over a set of words. This makes sense as the topic of discussion acts as a limiting factor on the vocabulary one is likely to use, hear or read in the context of that dicussion.\n", "\n", "Words relating to political campaining are much less likely to be observed in documents that discuss ice hockey. Notice however that is is *unlikely* not impossible, it is not the case that it can not ever happen, it is simply statistically less likely to be the case that *caucus* or *polling* will be in a document that otherwise discusses the Teemu Selänne retiring. A topic therefore is a probability distribution over the entire vocabulary, indicating how likely each word is to occur within that topic.\n", "\n", "The documents the model is built over can be as short as a single sentence (a tweet) or as long as a chapter in a book. Typically very short documents tend to be more difficult to built coherent models over than slightly longer documents.\n", "\n", "Open source implementation of the models are readily available\n", "----\n", "\n", "- Latent Semantic Indexing / Latent Semantic Analysis\n", " - http://radimrehurek.com/gensim/models/lsimodel.html\n", "- Latent Dirichlet Allocation (LDA)\n", " - and its many many many variants\n", " - http://radimrehurek.com/gensim/models/ldamodel.html\n", " - http://mallet.cs.umass.edu/topics.php\n", "- Hierarchical Dirichlet Process (HDP)\n", " - http://radimrehurek.com/gensim/models/hdpmodel.html\n", "- Spherical Hierarchical Dirichlet Process (sHDP)\n", " - http://arxiv.org/pdf/1604.00126v1.pdf\n", " - https://github.com/Ardavans/sHDP" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# A Model\n", "\n", "In order to evaluate a model, we must of course have one. I'll use the same model(s), built from the Fake News data set on Kaggle, throughout this notebook." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "ExecuteTime": { "end_time": "2017-06-24T21:34:46.499292Z", "start_time": "2017-06-24T21:34:46.145579Z" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
titletextlanguage
0Muslims BUSTED: They Stole Millions In Gov’t B...Print They should pay all the back all the mon...english
1Re: Why Did Attorney General Loretta Lynch Ple...Why Did Attorney General Loretta Lynch Plead T...english
2BREAKING: Weiner Cooperating With FBI On Hilla...Red State : \\nFox News Sunday reported this mo...english
3PIN DROP SPEECH BY FATHER OF DAUGHTER Kidnappe...Email Kayla Mueller was a prisoner and torture...english
4FANTASTIC! TRUMP'S 7 POINT PLAN To Reform Heal...Email HEALTHCARE REFORM TO MAKE AMERICA GREAT ...english
\n", "
" ], "text/plain": [ " title \\\n", "0 Muslims BUSTED: They Stole Millions In Gov’t B... \n", "1 Re: Why Did Attorney General Loretta Lynch Ple... \n", "2 BREAKING: Weiner Cooperating With FBI On Hilla... \n", "3 PIN DROP SPEECH BY FATHER OF DAUGHTER Kidnappe... \n", "4 FANTASTIC! TRUMP'S 7 POINT PLAN To Reform Heal... \n", "\n", " text language \n", "0 Print They should pay all the back all the mon... english \n", "1 Why Did Attorney General Loretta Lynch Plead T... english \n", "2 Red State : \\nFox News Sunday reported this mo... english \n", "3 Email Kayla Mueller was a prisoner and torture... english \n", "4 Email HEALTHCARE REFORM TO MAKE AMERICA GREAT ... english " ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "\n", "df_fake = pd.read_csv('/usr/local/scratch/data/kaggle/fake.csv')\n", "df_fake[['title', 'text', 'language']].head()" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "ExecuteTime": { "end_time": "2017-06-24T21:34:50.710234Z", "start_time": "2017-06-24T21:34:50.697531Z" } }, "outputs": [ { "data": { "text/plain": [ "(12357, 20)" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import numpy as np\n", "\n", "df_fake = df_fake.loc[(pd.notnull(df_fake.text)) & (df_fake.language == 'english')]\n", "df_fake.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There is a total of 12357 non empty english language documents, should be enough to build a model. Let's parse the documents using `spacy`, getting rid of some non content words and chuck that into `gensim`. I'll use the `gensim.corpora.MmCorpus` to serialise the text onto disk, this both saves memory and allows random access to the corpus, which will become useful later for creating different splits of the data. " ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "ExecuteTime": { "end_time": "2017-06-24T19:21:20.791018Z", "start_time": "2017-06-24T19:20:27.043450Z" }, "collapsed": true }, "outputs": [], "source": [ "import spacy\n", "\n", "import gensim\n", "from gensim.models import LdaModel\n", "from gensim.corpora import Dictionary, MmCorpus\n", "\n", "spc = spacy.load('en')\n", "\n", "KEEP_POS = set([90, 98, 82, 84, 94]) # NOUN, VERB, ADJ, ADV, PROPN\n", "pipe = spc.pipe(df_fake.text, parse=False, entity=False, n_threads=8)\n", "processed = [[token.lemma_ for token in document if token.pos in KEEP_POS] for document in pipe]\n", "\n", "vocabulary = Dictionary(processed)\n", "vocabulary.filter_extremes(no_below=3, no_above=0.5)" ] }, { "cell_type": "code", "execution_count": 133, "metadata": { "ExecuteTime": { "end_time": "2017-06-23T09:29:24.763751Z", "start_time": "2017-06-23T09:28:28.365348Z" }, "collapsed": true }, "outputs": [], "source": [ "MmCorpus.serialize('./fake_news.mm', (vocabulary.doc2bow(doc) for doc in processed))" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "ExecuteTime": { "end_time": "2017-06-24T19:23:41.379021Z", "start_time": "2017-06-24T19:23:41.368140Z" }, "collapsed": true }, "outputs": [], "source": [ "vocabulary.save('./fake_news.vocab')" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "del processed" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "ExecuteTime": { "end_time": "2017-06-24T19:21:20.795075Z", "start_time": "2017-06-24T19:21:20.792043Z" }, "collapsed": true }, "outputs": [], "source": [ "corpus_fake = MmCorpus('./fake_news.mm')" ] }, { "cell_type": "code", "execution_count": 137, "metadata": { "ExecuteTime": { "end_time": "2017-06-23T10:11:00.867250Z", "start_time": "2017-06-23T10:09:42.163890Z" }, "collapsed": true }, "outputs": [], "source": [ "lda_fake = LdaModel(corpus=corpus_fake, id2word=vocabulary, num_topics=35, chunksize=1500, iterations=200, alpha='auto')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Inspecting the top 6 six word from the model we can certainly identify some structure. Ther are topic about the Flint Michigan water crisis (Topic 11), the Dakota Access Pipeline (Topic 9) protests and the US elections." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "ExecuteTime": { "end_time": "2017-06-24T19:21:20.891341Z", "start_time": "2017-06-24T19:21:20.862813Z" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
012345
0dnavideoabortionveritasprojectknow
1alsyrianforcemosulaleppoisis
2blackobamawhitepeoplesorosamerica
3chinawhichalienwouldthereufo
4getgojustknowthere
5russiarussianputinnatomissilenuclear
6marketcancerproductbankstudyreport
7usedrughealthcompanyreportmedical
8postcommentfacebooknewsvideoresult
9pipelinedakotapolicewaterrockprotester
10childschoolpolicefamilywhenpeople
11waterstudyhealthtoxicflinttea
12clintoncampaignhillaryemailpodestawikileaks
13clintonassangehillarytheretrumpwould
14obamamoneybankhillarypresidentmake
15partycarekellyinsuranceobamacareyear
16trumpvoteclintonelectionhillaryvoter
17peopleworldothermanwhichwhen
18ukraineukrainianindiajapanfukushimaus
19turkeyturkishrebeladlerdoganglacier
20textgodwhichmoonbodysilver
21fakeearthquakecaliforniarodgersjayquake
22eddiegovernmentpeoplecountrywouldwhich
23whichwouldegyptbritainnewsreport
24warussyriarussiamilitarycountry
25israelisraelinuclearzikapalestinianresolution
26lifetimeotheryearfindpeople
27herbuniversewhichkoreaplanetx
28trumpelectiondayjustgoget
29trumpwouldpresidentdonaldelectionclinton
30immigrationimmigrantillegalpercentmigrantnew
31lawcourtjudgecasefederalgovernment
32foodenergyoilalsousewhich
33clintonfbiemailinvestigationhillarycomey
34jewsjewishwhichmarsonlyamerican
\n", "
" ], "text/plain": [ " 0 1 2 3 4 \\\n", "0 dna video abortion veritas project \n", "1 al syrian force mosul aleppo \n", "2 black obama white people soros \n", "3 china which alien would there \n", "4 get go ’ just know \n", "5 russia russian putin nato missile \n", "6 market cancer product bank study \n", "7 use drug health company report \n", "8 post comment facebook news video \n", "9 pipeline dakota police water rock \n", "10 child school police family when \n", "11 water study health toxic flint \n", "12 clinton campaign hillary email podesta \n", "13 clinton assange hillary there trump \n", "14 obama money bank hillary president \n", "15 party care kelly insurance obamacare \n", "16 trump vote clinton election hillary \n", "17 people world other man which \n", "18 ukraine ukrainian india japan fukushima \n", "19 turkey turkish rebel adl erdogan \n", "20 text god which moon body \n", "21 fake earthquake california rodgers jay \n", "22 eddie government people country would \n", "23 which would egypt britain news \n", "24 war us syria russia military \n", "25 israel israeli nuclear zika palestinian \n", "26 life time other year find \n", "27 herb universe which korea planet \n", "28 trump election day just go \n", "29 trump would president donald election \n", "30 immigration immigrant illegal percent migrant \n", "31 law court judge case federal \n", "32 food energy oil also use \n", "33 clinton fbi email investigation hillary \n", "34 jews jewish which mars only \n", "\n", " 5 \n", "0 know \n", "1 isis \n", "2 america \n", "3 ufo \n", "4 there \n", "5 nuclear \n", "6 report \n", "7 medical \n", "8 result \n", "9 protester \n", "10 people \n", "11 tea \n", "12 wikileaks \n", "13 would \n", "14 make \n", "15 year \n", "16 voter \n", "17 when \n", "18 us \n", "19 glacier \n", "20 silver \n", "21 quake \n", "22 which \n", "23 report \n", "24 country \n", "25 resolution \n", "26 people \n", "27 x \n", "28 get \n", "29 clinton \n", "30 new \n", "31 government \n", "32 which \n", "33 comey \n", "34 american " ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.DataFrame([[word for rank, (word, prob) in enumerate(words)]\n", " for topic_id, words in lda_fake.show_topics(formatted=False, num_words=6, num_topics=35)].iloc[])" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "ExecuteTime": { "end_time": "2017-06-24T19:21:20.891341Z", "start_time": "2017-06-24T19:21:20.862813Z" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
012345
0dnavideoabortionveritasprojectknow
1alsyrianforcemosulaleppoisis
2blackobamawhitepeoplesorosamerica
3chinawhichalienwouldthereufo
4getgojustknowthere
5russiarussianputinnatomissilenuclear
6marketcancerproductbankstudyreport
7usedrughealthcompanyreportmedical
8postcommentfacebooknewsvideoresult
9pipelinedakotapolicewaterrockprotester
10childschoolpolicefamilywhenpeople
11waterstudyhealthtoxicflinttea
12clintoncampaignhillaryemailpodestawikileaks
13clintonassangehillarytheretrumpwould
14obamamoneybankhillarypresidentmake
15partycarekellyinsuranceobamacareyear
16trumpvoteclintonelectionhillaryvoter
17peopleworldothermanwhichwhen
18ukraineukrainianindiajapanfukushimaus
19turkeyturkishrebeladlerdoganglacier
20textgodwhichmoonbodysilver
21fakeearthquakecaliforniarodgersjayquake
22eddiegovernmentpeoplecountrywouldwhich
23whichwouldegyptbritainnewsreport
24warussyriarussiamilitarycountry
25israelisraelinuclearzikapalestinianresolution
26lifetimeotheryearfindpeople
27herbuniversewhichkoreaplanetx
28trumpelectiondayjustgoget
29trumpwouldpresidentdonaldelectionclinton
30immigrationimmigrantillegalpercentmigrantnew
31lawcourtjudgecasefederalgovernment
32foodenergyoilalsousewhich
33clintonfbiemailinvestigationhillarycomey
34jewsjewishwhichmarsonlyamerican
\n", "
" ], "text/plain": [ " 0 1 2 3 4 \\\n", "0 dna video abortion veritas project \n", "1 al syrian force mosul aleppo \n", "2 black obama white people soros \n", "3 china which alien would there \n", "4 get go ’ just know \n", "5 russia russian putin nato missile \n", "6 market cancer product bank study \n", "7 use drug health company report \n", "8 post comment facebook news video \n", "9 pipeline dakota police water rock \n", "10 child school police family when \n", "11 water study health toxic flint \n", "12 clinton campaign hillary email podesta \n", "13 clinton assange hillary there trump \n", "14 obama money bank hillary president \n", "15 party care kelly insurance obamacare \n", "16 trump vote clinton election hillary \n", "17 people world other man which \n", "18 ukraine ukrainian india japan fukushima \n", "19 turkey turkish rebel adl erdogan \n", "20 text god which moon body \n", "21 fake earthquake california rodgers jay \n", "22 eddie government people country would \n", "23 which would egypt britain news \n", "24 war us syria russia military \n", "25 israel israeli nuclear zika palestinian \n", "26 life time other year find \n", "27 herb universe which korea planet \n", "28 trump election day just go \n", "29 trump would president donald election \n", "30 immigration immigrant illegal percent migrant \n", "31 law court judge case federal \n", "32 food energy oil also use \n", "33 clinton fbi email investigation hillary \n", "34 jews jewish which mars only \n", "\n", " 5 \n", "0 know \n", "1 isis \n", "2 america \n", "3 ufo \n", "4 there \n", "5 nuclear \n", "6 report \n", "7 medical \n", "8 result \n", "9 protester \n", "10 people \n", "11 tea \n", "12 wikileaks \n", "13 would \n", "14 make \n", "15 year \n", "16 voter \n", "17 when \n", "18 us \n", "19 glacier \n", "20 silver \n", "21 quake \n", "22 which \n", "23 report \n", "24 country \n", "25 resolution \n", "26 people \n", "27 x \n", "28 get \n", "29 clinton \n", "30 new \n", "31 government \n", "32 which \n", "33 comey \n", "34 american " ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.DataFrame([[word for rank, (word, prob) in enumerate(words)]\n", " for topic_id, words in lda_fake.show_topics(formatted=False, num_words=6, num_topics=35)])" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "ExecuteTime": { "end_time": "2017-06-23T18:05:50.183827Z", "start_time": "2017-06-23T18:05:50.125277Z" }, "collapsed": true }, "outputs": [], "source": [ "lda_fake.save('./fake_news_35.lda')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Eye Ballin'\n", "\n", "- usually ML models are evaluated and improved based on a scoring function whose gradient can be followed to a *hopefully* global minimum\n", "- unsupervised models are tricky to evaluate because there usually isn't a suitable error function to optimise\n", "- the unsupervised models still come with hyperparameters so how do you know when you've set them *correctly*\n", "- furthermore, how do you know if model A is better than model B" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Termite\n", "\n", "The visualisation in the `Termite` [paper](http://vis.stanford.edu/papers/termite) look very promising, but I've been unable to run the code. The original project has been split into two separate projects a *data server* and a *visualisation client*. Unfortunately the data server uses an unknown data format in SQLite databases, and the host server where the data sets ought to be is not operational anymore and the project hasn't been maintained since 2014.\n", "\n", "The project also relies on `web2py` which at the moment only supports python 2 and there doesn't seem to be any interest in porting it to python 3.\n", "\n", "Anyhow, it would seem to be possible to run the project under a python 2 environment.\n", "\n", "- [Original project](https://github.com/StanfordHCI/termite)\n", "- [Termite data server](https://github.com/uwdata/termite-data-server)\n", "- [Termite visualisation](https://github.com/uwdata/termite-visualizations)\n", "\n", "---\n", "\n", "- modify `read_gensim.py` to add --sentence-splitter cmd arg\n", "- modify `bin/apps/SplitSentences.py` to have an extra param for sentence_splitter jar location\n", "- update code for `gensim` API breaking changes\n", " - `bin/readers/GensimReader.py` line 47 `ldamodel.show_topics`\n", " - `bin/readers/GensimReader.py` line 51 topic/term distribution does not neet `enumerate` anymore\n", " - `bin/readers/GensimReader.py` line 52 swap `term` and `value` around - they are the wrong way around\n", " \n", "`termite` makes a lot of assumptions about paths, one needs to be quite careful what the root directory is for running the commands\n", "\n", "---" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "ExecuteTime": { "end_time": "2017-06-23T18:31:04.355807Z", "start_time": "2017-06-23T18:31:04.352182Z" }, "collapsed": true }, "outputs": [], "source": [ "import sys\n", "\n", "sys.path.append('/home/matti/termite-data-server/bin/')\n", "\n", "from modellers import GensimLDA" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "ExecuteTime": { "end_time": "2017-06-23T18:37:13.917670Z", "start_time": "2017-06-23T18:37:11.819817Z" }, "collapsed": true }, "outputs": [], "source": [ "import re\n", "df_fake['text_oneline'] = df_fake.text.apply(lambda s: re.sub(r'\\s+', ' ', str(s)))" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "ExecuteTime": { "end_time": "2017-06-23T18:38:02.696977Z", "start_time": "2017-06-23T18:38:01.827967Z" }, "collapsed": true }, "outputs": [], "source": [ "df_fake[['uuid', 'text_oneline']].to_csv('./fakenews.termite.tsv', sep='\\t', header=False, index=False)" ] }, { "cell_type": "code", "execution_count": 82, "metadata": { "ExecuteTime": { "end_time": "2017-06-23T21:44:11.037954Z", "start_time": "2017-06-23T21:44:11.035853Z" }, "collapsed": true }, "outputs": [], "source": [ "py27 = '/home/matti/miniconda3/envs/py27/bin/python'\n", "termite_server_root = '/home/matti/termite-data-server/'" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "First we need to import the corpus into `termite`'s own special SQLite format" ] }, { "cell_type": "code", "execution_count": 76, "metadata": { "ExecuteTime": { "end_time": "2017-06-23T21:39:42.428130Z", "start_time": "2017-06-23T21:39:40.019172Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "mkdir: cannot create directory ‘termite’: File exists\n", "WARNING:root:Unable to import plural rules: No module named plural_rules\n", "Importing file [./fakenews.termite.tsv] into database [./db/corpus.db]\n" ] } ], "source": [ "!mkdir termite;\\\n", " cp ./fakenews.termite.tsv ./termite;\n", " cd termite; $py27 /home/matti/termite-data-server/bin/import_corpus.py ./db ./fakenews.termite.tsv" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Then we need to export that SQLite DB back into a text corpus, there's some magic file names and path structures that happens here so you can't just use the original file" ] }, { "cell_type": "code", "execution_count": 79, "metadata": { "ExecuteTime": { "end_time": "2017-06-23T21:41:49.638607Z", "start_time": "2017-06-23T21:41:48.744069Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "WARNING:root:Unable to import plural rules: No module named plural_rules\r\n", "Exporting database [./db/corpus.db] to file [./corpus/corpus.txt]\r\n" ] } ], "source": [ "!cd termite; mkdir corpus; $py27 /home/matti/termite-data-server/bin/export_corpus.py ./db ./corpus/corpus.txt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Then train the LDAModel, is should be possible to skip this and just use any model trained with `gensim`" ] }, { "cell_type": "code", "execution_count": 81, "metadata": { "ExecuteTime": { "end_time": "2017-06-23T21:43:39.941589Z", "start_time": "2017-06-23T21:42:42.372537Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "--------------------------------------------------------------------------------\n", "Training an LDA topic model using gensim...\n", " corpus = ./corpus/corpus.txt\n", " model = ./models/\n", " token_regex = \\w{3,}\n", " topics = 20\n", " passes = 1\n", "--------------------------------------------------------------------------------\n", "using symmetric alpha at 0.05\n", "using symmetric eta at 3.17268948888e-05\n", "using serial LDA version on this node\n", "running online (single-pass) LDA training, 20 topics, 1 passes over the supplied corpus of 12357 documents, updating model once every 2000 documents, evaluating perplexity every 12357 documents, iterating 50x with a convergence threshold of 0.001000\n", "too few updates, training might not converge; consider increasing the number of passes or iterations to improve accuracy\n", "PROGRESS: pass 0, at document #2000/12357\n", "merging changes from 2000 documents into a model of 12357 documents\n", "topic #0 (0.050): 0.003*\"black\" + 0.003*\"obama\" + 0.003*\"syria\" + 0.002*\"white\" + 0.002*\"party\" + 0.002*\"military\" + 0.002*\"great\" + 0.002*\"syrian\" + 0.002*\"anti\" + 0.002*\"russia\"\n", "topic #14 (0.050): 0.003*\"party\" + 0.003*\"syria\" + 0.002*\"isis\" + 0.002*\"house\" + 0.002*\"russia\" + 0.002*\"city\" + 0.002*\"military\" + 0.002*\"white\" + 0.002*\"democratic\" + 0.002*\"power\"\n", "topic #12 (0.050): 0.002*\"black\" + 0.002*\"obama\" + 0.002*\"power\" + 0.002*\"white\" + 0.002*\"things\" + 0.002*\"police\" + 0.002*\"fbi\" + 0.002*\"city\" + 0.002*\"change\" + 0.001*\"vote\"\n", "topic #13 (0.050): 0.004*\"syria\" + 0.003*\"russia\" + 0.003*\"syrian\" + 0.003*\"black\" + 0.003*\"police\" + 0.002*\"military\" + 0.002*\"obama\" + 0.002*\"power\" + 0.002*\"white\" + 0.002*\"russian\"\n", "topic #17 (0.050): 0.004*\"white\" + 0.003*\"syria\" + 0.002*\"party\" + 0.002*\"obama\" + 0.002*\"israel\" + 0.002*\"house\" + 0.002*\"email\" + 0.002*\"russia\" + 0.002*\"iran\" + 0.002*\"foreign\"\n", "topic diff=7.126265, rho=1.000000\n", "PROGRESS: pass 0, at document #4000/12357\n", "merging changes from 2000 documents into a model of 12357 documents\n", "topic #3 (0.050): 0.003*\"power\" + 0.003*\"black\" + 0.003*\"white\" + 0.002*\"law\" + 0.002*\"fbi\" + 0.002*\"americans\" + 0.002*\"emails\" + 0.002*\"economic\" + 0.002*\"article\" + 0.002*\"life\"\n", "topic #8 (0.050): 0.008*\"email\" + 0.004*\"emails\" + 0.003*\"obama\" + 0.002*\"law\" + 0.002*\"follow\" + 0.002*\"information\" + 0.002*\"saudi\" + 0.002*\"russia\" + 0.002*\"000\" + 0.002*\"wikileaks\"\n", "topic #4 (0.050): 0.003*\"assange\" + 0.003*\"nuclear\" + 0.002*\"power\" + 0.002*\"control\" + 0.002*\"weapons\" + 0.002*\"russia\" + 0.002*\"high\" + 0.002*\"wikileaks\" + 0.002*\"facebook\" + 0.001*\"department\"\n", "topic #16 (0.050): 0.006*\"stockman\" + 0.006*\"party\" + 0.004*\"obama\" + 0.004*\"black\" + 0.003*\"police\" + 0.003*\"democratic\" + 0.003*\"social\" + 0.002*\"left\" + 0.002*\"white\" + 0.002*\"david\"\n", "topic #9 (0.050): 0.006*\"fbi\" + 0.003*\"department\" + 0.002*\"emails\" + 0.002*\"including\" + 0.002*\"vote\" + 0.002*\"party\" + 0.002*\"weiner\" + 0.002*\"democratic\" + 0.002*\"saudi\" + 0.002*\"officials\"\n", "topic diff=2.843640, rho=0.707107\n", "PROGRESS: pass 0, at document #6000/12357\n", "merging changes from 2000 documents into a model of 12357 documents\n", "topic #18 (0.050): 0.005*\"obama\" + 0.002*\"women\" + 0.002*\"great\" + 0.002*\"military\" + 0.002*\"history\" + 0.002*\"party\" + 0.002*\"life\" + 0.002*\"house\" + 0.002*\"power\" + 0.002*\"white\"\n", "topic #8 (0.050): 0.009*\"email\" + 0.005*\"emails\" + 0.003*\"obama\" + 0.003*\"wikileaks\" + 0.003*\"saudi\" + 0.003*\"information\" + 0.003*\"podesta\" + 0.002*\"law\" + 0.002*\"000\" + 0.002*\"2015\"\n", "topic #19 (0.050): 0.007*\"vote\" + 0.006*\"obama\" + 0.004*\"voting\" + 0.004*\"voters\" + 0.004*\"white\" + 0.004*\"republican\" + 0.003*\"party\" + 0.003*\"presidential\" + 0.003*\"candidate\" + 0.003*\"podesta\"\n", "topic #5 (0.050): 0.008*\"russia\" + 0.005*\"russian\" + 0.003*\"putin\" + 0.003*\"syria\" + 0.002*\"military\" + 0.002*\"nuclear\" + 0.002*\"foreign\" + 0.002*\"anti\" + 0.002*\"israel\" + 0.002*\"obama\"\n", "topic #4 (0.050): 0.006*\"health\" + 0.005*\"brain\" + 0.004*\"assange\" + 0.004*\"nuclear\" + 0.003*\"widget\" + 0.003*\"food\" + 0.003*\"medical\" + 0.002*\"life\" + 0.002*\"fat\" + 0.002*\"cancer\"\n", "topic diff=1.850195, rho=0.577350\n", "PROGRESS: pass 0, at document #8000/12357\n", "merging changes from 2000 documents into a model of 12357 documents\n", "topic #2 (0.050): 0.003*\"ukraine\" + 0.003*\"rights\" + 0.003*\"party\" + 0.003*\"anti\" + 0.002*\"ukrainian\" + 0.002*\"left\" + 0.002*\"saakashvili\" + 0.002*\"order\" + 0.002*\"british\" + 0.002*\"jewish\"\n", "topic #17 (0.050): 0.012*\"israel\" + 0.006*\"iran\" + 0.004*\"israeli\" + 0.004*\"jerusalem\" + 0.003*\"palestinian\" + 0.003*\"jewish\" + 0.003*\"minister\" + 0.003*\"obama\" + 0.003*\"foreign\" + 0.003*\"resolution\"\n", "topic #4 (0.050): 0.008*\"health\" + 0.008*\"food\" + 0.005*\"cancer\" + 0.004*\"water\" + 0.004*\"foods\" + 0.004*\"brain\" + 0.003*\"body\" + 0.003*\"diet\" + 0.003*\"study\" + 0.003*\"high\"\n", "topic #14 (0.050): 0.005*\"comey\" + 0.004*\"fbi\" + 0.004*\"moore\" + 0.003*\"investigation\" + 0.003*\"house\" + 0.002*\"party\" + 0.002*\"airbnb\" + 0.002*\"she\" + 0.002*\"power\" + 0.002*\"khan\"\n", "topic #16 (0.050): 0.008*\"party\" + 0.005*\"court\" + 0.004*\"black\" + 0.004*\"obama\" + 0.004*\"supreme\" + 0.004*\"democratic\" + 0.003*\"police\" + 0.003*\"rights\" + 0.002*\"republican\" + 0.002*\"white\"\n", "topic diff=1.401028, rho=0.500000\n", "PROGRESS: pass 0, at document #10000/12357\n", "merging changes from 2000 documents into a model of 12357 documents\n", "topic #14 (0.050): 0.005*\"onion\" + 0.004*\"sheeple\" + 0.004*\"automatically\" + 0.004*\"text\" + 0.003*\"republish\" + 0.003*\"comey\" + 0.003*\"moore\" + 0.003*\"spam\" + 0.003*\"star\" + 0.003*\"fbi\"\n", "topic #15 (0.050): 0.013*\"police\" + 0.009*\"water\" + 0.006*\"pipeline\" + 0.005*\"dakota\" + 0.005*\"law\" + 0.004*\"federal\" + 0.004*\"standing\" + 0.004*\"rock\" + 0.003*\"land\" + 0.003*\"protesters\"\n", "topic #5 (0.050): 0.017*\"russia\" + 0.010*\"russian\" + 0.008*\"putin\" + 0.004*\"foreign\" + 0.003*\"ukraine\" + 0.003*\"obama\" + 0.003*\"policy\" + 0.003*\"nuclear\" + 0.003*\"military\" + 0.003*\"europe\"\n", "topic #18 (0.050): 0.008*\"obama\" + 0.003*\"space\" + 0.002*\"god\" + 0.002*\"women\" + 0.002*\"great\" + 0.002*\"house\" + 0.002*\"man\" + 0.002*\"history\" + 0.002*\"earth\" + 0.002*\"kelly\"\n", "topic #16 (0.050): 0.012*\"obama\" + 0.007*\"court\" + 0.007*\"party\" + 0.006*\"supreme\" + 0.004*\"black\" + 0.004*\"police\" + 0.004*\"constitution\" + 0.004*\"white\" + 0.004*\"rights\" + 0.003*\"house\"\n", "topic diff=1.336365, rho=0.447214\n", "PROGRESS: pass 0, at document #12000/12357\n", "merging changes from 2000 documents into a model of 12357 documents\n", "topic #9 (0.050): 0.007*\"department\" + 0.006*\"soros\" + 0.006*\"foundation\" + 0.005*\"law\" + 0.004*\"officials\" + 0.004*\"fbi\" + 0.003*\"federal\" + 0.003*\"secret\" + 0.003*\"million\" + 0.003*\"attorney\"\n", "topic #19 (0.050): 0.009*\"obama\" + 0.008*\"vote\" + 0.006*\"voters\" + 0.005*\"presidential\" + 0.005*\"voting\" + 0.005*\"white\" + 0.005*\"republican\" + 0.004*\"party\" + 0.004*\"candidate\" + 0.004*\"house\"\n", "topic #12 (0.050): 0.004*\"love\" + 0.003*\"life\" + 0.003*\"energy\" + 0.003*\"things\" + 0.003*\"human\" + 0.003*\"self\" + 0.002*\"earth\" + 0.002*\"control\" + 0.002*\"power\" + 0.002*\"feel\"\n", "topic #3 (0.050): 0.004*\"power\" + 0.003*\"obamacare\" + 0.003*\"americans\" + 0.002*\"care\" + 0.002*\"global\" + 0.002*\"change\" + 0.002*\"pay\" + 0.002*\"order\" + 0.002*\"economic\" + 0.002*\"white\"\n", "topic #16 (0.050): 0.009*\"obama\" + 0.008*\"court\" + 0.007*\"party\" + 0.006*\"supreme\" + 0.005*\"immigration\" + 0.004*\"black\" + 0.004*\"rights\" + 0.004*\"constitution\" + 0.004*\"police\" + 0.004*\"white\"\n", "topic diff=1.076053, rho=0.408248\n", "-9.063 per-word bound, 535.0 perplexity estimate based on a held-out corpus of 357 documents with 68794 words\n", "PROGRESS: pass 0, at document #12357/12357\n", "merging changes from 357 documents into a model of 12357 documents\n", "topic #14 (0.050): 0.009*\"moore\" + 0.004*\"violence\" + 0.003*\"manchanda\" + 0.003*\"onion\" + 0.003*\"star\" + 0.003*\"joe\" + 0.003*\"sheeple\" + 0.003*\"foster\" + 0.003*\"musket\" + 0.003*\"8th\"\n", "topic #7 (0.050): 0.010*\"com\" + 0.006*\"www\" + 0.006*\"facebook\" + 0.005*\"http\" + 0.005*\"information\" + 0.004*\"data\" + 0.004*\"google\" + 0.003*\"star\" + 0.003*\"content\" + 0.003*\"internet\"\n", "topic #16 (0.050): 0.015*\"court\" + 0.010*\"supreme\" + 0.009*\"eddie\" + 0.008*\"judges\" + 0.007*\"party\" + 0.007*\"obama\" + 0.006*\"marriage\" + 0.006*\"law\" + 0.005*\"immigration\" + 0.004*\"unelected\"\n", "topic #19 (0.050): 0.009*\"obama\" + 0.009*\"vote\" + 0.006*\"voting\" + 0.006*\"voters\" + 0.005*\"presidential\" + 0.005*\"republican\" + 0.005*\"democratic\" + 0.004*\"white\" + 0.004*\"candidate\" + 0.004*\"party\"\n", "topic #1 (0.050): 0.005*\"life\" + 0.004*\"women\" + 0.004*\"children\" + 0.003*\"man\" + 0.003*\"old\" + 0.003*\"family\" + 0.003*\"child\" + 0.003*\"father\" + 0.002*\"home\" + 0.002*\"things\"\n", "topic diff=0.888690, rho=0.377964\n", "Saving dictionary to disk: ./models//dictionary.gensim\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Saving corpus to disk: ./models//corpus.gensim\n", "/home/matti/miniconda3/envs/py27/lib/python2.7/site-packages/gensim/interfaces.py:60: UserWarning: corpus.save() stores only the (tiny) iteration object; to serialize the actual corpus content, use e.g. MmCorpus.serialize(corpus)\n", " warnings.warn(\"corpus.save() stores only the (tiny) iteration object; \"\n", "Saving model to disk: ./models//lda.gensim\n" ] } ], "source": [ "%capture\n", "!cd termite; $py27 /home/matti/termite-data-server/bin/train_gensim.py --overwrite ./corpus ./models/" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally, read in the trained `gensim` LDA model to `termite` creating all the necessary data structures for the visualisations to work. This computes, among other thigs, term collocations ($N^2$) so it's going to take a while to run, especially for large vocabularies.\n", "\n", "If you set all the paths consistently during the previous steps, this should just work. If not, it's likely there will be some `FileNotFound` errors." ] }, { "cell_type": "code", "execution_count": 88, "metadata": { "ExecuteTime": { "end_time": "2017-06-23T21:58:24.879597Z", "start_time": "2017-06-23T21:49:07.473685Z" }, "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "WARNING:root:Unable to import plural rules: No module named plural_rules\n", "--------------------------------------------------------------------------------\n", "INFO:termite:--------------------------------------------------------------------------------\n", "Import a gensim LDA topic model as a web2py application...\n", "INFO:termite:Import a gensim LDA topic model as a web2py application...\n", " app_name = gensim_termite\n", "INFO:termite: app_name = gensim_termite\n", " app_path = apps/gensim_termite\n", "INFO:termite: app_path = apps/gensim_termite\n", " model_path = ./models/\n", "INFO:termite: model_path = ./models/\n", " corpus_filename = ./corpus/corpus.txt\n", "INFO:termite: corpus_filename = ./corpus/corpus.txt\n", " database_filename = ./db/corpus.db\n", "INFO:termite: database_filename = ./db/corpus.db\n", "--------------------------------------------------------------------------------\n", "INFO:termite:--------------------------------------------------------------------------------\n", "Creating app: gensim_termite [apps/temp_20170623_234907_893474_8228]\n", "INFO:termite:Creating app: gensim_termite [apps/temp_20170623_234907_893474_8228]\n", "Creating folder: [apps/temp_20170623_234907_893474_8228/data]\n", "INFO:termite:Creating folder: [apps/temp_20170623_234907_893474_8228/data]\n", "Creating folder: [apps/temp_20170623_234907_893474_8228/databases]\n", "INFO:termite:Creating folder: [apps/temp_20170623_234907_893474_8228/databases]\n", "Linking folder: [apps/temp_20170623_234907_893474_8228/models]\n", "INFO:termite:Linking folder: [apps/temp_20170623_234907_893474_8228/models]\n", "Linking folder: [apps/temp_20170623_234907_893474_8228/views]\n", "INFO:termite:Linking folder: [apps/temp_20170623_234907_893474_8228/views]\n", "Linking folder: [apps/temp_20170623_234907_893474_8228/controllers]\n", "INFO:termite:Linking folder: [apps/temp_20170623_234907_893474_8228/controllers]\n", "Linking folder: [apps/temp_20170623_234907_893474_8228/static]\n", "INFO:termite:Linking folder: [apps/temp_20170623_234907_893474_8228/static]\n", "Linking folder: [apps/temp_20170623_234907_893474_8228/modules]\n", "INFO:termite:Linking folder: [apps/temp_20170623_234907_893474_8228/modules]\n", "Creating file: [apps/temp_20170623_234907_893474_8228/__init__.py]\n", "INFO:termite:Creating file: [apps/temp_20170623_234907_893474_8228/__init__.py]\n", "Copying [./db/corpus.db] --> [apps/temp_20170623_234907_893474_8228/databases/corpus.db]\n", "INFO:termite:Copying [./db/corpus.db] --> [apps/temp_20170623_234907_893474_8228/databases/corpus.db]\n", "Copying [./corpus/corpus.txt] --> [apps/temp_20170623_234907_893474_8228/data/corpus.txt]\n", "INFO:termite:Copying [./corpus/corpus.txt] --> [apps/temp_20170623_234907_893474_8228/data/corpus.txt]\n", "Extracting [./corpus/corpus.txt] --> [apps/temp_20170623_234907_893474_8228/data/sentences.txt]\n", "INFO:termite:Extracting [./corpus/corpus.txt] --> [apps/temp_20170623_234907_893474_8228/data/sentences.txt]\n", "Preparing the Stanford CoreNLP pipeline...\n", "DEBUG:termite:Preparing the Stanford CoreNLP pipeline...\n", "Adding annotator tokenize\n", "DEBUG:termite:Adding annotator tokenize\n", "Adding annotator ssplit\n", "DEBUG:termite:Adding annotator ssplit\n", "Processing corpus: [./corpus/corpus.txt] -> [apps/temp_20170623_234907_893474_8228/data/sentences.txt]\n", "DEBUG:termite:Processing corpus: [./corpus/corpus.txt] -> [apps/temp_20170623_234907_893474_8228/data/sentences.txt]\n", "Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83C, decimal: 55356)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83C, decimal: 55356)\n", "Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ₨ (U+20A8, decimal: 8360)\n", "DEBUG:termite:WARNING: Untokenizable: ₨ (U+20A8, decimal: 8360)\n", "Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ‒ (U+2012, decimal: 8210)\n", "DEBUG:termite:WARNING: Untokenizable: ‒ (U+2012, decimal: 8210)\n", "Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83C, decimal: 55356)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83C, decimal: 55356)\n", "Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83E, decimal: 55358)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83E, decimal: 55358)\n", "Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: œ (U+9C, decimal: 156)\n", "DEBUG:termite:WARNING: Untokenizable: œ (U+9C, decimal: 156)\n", "Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: Ÿ (U+9F, decimal: 159)\n", "DEBUG:termite:WARNING: Untokenizable: Ÿ (U+9F, decimal: 159)\n", "Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable:  (U+FFFC, decimal: 65532)\n", "DEBUG:termite:WARNING: Untokenizable:  (U+FFFC, decimal: 65532)\n", "Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: Ÿ (U+9F, decimal: 159)\n", "DEBUG:termite:WARNING: Untokenizable: Ÿ (U+9F, decimal: 159)\n", "Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ™ (U+99, decimal: 153)\n", "DEBUG:termite:WARNING: Untokenizable: ™ (U+99, decimal: 153)\n", "Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: Ÿ (U+9F, decimal: 159)\n", "DEBUG:termite:WARNING: Untokenizable: Ÿ (U+9F, decimal: 159)\n", "Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: Ÿ (U+9F, decimal: 159)\n", "DEBUG:termite:WARNING: Untokenizable: Ÿ (U+9F, decimal: 159)\n", "Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ™ (U+99, decimal: 153)\n", "DEBUG:termite:WARNING: Untokenizable: ™ (U+99, decimal: 153)\n", "Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: œ (U+9C, decimal: 156)\n", "DEBUG:termite:WARNING: Untokenizable: œ (U+9C, decimal: 156)\n", "Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ™ (U+99, decimal: 153)\n", "DEBUG:termite:WARNING: Untokenizable: ™ (U+99, decimal: 153)\n", "Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ™ (U+99, decimal: 153)\n", "DEBUG:termite:WARNING: Untokenizable: ™ (U+99, decimal: 153)\n", "Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ™ (U+99, decimal: 153)\n", "DEBUG:termite:WARNING: Untokenizable: ™ (U+99, decimal: 153)\n", "Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ™ (U+99, decimal: 153)\n", "DEBUG:termite:WARNING: Untokenizable: ™ (U+99, decimal: 153)\n", "Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: œ (U+9C, decimal: 156)\n", "DEBUG:termite:WARNING: Untokenizable: œ (U+9C, decimal: 156)\n", "Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ™ (U+99, decimal: 153)\n", "DEBUG:termite:WARNING: Untokenizable: ™ (U+99, decimal: 153)\n", "Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: œ (U+9C, decimal: 156)\n", "DEBUG:termite:WARNING: Untokenizable: œ (U+9C, decimal: 156)\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ™ (U+99, decimal: 153)\n", "DEBUG:termite:WARNING: Untokenizable: ™ (U+99, decimal: 153)\n", "Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ™ (U+99, decimal: 153)\n", "DEBUG:termite:WARNING: Untokenizable: ™ (U+99, decimal: 153)\n", "Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ™ (U+99, decimal: 153)\n", "DEBUG:termite:WARNING: Untokenizable: ™ (U+99, decimal: 153)\n", "Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ™ (U+99, decimal: 153)\n", "DEBUG:termite:WARNING: Untokenizable: ™ (U+99, decimal: 153)\n", "Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ™ (U+99, decimal: 153)\n", "DEBUG:termite:WARNING: Untokenizable: ™ (U+99, decimal: 153)\n", "Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: œ (U+9C, decimal: 156)\n", "DEBUG:termite:WARNING: Untokenizable: œ (U+9C, decimal: 156)\n", "Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ™ (U+99, decimal: 153)\n", "DEBUG:termite:WARNING: Untokenizable: ™ (U+99, decimal: 153)\n", "Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: œ (U+9C, decimal: 156)\n", "DEBUG:termite:WARNING: Untokenizable: œ (U+9C, decimal: 156)\n", "Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ™ (U+99, decimal: 153)\n", "DEBUG:termite:WARNING: Untokenizable: ™ (U+99, decimal: 153)\n", "Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ™ (U+99, decimal: 153)\n", "DEBUG:termite:WARNING: Untokenizable: ™ (U+99, decimal: 153)\n", "Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ™ (U+99, decimal: 153)\n", "DEBUG:termite:WARNING: Untokenizable: ™ (U+99, decimal: 153)\n", "Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ™ (U+99, decimal: 153)\n", "DEBUG:termite:WARNING: Untokenizable: ™ (U+99, decimal: 153)\n", "Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ™ (U+99, decimal: 153)\n", "DEBUG:termite:WARNING: Untokenizable: ™ (U+99, decimal: 153)\n", "Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: œ (U+9C, decimal: 156)\n", "DEBUG:termite:WARNING: Untokenizable: œ (U+9C, decimal: 156)\n", "Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: œ (U+9C, decimal: 156)\n", "DEBUG:termite:WARNING: Untokenizable: œ (U+9C, decimal: 156)\n", "Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ™ (U+99, decimal: 153)\n", "DEBUG:termite:WARNING: Untokenizable: ™ (U+99, decimal: 153)\n", "Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ™ (U+99, decimal: 153)\n", "DEBUG:termite:WARNING: Untokenizable: ™ (U+99, decimal: 153)\n", "Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ™ (U+99, decimal: 153)\n", "DEBUG:termite:WARNING: Untokenizable: ™ (U+99, decimal: 153)\n", "Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: œ (U+9C, decimal: 156)\n", "DEBUG:termite:WARNING: Untokenizable: œ (U+9C, decimal: 156)\n", "Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ™ (U+99, decimal: 153)\n", "DEBUG:termite:WARNING: Untokenizable: ™ (U+99, decimal: 153)\n", "Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ™ (U+99, decimal: 153)\n", "DEBUG:termite:WARNING: Untokenizable: ™ (U+99, decimal: 153)\n", "Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: œ (U+9C, decimal: 156)\n", "DEBUG:termite:WARNING: Untokenizable: œ (U+9C, decimal: 156)\n", "Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:08 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: œ (U+9C, decimal: 156)\n", "DEBUG:termite:WARNING: Untokenizable: œ (U+9C, decimal: 156)\n", "Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83C, decimal: 55356)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83C, decimal: 55356)\n", "Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83C, decimal: 55356)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83C, decimal: 55356)\n", "Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ⁉ (U+2049, decimal: 8265)\n", "DEBUG:termite:WARNING: Untokenizable: ⁉ (U+2049, decimal: 8265)\n", "Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable:  (U+9D, decimal: 157)\n", "DEBUG:termite:WARNING: Untokenizable:  (U+9D, decimal: 157)\n", "Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable:  (U+9D, decimal: 157)\n", "DEBUG:termite:WARNING: Untokenizable:  (U+9D, decimal: 157)\n", "Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable:  (U+9D, decimal: 157)\n", "DEBUG:termite:WARNING: Untokenizable:  (U+9D, decimal: 157)\n", "Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable:  (U+9D, decimal: 157)\n", "DEBUG:termite:WARNING: Untokenizable:  (U+9D, decimal: 157)\n", "Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable:  (U+9D, decimal: 157)\n", "DEBUG:termite:WARNING: Untokenizable:  (U+9D, decimal: 157)\n", "Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable:  (U+9D, decimal: 157)\n", "DEBUG:termite:WARNING: Untokenizable:  (U+9D, decimal: 157)\n", "Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable:  (U+9D, decimal: 157)\n", "DEBUG:termite:WARNING: Untokenizable:  (U+9D, decimal: 157)\n", "Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable:  (U+9D, decimal: 157)\n", "DEBUG:termite:WARNING: Untokenizable:  (U+9D, decimal: 157)\n", "Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable:  (U+9D, decimal: 157)\n", "DEBUG:termite:WARNING: Untokenizable:  (U+9D, decimal: 157)\n", "Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable:  (U+9D, decimal: 157)\n", "DEBUG:termite:WARNING: Untokenizable:  (U+9D, decimal: 157)\n", "Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable:  (U+9D, decimal: 157)\n", "DEBUG:termite:WARNING: Untokenizable:  (U+9D, decimal: 157)\n", "Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable:  (U+9D, decimal: 157)\n", "DEBUG:termite:WARNING: Untokenizable:  (U+9D, decimal: 157)\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83C, decimal: 55356)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83C, decimal: 55356)\n", "Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable:  (U+81, decimal: 129)\n", "DEBUG:termite:WARNING: Untokenizable:  (U+81, decimal: 129)\n", "Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83C, decimal: 55356)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83C, decimal: 55356)\n", "Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83E, decimal: 55358)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83E, decimal: 55358)\n", "Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ™ (U+99, decimal: 153)\n", "DEBUG:termite:WARNING: Untokenizable: ™ (U+99, decimal: 153)\n", "Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: œ (U+9C, decimal: 156)\n", "DEBUG:termite:WARNING: Untokenizable: œ (U+9C, decimal: 156)\n", "Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83C, decimal: 55356)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83C, decimal: 55356)\n", "Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ™ (U+99, decimal: 153)\n", "DEBUG:termite:WARNING: Untokenizable: ™ (U+99, decimal: 153)\n", "Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: œ (U+9C, decimal: 156)\n", "DEBUG:termite:WARNING: Untokenizable: œ (U+9C, decimal: 156)\n", "Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: œ (U+9C, decimal: 156)\n", "DEBUG:termite:WARNING: Untokenizable: œ (U+9C, decimal: 156)\n", "Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: Ÿ (U+9F, decimal: 159)\n", "DEBUG:termite:WARNING: Untokenizable: Ÿ (U+9F, decimal: 159)\n", "Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: Ÿ (U+9F, decimal: 159)\n", "DEBUG:termite:WARNING: Untokenizable: Ÿ (U+9F, decimal: 159)\n", "Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ™ (U+99, decimal: 153)\n", "DEBUG:termite:WARNING: Untokenizable: ™ (U+99, decimal: 153)\n", "Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: Ÿ (U+9F, decimal: 159)\n", "DEBUG:termite:WARNING: Untokenizable: Ÿ (U+9F, decimal: 159)\n", "Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ️ (U+FE0F, decimal: 65039)\n", "DEBUG:termite:WARNING: Untokenizable: ️ (U+FE0F, decimal: 65039)\n", "Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: • (U+95, decimal: 149)\n", "DEBUG:termite:WARNING: Untokenizable: • (U+95, decimal: 149)\n", "Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83C, decimal: 55356)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83C, decimal: 55356)\n", "Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:09 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "Jun 23, 2017 11:49:10 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:10 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "Jun 23, 2017 11:49:10 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:10 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ™ (U+99, decimal: 153)\n", "DEBUG:termite:WARNING: Untokenizable: ™ (U+99, decimal: 153)\n", "Jun 23, 2017 11:49:10 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:10 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: œ (U+9C, decimal: 156)\n", "DEBUG:termite:WARNING: Untokenizable: œ (U+9C, decimal: 156)\n", "Jun 23, 2017 11:49:10 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:10 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ™ (U+99, decimal: 153)\n", "DEBUG:termite:WARNING: Untokenizable: ™ (U+99, decimal: 153)\n", "Jun 23, 2017 11:49:10 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:10 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: Ÿ (U+9F, decimal: 159)\n", "DEBUG:termite:WARNING: Untokenizable: Ÿ (U+9F, decimal: 159)\n", "Jun 23, 2017 11:49:10 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:10 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ƒ (U+83, decimal: 131)\n", "DEBUG:termite:WARNING: Untokenizable: ƒ (U+83, decimal: 131)\n", "Jun 23, 2017 11:49:10 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:10 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ™ (U+99, decimal: 153)\n", "DEBUG:termite:WARNING: Untokenizable: ™ (U+99, decimal: 153)\n", "Jun 23, 2017 11:49:10 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:10 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ™ (U+99, decimal: 153)\n", "DEBUG:termite:WARNING: Untokenizable: ™ (U+99, decimal: 153)\n", "Jun 23, 2017 11:49:10 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:10 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83C, decimal: 55356)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83C, decimal: 55356)\n", "Jun 23, 2017 11:49:10 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:10 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ‌ (U+200C, decimal: 8204)\n", "DEBUG:termite:WARNING: Untokenizable: ‌ (U+200C, decimal: 8204)\n", "Jun 23, 2017 11:49:10 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:10 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable:  (U+F4A9, decimal: 62633)\n", "DEBUG:termite:WARNING: Untokenizable:  (U+F4A9, decimal: 62633)\n", "Jun 23, 2017 11:49:10 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:10 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ƒ (U+83, decimal: 131)\n", "DEBUG:termite:WARNING: Untokenizable: ƒ (U+83, decimal: 131)\n", "Jun 23, 2017 11:49:10 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:10 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: Ÿ (U+9F, decimal: 159)\n", "DEBUG:termite:WARNING: Untokenizable: Ÿ (U+9F, decimal: 159)\n", "Jun 23, 2017 11:49:10 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:10 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ƒ (U+83, decimal: 131)\n", "DEBUG:termite:WARNING: Untokenizable: ƒ (U+83, decimal: 131)\n", "Jun 23, 2017 11:49:10 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:10 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable:  (U+8D, decimal: 141)\n", "DEBUG:termite:WARNING: Untokenizable:  (U+8D, decimal: 141)\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Jun 23, 2017 11:49:10 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:10 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: š (U+9A, decimal: 154)\n", "DEBUG:termite:WARNING: Untokenizable: š (U+9A, decimal: 154)\n", "Jun 23, 2017 11:49:10 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:10 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "Jun 23, 2017 11:49:10 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:10 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ‒ (U+2012, decimal: 8210)\n", "DEBUG:termite:WARNING: Untokenizable: ‒ (U+2012, decimal: 8210)\n", "Jun 23, 2017 11:49:10 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:10 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ‒ (U+2012, decimal: 8210)\n", "DEBUG:termite:WARNING: Untokenizable: ‒ (U+2012, decimal: 8210)\n", "Jun 23, 2017 11:49:10 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:10 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable:  (U+81, decimal: 129)\n", "DEBUG:termite:WARNING: Untokenizable:  (U+81, decimal: 129)\n", "Jun 23, 2017 11:49:10 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:10 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable:  (U+F0B7, decimal: 61623)\n", "DEBUG:termite:WARNING: Untokenizable:  (U+F0B7, decimal: 61623)\n", "Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ‒ (U+2012, decimal: 8210)\n", "DEBUG:termite:WARNING: Untokenizable: ‒ (U+2012, decimal: 8210)\n", "Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable:  (U+9D, decimal: 157)\n", "DEBUG:termite:WARNING: Untokenizable:  (U+9D, decimal: 157)\n", "Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable:  (U+9D, decimal: 157)\n", "DEBUG:termite:WARNING: Untokenizable:  (U+9D, decimal: 157)\n", "Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable:  (U+9D, decimal: 157)\n", "DEBUG:termite:WARNING: Untokenizable:  (U+9D, decimal: 157)\n", "Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable:  (U+9D, decimal: 157)\n", "DEBUG:termite:WARNING: Untokenizable:  (U+9D, decimal: 157)\n", "Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable:  (U+9D, decimal: 157)\n", "DEBUG:termite:WARNING: Untokenizable:  (U+9D, decimal: 157)\n", "Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable:  (U+9D, decimal: 157)\n", "DEBUG:termite:WARNING: Untokenizable:  (U+9D, decimal: 157)\n", "Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable:  (U+9D, decimal: 157)\n", "DEBUG:termite:WARNING: Untokenizable:  (U+9D, decimal: 157)\n", "Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable:  (U+9D, decimal: 157)\n", "DEBUG:termite:WARNING: Untokenizable:  (U+9D, decimal: 157)\n", "Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable:  (U+9D, decimal: 157)\n", "DEBUG:termite:WARNING: Untokenizable:  (U+9D, decimal: 157)\n", "Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83C, decimal: 55356)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83C, decimal: 55356)\n", "Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83C, decimal: 55356)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83C, decimal: 55356)\n", "Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable:  (U+F50D, decimal: 62733)\n", "DEBUG:termite:WARNING: Untokenizable:  (U+F50D, decimal: 62733)\n", "Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ₹ (U+20B9, decimal: 8377)\n", "DEBUG:termite:WARNING: Untokenizable: ₹ (U+20B9, decimal: 8377)\n", "Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ₹ (U+20B9, decimal: 8377)\n", "DEBUG:termite:WARNING: Untokenizable: ₹ (U+20B9, decimal: 8377)\n", "Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ₹ (U+20B9, decimal: 8377)\n", "DEBUG:termite:WARNING: Untokenizable: ₹ (U+20B9, decimal: 8377)\n", "Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable:  (U+F1FA, decimal: 61946)\n", "DEBUG:termite:WARNING: Untokenizable:  (U+F1FA, decimal: 61946)\n", "Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable:  (U+F6A8, decimal: 63144)\n", "DEBUG:termite:WARNING: Untokenizable:  (U+F6A8, decimal: 63144)\n", "Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable:  (U+F1FA, decimal: 61946)\n", "DEBUG:termite:WARNING: Untokenizable:  (U+F1FA, decimal: 61946)\n", "Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable:  (U+F682, decimal: 63106)\n", "DEBUG:termite:WARNING: Untokenizable:  (U+F682, decimal: 63106)\n", "Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable:  (U+F1FA, decimal: 61946)\n", "DEBUG:termite:WARNING: Untokenizable:  (U+F1FA, decimal: 61946)\n", "Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable:  (U+F602, decimal: 62978)\n", "DEBUG:termite:WARNING: Untokenizable:  (U+F602, decimal: 62978)\n", "Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83C, decimal: 55356)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83C, decimal: 55356)\n", "Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83E, decimal: 55358)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83E, decimal: 55358)\n", "Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ️ (U+FE0F, decimal: 65039)\n", "DEBUG:termite:WARNING: Untokenizable: ️ (U+FE0F, decimal: 65039)\n", "Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83E, decimal: 55358)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83E, decimal: 55358)\n", "Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ️ (U+FE0F, decimal: 65039)\n", "DEBUG:termite:WARNING: Untokenizable: ️ (U+FE0F, decimal: 65039)\n", "Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83C, decimal: 55356)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83C, decimal: 55356)\n", "Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83C, decimal: 55356)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83C, decimal: 55356)\n", "Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:11 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "Jun 23, 2017 11:49:12 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:12 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83C, decimal: 55356)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83C, decimal: 55356)\n", "Jun 23, 2017 11:49:12 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:12 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83C, decimal: 55356)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83C, decimal: 55356)\n", "Jun 23, 2017 11:49:12 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:12 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: � (U+FFFD, decimal: 65533)\n", "DEBUG:termite:WARNING: Untokenizable: � (U+FFFD, decimal: 65533)\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Jun 23, 2017 11:49:12 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:12 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83D, decimal: 55357)\n", "Jun 23, 2017 11:49:12 PM edu.stanford.nlp.process.PTBLexer next\n", "DEBUG:termite:Jun 23, 2017 11:49:12 PM edu.stanford.nlp.process.PTBLexer next\n", "WARNING: Untokenizable: ? (U+D83C, decimal: 55356)\n", "DEBUG:termite:WARNING: Untokenizable: ? (U+D83C, decimal: 55356)\n", "Copying [./models/] --> [apps/temp_20170623_234907_893474_8228/data/gensim-lda]\n", "INFO:termite:Copying [./models/] --> [apps/temp_20170623_234907_893474_8228/data/gensim-lda]\n", "Computing bag-of-words statistics\n", "INFO:termite:Computing bag-of-words statistics\n", " token_regex = \\w{3,}\n", "INFO:termite: token_regex = \\w{3,}\n", " min_freq = 5\n", "INFO:termite: min_freq = 5\n", " min_doc_freq = 3\n", "INFO:termite: min_doc_freq = 3\n", " max_freq_count = 4000\n", "INFO:termite: max_freq_count = 4000\n", " max_co_freq_count = 100000\n", "INFO:termite: max_co_freq_count = 100000\n", "Computing document-level statistics...\n", "INFO:termite:Computing document-level statistics...\n", " Loading corpus: apps/temp_20170623_234907_893474_8228/data/corpus.txt\n", "DEBUG:termite: Loading corpus: apps/temp_20170623_234907_893474_8228/data/corpus.txt\n", " Computing term freqs (12357 docs)...\n", "INFO:termite: Computing term freqs (12357 docs)...\n", " Computing term co-occurrences (12357 docs)...\n", "INFO:termite: Computing term co-occurrences (12357 docs)...\n", " Saving term_texts (4000 terms)...\n", "DEBUG:termite: Saving term_texts (4000 terms)...\n", " inserting 4000 rows...\n", "DEBUG:termite: inserting 4000 rows...\n", " Saving term_freqs (4000 terms)...\n", "DEBUG:termite: Saving term_freqs (4000 terms)...\n", " inserting 4000 rows...\n", "DEBUG:termite: inserting 4000 rows...\n", " Saving term_probs (4000 terms)...\n", "DEBUG:termite: Saving term_probs (4000 terms)...\n", " inserting 4000 rows...\n", "DEBUG:termite: inserting 4000 rows...\n", " Saving term_doc_freqs (4000 terms)...\n", "DEBUG:termite: Saving term_doc_freqs (4000 terms)...\n", " inserting 4000 rows...\n", "DEBUG:termite: inserting 4000 rows...\n", " Saving term_co_freqs (100000 term pairs)...\n", "DEBUG:termite: Saving term_co_freqs (100000 term pairs)...\n", " inserting 100000 rows...\n", "DEBUG:termite: inserting 100000 rows...\n", " Saving term_co_probs (100000 term pairs)...\n", "DEBUG:termite: Saving term_co_probs (100000 term pairs)...\n", " inserting 100000 rows...\n", "DEBUG:termite: inserting 100000 rows...\n", " Saving term_g2 (100000 term pairs)...\n", "DEBUG:termite: Saving term_g2 (100000 term pairs)...\n", " inserting 100000 rows...\n", "DEBUG:termite: inserting 100000 rows...\n", "Computing sentence-level term statistics...\n", "INFO:termite:Computing sentence-level term statistics...\n", " Loading corpus: apps/temp_20170623_234907_893474_8228/data/sentences.txt\n", "DEBUG:termite: Loading corpus: apps/temp_20170623_234907_893474_8228/data/sentences.txt\n", " Computing term freqs (369703 docs)...\n", "INFO:termite: Computing term freqs (369703 docs)...\n", " Computing term co-occurrences (369703 docs)...\n", "INFO:termite: Computing term co-occurrences (369703 docs)...\n", " Saving sentences_co_freqs (100000 term pairs)...\n", "DEBUG:termite: Saving sentences_co_freqs (100000 term pairs)...\n", " inserting 100000 rows...\n", "DEBUG:termite: inserting 100000 rows...\n", " Saving sentences_co_probs (100000 term pairs)...\n", "DEBUG:termite: Saving sentences_co_probs (100000 term pairs)...\n", " inserting 100000 rows...\n", "DEBUG:termite: inserting 100000 rows...\n", " Saving sentences_g2 (100000 term pairs)...\n", "DEBUG:termite: Saving sentences_g2 (100000 term pairs)...\n", " inserting 100000 rows...\n", "DEBUG:termite: inserting 100000 rows...\n", "('-->', 'apps/temp_20170623_234907_893474_8228/data/gensim-lda/corpus.gensim')\n", "Reading gensim LDA output...\n", "INFO:termite:Reading gensim LDA output...\n", " Loading dictionary: apps/temp_20170623_234907_893474_8228/data/gensim-lda/dictionary.gensim\n", "DEBUG:termite: Loading dictionary: apps/temp_20170623_234907_893474_8228/data/gensim-lda/dictionary.gensim\n", " Loading corpus: apps/temp_20170623_234907_893474_8228/data/gensim-lda/corpus.gensim\n", "DEBUG:termite: Loading corpus: apps/temp_20170623_234907_893474_8228/data/gensim-lda/corpus.gensim\n", "('||-->', 'apps/temp_20170623_234907_893474_8228/data/gensim-lda/corpus.gensim')\n", "\n", " Loading model: apps/temp_20170623_234907_893474_8228/data/gensim-lda/lda.gensim\n", "DEBUG:termite: Loading model: apps/temp_20170623_234907_893474_8228/data/gensim-lda/lda.gensim\n", "Writing to database...\n", "INFO:termite:Writing to database...\n", " Saving term_topic_matrix...\n", "DEBUG:termite: Saving term_topic_matrix...\n", " Saving doc_topic_matrix...\n", "DEBUG:termite: Saving doc_topic_matrix...\n", " Retrieving terms, documents, and topics...\n", "DEBUG:termite: Retrieving terms, documents, and topics...\n", " Retrieving top terms and top documents...\n", "DEBUG:termite: Retrieving top terms and top documents...\n", " Saving terms...\n", "DEBUG:termite: Saving terms...\n", " Saving docs...\n", "DEBUG:termite: Saving docs...\n", " Saving topics...\n", "DEBUG:termite: Saving topics...\n", "Computing derived LDA topic model statistics...\n", "INFO:termite:Computing derived LDA topic model statistics...\n", " max_co_topic_count = 10000\n", "INFO:termite: max_co_topic_count = 10000\n", " Loading doc_topic_matrix...\n", "DEBUG:termite: Loading doc_topic_matrix...\n", " Computing topic cooccurrences...\n", "DEBUG:termite: Computing topic cooccurrences...\n", " Computing topic covariance...\n", "DEBUG:termite: Computing topic covariance...\n", " Saving topic_covariance...\n", "DEBUG:termite: Saving topic_covariance...\n", " inserting 400 rows...\n", "DEBUG:termite: inserting 400 rows...\n", "Moving app into place: gensim_termite [apps/temp_20170623_234907_893474_8228] -> [apps/gensim_termite]\n", "INFO:termite:Moving app into place: gensim_termite [apps/temp_20170623_234907_893474_8228] -> [apps/gensim_termite]\n" ] } ], "source": [ "%capture\n", "!cd termite; cp -r $termite_server_root/tools ./; $py27 /home/matti/termite-data-server/bin/read_gensim.py --overwrite\\\n", " --sentence-split /home/matti/termite-data-server/utils/corenlp/SentenceSplitter.jar\\\n", " gensim_termite ./models/ ./corpus ./db" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To start the server and see the visualisations" ] }, { "cell_type": "code", "execution_count": 91, "metadata": { "ExecuteTime": { "end_time": "2017-06-23T22:08:24.975575Z", "start_time": "2017-06-23T22:08:15.547871Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "web2py Web Framework\r\n", "Created by Massimo Di Pierro, Copyright 2007-2017\r\n", "Version 2.9.5-stable+timestamp.2014.03.16.02.35.39\r\n", "Database drivers available: SQLite(sqlite3), MySQL(pymysql), PostgreSQL(pg8000), MSSQL(pyodbc), DB2(pyodbc), Teradata(pyodbc), Ingres(pyodbc), IMAP(imaplib)\r\n" ] } ], "source": [ "!$py27 $termite_server_root/web2py/web2py.py" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---\n", "\n", "### pyLDAVis\n", "\n", "Some of the work from `Termite` has been integrated into `pyLDAVis` which is being maintained and has good interoperability with `gensim`. Below is an interactive visualisation of the fake news model trained earlier. Just to see how informative the visualisation is overall, I'll train another model on the same dataset but increaase the number of topics quite a lot.\n", "\n", "For a good description of what you see in the visualisation you can look at the presenation from the creator himself\n", "- https://www.youtube.com/watch?v=tGxW2BzC_DU&index=4&list=PLykRMO7ZuHwP5cWnbEmP_mUIVgzd5DZgH" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "ExecuteTime": { "end_time": "2017-06-24T19:21:20.861273Z", "start_time": "2017-06-24T19:21:20.795921Z" }, "collapsed": true }, "outputs": [], "source": [ "lda_fake = LdaModel.load('./fake_news_35.lda')" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "ExecuteTime": { "end_time": "2017-06-23T18:11:30.947881Z", "start_time": "2017-06-23T18:10:38.694177Z" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/matti/miniconda3/envs/pydatabln17/lib/python3.6/site-packages/pyLDAvis/_prepare.py:387: DeprecationWarning: \n", ".ix is deprecated. Please use\n", ".loc for label based indexing or\n", ".iloc for positional indexing\n", "\n", "See the documentation here:\n", "http://pandas.pydata.org/pandas-docs/stable/indexing.html#deprecate_ix\n", " topic_term_dists = topic_term_dists.ix[topic_order]\n" ] }, { "data": { "text/html": [ "\n", "\n", "\n", "\n", "
\n", "" ], "text/plain": [ "PreparedData(topic_coordinates= Freq cluster topics x y\n", "topic \n", "29 11.447637 1 1 0.082591 -0.032010\n", "4 9.925250 1 2 0.097223 0.002993\n", "17 6.863440 1 3 0.070678 0.060930\n", "24 6.391857 1 4 -0.099389 -0.093486\n", "10 6.215024 1 5 0.025561 0.019992\n", "33 5.125329 1 6 0.079203 -0.077926\n", "16 4.943909 1 7 0.124447 -0.090639\n", "32 3.707930 1 8 -0.018592 0.108385\n", "26 3.619673 1 9 0.035902 0.159298\n", "12 2.973363 1 10 0.094758 -0.114335\n", "2 2.618891 1 11 0.084051 -0.039053\n", "22 2.605856 1 12 -0.002146 0.031591\n", "28 2.365484 1 13 0.104745 -0.020990\n", "3 2.230207 1 14 -0.003457 -0.001501\n", "14 2.170824 1 15 0.080176 -0.044981\n", "1 2.164036 1 16 -0.207172 -0.063851\n", "7 2.051219 1 17 -0.025224 0.072326\n", "31 1.905628 1 18 0.001047 -0.080677\n", "5 1.878165 1 19 -0.190224 -0.082225\n", "34 1.877073 1 20 0.048179 0.081136\n", "9 1.641252 1 21 -0.068508 -0.075266\n", "8 1.591013 1 22 0.053924 -0.055139\n", "25 1.546481 1 23 -0.063104 0.033000\n", "13 1.477075 1 24 0.069060 -0.058268\n", "23 1.422065 1 25 -0.035523 -0.058256\n", "20 1.274483 1 26 0.002839 0.187242\n", "30 1.265534 1 27 -0.012395 -0.002334\n", "6 1.250676 1 28 -0.098291 0.135197\n", "27 1.055358 1 29 0.023037 0.042058\n", "15 0.972797 1 30 0.100407 -0.001857\n", "11 0.918695 1 31 -0.054265 0.227490\n", "0 0.908526 1 32 0.066014 -0.032872\n", "18 0.725771 1 33 -0.159045 -0.067844\n", "19 0.511822 1 34 -0.147986 -0.051901\n", "21 0.357659 1 35 -0.058521 -0.016227, topic_info= Category Freq Term Total loglift logprob\n", "term \n", "169 Default 23123.000000 clinton 23123.000000 30.0000 30.0000\n", "259 Default 23764.000000 trump 23764.000000 29.0000 29.0000\n", "2163 Default 8522.000000 russia 8522.000000 28.0000 28.0000\n", "168 Default 15102.000000 hillary 15102.000000 27.0000 27.0000\n", "86 Default 9902.000000 obama 9902.000000 26.0000 26.0000\n", "2157 Default 5248.000000 russian 5248.000000 25.0000 25.0000\n", "171 Default 8678.000000 email 8678.000000 24.0000 24.0000\n", "164 Default 5485.000000 fbi 5485.000000 23.0000 23.0000\n", "684 Default 12109.000000 election 12109.000000 22.0000 22.0000\n", "5959 Default 3514.000000 water 3514.000000 21.0000 21.0000\n", "284 Default 7665.000000 vote 7665.000000 20.0000 20.0000\n", "903 Default 10924.000000 us 10924.000000 19.0000 19.0000\n", "2231 Default 10453.000000 war 10453.000000 18.0000 18.0000\n", "2413 Default 4837.000000 syria 4837.000000 17.0000 17.0000\n", "414 Default 7975.000000 campaign 7975.000000 16.0000 16.0000\n", "519 Default 4151.000000 police 4151.000000 15.0000 15.0000\n", "882 Default 4064.000000 black 4064.000000 14.0000 14.0000\n", "287 Default 6493.000000 law 6493.000000 13.0000 13.0000\n", "847 Default 6915.000000 post 6915.000000 12.0000 12.0000\n", "1432 Default 5448.000000 military 5448.000000 11.0000 11.0000\n", "131 Default 18060.000000 which 18060.000000 10.0000 10.0000\n", "271 Default 20053.000000 people 20053.000000 9.0000 9.0000\n", "688 Default 4407.000000 voter 4407.000000 8.0000 8.0000\n", "158 Default 7240.000000 news 7240.000000 7.0000 7.0000\n", "1131 Default 5742.000000 force 5742.000000 6.0000 6.0000\n", "2207 Default 2509.000000 putin 2509.000000 5.0000 5.0000\n", "1256 Default 3957.000000 video 3957.000000 4.0000 4.0000\n", "5286 Default 2115.000000 israel 2115.000000 3.0000 3.0000\n", "873 Default 2760.000000 al 2760.000000 2.0000 2.0000\n", "1483 Default 4798.000000 comment 4798.000000 1.0000 1.0000\n", "... ... ... ... ... ... ...\n", "25309 Topic35 22.037344 basilica 24.500601 5.5274 -6.5750\n", "27300 Topic35 37.256858 redding 44.888167 5.4470 -6.0499\n", "13983 Topic35 52.778653 sgt 68.487654 5.3728 -5.7016\n", "21097 Topic35 31.293496 mc 37.384967 5.4555 -6.2243\n", "1715 Topic35 137.364283 jay 240.816994 5.0719 -4.7451\n", "1681 Topic35 325.244683 fake 756.994033 4.7886 -3.8831\n", "6172 Topic35 93.770990 km 188.603504 4.9346 -5.1268\n", "11837 Topic35 60.462959 franco 103.766049 5.0932 -5.5657\n", "942 Topic35 121.241607 italy 378.030700 4.4962 -4.8699\n", "33243 Topic35 90.203262 moreno 241.997668 4.6465 -5.1656\n", "1717 Topic35 112.170570 scott 419.462282 4.3144 -4.9477\n", "16076 Topic35 54.945920 videos 114.774605 4.8967 -5.6613\n", "6474 Topic35 50.393977 proposition 101.104905 4.9371 -5.7478\n", "7039 Topic35 52.644152 mrs 117.292117 4.8322 -5.7041\n", "799 Topic35 160.605927 california 1414.447286 3.4578 -4.5887\n", "5345 Topic35 64.007810 mask 212.974590 4.4312 -5.5087\n", "950 Topic35 53.012156 instagram 146.537680 4.6166 -5.6972\n", "4376 Topic35 98.577912 building 802.251825 3.5368 -5.0768\n", "1829 Topic35 114.693588 officer 1819.653208 2.8692 -4.9254\n", "4669 Topic35 71.211563 crowd 651.044370 3.4204 -5.4020\n", "158 Topic35 119.879175 news 7240.967904 1.5323 -4.8812\n", "400 Topic35 70.271842 stage 743.837403 3.2739 -5.4153\n", "1326 Topic35 64.166561 town 835.284455 3.0671 -5.5062\n", "1131 Topic35 85.015724 force 5742.947983 1.4205 -5.2249\n", "1618 Topic35 67.470442 hit 1373.582443 2.6199 -5.4560\n", "563 Topic35 77.924969 look 6339.016577 1.2346 -5.3119\n", "271 Topic35 73.076497 people 20053.588229 0.0187 -5.3762\n", "5685 Topic35 55.873801 strike 1299.426977 2.4868 -5.6446\n", "903 Topic35 55.224808 us 10924.640028 0.3460 -5.6563\n", "389 Topic35 53.707349 rally 1130.122679 2.5868 -5.6841\n", "\n", "[2932 rows x 6 columns], token_table= Topic Freq Term\n", "term \n", "14924 24 0.984051 15th\n", "9824 5 0.954120 19-year\n", "5154 14 0.973998 3d\n", "29759 1 0.034280 70-year\n", "29759 8 0.017140 70-year\n", "29759 13 0.925547 70-year\n", "28944 10 0.962071 77th\n", "2325 1 0.008329 7th\n", "2325 2 0.133264 7th\n", "2325 4 0.008329 7th\n", "2325 5 0.108277 7th\n", "2325 14 0.049974 7th\n", "2325 23 0.024987 7th\n", "2325 25 0.016658 7th\n", "2325 33 0.649663 7th\n", "1875 1 0.188842 8th\n", "1875 2 0.047840 8th\n", "1875 5 0.005036 8th\n", "1875 6 0.085609 8th\n", "1875 7 0.103234 8th\n", "1875 10 0.005036 8th\n", "1875 13 0.465811 8th\n", "1875 15 0.002518 8th\n", "1875 18 0.005036 8th\n", "1875 24 0.030215 8th\n", "1875 25 0.045322 8th\n", "1875 32 0.012589 8th\n", "6979 1 0.007585 >\n", "6979 10 0.007585 >\n", "6979 22 0.980976 >\n", "... ... ... ...\n", "181 6 0.007971 ’re\n", "181 7 0.073000 ’re\n", "181 8 0.044681 ’re\n", "181 9 0.026641 ’re\n", "181 10 0.005874 ’re\n", "181 11 0.008601 ’re\n", "181 12 0.018250 ’re\n", "181 13 0.041744 ’re\n", "181 14 0.009859 ’re\n", "181 15 0.020977 ’re\n", "181 16 0.004195 ’re\n", "181 17 0.003356 ’re\n", "181 18 0.007552 ’re\n", "181 19 0.001259 ’re\n", "181 20 0.010489 ’re\n", "181 21 0.022655 ’re\n", "181 22 0.001678 ’re\n", "181 23 0.000839 ’re\n", "181 24 0.003147 ’re\n", "181 25 0.001468 ’re\n", "181 26 0.002098 ’re\n", "181 27 0.005874 ’re\n", "181 28 0.000839 ’re\n", "181 29 0.007132 ’re\n", "181 30 0.003776 ’re\n", "181 31 0.001468 ’re\n", "181 32 0.014684 ’re\n", "181 33 0.000420 ’re\n", "181 34 0.003147 ’re\n", "181 35 0.005664 ’re\n", "\n", "[23020 rows x 3 columns], R=30, lambda_step=0.01, plot_opts={'xlab': 'PC1', 'ylab': 'PC2'}, topic_order=[30, 5, 18, 25, 11, 34, 17, 33, 27, 13, 3, 23, 29, 4, 15, 2, 8, 32, 6, 35, 10, 9, 26, 14, 24, 21, 31, 7, 28, 16, 12, 1, 19, 20, 22])" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from gensim.models import LdaModel\n", "\n", "import pyLDAvis as ldavis\n", "import pyLDAvis.gensim\n", "\n", "ldavis.enable_notebook()\n", "prepared_data = ldavis.gensim.prepare(lda_fake, corpus_fake, vocabulary)\n", "\n", "with open('./fake_news_35.lda-LDAVIS.json', 'w') as fh:\n", " fh.write(prepared_data.to_json())\n", "\n", "prepared_data" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "ExecuteTime": { "end_time": "2017-06-23T17:50:22.806083Z", "start_time": "2017-06-23T17:48:21.773434Z" }, "collapsed": true }, "outputs": [], "source": [ "lda_fake_100 = LdaModel(corpus=corpus_fake, id2word=vocabulary, num_topics=100, alpha='auto')" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "ExecuteTime": { "end_time": "2017-06-23T18:05:35.476809Z", "start_time": "2017-06-23T18:05:35.325556Z" }, "collapsed": true }, "outputs": [], "source": [ "lda_fake_100.save('./fake_news_100.lda')" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "ExecuteTime": { "end_time": "2017-06-23T18:07:32.687560Z", "start_time": "2017-06-23T18:06:10.186140Z" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/matti/miniconda3/envs/pydatabln17/lib/python3.6/site-packages/pyLDAvis/_prepare.py:387: DeprecationWarning: \n", ".ix is deprecated. Please use\n", ".loc for label based indexing or\n", ".iloc for positional indexing\n", "\n", "See the documentation here:\n", "http://pandas.pydata.org/pandas-docs/stable/indexing.html#deprecate_ix\n", " topic_term_dists = topic_term_dists.ix[topic_order]\n" ] } ], "source": [ "prepared_data = ldavis.gensim.prepare(lda_fake_100, corpus_fake, vocabulary)\n", "\n", "with open('./fake_news_100.lda-LDAVIS.json', 'w') as fh:\n", " fh.write(prepared_data.to_json())" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "ExecuteTime": { "end_time": "2017-06-23T18:10:01.765834Z", "start_time": "2017-06-23T18:10:01.646560Z" } }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "
\n", "" ], "text/plain": [ "PreparedData(topic_coordinates= Freq cluster topics x y\n", "topic \n", "15 11.051638 1 1 -0.020584 -0.068551\n", "91 4.765352 1 2 0.076791 -0.120859\n", "27 3.519617 1 3 0.084229 0.006596\n", "65 3.288228 1 4 0.059327 -0.130154\n", "64 3.123180 1 5 0.055230 -0.131222\n", "4 3.076409 1 6 0.046018 -0.029117\n", "63 3.061538 1 7 0.112877 0.090508\n", "35 2.962981 1 8 0.043305 -0.143161\n", "97 2.667694 1 9 0.010568 -0.009419\n", "95 2.625079 1 10 0.014559 -0.079037\n", "88 2.350658 1 11 0.021777 0.031932\n", "94 2.112345 1 12 0.129587 0.091645\n", "76 2.071964 1 13 -0.112160 0.024069\n", "98 1.925515 1 14 0.045811 0.027955\n", "84 1.808213 1 15 0.156204 0.017993\n", "92 1.714718 1 16 -0.136366 0.087464\n", "30 1.652883 1 17 0.019563 0.015719\n", "38 1.571009 1 18 -0.025832 -0.092534\n", "51 1.543033 1 19 -0.079080 -0.020177\n", "12 1.523709 1 20 -0.025641 -0.032598\n", "8 1.442071 1 21 -0.178847 0.022802\n", "50 1.388350 1 22 0.139298 0.112845\n", "69 1.323889 1 23 -0.110300 0.029187\n", "34 1.323022 1 24 0.006861 0.021670\n", "86 1.213996 1 25 0.049684 0.105667\n", "14 1.191569 1 26 0.137705 -0.001965\n", "80 1.121070 1 27 0.040091 -0.148196\n", "22 1.113610 1 28 0.028684 -0.088641\n", "87 1.103358 1 29 0.131680 0.134262\n", "43 1.095135 1 30 0.103508 0.169236\n", "... ... ... ... ... ...\n", "66 0.284486 1 71 -0.070199 -0.023971\n", "19 0.277730 1 72 0.041505 0.053897\n", "26 0.276471 1 73 -0.012452 0.015477\n", "29 0.272207 1 74 -0.014223 -0.001802\n", "56 0.270535 1 75 -0.059576 0.025650\n", "47 0.266134 1 76 -0.053632 0.004143\n", "32 0.246424 1 77 -0.028769 -0.012899\n", "93 0.232488 1 78 -0.051844 -0.042669\n", "37 0.230586 1 79 0.022239 0.079171\n", "41 0.219533 1 80 0.013315 -0.023044\n", "25 0.214723 1 81 0.017702 -0.020328\n", "83 0.189997 1 82 -0.018200 0.026752\n", "13 0.180659 1 83 0.044520 -0.032618\n", "21 0.167724 1 84 -0.008503 -0.040216\n", "57 0.167108 1 85 0.067977 0.020235\n", "74 0.158762 1 86 -0.022937 -0.033824\n", "31 0.148276 1 87 0.023512 0.049431\n", "6 0.131437 1 88 -0.023286 0.066083\n", "7 0.130565 1 89 -0.050323 0.155394\n", "3 0.128582 1 90 0.058498 0.040850\n", "39 0.123680 1 91 -0.070594 0.043534\n", "62 0.122406 1 92 -0.020730 0.003200\n", "40 0.116530 1 93 -0.034095 -0.015120\n", "67 0.112451 1 94 -0.073535 0.067852\n", "61 0.102738 1 95 -0.029518 0.014581\n", "82 0.100426 1 96 0.014365 0.059540\n", "60 0.091150 1 97 0.056015 0.118169\n", "5 0.090763 1 98 0.051519 0.042521\n", "1 0.065789 1 99 -0.013541 0.071367\n", "68 0.058966 1 100 -0.008670 0.029212\n", "\n", "[100 rows x 5 columns], topic_info= Category Freq Term Total loglift logprob\n", "term \n", "259 Default 23991.000000 trump 23991.000000 30.0000 30.0000\n", "169 Default 23402.000000 clinton 23402.000000 29.0000 29.0000\n", "903 Default 11008.000000 us 11008.000000 28.0000 28.0000\n", "168 Default 15524.000000 hillary 15524.000000 27.0000 27.0000\n", "684 Default 12343.000000 election 12343.000000 26.0000 26.0000\n", "171 Default 9021.000000 email 9021.000000 25.0000 25.0000\n", "2163 Default 8777.000000 russia 8777.000000 24.0000 24.0000\n", "86 Default 9455.000000 obama 9455.000000 23.0000 23.0000\n", "164 Default 6203.000000 fbi 6203.000000 22.0000 22.0000\n", "2231 Default 10356.000000 war 10356.000000 21.0000 21.0000\n", "2445 Default 2886.000000 nuclear 2886.000000 20.0000 20.0000\n", "271 Default 20075.000000 people 20075.000000 19.0000 19.0000\n", "2413 Default 4895.000000 syria 4895.000000 18.0000 18.0000\n", "201 Default 13303.000000 get 13303.000000 17.0000 17.0000\n", "1389 Default 2412.000000 facebook 2412.000000 16.0000 16.0000\n", "131 Default 18315.000000 which 18315.000000 15.0000 15.0000\n", "284 Default 7775.000000 vote 7775.000000 14.0000 14.0000\n", "19 Default 15372.000000 go 15372.000000 13.0000 13.0000\n", "1744 Default 4246.000000 child 4246.000000 12.0000 12.0000\n", "633 Default 11775.000000 use 11775.000000 11.0000 11.0000\n", "221 Default 18894.000000 would 18894.000000 10.0000 10.0000\n", "2157 Default 5203.000000 russian 5203.000000 9.0000 9.0000\n", "414 Default 8139.000000 campaign 8139.000000 8.0000 8.0000\n", "504 Default 17324.000000 there 17324.000000 7.0000 7.0000\n", "873 Default 2841.000000 al 2841.000000 6.0000 6.0000\n", "75 Default 15036.000000 when 15036.000000 5.0000 5.0000\n", "16 Default 13385.000000 year 13385.000000 4.0000 4.0000\n", "521 Default 12465.000000 new 12465.000000 3.0000 3.0000\n", "268 Default 16243.000000 make 16243.000000 2.0000 2.0000\n", "688 Default 4353.000000 voter 4353.000000 1.0000 1.0000\n", "... ... ... ... ... ... ...\n", "27211 Topic100 2.645306 dignity’ 3.821977 7.0680 -6.8923\n", "16467 Topic100 2.489874 imac 3.628177 7.0595 -6.9528\n", "11343 Topic100 2.354142 increases 3.461511 7.0504 -7.0089\n", "24017 Topic100 5.912072 lauletta 8.749787 7.0439 -6.0881\n", "11345 Topic100 14.249483 finds 21.257562 7.0360 -5.2083\n", "21724 Topic100 31.732080 saakashvili 48.069359 7.0207 -4.4077\n", "29907 Topic100 2.596126 webmaster 3.938249 7.0193 -6.9110\n", "7364 Topic100 2.452777 ir 3.731085 7.0165 -6.9678\n", "9401 Topic100 6.146744 upi 9.525193 6.9980 -6.0491\n", "21723 Topic100 3.604591 mikheil 5.636227 6.9890 -6.5829\n", "19036 Topic100 12.783871 vitaly 20.283543 6.9743 -5.3169\n", "14772 Topic100 17.430246 notre 28.370230 6.9488 -5.0069\n", "13930 Topic100 13.927763 sustainably 22.675812 6.9486 -5.2312\n", "1046 Topic100 80.342007 ford 157.466795 6.7630 -3.4788\n", "16466 Topic100 42.030173 studio 80.977023 6.7802 -4.1267\n", "12158 Topic100 8.156980 texan 13.770867 6.9123 -5.7662\n", "25109 Topic100 16.104101 alcoholic 30.484407 6.7978 -5.0860\n", "29806 Topic100 5.294470 patti 8.634403 6.9469 -6.1984\n", "4743 Topic100 24.413404 simulation 56.470552 6.5974 -4.6699\n", "14536 Topic100 39.613889 disney 114.311818 6.3762 -4.1859\n", "1196 Topic100 20.361242 math 110.582221 5.7438 -4.8514\n", "920 Topic100 38.591717 mexico 695.832927 4.5439 -4.2120\n", "8487 Topic100 14.093638 drinking 222.122995 4.6785 -5.2193\n", "815 Topic100 18.409250 white 5467.421171 1.7423 -4.9522\n", "633 Topic100 20.100707 use 11775.675286 1.0629 -4.8643\n", "221 Topic100 13.298099 would 18894.469474 0.1770 -5.2774\n", "1398 Topic100 9.900763 risk 1728.322235 2.2737 -5.5725\n", "268 Topic100 11.531155 make 16243.718237 0.1856 -5.4200\n", "271 Topic100 9.786701 people 20075.683923 -0.1903 -5.5840\n", "198 Topic100 8.853187 so 13995.870398 0.0702 -5.6843\n", "\n", "[7176 rows x 6 columns], token_table= Topic Freq Term\n", "term \n", "3275 1 0.051543 #\n", "3275 2 0.046283 #\n", "3275 3 0.004208 #\n", "3275 4 0.008415 #\n", "3275 5 0.002104 #\n", "3275 6 0.004208 #\n", "3275 8 0.215639 #\n", "3275 9 0.003156 #\n", "3275 10 0.009467 #\n", "3275 11 0.002104 #\n", "3275 13 0.001052 #\n", "3275 14 0.001052 #\n", "3275 15 0.008415 #\n", "3275 16 0.005259 #\n", "3275 17 0.033661 #\n", "3275 18 0.012623 #\n", "3275 19 0.001052 #\n", "3275 20 0.001052 #\n", "3275 21 0.001052 #\n", "3275 22 0.007363 #\n", "3275 23 0.001052 #\n", "3275 24 0.083100 #\n", "3275 25 0.002104 #\n", "3275 26 0.010519 #\n", "3275 27 0.063114 #\n", "3275 28 0.046283 #\n", "3275 31 0.011571 #\n", "3275 32 0.001052 #\n", "3275 33 0.003156 #\n", "3275 34 0.001052 #\n", "... ... ... ...\n", "181 70 0.010294 ’re\n", "181 71 0.003294 ’re\n", "181 72 0.001647 ’re\n", "181 73 0.002471 ’re\n", "181 74 0.003912 ’re\n", "181 75 0.000618 ’re\n", "181 76 0.002882 ’re\n", "181 77 0.002059 ’re\n", "181 78 0.001029 ’re\n", "181 79 0.000618 ’re\n", "181 80 0.001235 ’re\n", "181 81 0.000824 ’re\n", "181 82 0.002471 ’re\n", "181 83 0.000618 ’re\n", "181 84 0.000824 ’re\n", "181 85 0.000618 ’re\n", "181 86 0.001029 ’re\n", "181 87 0.000618 ’re\n", "181 88 0.000206 ’re\n", "181 90 0.000206 ’re\n", "181 91 0.000206 ’re\n", "181 92 0.001235 ’re\n", "181 93 0.003706 ’re\n", "181 94 0.000206 ’re\n", "181 95 0.000412 ’re\n", "181 96 0.000206 ’re\n", "181 98 0.000206 ’re\n", "181 99 0.000206 ’re\n", "181 100 0.000206 ’re\n", "25136 62 0.930219 →\n", "\n", "[78114 rows x 3 columns], R=30, lambda_step=0.01, plot_opts={'xlab': 'PC1', 'ylab': 'PC2'}, topic_order=[16, 92, 28, 66, 65, 5, 64, 36, 98, 96, 89, 95, 77, 99, 85, 93, 31, 39, 52, 13, 9, 51, 70, 35, 87, 15, 81, 23, 88, 44, 11, 90, 59, 97, 29, 82, 80, 1, 74, 45, 50, 18, 37, 17, 19, 43, 76, 54, 91, 49, 53, 21, 55, 3, 60, 72, 79, 24, 56, 86, 46, 100, 78, 73, 47, 34, 71, 25, 10, 12, 67, 20, 27, 30, 57, 48, 33, 94, 38, 42, 26, 84, 14, 22, 58, 75, 32, 7, 8, 4, 40, 63, 41, 68, 62, 83, 61, 6, 2, 69])" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "prepared_data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Comparing the two visualisation one can make some comforting observations. In the bottom left right corner in both visualisation there is a cluster of topics relating to the 2016 U.S. presidential election. The 100 topic model has split the documents up in slightly more specific terms but otherwise both models have captured those semantics and more importantly both visualisations display those topics consistently in a cluster.\n", "\n", "Similarly in the visualisation of the 100 topic model the cluster in the top right hand corner is semantically coherent and similar to the cluster in the bottom left hand corner in the visualisation for the 35 topic model. Again both models have captured the Syrian civil war and related issues and consistently placed those topics close together in the topic panel. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The main problem I find the LDAVis is that the spatial dimensions on the left hand side panel are somewhat meaningless.\n", "\n", "The area of the circle shows the prevalence of a topic, but visually determining the relative sizes of circles is difficult to do, so while you do get an understanding of which topics are the most important you can't really determine how much more important those topics are compared to the others.\n", "\n", "The second problem is the distance between the topics. While the positioning of the topics to some exent preserves semantic similarity allowing some related topics to form clusters, it is a little difficult to determine exactly how similar the topics are. To be fair this is not something that can be blamed on LDAVis as measuring the semantic similarity of topics and then collapsing the multidimensional similarity vectors into 2 dimensions is not an easy task to do. Nevertheless, one shouldn't read too much into the topic distances. Different algorithms for computing the locations - essentially doing multidimensional scaling." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Intrinsic Evaluation\n", "\n", "Perplexity is often used as an example of an intrinsic evaluation measure. It comes from the language modelling community and aims to capture how suprised a model is of new data it has not seen before. This is commonly measured as the normalised log-likelihood of a held out test set\n", "\n", "$$\n", "\\begin{align}\n", "\\mathcal{L}(D') &= \\frac{\\sum_D \\log_2 p(w_d;\\Theta)}{\\mbox{count of tokens}}\\\\\\\\\n", "perplexity(D') &= 2^{-\\mathcal{L}(D')}\n", "\\end{align}\n", "$$\n", "\n", "Focussing on the log-likelihood part, this metric is measuring how probable some new unseen data is given the model that was learned earlier. That is to say, how well does the model represent or reproduce the statistics of the held out data.\n", "\n", "Thinking back to what we would like the topic model to do, this makes no sense at all. Let's put aside any specific algorithm for inferring a topic model and focus on what it is that we'd like the model to capture. More often than not the desire is for the model to capture *concepts* that exist in a particular dataset. Well what is a concept and how can it be represented given the pieces we have?\n", "\n", "Let me offer a way of thinking about this that would not pass the mustard in a bachelor's class in philosophy. Luckily we're not in philopshy class at the moment.\n", "\n", "Take the following two documents that talk about ice hockey. I've highlighted terms that **I** think are related to the subject matter, you may disagree with my judgement. Notice that among the terms that I've highlighted as being part of the *topic* of Ice Hockey are words such as `Penguin`, `opposing` and `shots`. None of these on the face of it would appear to \"belong\" to Ice Hockey, but seeing them in context makes it clear that `Penguin` refers to the ice hockey team, `shots` refers to disk shaped pieces of vulcanised rubber being launched at the goal at various different speeds and `opposing` refers to the opposing team although it might more commonly be thought to belong politics or the debate club.\n", "\n", "> ... began his professional **career** in 1989–90 with **Jokerit** of the **SM-liiga** and **played** 21 **seasons** in the **National Hockey League** (**NHL**) for the **Winnipeg Jets** ...\n", "\n", "> **Rinne** **stopped** 27 of 28 **shots** from the **Penguins** in **Game** 6 at home Sunday, but that lone **goal** allowed was enough for the **opposition** to break out the **Stanley Cup** **trophy** for the second straight **season**.\n", "\n", "Given the terms that I've determined to be a partial description of Ice Hockey (the concept), one could conceivably measure the coherence of that concept by counting how many times those terms occur with each other - co-occur that is - in some sufficiently large reference corpus.\n", "\n", "One of course encounters a problem should the reference corpus never refer to ice hockey. A poorly selected reference corpus could for instance be patent applications from the 1800s, it would be unlikely to find those word pairs in that text.\n", "\n", "This is precisely what several research papers have aimed to do. To take the top words from the topics in a topic model and measure the *support* for those words forming a coherent concept / topic by looking at the co-occurrences of those terms in a reference corpus. The research up to now was finally wrapped up into a single paper where the authors develop a *coherence pipeline*, which allows plugging in all the different methods into a single framework. This *coherence pipeline* is partially implemented in `gensim`, below is a few examples on how to use it." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "ExecuteTime": { "end_time": "2017-06-24T21:35:50.579234Z", "start_time": "2017-06-24T21:34:59.231681Z" }, "collapsed": true }, "outputs": [], "source": [ "import spacy\n", "\n", "import gensim\n", "from gensim.models import LdaModel\n", "from gensim.corpora import Dictionary, MmCorpus\n", "\n", "spc = spacy.load('en')\n", "\n", "KEEP_POS = set([90, 98, 82, 84, 94]) # NOUN, VERB, ADJ, ADV, PROPN\n", "pipe = spc.pipe(df_fake.text, parse=False, entity=False, n_threads=8)\n", "processed = [[token.lemma_ for token in document if token.pos in KEEP_POS] for document in pipe]\n", "\n", "vocabulary = Dictionary(processed)\n", "vocabulary.filter_extremes(no_below=3, no_above=0.5)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "ExecuteTime": { "end_time": "2017-06-24T21:38:47.565242Z", "start_time": "2017-06-24T21:38:47.561017Z" }, "collapsed": true }, "outputs": [], "source": [ "corpus = MmCorpus('./models/fake_news.mm')" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "ExecuteTime": { "end_time": "2017-06-24T21:39:21.626367Z", "start_time": "2017-06-24T21:39:21.176603Z" }, "collapsed": true }, "outputs": [], "source": [ "lda_fake_35 = LdaModel.load('./models/fake_news_35.lda')\n", "lda_fake_100 = LdaModel.load('./models/fake_news_100.lda')" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "ExecuteTime": { "end_time": "2017-06-24T21:38:52.860990Z", "start_time": "2017-06-24T21:38:50.500705Z" } }, "outputs": [ { "data": { "text/plain": [ "0.73858095241592736" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from gensim.models import CoherenceModel\n", "\n", "cm = CoherenceModel(model=lda_fake_35, corpus=corpus,\n", " dictionary=vocabulary, coherence='c_v',\n", " texts=[[w for w in d if w in vocabulary.token2id] for d in processed])\n", "cm.get_coherence()" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "ExecuteTime": { "end_time": "2017-06-24T21:40:01.880451Z", "start_time": "2017-06-24T21:39:55.835007Z" } }, "outputs": [ { "data": { "text/plain": [ "0.6594566862444563" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cm = CoherenceModel(model=lda_fake_100, corpus=corpus,\n", " dictionary=vocabulary, coherence='c_v',\n", " texts=[[w for w in d if w in vocabulary.token2id] for d in processed])\n", "cm.get_coherence()" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "ExecuteTime": { "end_time": "2017-06-24T21:38:58.745536Z", "start_time": "2017-06-24T21:38:56.969609Z" } }, "outputs": [ { "data": { "text/plain": [ "0.51052624873338692" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cm = CoherenceModel(model=lda_fake_35, corpus=corpus,\n", " dictionary=vocabulary, coherence='c_uci',\n", " texts=[[w for w in d if w in vocabulary.token2id] for d in processed])\n", "cm.get_coherence()" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "ExecuteTime": { "end_time": "2017-06-24T21:39:26.038510Z", "start_time": "2017-06-24T21:39:23.726210Z" } }, "outputs": [ { "data": { "text/plain": [ "-0.84043127015386343" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cm = CoherenceModel(model=lda_fake_100, corpus=corpus,\n", " dictionary=vocabulary, coherence='c_uci',\n", " texts=[[w for w in d if w in vocabulary.token2id] for d in processed])\n", "cm.get_coherence()" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "ExecuteTime": { "end_time": "2017-06-24T22:05:16.201303Z", "start_time": "2017-06-24T21:44:10.202880Z" } }, "outputs": [ { "data": { "text/plain": [ "-1.6535058835918122" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cm = CoherenceModel(model=lda_fake_35, corpus=corpus,\n", " dictionary=vocabulary, coherence='u_mass',\n", " texts=[[w for w in d if w in vocabulary.token2id] for d in processed])\n", "cm.get_coherence()" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "ExecuteTime": { "end_time": "2017-06-24T23:03:23.228234Z", "start_time": "2017-06-24T22:05:16.202178Z" } }, "outputs": [ { "data": { "text/plain": [ "-3.8603367679749985" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cm = CoherenceModel(model=lda_fake_100, corpus=corpus,\n", " dictionary=vocabulary, coherence='u_mass',\n", " texts=[[w for w in d if w in vocabulary.token2id] for d in processed])\n", "cm.get_coherence()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# References\n", "\n", "## Papers\n", "- Chang et. al *Reading Tea Leaves: How Humans Interpret Topic Models*, NIPS 2009\n", "- Wallach et. al *Evaluation Methods for Topic Models*, ICML 2009 \n", "- Lau et. al *Machine Reading Tea Leaves: Automatically Evaluating Topic Coherence and Topic Model Quality*, ACL 2014\n", "- Röder et. al *Exploring the Space of Topic Coherence Methods*, Web Search and Data Mining 2015\n", "\n", "- Sievert et. al *LDAvis: A method for visualizing and interpreting topics* ACL 2014 Workshop on Interactive Language Learning, Visualization, and Interfaces\n", "\n", "- Chuang et. al *Termite: Visualization Techniques for Assessing Textual Topic Models*, AVI 2012 [link](http://vis.stanford.edu/papers/termite)\n", "- Chuang et. al *Topic Model Diagnostics: Assessing Domain Relevance via Topical Alignment*, ICML 2013 [link](http://vis.stanford.edu/papers/topic-model-diagnostics)\n", "\n", "## Software\n", "\n", "- [gensim Topic Modelling for Humans](http://radimrehurek.com/gensim) (Python)\n", "- [UMass Machine Learning for Language - Mallet](http://mallet.cs.umass.edu/) (Java)\n", "- [Stanford Topic Modelling Toolbox](https://nlp.stanford.edu/software/tmt/tmt-0.3/) (Java)\n", "- [Spherical Hierarchical Dirichlet Processes](https://github.com/Ardavans/sHDP)\n", "- Termite\n", " - [Original project](https://github.com/StanfordHCI/termite)\n", " - [Data server](https://github.com/uwdata/termite-data-server)\n", " - [Visualisation](https://github.com/uwdata/termite-visualizations)\n", "- scattertext\n", " - scattertext allows you to plot differential word usage patterns from two corpora into an interactive display. It's not exactly an evaluation method for topic models but can be quite useful for analysing corpora\n", " - there's a talk by the creator at PyData Seattle 2017 [link](https://pydata.org/seattle2017/schedule/presentation/69/)\n", "\n", "## Datasets\n", "\n", "The model used in this notebook is built on the Kaggle Fake News dataset available [here](https://www.kaggle.com/mrisdal/fake-news). \n", "\n", "## Interwebs\n", "\n", "- http://qpleple.com/perplexity-to-evaluate-topic-models/\n", "- http://qpleple.com/topic-coherence-to-evaluate-topic-models/\n", "\n", "## General stuff about NLP you might be interested in\n", "- Yoav Goldberg on evaluating NNLMs\n", " - [Original post](https://medium.com/@yoav.goldberg/an-adversarial-review-of-adversarial-generation-of-natural-language-409ac3378bd7)\n", " - [Addendum](https://medium.com/@yoav.goldberg/clarifications-re-adversarial-review-of-adversarial-learning-of-nat-lang-post-62acd39ebe0d)\n", " - [Yann le Cunn on the matter](https://www.facebook.com/yann.lecun/posts/10154498539442143)\n", " - [A response to le Cunn](https://medium.com/@yoav.goldberg/a-response-to-yann-lecuns-response-245125295c02)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "----\n", "----\n", "\n", "# Even Remotely Intelligent Stuff Ends Here\n", "\n", "----\n", "----" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "I am going to start with a slightly silly example that nonetheless nicely illustrates a few important points about evaluating unsupervised models\n", "\n", "- define what you want out of the model\n", " - running an algorithm won't solve anything unless you have an expectation of what the output should / could look like\n", " - if you don't explicitly know what the output should look like, you probably know it implicitly\n", "\n", "- applying subjective judgement\n", "\n", "I did some analysis on the accepted talks to PyData Berlin 2017 to find out what kind of talks were accepted this year. I plotted the results in a wordcloud (github.com/amueller/word_cloud), but was disappointed that the first approach didn't really reveal _the thing I was hoping to analyse_. The plot just showed general patterns of english language use.\n", "\n", "![Raw Frequency of Words](../assets/unsupervised-models/wordcloud.1.png)\n", "\n", "Filtering out high frequency words helped a little bit but the wordcloud still wasn't that informative, it is hardly a surprise that _data_ is a central theme at a PyData conference.\n", "\n", "![Raw Frequency of Words, 0.5 lt doc_freq removed](../assets/unsupervised-models/wordcloud.2.png)\n", "\n", "So I made some more adjustments to the model and got something that looks more reasonable.\n", "\n", "![TFIDF filtered scores](../assets/unsupervised-models/wordcloud.4.png)\n", "\n", "I am not trying to claim that the last model is a good one, or even a valid one, but it does correspond to my previously held beliefs of the contents of the conference. It is not surprising that is the case since I arrived at the model by iterating through a number of models that I found to be unsatisfactory, the problem is that I never I actually defined what satisfactory means, there was never an explicitly stated goal towards which I was driving.\n", "\n", "This is extremely important to keep in mind as evaluation metrics for unsupervised models often have in built assumptions about what a _good model_ looks like. Those assumptions may or may not be true for your use case. Some metrics aim to satisfy internal constraints " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "So let's start with what we would like to model about text in an unsupervised manner\n", "\n", "- the distribution of terms\n", "- the co-occurence of terms\n", " - within documents (topic modelling)\n", " - within \"sentences\" (distributional semantics, word2vec, GloVe)\n", "- sequences of terms (language models)\n", "\n", "I will focus on evaluation topic models and models of distributional semantics.\n", "\n", "- open source tools\n", "- open access research papers\n", "\n", "- data visualisation is not my core research area\n", "- I am not a political analyst or social scientist, my background is in computer science \n", "\n", "---" ] }, { "cell_type": "code", "execution_count": 104, "metadata": { "ExecuteTime": { "end_time": "2017-06-19T15:28:25.702156Z", "start_time": "2017-06-19T15:28:25.250236Z" } }, "outputs": [ { "data": { "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAywAAAJZCAYAAABLFrFbAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XlcXNXdP/DPnY19TyABkkwk0Ubbuu8Sn4cYl0K0VSMu\nNVbjguJSRStudVofLS5oq6LRGmu1NaLR/KzgFoMa3GtdU6Mxy5gACTsMO7Pc3x/njhn22e8d5vN+\nvXhN5s6dO4eBMPdzzznfI8myDCIiIiIiIi3Sqd0AIiIiIiKiiTCwEBERERGRZjGwEBERERGRZjGw\nEBERERGRZjGwEBERERGRZjGwEBERERGRZjGwEBERERGRZjGwEBERERGRZjGwEBERERGRZjGwEBER\nERGRZjGwEBERERGRZjGwEBERERGRZjGwEBERERGRZjGwEBERERGRZjGwEBERERGRZjGwEBERERGR\nZjGwEBERERGRZjGwEBERERGRZjGwEBERERGRZjGwEBERERGRZjGwEBERERGRZjGwEBERERGRZjGw\nEBERERGRZjGwEBERERGRZjGwEBERERGRZjGwEBERERGRZjGwEBERERGRZjGwEBERERGRZjGwEBER\nERGRZjGwEBERERGRZjGwEBERERGRZhnUbgARERFFp4byegMAvfKlU74kj11kAC4ATvdtbkW+I9zt\nJCJ1SbIsq90GIiIimuYayut1AGIBGD2+pEmfND4ZgB3AsHI7lFuR7wpWO4lIexhYiIiIKCSUHpRY\n5csUopeRIcLLIIDB3Ip8Z4heh4hUwsBCREREQdVQXh8LIAFAjAovPwigL7cif0iF1yaiEGBgISIi\nooA1lNdLAOIBJELMSQmEGcBiAFkAmgFsBGD18RgOAD25FfkDAbaFiFTGwEJEREQBaSivjweQhMCD\nCiDCyjkAugD0KMdNBbAGvocWQMxzsbHHhShyMbAQERGRXxrK640QYcIYhMOZIXpVlkIM6/oaQLvy\nWDKAPgBPB3D8IQBdnONCFHm4DgsRERH5rKG8PgnADAQvrJwDMe/FBTGR/nAAGcrjPQAyA3yNGACZ\nSm8QEUUQ9rAQERGR1xrK6/UA0hGcoOK2AiKs2AAcjb0VxYYBfIjg9LB4GgLQyXLIRJGBPSxERETk\nlYby+hgAMxHcsAKIyfU9yr+3QEzeB8T8lWSIYWcbg/h6MQBmKGWXiUjjGFiIiIhoSg3l9QkQQ7RC\n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\nvTherNUx/rwO2ZUq6fSj54AAAPRxST++n42PX3qWo7PpgZjcA04fbt56mWwfygekIV1swsszTiu/\nI8580KB7366Nz2Ta/vPKLbJ9YAlkOQE6/TZD6qxHci557KXxj7ftItk+tBg6/S5Jkmyy0340APxw\nd1EjAEh644dzr193Zlf9P2faPn35Ftk+uBiyKw2S1CXpTV+lHH3WdSnHFLd79f0SERER+YmT7oPL\nGciTy05a/Po+M9PPdMlyanN3T+WOts5nW3v6bna5XOkzkxI+D1Yjp5KeEL/JJcvJbb19t+xo61zT\nbOu9w6DXbT1sXs5ZWSlJ4w33UXsIUDZEqV1PNgCzg/UCHquhJ0L04iQCWKlsn4x+vI2SwfS5a6jv\nrIaqCy5vq7l/n6lef6hx88OSwbTDNHvflfqE1L+6BnvPa11315/cj/d//1Fc98drX5TtAwWG5Mw/\nmWYtuEgymL51dDQ+1Lhq5XkTHG+nKXvfS02Z8++KW3jUTdAZNkFn+CZ23oHLYucduCxu4VE3AYDt\nkxcfkh1DhxrSZt8Rk3vA2caMObdJesNuR2/7eNXPeBGEiIiIgoonF8E11bAa3LP8F0dO9vgV/3v0\nJwB+Pdk+d595yrLxtt97VuFBnvf/cNrSuwDcNXq/O08/+QrP+79detw7ECt8e7bhk8naMIrdh31D\noQliGJjnSuvJGFuKNxD+9uKMO7wrfr/jyvs2v/u4s7f91r7/1t3a983bnZIxdqMxY85zs1fcv3H0\n/jpT3IY5V6+5Q7m7seHh82VnX+cNbTX3PzSj6LrtHW89djZczn1icvY/c9av7/lQ2e/tnZWnz3DY\nWm509LSvMSRluH48XkxC7Zyrn73T8zV23verHhkwZJ1952ee22XH8KH65Jl/yrnksXUem2t8+X6J\niIiI/MUeluBS+8RdLWp/3+sBpANIgThhTlHurw/ia/jbizPuCfyMouu255Q8eWJM7gGn6+JT/iLp\njZvk4YGTh3dvWdPw8PnXjN7fmDHnFc/7cXmHvwxAN7T7u4MAwDXQcyQk3W6PsAIA0CfNeAmynNH5\n1mP7jjjejLmjK3xN/A3oTV84e9ovb3jkwpWt6+76icse1voPREREFOUYWIKorLrGCcA15Y6AGcAK\nADcAuBbAb5V/r1AeiyRyWXWNqkPClIn1qwH0QvQU9QII9oR7dy+Op4B6cQxJGa5Z59398Zyr/nnP\n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\nHTcKAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\nhaVNEFMRj9nZB5/ac/bBp34cpiYNhWuxEOkAAwsREVF0GrXb9v5Trc9+3Pjfcy94+vpjnvnFA+8D\nwC0b/3waIBvmTMl+6cvmbwcFlrP+eeWPPt/99TUuj/twQDbEmeLeL8z70e0P//SOb/z77O7eYzjt\n8eXXdfQ5lvpkX2qc0fLJyfOOvyn43Ic/cOaK1t6Oa3fdUJvj37azo8F49pO/vqytt+M8j8872yBJ\nTovR8vlpB+Tf9sCS27ad9Y/S4z5o+OKZo3MOOee5X1a+AwDz7jn5GRmy6aCs/Su+3L3lFrfPM89k\nMO2clzn77o0XP74h8JzLn7vpwDr7h9f3uweOlSHHWYzmLw7PPvBO/9c+kfeQiKIff5CJiIii06jV\ngXmZc+rjjJZ3N7dsO8e/rcHRfG6SJXF9gil+0KKJpz/+q4Uf1H/+lEEy9C6Yvt+VC6bnXeGTfUnr\nv6l9/vZND2QH7LeirbfzqrT4lOcOm7ngorT4lDc2bKl7fCwNPuVvFz/U3NNalhKXvOmHM+ZfPH/q\nftclmOK21Hftzhrp8zw+75wvdn/z+1npMx/+4Yz5y00GY8vXe7Y/suKlcqt/nwufueHgjd+++R+v\nzzvlgKnW6w/JOuASo8HY8d6uz9Yue/q3hwxzaEN9Wd2IVSoiin6ssBAREUWnMd1UnJEy7ZnvOhtv\ne2/XZ7e+seP9tH7PQP5hMxecH7zf5pZtv48zWd7Zcu0rF/m3Pfvly29f89Kd7z7z5cuX/W7hr3+3\n+uN/p7X1dlyaGpf8j8+vevEOZbfaoyrP8jb3tN48Ujt++sTlJ/S6+xZnp2bd+t7lTz8W8KGXR/sa\nfLIv4+yDTjvr3sU37QCA+99e/cWf6h799PXt7y0B8AAAvLXzo1uNBmPDCxc8dO7BWQe4AWB3957X\nj6s677X3dn16DYCLhzm8BLEoJRFpFCssQSqKi+ZVFBddXlFcdIfyPE/tNhEREQ3n+vxfvShDjrvp\nlYpFT3+x4SyDZGhZfe6f3gzc59rqO+d6Za91RvK053d2NBj9j6NyDu6LN8Z96HT1/ggAXtj86g9k\nIHH/zDkvBn7+6QcUvDBaO3Z01J8EQK44/YYnx/s1mAzGHf6wAgBXHb+szSAZWvs9AzmAGJcz4HEd\nlx6f+mKKJcnnb/+AxyUlWRLr+twDx45weFZYiDSOFZYASjhZDqAdQD3EfPDLK4qLVq1Yu26rqo0j\n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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "import scipy\n", "from matplotlib import pyplot as plt\n", "\n", "fig, ax = plt.subplots(figsize=(1000/72, 750/72), dpi=72)\n", "\n", "topics = ['Sports', 'Machine Learning', 'Celebrity', 'Fashion', 'Current Affairs', 'Tennis', 'Medicine', 'Technology', 'Security']\n", "# centers = np.random.randint(low=0, high=20, size=(len(topics), 2))\n", "for topic_name, center in zip(topics, centers): \n", " topic = np.random.normal(loc=center, scale=1.0, size=(10, 2))\n", " dots = ax.scatter(topic[:, 0], topic[:, 1], alpha=0.4)\n", " bbox_props = dict(boxstyle=\"circle, pad=0.3\", fc=dots.get_facecolor().ravel(), ec=\"none\", alpha=0.1, lw=1)\n", " t = ax.text(*topic.mean(axis=0), topic_name, ha=\"center\", va=\"center\", rotation=0,\n", " size=16, bbox=bbox_props)\n", "plt.axis(\"off\");\n", "plt.show()\n", "# plt.savefig('../assets/unsupervised-models/ideal-topics.png')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This is what could be called a coherent interpretable model\n", "\n", "- all clusters are more or less self contained\n", "- related clusters _seem_ to be close together\n", "\n", "The problem here is that the \"model\" above is entirely made up, and the division is somewhat non sensical.\n", "\n", "*Topic Models* have a number of ways of being evaluated, including\n", "\n", "- perplexity (might not be such a great measure)\n", " - Chang et. al Reading Tea Leaves: How Humans Interpret Topic Models, NIPS 2009\n", " - Wallach et. al Evaluation Methods for Topic Models, ICML 2009 \n", " - Lau et. al Machine Reading Tea Leaves: Automatically Evaluating Topic Coherence and Topic Model Quality, ACL 2014\n", "- topic coherence\n", " - Röder et. al Exploring the Space of Topic Coherence Methods, Web Search and Data Mining 2015\n", "- human interpretability (word or topic intrusion)\n", " - Machine Reading Tea Leaves: Automatically Evaluating Topic Coherence and Topic Model Quality\n", "- ontological similarity to link overlap and term co-occurrence (WordNet)\n", "- inter-annotator agreement on labels for topics\n", "- an external task\n", " - information retrieval (Wei et. al LDA-Based Document Models for Ad-hoc Retrieval, 2006 SIGIR)\n", " - sentiment analysis (Titov et. al A Joint Model of Text and Aspect Ratings for Sentiment Summarization, ACL 2008)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Perplexity and Other Internal Evaluation Metrics \n", "\n", "Perplexity is a metric for the goodness of fit, it measures the log likelihood of held out data.\n", "\n", "$$ 2^{-\\sum_x \\tilde p(x)\\,log_2\\,p(x)}$$\n", "\n", "The aim is to capture how well the current estimated probability of words predicts the probability of words in a held out dataset. This measure is used internally by topic models the measure the progress of learning the topics. It is not suitable for human evaluation as a model with low perplexity does not necessarily correspond to a model that is interpretable or informative (Reading Tea Leaves: How Humans Interpret Topic Models).\n", "\n", "There is a review of internal evaluation measures in Wallach et. al _Evaluation methods for topic models. In ICML. 2009_ - these measures borrow from the language modelling research." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
Topic ID 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
model
1 get i'll light at he come got go was blues will oh dance over she
1 gonna never night down his me, they we're now are let do (i been her
1 yeah, see shine old him better up hey never as heart want back oh, she's
1 yeah you're sun out man if ain't - have day our baby ah long girl
1 wanna way tonight run he's do out let's were good are can't bring gone woman
NaN
2 oh want get out she down light am wanna blues if are hey, he was
2 baby do ya gloom her look our thro' up old you, they ah his now
2 gonna if ain't off she's down, will lord get new would where ha him out
2 oh, can't got black girl at as run la - could home ah, man one
2 yeah i'll na them got stop rain jesus let's hey me, people my, he's at
\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Topic Coherence Model\n", "\n", "Röder et. al Exploring the Space of Topic Coherence Measures, WSDM 2015" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The topic coherence model combines a number of papers into one framework that allows evaluating the *coherence* of topics inferred by a topic model. In the context of this work coherence is defined as the mutual support of sets of facts - facts are represented by the top N *words* from a topic.\n", "\n", "1. create tuples from the top N words in a topic\n", " - pairs of single words `{(game), (ball)}, {(team), (ball)}`\n", " - pairs of pairs of words `{(game, ball)}, {(team, ball)}`\n", " - ...\n", "\n", "2. measure the probability of those from a reference corpus\n", " - document probability\n", " - word probability\n", " - ...\n", " \n", "3. calculate a *confirmation measure* per tuple \n", " - UCI normalised sum over PMI values\n", " - UMASS\n", " - NPMI\n", " - ...\n", "\n", "4. aggregate over all the tuples *mean*" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$ C_{UCI} = \\frac{2}{N * (N-1)} \\sum_{i-1}^{N-1} \\sum_{j = i+1}^{N} PMI(w_i, w_j) $$\n", "\n", "where PMI is\n", "\n", "$$ PMI(w_i, w_j) = \\log \\frac{P(w_i, w_j) + \\epsilon}{P(w_i)P(w_j)}$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As pointed out in Reading Tea Leaves: How Humans Interpret Topic Models [emphasis mine].\n", "\n", "> We emphasize that not measuring the **internal representation** of topic models is at odds with their presentation and development. Most topic modeling papers display qualitative assessments of the inferred topics or simply **assert that topics are semantically meaningful** ...\n", "\n", "As we can see above, it is not immediately clear how the topics are semantically meaningful, even though the fit to the training data is good." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
Topic ID 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
model
1 get i'll light at he come got go was blues will oh dance over she
1 gonna never night down his me, they we're now are let do (i been her
1 yeah, see shine old him better up hey never as heart want back oh, she's
1 yeah you're sun out man if ain't - have day our baby ah long girl
1 wanna way tonight run he's do out let's were good are can't bring gone woman
NaN
2 oh want get out she down light am wanna blues if are hey, he was
2 baby do ya gloom her look our thro' up old you, they ah his now
2 gonna if ain't off she's down, will lord get new would where ha him out
2 oh, can't got black girl at as run la - could home ah, man one
2 yeah i'll na them got stop rain jesus let's hey me, people my, he's at
\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Eye Balling the Model\n", "\n", "- topic - word distributions\n", "- document topic distributions (spiky, not spiky)\n", "- ldavis / pyldavis\n", "- termite (http://vis.stanford.edu)\n", "\n", "### demo of pyLDAvis" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## pyLDAvis problems\n", "\n", "- visual / eye-balling\n", " - pyLDAvis (PCoA / mmds are topics 15 and 10 close to each other?) http://nbviewer.jupyter.org/github/bmabey/pyLDAvis/blob/master/notebooks/pyLDAvis_overview.ipynb\n", " - is this a good model? (20 topics, 2000 documents)\n", " - how much does topic 2 cover? what about topic 1?\n", " - left = t-SNE, right = MMDS" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Stanford VIS group" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "http://vis.stanford.edu/papers/topic-model-diagnostics" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Word Intrusion and Topic Intrusion\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Chang et. al Reading Tea Leaves: How Humans Interpret Topic Models\n", "\n", "### word intrusion\n", "\n", "Find the intruding word in sets of top words picked from a topic in a topic model plus an intruder that has low probability for the current topic but high probability for some other topic. The more the intruder words as judged by humans varies, the less coherent the model is.\n", "\n", "`{dog, cat, horse, apple, pig, cow}`\n", "\n", "### topic intrusion" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# WARNING - WE ARE VEERING INTO PHILOSOPHY\n", "\n", "## What is The Meaning of Meaning??\n", "\n", "Douven et. al Measuring Coherence\n", "https://www.researchgate.net/publication/220607660_Measuring_coherence" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Chang et. al Reading Tea Leaves: How Humans Interpret Topic Models\n", "\n", "*The more the intruder words as judged by humans varies, the less coherent the model is.*" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "I need word sets that have several equally plausible interpretations" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`{dog, cat, horse, apple, pig, cow}`" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`{dog, carrot, horse, apple, pig, corn}`" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`{cat, tuna, yarn, horse, stable, hay}`" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`{cat, airport, yarn, horse, security, hay}`" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "----" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Supervised models are trained on labelled data and optimised to maximise an external metric such as `log loss` or `accuracy`. Unsupersived models on the other hand at their simplest do frequency counting of terms in **context** possibly aiming to fit a predefined parameterized distribution to be consistent with the statistics of some unlabelled data set.\n", "\n", "More recently maximising the similarity of words that appear in similar contexts have been put into a neural network context. Evaluating the trained model often starts by \"eye-balling\" the results, i.e. checking that your own expections of similarity are fullfilled by the model.\n", "\n", "Documents that talk about football should be in the same category and \"cat\" is more similar with \"dog\" than with \"pen\". Tools such as `pyLDAvis` and `gensim` provide many different ways to get an overview of the learned model or a single metric that can be maximised: `topic coherence`, `perplexity`, `ontological similarity`, `term co-occurrence`, `word analogy`. Using these methods without a good understanding of what the metric represents can give misleading results. The unsupervised models are also often used as part of larger processing pipelines, it is not clear if these intrinsic evaluation measures are approriate in such cases, perhaps the models should instead be evaluated against an external metric like `accuracy` for the entire pipeline.\n", "\n", "In this talk I will give an intuition of what the evaluation metrics are trying to achieve, give some recommendations for when to use them, what kind of pitfalls one should be aware of when using LDA or word emdeddings and the inherent difficulty in measuring or even defining semantic similarity concisely." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Is \"cat\" more similar to \"tiger\" than to \"dog\"? Ideally this information should be captured in a single metric that can be maximised." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\n", "\n", "Models like word2vec and GloVe are common ways of creating dense vector representations of word meaning. These allow \n", "\n", "\n", "You will learn:\n", "\n", "\n", "\n", "\n", "Questions and Comments:\n", "\n", "- what will I learn by attending?\n", "- the single metric is interesting! can you incorporate that in the shorter abstract as well?\n", "- im not sure you need to tell ppl unsupervised learning is popular, at least not in the shorter abstract imo\n", "- i am maybe not target audience but I only half-understand the bullet points. are there less academic or scientific words that can describe the same thing? or perhaps a paraphrase or question next to them like - perplexity: how we do X with Y?\n", "----" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# It all depends on what *correct* and *better* means\n", "\n", "Ideally we would be able to say whether a model is intrinsically -- or objectively -- good or bad. Measuring the quality of a topic model, or some other distributional/distributed model, is difficult to do intrinsically, mainly because an objective view for the goodness of the model is elusive. The similarity of pairs of words, or the assignment of documents into topics is contextual; *cat* is close to *dog* if the context is *bicycle* but what if the context is *kitten*, *mouse* or *ball*.\n", "\n", "This may seem like a silly example but this is how a distributional composition was evaluated not that long ago. Evaluating topic models is easier than evaluating the similarity of certain word pairs as the topic model itself provides some context. Typically the evalution of model is done using a list of top words from topics.\n", "\n", "- topic models\n", " - topic coherence\n", " - human interpretability\n", " - what do topics mean for humans\n", " - a document that talks about regulation being considered for vaping equipment: does it belong in the lifestyle topic or politics?\n", " - a document that talks about the negotiation between Lufthansa pilots and the company: is the document about travel or politics?\n", "- distributional semantics and what does it mean for something to mean something\n", " - how do individual words get their meaning?\n", " - what about sentences?\n", " - what about documents?" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "ExecuteTime": { "end_time": "2017-03-22T13:40:26.020371", "start_time": "2017-03-22T13:40:25.869892" }, "collapsed": true }, "outputs": [], "source": [ "from mpl_toolkits.mplot3d import Axes3D\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "\n", "def randrange(n, vmin, vmax):\n", " '''\n", " Helper function to make an array of random numbers having shape (n, )\n", " with each number distributed Uniform(vmin, vmax).\n", " '''\n", " return (vmax - vmin)*np.random.rand(n) + vmin\n", "\n", "fig = plt.figure(figsize=(25, 8))\n", "ax = fig.add_subplot(121, projection='3d')\n", "ax2 = fig.add_subplot(132)\n", "ax3 = fig.add_subplot(133)\n", "\n", "n, b = 2, 8\n", "\n", "# For each set of style and range settings, plot n random points in the box\n", "# defined by x in [23, 32], y in [0, 100], z in [zlow, zhigh].\n", "for c, m, zlow, zhigh in [('r', 'o', -50, -25), ('b', '^', -b, -5)]:\n", " xs = randrange(n, 23, 32)\n", " ys = randrange(n, 0, 100)\n", " zs = randrange(n, zlow, zhigh)\n", " ax.scatter(xs, ys, zs, c=c, marker=m)\n", " ax2.scatter(xs, ys, c=c, marker=m)\n", " ax3.scatter(xs, np.zeros(ys.shape), c=c, marker=m)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "ExecuteTime": { "end_time": "2017-03-22T13:40:27.268767", "start_time": "2017-03-22T13:40:26.718064" } }, "outputs": [ { "data": { "image/png": "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\nPPzww5x//vn86Ec/4u6772b58uXs2bOH7/guj3pffvkl69at4/PPPycvLy9lm8NfffUV999/P7ff\nfjuLFi3ixhtvbLbmcGlpKRdddBGDBg0iJyeHhx56CIA9e/YwduxY+vXrx9ixY9m7d2+z/HxJkiRJ\nklKRIyYkcejQIS677DLGjRvHLbfccsTXN27cyNVXX82qVau+cfzTTz9l1KhRbN26FYDXX3+doqIi\nXnzxxUSE3eLEGCkvL6/fZfzWW29RVVXFkCFD6sdS9O/fnzZt2vzd71NRUcHmzZvp168fp512WoKi\n/+62bNnC9OnTueCCC7jrrruafUbz0eZtP/3005x66qnccccdFBUVsXfvXu6///5mjaW5OWJCktSc\nHDHRNBwxIUlqbo6YkHRMYoxcf/31DBw48BvN4Z07d9K1a1dqamq49957mT59+hFru3fvzumnn85H\nH31E//79efXVVxk0aFAiw29RQgj06NGDiRMnMnHiRKB2J/CaNWsoLi6mqKiIjz76iKysLPLz8xk5\nciQjRowgIyODEAK7du1iwYIFjB8/nry8PNq1a5fkK2pYTU0Nzz77LI8//jiPPPII5513XkJ+blZW\nVv1c44yMDAYOHEhZWRlLly5lxYoVQO0fXbzwwgvTvkEsSZIkSdKxskEstXLFxcU888wzDB48mGHD\nhgEwZ84cNm3axKOPPgpAQUEBU6ZMAWDHjh1MnTqVZcuWAfCrX/2KyZMnc/DgQc4880yeeuqp5FxI\nC9WhQwdGjx7N6NGjgdqG/rZt2ygpKeHll19mzpw5fPnll/Tq1Yv33nuP6667jpycnJSd4bt7925m\nzpxJly5deP3118nIyEhKHF+ft11RUVHfOO7evTsVFRVJiUmSJEmSpGRwxIQkpbGqqipuueUW1q1b\nxw9+8APWr1/PX/7yF/r06VM/liI3N5eOHTsSQkhanDFGXnnlFe68805+8YtfUFBQkLR49u/fz5gx\nY5g9ezYFBQV07tyZysrK+q936dIl7ecQO2JCktScHDHRNBwxIUlqbo6YkKQW7r333mPKlCnccMMN\nPPbYY/UN15qaGjZv3kxxcTFLlizhzjvvBCA3N5eRI0cyatQoevfunbBdxlVVVfz85z/nk08+4aWX\nXqJHjx4J+bkNOXToEBMnTmTy5MkUFBQA0K1bN8rLy8nKyqK8vJyuXbsmLT5JkiRJkhLNBrEkpalT\n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\nUiv1/wFlSYKzyufMXQAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "http://distill.pub/2016/misread-tsne/" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# other measures\n", "- topic coherence (Reading Tea Leaves: How Humans Interpret Topic Models)\n", " - word / topic intrusion\n", " - perplexity\n", " - Automatic Word Sense Discrimination Schütze 1998\n", " - Automatic Evaluation of Topic Coherence Newman et. al 2010\n", " - ontological similarity to link overlap and term co-occurrence\n", " - wordnet (path distance, Leacock-Chodorow, Wu-Palmer, Hirst-St Onge, Resnik Information Content, Lin's measure, Jiang-Conrath, LESK)\n", " - inter-annotator agreement, but of what exactly (useful == coherent, unuseful==incoherent)\n", " - inter-annotator agreement on labels for topics\n", "- the measures take into account only information that is present, not information that isn't present\n", " - do you want topics that are highly separated or largely overlapping" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "ExecuteTime": { "end_time": "2017-03-26T12:32:33.595905", "start_time": "2017-03-26T12:32:33.591330" } }, "outputs": [ { "data": { "text/plain": [ "array([ 0., 1., 2., 3., 4.])" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x" ] }, { "cell_type": "code", "execution_count": 46, "metadata": { "ExecuteTime": { "end_time": "2017-03-26T12:47:09.426157", "start_time": "2017-03-26T12:47:09.420765" } }, "outputs": [ { "data": { "text/plain": [ "array([ 12., 13., 14., 15., 16., 17., 18., 19., 20., 21., 22.,\n", " 23., 24., 25., 26., 27.])" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.arange(binom.ppf(0.01, n, p),\n", " binom.ppf(0.99, n, p))" ] }, { "cell_type": "code", "execution_count": 67, "metadata": { "ExecuteTime": { "end_time": "2017-03-26T12:54:32.635377", "start_time": "2017-03-26T12:54:32.506072" } }, "outputs": [ { "data": { "image/png": "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\nPbqWhpYGvcNxaiohXMJ2HqtESm12jdNqaYScL01LZfb+LmfsoBA8DW66TD/NKM/gSNURyxfB6Ymk\nWVBxBMqybXcNHcxLnMeZpjN8VfCV3qE4NZUQLmHbj1bgZXBjdJQTdzg99h00nflv7/9e8vZwZ4xO\ndYRVOavwMfgwI9aGiweap+W62LDR+P7jGRQwSBWXe0klhEvYjrwKUmJC8DI4cf0gaz14+kPs1VY7\n5aT4MA4Vn6a6zn7rI5xpOsPm/M3MiJ2Bn4ef7S4UOBAixrncsJH5yeU9p/aQV52ndzhOSyWES1Rl\nbRNZJWecu3+RsVVbDSzhevCw3ipvk+LCkBJ22bGOsDFvI/Ut9bYpJreXNFObaVTTvou9c5sdPxuD\nm4FVR9RdQk+phHCJ2mkaEnHq+kFhGtSestpwkVnyoGC8DG52GzaSUvJJzickhSYxPGy47S+YZF5a\n07XuEsJ8wrg26lrWHl1LY2uj3uE4JZUQLlHb8yrw8XBnVGSw3qH0XNZ6cPOweKlMS3kZ3EmJCbFb\nYTmzIpPsqmzmJc5D9OI5CouFD4Y+g11qaU2zeYPnUdNYw5YC1+nsak8qIVyith/V6gce7k76IyCl\ntnZy7FXgbf2i+MTYMLJKzthlneVPcj7RislxNiwmt5c0E/J/gDp923RY22UDLiPSP5KPsz/WOxSn\n5KS/DZTeKDvTyJFTZ517uOjUIag6ZpWH0Tpi/rvZaeNho/L6ctYdXcesuFkEeFq2BrRVJN0EshVy\nXKsHkJtwIzUplT2n9nCwXC3C2F0qIVyCdh4z1Q+cuaCctQEQMKTn3U07MyoyGB8Pd5svq7kiawUt\nxhYWDFtg0+tcYOAYCBjoksNGtybeir+HP0szl+oditNRCeEStP1oBf5eBkZGOPHzB4fXQdQECOhn\nk9N7Gty0OoINE0Jdcx0fZX/ElKgpxATF2Ow6HXJz04aNcrdCk2utS+zv6c9tg2/jy4IvKTxTqHc4\nTkUlhEvQ9rwKxseEYHDW+kFVAZRk9GrtA0tMig8jp/Qs5WdtM2Pl89zPqWms4WcjfmaT83cpaSa0\n1GvrLbuYnw79KW648eHhD/UOxalY9BtBCDFNCJEthMgVQizp4HUhhPin6fUMIcTYNq/lCyEOCCH2\nCSHS22wPFUJ8JYQ4YvrTidttOo/S0w3kldU693KZ5umSSbapH5iZ/45sMWzUamxl2aFljA4fTXLf\n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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from scipy.stats import binom\n", "import numpy as np\n", "\n", "fig, ax = plt.subplots(1, 1)\n", "for n, p in [(20, 0.5), (30, 0.5), (40, 0.5)]:\n", " x = np.arange(binom.ppf(0.01, n, p),\n", " binom.ppf(0.99, n, p), step=1)\n", " ax.plot(np.arange(0, 30), binom.pmf(np.arange(0, 30), n, p), label=f'(n={n}, p={p})')\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## distributional semantics\n", "\n", "- word2vec, glove, APTs and distributional composition\n", "- the meaninig of a word is *\"the company it keeps\"* - what's the meaning of two or more words put together\n", "- intrinsic evaluation is nearly impossible\n", "\n", "- river delta, river estuary (suisto, estuaari?) - why doesn't finnish have an equivalent for estuary\n", "- good, bad, pear, apple\n", "- blue, red, green?\n", "\n", "## analogy task\n", "\n", "`king - man + woman == queen`\n", "\n", "`cider - alchohol == applejuice`\n", "\n", "`apple + drink = cider`\n", "\n", "`cider - apple + (hops + barley) == beer`\n", "\n", "- is `good` closer to `apple` than it is to `bad`?\n", "- is `good` closer to `maybe` than it is to `and`?\n", "\n", "\n", "## forget trying to define what the meaning of meaning is and use the damn thing\n", "\n", "- none of the deep learning models are attempting to understand *language*, they are all treying to solve a task by possibly understanding language\n", "- evaluating on a task is also not always easy because humans tend to be messy creatures (multi-label classification, while *sports* is clear *celebriry gossip* is less clear)\n", "\n", "## what does this mean for NLP?" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "ExecuteTime": { "end_time": "2017-03-20T16:15:39.907421", "start_time": "2017-03-20T16:15:39.354223" }, "collapsed": true }, "outputs": [], "source": [ "from spacy import en" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "ExecuteTime": { "end_time": "2017-03-20T16:16:11.224480", "start_time": "2017-03-20T16:16:03.272997" }, "collapsed": true }, "outputs": [], "source": [ "spc = en.English()" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "ExecuteTime": { "end_time": "2017-03-20T16:18:00.804238", "start_time": "2017-03-20T16:18:00.800271" } }, "outputs": [ { "data": { "text/plain": [ "1297536" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(spc.vocab)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "ExecuteTime": { "end_time": "2017-03-20T16:17:47.947228", "start_time": "2017-03-20T16:17:47.930899" } }, "outputs": [ { "data": { "text/plain": [ "array([ 0.03778473, -0.03715277, -0.07361357, -0.01294211, 0.02956894,\n", " 0.00120951, 0.00651724, -0.04558603, -0.04687905, -0.04818122,\n", " -0.05862857, 0.0269573 , -0.03065341, -0.02568185, 0.0108215 ,\n", " 0.03609811, -0.00549456, -0.00496092, 0.01636782, -0.11323725,\n", " 0.00400667, 0.03294041, -0.03766143, -0.11303058, -0.01312381,\n", " 0.00074617, -0.02796576, 0.03918718, -0.06753656, 0.04056126,\n", " -0.02435833, 0.03351083, 0.05406209, -0.05045499, -0.03866494,\n", " -0.11557291, -0.0241404 , -0.02356568, -0.00907446, -0.03900382,\n", " 0.03083578, -0.0040055 , 0.03728203, 0.01200607, -0.06109978,\n", " 0.01538801, 0.01623785, -0.00788699, 0.01040638, -0.09391987,\n", " 0.03025245, 0.06502789, -0.0257586 , -0.02438577, -0.08735697,\n", " 0.00546392, -0.04054803, -0.01161486, 0.04618217, 0.08720689,\n", " -0.01748072, 0.07930992, -0.02152181, -0.0473533 , 0.06699783,\n", " -0.05474082, -0.01087604, -0.01853025, -0.07290894, 0.10466487,\n", " -0.05987743, -0.0461891 , 0.04221539, -0.00659332, -0.06081026,\n", " -0.00947931, -0.02315397, 0.00336254, -0.01106939, -0.03976184,\n", " 0.02458255, 0.01908594, -0.00534361, 0.05926706, -0.01174925,\n", " -0.04580118, 0.02993831, 0.03481253, -0.08198168, 0.06468022,\n", " 0.03533567, 0.02087123, -0.02391223, 0.01522605, -0.05712903,\n", " 0.01759095, 0.04063302, 0.04339333, -0.01607532, 0.07680882,\n", " -0.01245796, -0.03034243, -0.07419388, -0.06572168, -0.07219325,\n", " 0.06293282, 0.04205929, -0.0036073 , -0.00917283, 0.05123605,\n", " 0.05294095, 0.04576715, 0.03751262, -0.01752511, -0.01464052,\n", " 0.055594 , -0.04663217, -0.15819344, -0.07700203, -0.05248307,\n", " -0.05859297, 0.04869274, -0.030218 , 0.02480839, 0.04311489,\n", " -0.03834178, -0.00127464, 0.01092765, -0.00921719, 0.0550067 ,\n", " 0.0086538 , 0.02380663, 0.05412368, -0.04334639, 0.03546507,\n", " -0.0240002 , 0.00161588, 0.00717151, -0.06340153, 0.03611495,\n", " 0.00684508, 0.03980317, 0.00355432, -0.04512753, -0.04908818,\n", " -0.01253648, -0.0289698 , -0.01168478, -0.08543831, 0.03253756,\n", " 0.02718301, -0.08928521, -0.02979837, -0.01723359, -0.03895465,\n", " 0.03317515, 0.00332391, 0.00104449, 0.00221558, 0.07882038,\n", " 0.01369842, 0.01719748, 0.02513313, 0.04267995, 0.01815877,\n", " 0.06622416, 0.05711883, -0.00110836, 0.05295034, -0.04159397,\n", " -0.05750373, -0.07719684, 0.06881331, 0.06464667, 0.0088968 ,\n", " 0.05262515, -0.05066305, -0.05115263, 0.11510406, -0.02314681,\n", " -0.03311234, 0.04257908, 0.12171125, 0.0367321 , 0.01495446,\n", " -0.03988375, 0.0986093 , -0.03378087, -0.04653993, 0.0841633 ,\n", " 0.00041698, 0.02687573, 0.01568856, 0.02757556, 0.05654669,\n", " 0.02147451, -0.04082048, 0.08263498, -0.04396538, 0.00794014,\n", " -0.05222085, -0.12295387, 0.08206398, -0.04020041, 0.0451312 ,\n", " 0.04493903, -0.04647713, -0.04017274, -0.01821278, -0.01989489,\n", " -0.0391674 , 0.02027123, 0.07091188, 0.05683799, 0.09986372,\n", " -0.03073186, -0.0272452 , 0.0239141 , 0.0560332 , 0.03768767,\n", " -0.01591393, 0.08834616, -0.00477553, -0.07502193, -0.00355799,\n", " 0.01109183, -0.00536651, -0.00906663, 0.06660841, 0.01939166,\n", " -0.08296614, 0.04513927, 0.00738879, -0.04783604, 0.01958616,\n", " 0.03531285, -0.02142701, 0.03918985, -0.02637605, -0.00247036,\n", " -0.01580125, -0.0285096 , -0.00751369, 0.0006706 , -0.03076843,\n", " -0.00575502, -0.07914151, 0.03216527, 0.00512136, -0.02817366,\n", " -0.03781955, 0.09049586, 0.01508809, 0.0002537 , -0.05053477,\n", " 0.05154572, 0.12314805, -0.01373708, -0.01833541, -0.03917671,\n", " -0.00880381, -0.05332572, -0.09396337, -0.05920757, 0.03675275,\n", " -0.02788009, 0.00083914, 0.00773343, -0.04634326, -0.11024204,\n", " -0.08266747, -0.01772676, -0.0824718 , 0.05847647, 0.02679466,\n", " 0.07236496, -0.04660835, -0.04092844, 0.05264228, -0.01337559,\n", " 0.02150504, 0.011709 , 0.03754292, -0.04147887, 0.10324782,\n", " 0.03408377, -0.02170971, -0.00261355, 0.04005083, -0.05963475,\n", " 0.02341744, 0.0116286 , -0.04728064, 0.00368066, 0.00422844,\n", " 0.01396303, 0.01315625, 0.05517897, -0.00925512, 0.00554182], dtype=float32)" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lex_good = spc.vocab['good']\n", "lex_bad = spc.vocab['bad']\n", "lex_good.vector - lex_bad.vector" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- https://www.youtube.com/watch?v=uLgn3geod9Q (How a dictionary writer defines English)\n", "\n", "- https://youtu.be/uLgn3geod9Q?t=2m3s\"\n", "\n", "\"*when we revise a dictionary, you go through it A-Z and you take all of the instances for the word that you're looking at. You're mathing up the word and its **contextual use** ... *\"\n", "\n", "*antidisestablishmentarianism*\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Demonstration of the Topic Coherence model in `gensim`.\n", "- https://nbviewer.jupyter.org/github/dsquareindia/gensim/blob/280375fe14adea67ce6384ba7eabf362b05e6029/docs/notebooks/topic_coherence_tutorial.ipynb\n", "\n", "Topic Coherence\n", "- http://qpleple.com/topic-coherence-to-evaluate-topic-models/" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.1" } }, "nbformat": 4, "nbformat_minor": 2 }