From 8d5d7c486f9805dd2c50e9044b7e680ac01c62d2 Mon Sep 17 00:00:00 2001 From: Sida Wang Date: Fri, 7 Apr 2017 07:00:47 -0700 Subject: [PATCH] more data analysis --- interactive/README.md | 9 +- interactive/analyze_data.ipynb | 420 ++++ interactive/analyze_definitions.ipynb | 130 - interactive/analyzer.py | 115 - interactive/generate_plots.ipynb | 2174 ----------------- .../interactive/SimulationAnalyzer.java | 4 - 6 files changed, 425 insertions(+), 2427 deletions(-) create mode 100644 interactive/analyze_data.ipynb delete mode 100644 interactive/analyze_definitions.ipynb delete mode 100644 interactive/analyzer.py delete mode 100644 interactive/generate_plots.ipynb diff --git a/interactive/README.md b/interactive/README.md index 1edd4eb..7851a5f 100644 --- a/interactive/README.md +++ b/interactive/README.md @@ -39,16 +39,17 @@ After `npm install` and taking care of dependencies, run `npm start local` to st ./interactive/run @mode=voxelurn -server -interactive - 2. Feed the server all the query logs ./interactive/run @mode=simulator @server=local @sandbox=none @task=freebig -maxQueries 103876 -decrease maxQuery for shorter plots + This currently takes just under 30 minutes. Decrease maxQuery for a quicker experiment. This generate `plotInfo.json` in `../state/execs/${lastExec}.exec/` where `lastExec` is `cat ../state/lastExec`. -3. Analyze the results and produce some numbers and graphs +3. Taking `../state/execs/${lastExec}.exec/plotInfo.json` as input, we can analyze the data and produce some plots using the following ipython notebook - ./interactive/run @mode=voxelurn + ipython notebook analyze_data.ipynb + + which prints out basic statistics and generates the plots used in our paper. The plots are saved at `../state/execs/${lastExec}.exec/` ## Client server (optional) diff --git a/interactive/analyze_data.ipynb b/interactive/analyze_data.ipynb new file mode 100644 index 0000000..8ca85a2 --- /dev/null +++ b/interactive/analyze_data.ipynb @@ -0,0 +1,420 @@ +{ + "cells": [ + { + "cell_type": "raw", + "metadata": {}, + "source": [ + "A line looks like this\n", + " \"time\": \"2017-01-21T05:31:57.474\",\n", + " \"id\": \"AMT_A1HKYY6XI2OHO1\",\n", + " \"log\": \"(:q \\\"repeat 10 [ Ebony Wall; select front]\\\")\",\n", + " \"stats.type\": \"q\",\n", + " \"stats.size\": 1,\n", + " \"stats.status\": \"Induced\",\n", + " \"queryCount\": 2707" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import csv\n", + "import numpy as np\n", + "import pandas as pd \n", + "import matplotlib\n", + "import matplotlib.pyplot as plt\n", + "import json\n", + "import os\n", + "import subprocess\n", + "from collections import OrderedDict\n", + "%matplotlib inline \n", + "\n", + "with open('../state/lastExec', 'rb') as lastExec:\n", + " lastExecInd = lastExec.readline().strip()\n", + "print lastExecInd\n", + " \n", + "rows = []; \n", + "execInd = lastExecInd;\n", + "execPath = '../state/execs/%s.exec/' % execInd\n", + "#print 'analyzing: ' + execPath\n", + "def printOptions():\n", + " with open(os.path.join(execPath,'options.map')) as optionsfile:\n", + " opts = filter(lambda l: 'file' in l or 'logFiles' in l or 'reqParams' in l, optionsfile.readlines());\n", + " for opt in opts: print opt.strip()\n", + " # egrep 'file|Simulator'\n", + "printOptions()\n", + "\n", + "with open('../state/execs/%s.exec/plotInfo.json' % execInd, 'rb') as jsonfile:\n", + " json_lines = jsonfile.readlines()\n", + "\n", + "rawrows = [json.loads(l) for l in json_lines]\n", + "rows = [r for r in rawrows if r.has_key('stats.type')]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "scrolled": false + }, + "outputs": [], + "source": [ + "print '%d queries in plotInfo' % len(json_lines)\n", + "\n", + "def print_stats():\n", + " filtered_rows = [r for r in rows if r['stats.type'] == 'accept']\n", + " induced_rows = [r for r in rows if r['stats.type'] == 'accept' and r['stats.status']=='Induced']\n", + " core_rows = [r for r in rows if r['stats.type'] == 'accept' and r['stats.status']=='Core']\n", + " none_rows = [r for r in rows if r['stats.type'] == 'accept' and r['stats.status']=='Nothing']\n", + "\n", + " stats = {\\\n", + " 'accepted': len(filtered_rows), \\\n", + " 'induced': len(induced_rows), \\\n", + " 'inducedp':len(induced_rows)/float(len(filtered_rows)),\\\n", + " 'core': len(core_rows), \\\n", + " 'corep':len(core_rows)/float(len(filtered_rows)),\\\n", + " 'none': len(none_rows), \\\n", + " 'nonep':len(none_rows)/float(len(filtered_rows))\\\n", + " }\n", + " print '\\nCount of accepted query / percentage'\n", + " print ' total:{accepted}\\n induced:{induced}({inducedp:.4f})\\n core:{core}({corep:.4f})\\n none:{none}({nonep:.4f}),'.format(**stats)\n", + " #print 'check %f' % (stats['inducedp']+stats['corep']+stats['nonep'])\n", + " \n", + " statscorrect = {\n", + " 'accepted0': np.mean([1 if r['stats.rank']==0 and r['stats.status']!='Nothing' else 0 for r in filtered_rows]),\\\n", + " 'accepted1': np.mean([1 if r['stats.rank']>=0 and r['stats.status']!='Nothing' else 0 for r in filtered_rows]),\\\n", + " 'induced0': np.mean([1 if r['stats.rank']==0 and r['stats.status']=='Induced' else 0 for r in filtered_rows]),\\\n", + " 'induced1': np.mean([1 if r['stats.rank']>=0 and r['stats.status']=='Induced' else 0 for r in filtered_rows]),\\\n", + " 'core0': np.mean([1 if r['stats.rank']==0 and r['stats.status']=='Core' else 0 for r in filtered_rows]),\\\n", + " 'core1': np.mean([1 if r['stats.rank']>=0 and r['stats.status']=='Core' else 0 for r in filtered_rows])\\\n", + " }\n", + " print '\\nranked 1 accepted / found accepted'\n", + " print ' total:{accepted0:.4f}/{accepted1:.4f}\\n induced:{induced0:.4f}/{induced1:.4f}\\n core:{core0:.4f}/{core1:.4f}'.format(**statscorrect)\n", + "\n", + " token_types = set();\n", + " rows_types = [r for r in rows if r['stats.type'] == 'q'];\n", + " for r in rows_types:\n", + " token_types |= set(r['q'].split(' '))\n", + " \n", + " print '\\nThere are %d token types of %d query types' % (len(token_types), len(rows_types))\n", + "print_stats()\n", + "\n", + "def percent_core():\n", + " allq = [r for r in rows if r['stats.type'] == 'accept'];\n", + " is_status = [100 if r['stats.status'] == 'Induced' else 0 for r in allq]\n", + " print 'percent_induced %f' % np.mean(is_status)\n", + " print 'percent_induced_last10k %f' % np.mean(is_status[len(is_status)-10000:])\n", + "percent_core()\n", + "\n", + "# print filtered_rows[0]\n", + "\n", + "def print_defstats():\n", + " filtered_rows = [r for r in rows if r['stats.type'] == 'def' and r['stats.num_rules'] >= 1]\n", + " total_failed = np.sum([r['stats.num_failed'] for r in filtered_rows])\n", + " total_body = np.sum([r['stats.num_body'] for r in filtered_rows])\n", + "\n", + " stats = {\\\n", + " 'total_def_queries': len(filtered_rows), \\\n", + " 'total_rules': np.sum([r['stats.num_rules'] for r in filtered_rows]), \\\n", + " 'total_failed': total_failed, \\\n", + " 'total_body': total_body\n", + " }\n", + " print ''\n", + " print stats\n", + " print 'failpercent: %.4f' % (float(total_failed)/float(total_body))\n", + "print_defstats()\n", + "\n", + "def percent_error():\n", + " allerror = [r for r in rawrows if r.has_key('stats.error')];\n", + " alluerror = [r for r in rawrows if r.has_key('stats.uncaught_error')];\n", + " print 'errors %d (%d uncaught)' % (len(allerror), len(alluerror))\n", + "percent_error()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "\n", + "def plot_reset():\n", + " global p\n", + " p = {'color': 'r', 'linewidth': 2, 'alpha':0.5}\n", + " #, 'marker':'*', 'markersize':0.3}\n", + "plot_reset()\n", + "def savefig(filename = 'fig.pdf'):\n", + " plt.savefig(os.path.join(execPath,filename) , bbox_inches=\"tight\")\n", + "\n", + "def plot_cumavg(x, y, xlabel='query#', ylabel='recall', title=None):\n", + " y_cum = np.cumsum(y).tolist()\n", + " #print accepts_np[:,1]\n", + " y_cumavg = [cum / float(count+1) for count,cum in enumerate(y_cum)]\n", + " #N = 500;\n", + " #y_cumavg = np.convolve(np.array(y), np.ones((N,))/N, mode='same').tolist()\n", + " #print accept_rate \n", + " #plt.scatter(means_baseline[0:], means[0:], s=colors, alpha=0.8, c='r')\n", + " plt.plot(x, y_cumavg, **p)\n", + " \n", + " plt.xlabel(xlabel, fontsize=12)\n", + " plt.ylabel(ylabel, fontsize=12)\n", + " # plt.xlim(0, 0.65)\n", + " plt.ylim(0, max(y_cumavg)*1.02)\n", + " plt.xlim(0, len(rows)*1.02)\n", + " xp = np.linspace(0, 0.65, 300)\n", + " \n", + " #plt.gca().set_aspect('equal', adjustable='box')\n", + " plottitle = title if title is not None else '%s_vs_%s.pdf' % (xlabel, ylabel)\n", + " # plt.savefig(os.path.join(execPath,plottitle) , bbox_inches=\"tight\")\n", + " \n", + "def print_avg(x, name = 'unnamed'):\n", + " print 'avg(%s): %f' % (name, reduce(lambda a,b: a+b, x) / float(len(x)));\n", + "def average_stat(stat = 'stats.size', type = 'accept'):\n", + " filtered_rows = [r for r in rows if r['stats.type'] == type]\n", + " query_counts = [r['queryCount'] for r in filtered_rows]\n", + " stats = [r[stat] for r in filtered_rows]\n", + " plot_cumavg(query_counts, stats, xlabel='query#', ylabel=stat.replace('stats.','').replace('size','# parses'));\n", + " print_avg(stats, stat)\n", + "plt.figure()\n", + "p['color'] = 'b'\n", + "average_stat(stat = 'stats.size')\n", + "#savefig('ambiguity.pdf')\n", + "\n", + "\n", + "def precent_status(filtered_rows, status = 'Core'):\n", + " query_counts = [r['queryCount'] for r in filtered_rows]\n", + " is_status = [100 if r['stats.status'] == status else 0 for r in filtered_rows]\n", + " print_avg(is_status, 'percent of status ' + status)\n", + " plot_cumavg(query_counts, is_status, xlabel='query #', ylabel='percent');\n", + "\n", + "\n", + "def plotCoreInducedNone(filtered_rows):\n", + " p['color'] = 'g'; p['label'] = 'induced';\n", + " precent_status(filtered_rows,status = 'Induced');\n", + " p['color'] = 'b'; p['label'] = 'core';\n", + " precent_status(filtered_rows, status = 'Core');\n", + " plt.legend(frameon=False)\n", + " \n", + "plt.figure()\n", + "plotCoreInducedNone([r for r in rows if r['stats.type'] == 'accept'])\n", + "# savefig('parse_status_accepted.pdf')\n", + "\n", + "def plotCoreInducedNone(filtered_rows):\n", + " p['color'] = 'r'; p['label'] = 'none';\n", + " precent_status(filtered_rows, status = 'Nothing');\n", + " p['color'] = 'g'; p['label'] = 'induced';\n", + " precent_status(filtered_rows,status = 'Induced');\n", + " p['color'] = 'b'; p['label'] = 'core';\n", + " precent_status(filtered_rows, status = 'Core');\n", + " plt.legend(frameon=False)\n", + "plt.figure()\n", + "plotCoreInducedNone([r for r in rows if r['stats.type'] == 'q' and r.has_key('stats.status')])\n", + "plt.ylim(0, 70)\n", + "savefig('parse_status_q.pdf')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def top_users(counts, line):\n", + " id = 'sessionId'\n", + " if line[id] in counts:\n", + " counts[line[id]] = counts[line[id]] + 1\n", + " else:\n", + " counts[line[id]] = 1\n", + " return counts\n", + "\n", + "accept_all = [r for r in rows if r['stats.type']=='accept']\n", + "accept_nothing = [r for r in rows if r['stats.type']=='accept' and r['stats.status']=='Nothing']\n", + "\n", + "for r in accept_nothing[:5]:\n", + " print '{q}'.format(**r)\n", + " \n", + "sorted(reduce(top_users, rows, {}).items(), key=lambda x: -x[1]);" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def precent_status_user(filtered_rows):\n", + " query_counts = [r['queryCount'] for r in filtered_rows]\n", + " is_status = [100 if r['stats.status'] == 'Induced' else 0 for r in filtered_rows]\n", + " plot_cumavg(query_counts, is_status, xlabel='query #', ylabel='precent induced');\n", + "\n", + "rows_to_count = [r for r in rows if r['stats.type'] == 'accept']\n", + "ranked_users = sorted(reduce(top_users, rows_to_count[5000:], {}).items(), key=lambda x: -x[1])\n", + "\n", + "plt.figure()\n", + "topnum = 5;\n", + "plot_reset()\n", + "p['alpha'] = 1;\n", + "p['linewidth'] = 5;\n", + "p['label'] = 'all'; \n", + "p['color'] = 'k';\n", + "precent_status_user([r for r in rows if r['stats.type'] == 'accept']); \n", + "\n", + "colors = ['c', 'r', 'm', 'y', 'b', 'g']\n", + "plot_reset()\n", + "p['alpha'] = 1;\n", + "p['linewidth'] = 5;\n", + "p['alpha'] = 0.5;\n", + "p['marker'] = 'o';\n", + "p['markersize'] = 1;\n", + "\n", + "for g in enumerate(ranked_users[0:5]):\n", + " # (0, (u'AMT_A1HKYY6XI2OHO1', 2830))\n", + " p['label'] = '#%d' % (g[0]+1);\n", + " #plotsetting['alpha'] = 1-float(g[0])/topnum;\n", + " p['color'] = colors[g[0]];\n", + " # print plotsetting['color']\n", + " precent_status_user([r for r in rows if r['stats.type'] == 'accept' and r['sessionId'] == g[1][0]])\n", + " print g\n", + "\n", + "plt.ylim(-0.1, 100)\n", + "plt.legend(frameon=False, loc='lower right')\n", + "savefig('parse_status_topuser.pdf');" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "scrolled": true + }, + "outputs": [], + "source": [ + "def expressivity(status = 'Core'):\n", + " filtered_rows = [r for r in rows if r['stats.type'] == 'accept' and r['stats.status'] == status]\n", + " query_counts = [r['queryCount'] for r in filtered_rows]\n", + " len_formula = [r['stats.len_formula'] for r in filtered_rows]\n", + " len_utterance = [r['stats.len_utterance'] for r in filtered_rows]\n", + " form_per_q = [float(ls[0])/ls[1] for ls in zip(len_formula, len_utterance)]\n", + " plot_cumavg(query_counts, form_per_q, xlabel='query#', ylabel='\"expressiveness\"');\n", + "\n", + " #plot_cumavg(query_counts, len_utterance, xlabel='query#', ylabel='length');\n", + " print_avg(form_per_q, 'formula length')\n", + "plt.figure()\n", + "plot_reset()\n", + "p['color'] = 'b'; p['label'] = 'core'; expressivity('Core')\n", + "p['color'] = 'g'; p['label'] = 'induced'; expressivity('Induced')\n", + "plt.legend(frameon=False, loc='upper left')\n", + "# savefig('expressiveness.pdf')\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def expressivity_by_users(filtered_rows):\n", + " query_counts = [r['queryCount'] for r in filtered_rows]\n", + " len_formula = [r['stats.len_formula'] for r in filtered_rows]\n", + " len_utterance = [r['stats.len_utterance'] for r in filtered_rows]\n", + " form_per_q = [float(ls[0])/ls[1] for ls in zip(len_formula, len_utterance)]\n", + " plot_cumavg(query_counts, form_per_q, xlabel='query#', ylabel='len(z) / len(x)');\n", + "\n", + "plot_reset()\n", + "plt.figure()\n", + "p['alpha'] = 1;\n", + "p['linewidth'] = 5;\n", + "p['label'] = 'all'; \n", + "p['color'] = 'k';\n", + "expressivity_by_users([r for r in rows if r['stats.type'] == 'accept' ])\n", + " \n", + "colors = ['c', 'r', 'm', 'y', 'b']\n", + "plot_reset()\n", + "p['alpha'] = 1;\n", + "p['linewidth'] = 5;\n", + "p['alpha'] = 0.5;\n", + "p['marker'] = 'o';\n", + "p['markersize'] = 1;\n", + "rows_to_count = [r for r in rows if r['stats.type'] == 'accept']\n", + "ranked_users = sorted(reduce(top_users, rows_to_count, {}).items(), key=lambda x: -x[1])\n", + "for g in enumerate(ranked_users[0:5]):\n", + " print g\n", + " p['label'] = '#%d' % (g[0]+1);\n", + " p['color'] = colors[g[0]];\n", + " expressivity_by_users([r for r in rows if r['stats.type'] == 'accept' \\\n", + " and r['sessionId'] == g[1][0]])\n", + "\n", + "plt.ylim([0,30])\n", + "plt.legend(frameon=False, loc='lower right')\n", + "savefig('expressiveness_by_user.pdf')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def query_reformulation_by_user():\n", + " q_all = [r for r in rows if r['stats.type']=='q']\n", + " q_nothing = [r for r in rows if r['stats.type']=='q' and r.has_key('stats.status') and r['stats.status']=='Nothing']\n", + " print 'q_nothing: %d / %d totallines: %d' % (len(q_nothing), len(q_all), len(json_lines))\n", + " ranked_users = sorted(reduce(top_users, q_all, {}).items(), key=lambda x: -x[1])\n", + "\n", + " num_user = 3;\n", + " num_query = 100;\n", + " for g in (ranked_users[0:num_user]):\n", + " print g\n", + " print '********************'\n", + " rows_userg = [r for r in rows if r['stats.type']=='q' and r['sessionId']==g[0]]\n", + " print_count = 0\n", + " prev_nothing = False\n", + " for r in rows_userg[-num_query:]:\n", + " if prev_nothing or r['stats.status']=='Nothing':\n", + " print_count = print_count + 1\n", + " if print_count>100: break\n", + " print r['stats.status'] + ':\\t' + r['q'].replace('(:q \"','').replace('\")','')\n", + " prev_nothing = True if r['stats.status']=='Nothing' else False\n", + "\n", + "query_reformulation_by_user()" + ] + } + ], + "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.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/interactive/analyze_definitions.ipynb b/interactive/analyze_definitions.ipynb deleted file mode 100644 index 36692f4..0000000 --- a/interactive/analyze_definitions.ipynb +++ /dev/null @@ -1,130 +0,0 @@ -{ - "cells": [ - { - "cell_type": "raw", - "metadata": {}, - "source": [ - "A line looks like this\n", - " \"time\": \"2017-01-21T05:31:57.474\",\n", - " \"id\": \"AMT_A1HKYY6XI2OHO1\",\n", - " \"log\": \"(:q \\\"repeat 10 [ Ebony Wall; select front]\\\")\",\n", - " \"stats.type\": \"q\",\n", - " \"stats.size\": 1,\n", - " \"stats.status\": \"Induced\",\n", - " \"queryCount\": 2707" - ] - }, - { - "cell_type": "code", - "execution_count": 85, - "metadata": { - "collapsed": false, - "scrolled": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "995\n", - "log.file\tstate/execs/995.exec/log\n", - "Simulator.reqParams\tgrammar=1&cite=1&learn=1&logging=0\n", - "Simulator.logFiles\t./interactive/queries/freebuildbig-0206.def.json.gz\n", - "2000 lines in plotInfo\n", - "[]\n", - "errors:66, stats.uncaught_error:0\n", - "{'total_rules': 2320, 'total_failed': 447, 'total_def_queries': 1911, 'total_body': 10973}\n", - "failpercent: 0.0407\n" - ] - } - ], - "source": [ - "import csv\n", - "import numpy as np\n", - "import pandas as pd \n", - "import matplotlib\n", - "import matplotlib.pyplot as plt\n", - "import json\n", - "import os\n", - "import subprocess\n", - "from collections import OrderedDict\n", - "%matplotlib inline\n", - "\n", - "with open('../state/lastExec', 'rb') as lastExec:\n", - " lastExecInd = lastExec.readline().strip()\n", - "print lastExecInd\n", - "\n", - "rows = []; \n", - "execInd = lastExecInd;\n", - "execPath = '../state/execs/%s.exec/' % execInd\n", - "#print 'analyzing: ' + execPath\n", - "def printOptions():\n", - " with open(os.path.join(execPath,'options.map')) as optionsfile:\n", - " opts = filter(lambda l: 'file' in l or 'logFiles' in l or 'reqParams' in l, optionsfile.readlines());\n", - " for opt in opts: print opt.strip()\n", - " # egrep 'file|Simulator'\n", - "printOptions()\n", - "\n", - "with open('../state/execs/%s.exec/plotInfo.json' % execInd, 'rb') as jsonfile:\n", - " json_lines = jsonfile.readlines()\n", - "print '%d lines in plotInfo' % len(json_lines)\n", - "rows = [json.loads(l) for l in json_lines]\n", - "\n", - "typed_rows = [r for r in rows if r.has_key('stats.type')]\n", - "error_rows = [r for r in rows if not r.has_key('stats.type')]\n", - "print [r['stats.uncaught_error'] for r in error_rows]\n", - "normal_error = [r for r in typed_rows if r.has_key('stats.error')]\n", - "print 'errors:%d, stats.uncaught_error:%d' % (len(normal_error),len(error_rows))\n", - "\n", - "filtered_rows = [r for r in typed_rows if r['stats.type'] == 'def' and r['stats.num_rules'] >= 1]\n", - "\n", - "# print filtered_rows[0]\n", - "\n", - "def print_stats():\n", - " total_failed = np.sum([r['stats.num_failed'] for r in filtered_rows])\n", - " total_body = np.sum([r['stats.num_body'] for r in filtered_rows])\n", - "\n", - " stats = {\\\n", - " 'total_def_queries': len(filtered_rows), \\\n", - " 'total_rules': np.sum([r['stats.num_rules'] for r in filtered_rows]), \\\n", - " 'total_failed': total_failed, \\\n", - " 'total_body': total_body\n", - " }\n", - " print stats\n", - " print 'failpercent: %.4f' % (float(total_failed)/float(total_body))\n", - "\n", - "print_stats()" - ] - }, - { - "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.9" - } - }, - "nbformat": 4, - "nbformat_minor": 0 -} diff --git a/interactive/analyzer.py b/interactive/analyzer.py deleted file mode 100644 index 07e6b8d..0000000 --- a/interactive/analyzer.py +++ /dev/null @@ -1,115 +0,0 @@ -import csv -import numpy as np -import pandas as pd -import matplotlib -import matplotlib.pyplot as plt -import json -%matplotlib inline - -plotsetting_default = {'color': 'r', 'linewidth': 2} -plotsetting = {'color': 'r', 'linewidth': 2} - -def plot_cumavg(x, y, xlabel='query#', ylabel='recall', title=None): - y_cum = np.cumsum(y).tolist() - #print accepts_np[:,1] - y_cumavg = [cum / float(count+1) for count,cum in enumerate(y_cum)] - #N = 500; - #y_cumavg = np.convolve(np.array(y), np.ones((N,))/N, mode='same').tolist() - - #print accept_rate - - #plt.scatter(means_baseline[0:], means[0:], s=colors, alpha=0.8, c='r') - plt.plot(x, y_cumavg, alpha=0.5, **plotsetting) - - plt.xlabel(xlabel, fontsize=12) - plt.ylabel(ylabel, fontsize=12) - # plt.xlim(0, 0.65) - plt.ylim(0, max(y_cumavg)*1.02) - - xp = np.linspace(0, 0.65, 300) - - #plt.gca().set_aspect('equal', adjustable='box') - plottitle = title if title is not None else '%s_vs_%s.pdf' % (xlabel, ylabel) - plt.savefig(plottitle , bbox_inches="tight") - -def print_avg(x, name = 'unnamed'): - print 'Average of %s is %f' % (name, reduce(lambda a,b: a+b, x) / float(len(x))); - -with open('../state/lastExec', 'rb') as lastExec: - lastExecInd = lastExec.readline().strip() -print lastExecInd - -rows = []; -execInd = lastExecInd; -with open('../state/execs/%s.exec/plotInfo.json' % execInd, 'rb') as jsonfile: - json_lines = jsonfile.readlines() - -rows = [json.loads(l) for l in json_lines] -# accepts = [[r['queryCount'], 1 if r['stats.rank']>=0 else 0] for r in rows if r['stats.type'] == 'accept']; - -def percent_induced_in_accepted(status = 'Core'): - filtered_rows = [r for r in rows if r['stats.type'] == 'accept'] - query_counts = [r['queryCount'] for r in filtered_rows] - is_induced = [1 if r['stats.status'] == status else 0 for r in filtered_rows] - print_avg(is_induced, 'percent_induced_accepted') - plotsetting['label'] = status.lower(); - plot_cumavg(query_counts, is_induced, xlabel='query #', ylabel='induced-accepted'); -# plt.figure() -# plotsetting['color'] = 'r'; percent_induced_in_accepted(status = 'Nothing'); -# plotsetting['color'] = 'b'; percent_induced_in_accepted(status = 'Induced'); -# plotsetting['color'] = 'k'; percent_induced_in_accepted(status = 'Core'); -# plt.legend(frameon=False) -# plt.savefig('accepted_stats.pdf' , bbox_inches="tight") - - -def precent_status(status = 'Core'): - filtered_rows = [r for r in rows if r['stats.type'] == 'q'] - query_counts = [r['queryCount'] for r in filtered_rows] - is_status = [1 if r['stats.status'] == status else 0 for r in filtered_rows] - print_avg(is_status, 'percent of status ' + status) - plotsetting['label'] = status.lower(); - plot_cumavg(query_counts, is_status, xlabel='query #', ylabel='%'); -plt.figure() -plotsetting['color'] = 'r'; precent_status(status = 'Nothing'); -plotsetting['color'] = 'b'; precent_status(status = 'Induced'); -plotsetting['color'] = 'k'; precent_status(status = 'Core'); -plt.legend(frameon=False) -plt.savefig('parse_status.pdf' , bbox_inches="tight") - -def simple_acc(): - filtered_rows = [r for r in rows if r['stats.type'] == 'accept' or r['stats.type'] == 'q'] - query_counts = [r['queryCount'] for r in filtered_rows] - accepts = [1 if r['stats.type'] != 'q' and r['stats.rank']==0 else 0 for r in filtered_rows] - plot_cumavg(query_counts, accepts, xlabel='query#', ylabel='accuracy'); - print_avg(accepts, 'accuracy') -plt.figure() -simple_acc() - -def simple_recall(): - filtered_rows = [r for r in rows if r['stats.type'] == 'accept'] - query_counts = [r['queryCount'] for r in filtered_rows] - recall = [1 if r['stats.rank']>=0 else 0 for r in filtered_rows] - plot_cumavg(query_counts, recall, xlabel='query#', ylabel='recall'); - print_avg(recall, 'recall') -plotsetting['color'] = 'r' -simple_recall() - -def average_stat(stat = 'stats.size', type = 'q'): - filtered_rows = [r for r in rows if r['stats.type'] == type] - query_counts = [r['queryCount'] for r in filtered_rows] - stats = [r[stat] for r in filtered_rows] - plot_cumavg(query_counts, stats, xlabel='query#', ylabel=stat); - print_avg(stats, stat) -plt.figure() -plotsetting['color'] = 'b' -average_stat(stat = 'stats.size') - - -def average_stat(stat = 'stats.rank'): - filtered_rows = [r for r in rows if r['stats.type'] == 'accept' and r['stats.rank'] >= 0] - query_counts = [r['queryCount'] for r in filtered_rows] - stats = [r[stat] for r in filtered_rows] - plot_cumavg(query_counts, stats, xlabel='query#', ylabel=stat); - print_avg(stats, stat) -plt.figure() -average_stat(stat = 'stats.rank') diff --git a/interactive/generate_plots.ipynb b/interactive/generate_plots.ipynb deleted file mode 100644 index f12b56e..0000000 --- a/interactive/generate_plots.ipynb +++ /dev/null @@ -1,2174 +0,0 @@ -{ - "cells": [ - { - "cell_type": "raw", - "metadata": {}, - "source": [ - "A line looks like this\n", - " \"time\": \"2017-01-21T05:31:57.474\",\n", - " \"id\": \"AMT_A1HKYY6XI2OHO1\",\n", - " \"log\": \"(:q \\\"repeat 10 [ Ebony Wall; select front]\\\")\",\n", - " \"stats.type\": \"q\",\n", - " \"stats.size\": 1,\n", - " \"stats.status\": \"Induced\",\n", - " \"queryCount\": 2707" - ] - }, - { - "cell_type": "code", - "execution_count": 46, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1006\n", - "log.file\tstate/execs/1006.exec/log\n", - "Simulator.reqParams\tgrammar=1&cite=1&learn=1&logging=0\n", - "Simulator.logFiles\t./interactive/queries/freebuildbig-0206.json.gz\n", - "103873 lines in plotInfo\n" - ] - } - ], - "source": [ - "import csv\n", - "import numpy as np\n", - "import pandas as pd \n", - "import matplotlib\n", - "import matplotlib.pyplot as plt\n", - "import json\n", - "import os\n", - "import subprocess\n", - "from collections import OrderedDict\n", - "%matplotlib inline \n", - "\n", - "with open('../state/lastExec', 'rb') as lastExec:\n", - " lastExecInd = lastExec.readline().strip()\n", - "print lastExecInd\n", - " \n", - "rows = []; \n", - "execInd = lastExecInd;\n", - "execPath = '../state/execs/%s.exec/' % execInd\n", - "#print 'analyzing: ' + execPath\n", - "def printOptions():\n", - " with open(os.path.join(execPath,'options.map')) as optionsfile:\n", - " opts = filter(lambda l: 'file' in l or 'logFiles' in l or 'reqParams' in l, optionsfile.readlines());\n", - " for opt in opts: print opt.strip()\n", - " # egrep 'file|Simulator'\n", - "printOptions()\n", - "\n", - "with open('../state/execs/%s.exec/plotInfo.json' % execInd, 'rb') as jsonfile:\n", - " json_lines = jsonfile.readlines()\n", - "print '%d lines in plotInfo' % len(json_lines)\n", - "rawrows = [json.loads(l) for l in json_lines]\n", - "rows = [r for r in rawrows if r.has_key('stats.type')]" - ] - }, - { - "cell_type": "code", - "execution_count": 57, - "metadata": { - "collapsed": false, - "scrolled": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Count of accepted query / percentage\n", - " total:36588\n", - " induced:24642(0.6735)\n", - " core:9902(0.2706)\n", - " none:2044(0.0559),\n", - "\n", - "ranked 1 accepted / found accepted\n", - " total:0.8672/0.9230\n", - " induced:0.6029/0.6533\n", - " core:0.2643/0.2697\n", - "\n", - "There are 5388 token types of 64078 query types\n", - "percent_induced 67.349951\n", - "percent_induced_last10k 80.560000\n" - ] - } - ], - "source": [ - "def print_stats():\n", - " filtered_rows = [r for r in rows if r['stats.type'] == 'accept']\n", - " induced_rows = [r for r in rows if r['stats.type'] == 'accept' and r['stats.status']=='Induced']\n", - " core_rows = [r for r in rows if r['stats.type'] == 'accept' and r['stats.status']=='Core']\n", - " none_rows = [r for r in rows if r['stats.type'] == 'accept' and r['stats.status']=='Nothing']\n", - "\n", - " stats = {\\\n", - " 'accepted': len(filtered_rows), \\\n", - " 'induced': len(induced_rows), \\\n", - " 'inducedp':len(induced_rows)/float(len(filtered_rows)),\\\n", - " 'core': len(core_rows), \\\n", - " 'corep':len(core_rows)/float(len(filtered_rows)),\\\n", - " 'none': len(none_rows), \\\n", - " 'nonep':len(none_rows)/float(len(filtered_rows))\\\n", - " }\n", - " print '\\nCount of accepted query / percentage'\n", - " print ' total:{accepted}\\n induced:{induced}({inducedp:.4f})\\n core:{core}({corep:.4f})\\n none:{none}({nonep:.4f}),'.format(**stats)\n", - " #print 'check %f' % (stats['inducedp']+stats['corep']+stats['nonep'])\n", - " \n", - " statscorrect = {\n", - " 'accepted0': np.mean([1 if r['stats.rank']==0 and r['stats.status']!='Nothing' else 0 for r in filtered_rows]),\\\n", - " 'accepted1': np.mean([1 if r['stats.rank']>=0 and r['stats.status']!='Nothing' else 0 for r in filtered_rows]),\\\n", - " 'induced0': np.mean([1 if r['stats.rank']==0 and r['stats.status']=='Induced' else 0 for r in filtered_rows]),\\\n", - " 'induced1': np.mean([1 if r['stats.rank']>=0 and r['stats.status']=='Induced' else 0 for r in filtered_rows]),\\\n", - " 'core0': np.mean([1 if r['stats.rank']==0 and r['stats.status']=='Core' else 0 for r in filtered_rows]),\\\n", - " 'core1': np.mean([1 if r['stats.rank']>=0 and r['stats.status']=='Core' else 0 for r in filtered_rows])\\\n", - " }\n", - " print '\\nranked 1 accepted / found accepted'\n", - " print ' total:{accepted0:.4f}/{accepted1:.4f}\\n induced:{induced0:.4f}/{induced1:.4f}\\n core:{core0:.4f}/{core1:.4f}'.format(**statscorrect)\n", - "\n", - " token_types = set();\n", - " rows_types = [r for r in rows if r['stats.type'] == 'q'];\n", - " for r in rows_types:\n", - " token_types |= set(r['q'].split(' '))\n", - " \n", - " print '\\nThere are %d token types of %d query types' % (len(token_types), len(rows_types))\n", - "print_stats()\n", - "\n", - "def percentCore():\n", - " allq = [r for r in rows if r['stats.type'] == 'accept'];\n", - " is_status = [100 if r['stats.status'] == 'Induced' else 0 for r in allq]\n", - " print 'percent_induced %f' % np.mean(is_status)\n", - " print 'percent_induced_last10k %f' % np.mean(is_status[len(is_status)-10000:])\n", - "percentCore()" - ] - }, - { - "cell_type": "code", - "execution_count": 48, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "avg(stats.size): 8.043512\n", - "avg(percent of status Induced): 67.349951\n", - "avg(percent of status Core): 27.063518\n", - "avg(percent of status Nothing): 16.184519\n", - "avg(percent of status Induced): 61.629398\n", - "avg(percent of status Core): 22.186083\n" - ] - }, - { - "data": { - "image/png": [ - "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\n", - "fwGur8a0k1UDhgAAAABJRU5ErkJggg==\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": [ - "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\n", - "RU5ErkJggg==\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": [ - "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\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "\n", - "def plot_reset():\n", - " global p\n", - " p = {'color': 'r', 'linewidth': 2, 'alpha':0.5}\n", - " #, 'marker':'*', 'markersize':0.3}\n", - "plot_reset()\n", - "def savefig(filename = 'fig.pdf'):\n", - " plt.savefig(os.path.join(execPath,filename) , bbox_inches=\"tight\")\n", - "\n", - "def plot_cumavg(x, y, xlabel='query#', ylabel='recall', title=None):\n", - " y_cum = np.cumsum(y).tolist()\n", - " #print accepts_np[:,1]\n", - " y_cumavg = [cum / float(count+1) for count,cum in enumerate(y_cum)]\n", - " #N = 500;\n", - " #y_cumavg = np.convolve(np.array(y), np.ones((N,))/N, mode='same').tolist()\n", - " #print accept_rate \n", - " #plt.scatter(means_baseline[0:], means[0:], s=colors, alpha=0.8, c='r')\n", - " plt.plot(x, y_cumavg, **p)\n", - " \n", - " plt.xlabel(xlabel, fontsize=12)\n", - " plt.ylabel(ylabel, fontsize=12)\n", - " # plt.xlim(0, 0.65)\n", - " plt.ylim(0, max(y_cumavg)*1.02)\n", - " plt.xlim(0, len(rows)*1.02)\n", - " xp = np.linspace(0, 0.65, 300)\n", - " \n", - " #plt.gca().set_aspect('equal', adjustable='box')\n", - " plottitle = title if title is not None else '%s_vs_%s.pdf' % (xlabel, ylabel)\n", - " # plt.savefig(os.path.join(execPath,plottitle) , bbox_inches=\"tight\")\n", - " \n", - "def print_avg(x, name = 'unnamed'):\n", - " print 'avg(%s): %f' % (name, reduce(lambda a,b: a+b, x) / float(len(x)));\n", - "def average_stat(stat = 'stats.size', type = 'accept'):\n", - " filtered_rows = [r for r in rows if r['stats.type'] == type]\n", - " query_counts = [r['queryCount'] for r in filtered_rows]\n", - " stats = [r[stat] for r in filtered_rows]\n", - " plot_cumavg(query_counts, stats, xlabel='query#', ylabel=stat.replace('stats.','').replace('size','# parses'));\n", - " print_avg(stats, stat)\n", - "plt.figure()\n", - "p['color'] = 'b'\n", - "average_stat(stat = 'stats.size')\n", - "#savefig('ambiguity.pdf')\n", - "\n", - "\n", - "def precent_status(filtered_rows, status = 'Core'):\n", - " query_counts = [r['queryCount'] for r in filtered_rows]\n", - " is_status = [100 if r['stats.status'] == status else 0 for r in filtered_rows]\n", - " print_avg(is_status, 'percent of status ' + status)\n", - " plot_cumavg(query_counts, is_status, xlabel='query #', ylabel='percent');\n", - "\n", - "\n", - "def plotCoreInducedNone(filtered_rows):\n", - " p['color'] = 'g'; p['label'] = 'induced';\n", - " precent_status(filtered_rows,status = 'Induced');\n", - " p['color'] = 'b'; p['label'] = 'core';\n", - " precent_status(filtered_rows, status = 'Core');\n", - " plt.legend(frameon=False)\n", - " \n", - "plt.figure()\n", - "plotCoreInducedNone([r for r in rows if r['stats.type'] == 'accept'])\n", - "# savefig('parse_status_accepted.pdf')\n", - "\n", - "def plotCoreInducedNone(filtered_rows):\n", - " p['color'] = 'r'; p['label'] = 'none';\n", - " precent_status(filtered_rows, status = 'Nothing');\n", - " p['color'] = 'g'; p['label'] = 'induced';\n", - " precent_status(filtered_rows,status = 'Induced');\n", - " p['color'] = 'b'; p['label'] = 'core';\n", - " precent_status(filtered_rows, status = 'Core');\n", - " plt.legend(frameon=False)\n", - "plt.figure()\n", - "plotCoreInducedNone([r for r in rows if r['stats.type'] == 'q' and r.has_key('stats.status')])\n", - "plt.ylim(0, 70)\n", - "savefig('parse_status_q.pdf')" - ] - }, - { - "cell_type": "code", - "execution_count": 50, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "(:accept \"add red top 4 times\" \"(:isolate (:loop (number 4) (: add red top)))\" \"(:isolate (:loop (number 4) (: add red top)))\")\n", - "(:accept \"select bot 7 times\" \"(:isolate (:loop (number 7) (: select (call adj bot))))\")\n", - "(:accept \"select front 5\" \"(:isolate (:loop (number 5) (: select (call adj front))))\")\n", - "(:accept \"select left 4\" \"(:isolate (:loop (number 4) (: select (call adj left))))\")\n", - "(:accept \"select right 8\" \"(:isolate (:s (: select (call adj right)) (: select (call adj right)) (: select (call adj right)) (: select (call adj right)) (: select (call adj right)) (: select (call adj right)) (: select (call adj right)) (: select (call adj right)) (: select (call adj right))))\")\n" - ] - }, - { - "data": { - "text/plain": [ - "[(u'MT_A3W6T1WDYXMR3', 12727),\n", - " (u'MT_A03922113RU44GENR8ATX', 9288),\n", - " (u'MT_A2C7TMRC2QHTIW', 8888),\n", - " (u'MT_A7HDYVFP9N2Z1', 7116),\n", - " (u'MT_A1HKYY6XI2OHO1', 6375),\n", - " (u'MT_A25AX0DNHKJCQT', 6317),\n", - " (u'MT_A37RSNUBBU9UHN', 6100),\n", - " (u'MT_A2VRDE2FHCBMF8', 5534),\n", - " (u'MT_A1CH3TODZNQCES', 3913),\n", - " (u'MT_AHL33DDQX8O6K', 3162),\n", - " (u'MT_A2OF8S6Z444XNC', 2664),\n", - " (u'MT_ALEE1QD4TW9G4', 2567),\n", - " (u'MT_AY5QUURIR136D', 2417),\n", - " (u'MT_AKU3Z7174B91F', 2253),\n", - " (u'MT_A3LRZX8477TYYZ', 1968),\n", - " (u'MT_AG3U3XPWYPOMG', 1951),\n", - " (u'MT_A18T67NDI2JK5Y', 1745),\n", - " (u'MT_A18MC27WTCEBA2', 1733),\n", - " (u'MT_A2KLJKDG90K1PP', 1655),\n", - " (u'MT_A3JFIY1QXMX9ZF', 1346),\n", - " (u'MT_A2IP3ZAFYGV8M9', 1234),\n", - " (u'MT_AIWEXPJAU66D9', 1142),\n", - " (u'MT_AC8IEBY696VJO', 1100),\n", - " (u'MT_ACPRM38S920R1', 903),\n", - " (u'MT_A26Y58YECZUZZG', 792),\n", - " (u'MT_A1X4BKW05XDA8Q', 791),\n", - " (u'MT_AXLMOFXKXSU0B', 692),\n", - " (u'MT_A21ZMR7O42OSMI', 690),\n", - " (u'MT_A2RJTBILNKNRJA', 636),\n", - " (u'MT_A1VW8Y7XCV3DRW', 572),\n", - " (u'MT_A3POLV08XTYAMD', 441),\n", - " (u'MT_A1TL6GOSY0W1YC', 436),\n", - " (u'MT_AV22FQTJNBUZT', 403),\n", - " (u'MT_A2OFN0A5CPLH57', 394),\n", - " (u'MT_A1C59M3HPCO503', 384),\n", - " (u'MT_A190R7H2ZY8KWY', 348),\n", - " (u'MT_A16QZSBYXE5VY8', 337),\n", - " (u'MT_A2YCMT5BPA0AG9', 306),\n", - " (u'MT_A1IFF4KV23FGHJ', 266),\n", - " (u'MT_A38VOZIC9QGEGU', 257),\n", - " (u'MT_ACDX50KGPE97I', 252),\n", - " (u'MT_sidaw', 250),\n", - " (u'MT_A37EV8RZ82WT8E', 214),\n", - " (u'mQmyUv1XiYxkFPJju1Bw', 201),\n", - " (u'MT_A138BU1VWM2RKN', 171),\n", - " (u'MT_A1A3TGZ7DKJWRW', 152),\n", - " (u'MT_A3L2UB07EZJAMD', 131),\n", - " (u'MT_A29P6YNXQBBFCM', 118),\n", - " (u'MT_A2LMN591U3692I', 110),\n", - " (u'zAbbc6GlIZyAf4rBcbyL', 90),\n", - " (u'JwbiEvQFz85TAd6uD3L', 78),\n", - " (u'MT_A3PRZRK9IC5CBI', 62),\n", - " (u'MT_AUI3R928P63B0', 57),\n", - " (u'7Q8uKNWTaqduj21tq1', 43),\n", - " (u'MT_A13XXMDHOULEZ7', 27),\n", - " (u'AMT_A16QZSBYXE5VY8', 26),\n", - " (u'MT_A32Q6TNSAG4U3I', 22),\n", - " (u'P7BBFpmncwX6svAWHlEQ', 14),\n", - " (u'MT_A2ITUVIESMI6QV', 5),\n", - " (u'', 3),\n", - " (u'leVKsq1yHwjDt7Q9IdNv', 2),\n", - " (u'meDyTvGXuAQTPPySWKP', 1)]" - ] - }, - "execution_count": 50, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "def top_users(counts, line):\n", - " id = 'sessionId'\n", - " if line[id] in counts:\n", - " counts[line[id]] = counts[line[id]] + 1\n", - " else:\n", - " counts[line[id]] = 1\n", - " return counts\n", - "\n", - "accept_all = [r for r in rows if r['stats.type']=='accept']\n", - "accept_nothing = [r for r in rows if r['stats.type']=='accept' and r['stats.status']=='Nothing']\n", - "\n", - "for r in accept_nothing[:5]:\n", - " print '{q}'.format(**r)\n", - " \n", - "sorted(reduce(top_users, rows, {}).items(), key=lambda x: -x[1]);" - ] - }, - { - "cell_type": "code", - "execution_count": 51, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "(0, (u'MT_A3W6T1WDYXMR3', 4484))\n", - "(1, (u'MT_A2C7TMRC2QHTIW', 4080))\n", - "(2, (u'MT_A03922113RU44GENR8ATX', 2484))\n", - "(3, (u'MT_A7HDYVFP9N2Z1', 2037))\n", - "(4, (u'MT_A2VRDE2FHCBMF8', 2013))\n" - ] - }, - { - "data": { - "image/png": [ - "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\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "def precent_status_user(filtered_rows):\n", - " query_counts = [r['queryCount'] for r in filtered_rows]\n", - " is_status = [100 if r['stats.status'] == 'Induced' else 0 for r in filtered_rows]\n", - " plot_cumavg(query_counts, is_status, xlabel='query #', ylabel='precent induced');\n", - "\n", - "rows_to_count = [r for r in rows if r['stats.type'] == 'accept']\n", - "ranked_users = sorted(reduce(top_users, rows_to_count[5000:], {}).items(), key=lambda x: -x[1])\n", - "\n", - "plt.figure()\n", - "topnum = 5;\n", - "plot_reset()\n", - "p['alpha'] = 1;\n", - "p['linewidth'] = 5;\n", - "p['label'] = 'all'; \n", - "p['color'] = 'k';\n", - "precent_status_user([r for r in rows if r['stats.type'] == 'accept']); \n", - "\n", - "colors = ['c', 'r', 'm', 'y', 'b', 'g']\n", - "plot_reset()\n", - "p['alpha'] = 1;\n", - "p['linewidth'] = 5;\n", - "p['alpha'] = 0.5;\n", - "p['marker'] = 'o';\n", - "p['markersize'] = 1;\n", - "\n", - "for g in enumerate(ranked_users[0:5]):\n", - " # (0, (u'AMT_A1HKYY6XI2OHO1', 2830))\n", - " p['label'] = '#%d' % (g[0]+1);\n", - " #plotsetting['alpha'] = 1-float(g[0])/topnum;\n", - " p['color'] = colors[g[0]];\n", - " # print plotsetting['color']\n", - " precent_status_user([r for r in rows if r['stats.type'] == 'accept' and r['sessionId'] == g[1][0]])\n", - " print g\n", - "\n", - "plt.ylim(-0.1, 100)\n", - "plt.legend(frameon=False, loc='lower right')\n", - "savefig('parse_status_topuser.pdf');" - ] - }, - { - "cell_type": "code", - "execution_count": 52, - "metadata": { - "collapsed": false, - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "avg(formula length): 2.085905\n", - "avg(formula length): 20.842854\n" - ] - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 52, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": [ - "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\n", - "REQku/4fW5fjphU2fpAAAAAASUVORK5CYII=\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "def expressivity(status = 'Core'):\n", - " filtered_rows = [r for r in rows if r['stats.type'] == 'accept' and r['stats.status'] == status]\n", - " query_counts = [r['queryCount'] for r in filtered_rows]\n", - " len_formula = [r['stats.len_formula'] for r in filtered_rows]\n", - " len_utterance = [r['stats.len_utterance'] for r in filtered_rows]\n", - " form_per_q = [float(ls[0])/ls[1] for ls in zip(len_formula, len_utterance)]\n", - " plot_cumavg(query_counts, form_per_q, xlabel='query#', ylabel='\"expressiveness\"');\n", - "\n", - " #plot_cumavg(query_counts, len_utterance, xlabel='query#', ylabel='length');\n", - " print_avg(form_per_q, 'formula length')\n", - "plt.figure()\n", - "plot_reset()\n", - "p['color'] = 'b'; p['label'] = 'core'; expressivity('Core')\n", - "p['color'] = 'g'; p['label'] = 'induced'; expressivity('Induced')\n", - "plt.legend(frameon=False, loc='upper left')\n", - "# savefig('expressiveness.pdf')\n" - ] - }, - { - "cell_type": "code", - "execution_count": 54, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "(0, (u'MT_A3W6T1WDYXMR3', 5609))\n", - "(1, (u'MT_A2C7TMRC2QHTIW', 4080))\n", - "(2, (u'MT_A03922113RU44GENR8ATX', 2484))\n", - "(3, (u'MT_A2VRDE2FHCBMF8', 2275))\n", - "(4, (u'MT_A25AX0DNHKJCQT', 2124))\n" - ] - }, - { - "data": { - "image/png": [ - "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\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "def expressivity_by_users(filtered_rows):\n", - " query_counts = [r['queryCount'] for r in filtered_rows]\n", - " len_formula = [r['stats.len_formula'] for r in filtered_rows]\n", - " len_utterance = [r['stats.len_utterance'] for r in filtered_rows]\n", - " form_per_q = [float(ls[0])/ls[1] for ls in zip(len_formula, len_utterance)]\n", - " plot_cumavg(query_counts, form_per_q, xlabel='query#', ylabel='len(z) / len(x)');\n", - "\n", - "plot_reset()\n", - "plt.figure()\n", - "p['alpha'] = 1;\n", - "p['linewidth'] = 5;\n", - "p['label'] = 'all'; \n", - "p['color'] = 'k';\n", - "expressivity_by_users([r for r in rows if r['stats.type'] == 'accept' ])\n", - " \n", - "colors = ['c', 'r', 'm', 'y', 'b']\n", - "plot_reset()\n", - "p['alpha'] = 1;\n", - "p['linewidth'] = 5;\n", - "p['alpha'] = 0.5;\n", - "p['marker'] = 'o';\n", - "p['markersize'] = 1;\n", - "rows_to_count = [r for r in rows if r['stats.type'] == 'accept']\n", - "ranked_users = sorted(reduce(top_users, rows_to_count, {}).items(), key=lambda x: -x[1])\n", - "for g in enumerate(ranked_users[0:5]):\n", - " print g\n", - " p['label'] = '#%d' % (g[0]+1);\n", - " p['color'] = colors[g[0]];\n", - " expressivity_by_users([r for r in rows if r['stats.type'] == 'accept' \\\n", - " and r['sessionId'] == g[1][0]])\n", - "\n", - "plt.ylim([0,50])\n", - "plt.legend(frameon=False, loc='lower right')\n", - "savefig('expressiveness_by_user.pdf')" - ] - }, - { - "cell_type": "code", - "execution_count": 56, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "ename": "KeyError", - "evalue": "'stats.status'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0mq_all\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mr\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mr\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrows\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mr\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'stats.type'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m==\u001b[0m\u001b[0;34m'q'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mq_nothing\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mr\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mr\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrows\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mr\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'stats.type'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m==\u001b[0m\u001b[0;34m'q'\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mr\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'stats.status'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m==\u001b[0m\u001b[0;34m'Nothing'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3\u001b[0m \u001b[0;32mprint\u001b[0m \u001b[0;34m'q_nothing: %d / %d totallines: %d'\u001b[0m \u001b[0;34m%\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mq_nothing\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mq_all\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mjson_lines\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mranked_users\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0msorted\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreduce\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtop_users\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mq_all\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m{\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mitems\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkey\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mlambda\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;34m-\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mKeyError\u001b[0m: 'stats.status'" - ] - } - ], - "source": [ - "q_all = [r for r in rows if r['stats.type']=='q']\n", - "q_nothing = [r for r in rows if r['stats.type']=='q' and r['stats.status']=='Nothing']\n", - "print 'q_nothing: %d / %d totallines: %d' % (len(q_nothing), len(q_all), len(json_lines))\n", - "ranked_users = sorted(reduce(top_users, q_all, {}).items(), key=lambda x: -x[1])\n", - "\n", - "for g in (ranked_users[1:5]):\n", - " print g\n", - " print '********************'\n", - " rows_userg = [r for r in rows if r['stats.type']=='q' and r['sessionId']==g[0]]\n", - " print_count = 0\n", - " prev_nothing = False\n", - " for r in rows_userg[-1500:]:\n", - " if prev_nothing or r['stats.status']=='Nothing':\n", - " print_count = print_count + 1\n", - " if print_count>100: break\n", - " print r['stats.status'] + ':\\t' + r['q'].replace('(:q \"','').replace('\")','') ;\n", - " prev_nothing = True if r['stats.status']=='Nothing' else False\n", - "\n" - ] - }, - { - "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.9" - } - }, - "nbformat": 4, - "nbformat_minor": 0 -} diff --git a/src/edu/stanford/nlp/sempre/interactive/SimulationAnalyzer.java b/src/edu/stanford/nlp/sempre/interactive/SimulationAnalyzer.java index 70c7752..2555303 100644 --- a/src/edu/stanford/nlp/sempre/interactive/SimulationAnalyzer.java +++ b/src/edu/stanford/nlp/sempre/interactive/SimulationAnalyzer.java @@ -85,9 +85,5 @@ public class SimulationAnalyzer { acceptEval.logStats("accept"); acceptEval.putOutput("accept"); - - // LogInfo.logs("Printing plotInfo to %s", - // Execution.getFile("plotInfo.json")); - } }