Skip to content

Instantly share code, notes, and snippets.

@rokroskar
Created April 27, 2016 11:36
Show Gist options
  • Save rokroskar/11c8f7b2624c257005c11c513006a921 to your computer and use it in GitHub Desktop.
Save rokroskar/11c8f7b2624c257005c11c513006a921 to your computer and use it in GitHub Desktop.
twitter groupBy and pivot example
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"from __future__ import print_function\n",
"%matplotlib inline\n",
"import matplotlib.pylab as plt\n",
"import sys, os, glob\n",
"import numpy as np\n",
"import subprocess\n",
"import datetime\n",
"import time\n",
"\n",
"from ipywidgets import interact, interactive, fixed\n",
"import ipywidgets as widgets\n",
"\n",
"from IPython.display import HTML\n",
"import xml.etree.ElementTree as ET\n",
"try:\n",
" tree = ET.parse(os.environ['HADOOP_CONF_DIR'] + '/yarn-site.xml')\n",
"except IOError:\n",
" raise IOError(\"Can't find the yarn configuration -- is HADOOP_CONF_DIR set?\")\n",
" \n",
"plt.rcParams['figure.figsize'] = (10,6)\n",
"plt.rcParams['font.size'] = 18\n",
"plt.style.use('fivethirtyeight')"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"root = tree.getroot()\n",
"yarn_web_app = root.findall(\"./property[name='yarn.resourcemanager.webapp.address']\")[0].find('value').text\n",
"yarn_web_app_string = \"If this works successfully, you can check the <a target='_blank' href='http://{yarn_web_app}'>YARN application scheduler</a> and you should see your app listed there. Clicking on the 'Application Master' link will bring up the familiar Spark Web UI. \""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Load spark configuration setup when executing notebook by https://github.com/rokroskar/spark_workshop"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# configuration directory\n",
"os.environ['SPARK_CONF_DIR'] = os.path.realpath('../../spark_workshop/notebooks/twitter_dataframes/spark_config')\n",
"\n",
"# number of cores\n",
"ncores = int(os.environ.get('LSB_DJOB_NUMPROC', 1)) \n",
"\n",
"# here we set the memory we want spark to use for the driver JVM\n",
"os.environ['SPARK_DRIVER_MEMORY'] = '%dG'%(ncores*0.7)\n",
"\n",
"# python executable\n",
"os.environ['PYSPARK_PYTHON'] = subprocess.check_output('which python', shell=True).rstrip()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"import findspark\n",
"findspark.init()\n",
"\n",
"import pyspark\n",
"from pyspark import SparkConf, SparkContext\n",
"from pyspark.sql import SQLContext, HiveContext\n",
"import pyspark.sql.functions as func\n",
"from pyspark.sql import Row, Window\n",
"from pyspark.sql.types import IntegerType, ArrayType, StringType, NullType, LongType, StructField, \\\n",
" StructType, DateType, DataType, DateConverter, DatetimeConverter, \\\n",
" TimestampType, BooleanType"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Start context"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"conf = SparkConf()\n",
"sc = SparkContext(master='yarn-client', conf=conf)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Load twitter data"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"hc = HiveContext(sc)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Read in the parquet files by Iza and Rok containing the twitter data"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 9 ms, sys: 3 ms, total: 12 ms\n",
"Wall time: 30.6 s\n"
]
}
],
"source": [
"%%time\n",
"data = hc.read.parquet('/user/roskarr/twitter/2014_12*')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Pyspark configuration"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[(u'spark.driver.memory', u'2G'),\n",
" (u'spark.yarn.executor.memoryOverhead', u'2048'),\n",
" (u'spark.master', u'yarn-client'),\n",
" (u'spark.sql.parquet.mergeSchema', u'true'),\n",
" (u'spark.yarn.am.memory', u'8g'),\n",
" (u'spark.executor.cores', u'4'),\n",
" (u'spark.executor.instances', u'20'),\n",
" (u'spark.app.name', u'twitter_dataframes'),\n",
" (u'spark.rdd.compress', u'True'),\n",
" (u'spark.serializer.objectStreamReset', u'100'),\n",
" (u'spark.yarn.am.cores', u'4'),\n",
" (u'spark.yarn.isPython', u'true'),\n",
" (u'spark.submit.deployMode', u'client'),\n",
" (u'spark.executor.memory', u'8g')]"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sc._conf.getAll()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Read in our list containing the keywords"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def get_keys(path='../docs/keywords.txt'):\n",
" keys = np.genfromtxt(path, dtype=\"|S20\", delimiter='#', autostrip=True)\n",
" return keys.toset()"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"keys = set(['isis', 'terrorism', 'arab', 'spring', 'attack', 'god', 'christian', 'allah', 'islam', 'syria', 'refugees', 'migrants', 'africa', 'italy', 'ethiopia', 'asylum', 'unhcr', 'immigration', 'foreigners', 'crowded', 'ebola', 'guinea', 'sierra', 'leone', 'liberia', 'virus', 'epidemic', 'vaccine', 'who', 'influenza', 'flu', 'birds', 'swine', 'pig', 'bitcoin', 'rosetta', 'comet', 'higgs', 'climate', 'doomsday', 'maya', 'curiosity', 'sandy', 'hurricane', 'black', 'white', 'mandela', 'nelson', 'left', 'right', 'mh17', 'mh370', 'ukraine', 'crimea', 'russia', 'snowden', 'nsa', 'obama', 'putin', 'pope', 'unemployment', 'boston', 'marathon', 'london', 'europe', 'usa', 'philippines', 'sochi', 'olympics', 'geneva', 'apple', 'linux', 'PC', 'google', 'iphone', 'galaxy', 'watch', 'facebook', 'twitter', 'whatsapp', 'vegan', 'gluten', 'vegetarian', 'meat', 'pasta', 'banana', 'family', 'divorce', 'marriage', 'wedding', 'holidays', 'homework', 'television', 'coffee', 'tea', 'school', 'work', 'teacher', 'sports', 'jogging'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Custom functions performing operations on the columns"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# Change the date format to YYYY-MM-DD HH:MM:SS\n",
"convert_date_string = func.udf(lambda date_string: datetime.date.strftime(datetime.datetime.strptime(date_string, \\\n",
" '%a %b %d %H:%M:%S +0000 %Y'),\\\n",
" '%Y-%m-%d %H:%M:%S'\n",
" ), StringType())\n",
"\n",
"# Convert the date string to a datetime object\n",
"datetime_udf = func.udf(lambda date_string: datetime.strptime(date_string, '%a %b %d %H:%M:%S +0000 %Y'), DateType())\n",
"\n",
"# Map the datetime object column to a unique number for every day in any year\n",
"new_date = (lambda col: func.dayofyear(col) + func.year(col)*1000)\n",
"\n",
"# Convert the tweet text string to lowercase and split\n",
"text_udf = func.udf(lambda row: row.lower().split(), returnType=ArrayType(StringType()))\n",
"\n",
"# Boolean containing whether a keyword appears in the text\n",
"keys_filter_udf = func.udf(lambda row: len([val for val in row if val in keys]) > 0, returnType=BooleanType())\n",
"\n",
"# Returns list of keys contained in text\n",
"keys_list_udf = func.udf(lambda row: [val for val in row if val in keys], returnType=ArrayType(StringType()))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Filter dataframe to contain only tweets with at least one appearance of one of the keywords"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Number of partitions (set really high to avoid exit codes 52s (out of memory))"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1600\n"
]
}
],
"source": [
"Npartitions = sc.defaultParallelism*20\n",
"print(Npartitions)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"new_keywords_df = (data.select('created_at', 'text')\n",
" .filter(func.length('text') > 0)\n",
" .withColumn('created_at', convert_date_string('created_at'))\n",
" .withColumn('created_at', new_date('created_at')) \n",
" .withColumn('text', func.lower(data.text))) # note the \"lower\" built-in function"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"from pyspark.ml.feature import Tokenizer\n",
"\n",
"# tokenizer will be much faster than the loop that creates a list\n",
"T = Tokenizer(inputCol=\"text\", outputCol=\"words\")\n",
"\n",
"words_df = T.transform(new_keywords_df).select('created_at', 'words')\n",
"\n",
"single_word_df = words_df.select('created_at', func.explode('words').alias('word')).cache()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### First method -- using `groupBy` and `count()`"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# you can groupBy on two columns at once -- in this case to get counts of words per day\n",
"daily_counts = single_word_df.groupBy('created_at', 'word').count()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We computed the counts for all the words in the dataset -- but if you are only interested in a subset, you can filter:"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"+----------+---------+-----+\n",
"|created_at| word|count|\n",
"+----------+---------+-----+\n",
"| 2014336| god| 8202|\n",
"| 2014337| flu| 217|\n",
"| 2014339| maya| 196|\n",
"| 2014340| sports| 961|\n",
"| 2014336| migrants| 40|\n",
"| 2014341| sierra| 25|\n",
"| 2014341| linux| 8|\n",
"| 2014340| mh370| 3|\n",
"| 2014336| family| 3765|\n",
"| 2014337|christian| 598|\n",
"| 2014339| boston| 428|\n",
"| 2014339| ebola| 591|\n",
"| 2014337|curiosity| 34|\n",
"| 2014338| marriage| 277|\n",
"| 2014335| whatsapp| 1005|\n",
"| 2014338| vaccine| 111|\n",
"| 2014336|terrorism| 72|\n",
"| 2014337| higgs| 13|\n",
"| 2014336| facebook| 6660|\n",
"| 2014337| twitter|12883|\n",
"+----------+---------+-----+\n",
"only showing top 20 rows\n",
"\n",
"CPU times: user 73 ms, sys: 20 ms, total: 93 ms\n",
"Wall time: 1min 3s\n"
]
}
],
"source": [
"%%time \n",
"daily_counts.rdd.filter(lambda r: r.word in keys).toDF().show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can now collect these counts locally for plotting etc."
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 89 ms, sys: 10 ms, total: 99 ms\n",
"Wall time: 18 s\n"
]
}
],
"source": [
"%%time\n",
"local_counts = daily_counts.rdd.filter(lambda r: r.word in keys).toDF().collect()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Another method -- using `pivot`"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"[`pivot`](http://spark.apache.org/docs/latest/api/python/pyspark.sql.html#pyspark.sql.GroupedData.pivot) allows to you to create new columns from the aggregation -- this is exactly what we want, counts of occurrences for each word every day. The advantage to the above approach is that you can turn this easily into a vector using the [`VectorAssembler`](http://spark.apache.org/docs/latest/api/python/pyspark.ml.html#pyspark.ml.feature.VectorAssembler) from Spark's `ML` module. "
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"+--------------------+-------+-------+-------+-------+-------+-------+-------+\n",
"| word|2014335|2014336|2014337|2014338|2014339|2014340|2014341|\n",
"+--------------------+-------+-------+-------+-------+-------+-------+-------+\n",
"| si| 20838| 30951| 30874| 30171| 28582| 29948| 4041|\n",
"| frances| 245| 384| 377| 355| 346| 356| 51|\n",
"| @jenstah_:| 3| 2| 1| 0| 0| 1| 0|\n",
"|http://t.co/ymlud...| 2| 2| 1| 0| 0| 0| 0|\n",
"| she| 10018| 17868| 17842| 18565| 17123| 16547| 2839|\n",
"| check| 6654| 10378| 10287| 9294| 9436| 9853| 1103|\n",
"| تركي| 205| 497| 274| 212| 179| 490| 13|\n",
"| بِكَ| 1161| 188| 2539| 995| 119| 1832| 7|\n",
"| cogan| 16| 22| 20| 40| 30| 42| 3|\n",
"| dildir.| 1| 1| 0| 2| 4| 5| 1|\n",
"|http://t.co/4fcml...| 1| 0| 0| 0| 0| 0| 0|\n",
"| @ashleighmn:| 2| 0| 0| 0| 0| 0| 0|\n",
"| 149004| 1| 0| 0| 0| 0| 0| 0|\n",
"| @tatooporn:| 31| 69| 69| 82| 57| 38| 11|\n",
"| …まさかの筆箱同じ種類笑| 1| 0| 0| 0| 0| 0| 0|\n",
"| 'ω'| 637| 782| 792| 813| 781| 917| 110|\n",
"| ;)| 4200| 5397| 5550| 5322| 5475| 5117| 647|\n",
"| penyebab| 42| 65| 65| 51| 31| 53| 5|\n",
"|http://t.co/lgmxb...| 8| 0| 0| 0| 0| 0| 0|\n",
"|http://t.co/gqzpy...| 9| 1| 0| 0| 0| 0| 0|\n",
"+--------------------+-------+-------+-------+-------+-------+-------+-------+\n",
"only showing top 20 rows\n",
"\n"
]
}
],
"source": [
"daily_count_df = single_word_df.groupBy('word').pivot('created_at').count()\n",
"\n",
"daily_count_df.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We need to somehow get the names of the columns automatically -- these are just the distinct days: "
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# note they have to be turned into a string\n",
"dates = single_word_df.select('created_at').distinct().rdd.map(lambda r: str(r.created_at)).collect()"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"from pyspark.ml.feature import VectorAssembler\n",
"va = VectorAssembler(inputCols=dates, outputCol='histogram')"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"+--------------------+-------+-------+-------+-------+-------+-------+-------+--------------------+\n",
"| word|2014335|2014336|2014337|2014338|2014339|2014340|2014341| histogram|\n",
"+--------------------+-------+-------+-------+-------+-------+-------+-------+--------------------+\n",
"| she| 10018| 17868| 17842| 18565| 17123| 16547| 2839|[10018.0,17868.0,...|\n",
"| منها| 1654| 932| 912| 1190| 1447| 1861| 71|[1654.0,932.0,912...|\n",
"| africa:| 24| 55| 77| 41| 26| 18| 1|[24.0,55.0,77.0,4...|\n",
"|(http://t.co/k8hq...| 1| 0| 0| 0| 0| 0| 0| (7,[0],[1.0])|\n",
"| check| 6654| 10378| 10287| 9294| 9436| 9853| 1103|[6654.0,10378.0,1...|\n",
"|http://t.co/osntt...| 1| 0| 0| 0| 0| 0| 0| (7,[0],[1.0])|\n",
"| ;)| 4200| 5397| 5550| 5322| 5475| 5117| 647|[4200.0,5397.0,55...|\n",
"| بِكَ| 1161| 188| 2539| 995| 119| 1832| 7|[1161.0,188.0,253...|\n",
"| #android,| 1197| 1570| 1493| 1572| 1406| 1420| 116|[1197.0,1570.0,14...|\n",
"| triple| 196| 274| 466| 535| 253| 322| 97|[196.0,274.0,466....|\n",
"| plusieurs| 72| 80| 64| 84| 60| 67| 6|[72.0,80.0,64.0,8...|\n",
"| @changchey| 1| 0| 0| 1| 0| 0| 0| (7,[0,3],[1.0,1.0])|\n",
"| 'ω'| 637| 782| 792| 813| 781| 917| 110|[637.0,782.0,792....|\n",
"| 여전히| 27| 44| 38| 42| 40| 40| 7|[27.0,44.0,38.0,4...|\n",
"| صدقة| 855| 988| 1023| 933| 1094| 884| 15|[855.0,988.0,1023...|\n",
"| bom..| 10| 9| 11| 4| 8| 13| 0|[10.0,9.0,11.0,4....|\n",
"| @essentialfact:| 109| 97| 206| 150| 146| 141| 18|[109.0,97.0,206.0...|\n",
"| واصل| 41| 48| 26| 23| 27| 40| 0|[41.0,48.0,26.0,2...|\n",
"| 20rb| 101| 65| 153| 110| 254| 328| 42|[101.0,65.0,153.0...|\n",
"| backwards.| 16| 19| 20| 29| 25| 13| 3|[16.0,19.0,20.0,2...|\n",
"+--------------------+-------+-------+-------+-------+-------+-------+-------+--------------------+\n",
"only showing top 20 rows\n",
"\n"
]
}
],
"source": [
"hist_df = va.transform(daily_count_df)\n",
"hist_df.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Again, filter away if that's your thing: "
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"local_hist = hist_df.select('word', 'histogram').rdd.filter(lambda r: r.word in keys).collect()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Note that these histograms are now just regular arrays that you can use for plotting or whatever else you need: "
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x2b667817b150>"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nNu1LWikiLCyMr7/+moyMDHx9fUvVp4eHB0ePWmrG77nnnhLHX79+/RucXcUhiaqj0DScPn4T485N\nNmG1fgT5T82Qxa+FsDNznfoUPjSWwkH/RL8nAePmdeh3b0NRTcXaKpdyMG78CuPGr1Br18PUviem\nNveW/wNFhQXoDyaiT0rAkLQD3blTpT7U7FXjcp1pNKYmLcG9WjkOVFRYt/hLV3nVkDoa/XVmmrW/\nkdjfrE+z2QzAqlWrSmzr6up625/tSCRRdRDGL5fi9MOXNjFzrbrkTZhdZXcKEcIh6Q2oUW1Qo9rA\nxSyM2zdi2Pwd+pTkkpuf/gP9Z+/gtOI91GYxFLXridq8Tdn88qlpKOdSr86aHky87t7vxQ7V6TCH\nNcXUzJKcmoNCpbRIiGucO3eOixcvUq3a1V/arsxiBgXd2kY7V3a7Ony4+KYYycnJeHh43PKDT1dm\nTAMDAwkPD7+lYysSSVQdgOGHL3H+colNzOztS97EeKjuVfJBQgj7q+ZF0b39Kbq3P7oTRzBsXofx\nl+9L3HNdMZsxJP6CIfEXNI/qFLXuhql97K0niAV56A8kWmpNkxLQnT9d6kPN3r7WBffVxndXyvUw\nhSgrZrOZ999/n2eeecb6etGiRbi5udG+fftb6qtmzZpERkby6aefMnHiROtt/OPHj/Pdd9/Ru3fv\nW97dqm/fvsyYMYM5c+awePHiYu9nZmbi4+NzS306IklU7cyw40ecP1pgE9Pcq5E/MR7Nt6adRiWE\nuFXmoFAKH32SwsGj0f++3VIa8PsvKJdvz11LybmA0/ercfp+NWrdEEzte1LU+t6SfzHVNJQzJywL\n7iftQH/491LvLKTpDagNm1oeDmsajblOfZk1FaKUAgICeOeddzh16hQRERF8++23bN26lWnTptnM\nspbWzJkz6d+/P/feey+PPfaYdXkqV1fX23o6v169ekybNo2XXnqJkydP0qtXLzw9PUlJSeG7776j\nf//+PPfcc7fcr6ORRNWO9Pt+xfndl1GuqWHRnJzJmzDb8gNFCFHxGIyod7dHvbs9SnYmhl/+ZykN\nuM7apPqTR9Evfxunz95BjWxNUfue6A0e6Hdtse4GpUs/V+qPN9cIQG0WjalZDGqjFlI6JEQp/XVG\n09PTkw8++ICJEyeyfPlyatSowYwZM3jqqaduq//27dvzxRdf8MorrxAXF4fBYKB169ZMnz6dBg0a\n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\n0NDQgJkzZ+plqqrigw8+wJ/+9CecPXsWDofDxB5SoLi4OEycOBEnTpwwuysEYMyYMShlfouFAAAC\nDElEQVQoKDCU5efn93pBfMTMUeUjVokG76GHHsKrr76KHTt2YMKECWZ3h3qhqio0TTO7GwRgyZIl\n+OCDD/Dee+/hvffew4EDBzBt2jQsXboUBw4cYEi1IKfTiaqqKg5mWcTMmTNRVVVlKDt+/Dhyc3N7\n3C9iRlQBPmLVytra2vDVV18B8A7vf/vtt6isrERaWhqfLGYRDzzwALZu3YotW7YgKSkJNTU1AICE\nhATEx8eb3Dv65S9/iUWLFmHs2LFobW3FK6+8goMHD2Lbtm1md40AJCcnIzk52VAWGxuL5ORk3qvT\nIh599FGUlZUhJycH9fX1WLduHTo6OngHGou45557sHDhQjz11FO4+eabUVlZieeeew6PPfZYj/tF\n1O2pAOCFF17A7373O/0Rq7/5zW8wa9Yss7s16h04cAA33HADAO8FBp3ztm677Tb88Y9/NLNr5JOa\nmmo4N50efvhhfUI7meeee+7BgQMHUFtbi6SkJBQVFeHnP/950J1OyDqWLFnC21NZyB133IH3338f\nDQ0NyMjIwIwZM/DII4/g8ssvN7tr5LNnzx786le/wvHjx3HxxRfjrrvuwt13393jPhEXVImIiIho\ndIiYOapERERENLowqBIRERGRJTGoEhEREZElMagSERERkSUxqBIRERGRJTGoEhEREZElMagSERER\nkSUxqBIRERGRJf3/qzGH6CrJyz4AAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x2b666f989190>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"for h in local_hist[0:5]: \n",
" word, vec = h\n",
" plt.plot(vec, label=word)\n",
"plt.legend()"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"sc.stop()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.11"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment