diff --git a/experiments/log_analysis/analyse_porto_session_logs.ipynb b/experiments/log_analysis/analyse_porto_session_logs.ipynb index 8220c86..af5005b 100644 --- a/experiments/log_analysis/analyse_porto_session_logs.ipynb +++ b/experiments/log_analysis/analyse_porto_session_logs.ipynb @@ -996,15 +996,27 @@ }, "outputs": [], "source": [ - "# average edit distance by component type\n", - "# i.e. did users edit more with the autocomplete or the posteditor\n", + "# which post editing actions did users use most?\n", + "# time per segment given a dict of segments \n", + "def get_editing_actions_per_segment(segments):\n", + " # segments are indexed by id\n", + " # 'change-segment' and 'segment-complete'\n", + " # remove outliers\n", + " \n", + " ordered_segments = sorted([(int(k), v) for k,v in segments.items()], key=lambda x: x[0])\n", + " segment_actions = []\n", + " for seg_id, events in ordered_segments:\n", + " action_names = [e['action'] for e in events]\n", + " all_actions = Counter(action_names)\n", + " segment_actions.append((seg_id, all_actions))\n", "\n", - "# which post editing actions did users use most?" + " return segment_actions\n", + " " ] }, { "cell_type": "code", - "execution_count": 15, + "execution_count": null, "metadata": { "collapsed": true }, @@ -1041,7 +1053,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": null, "metadata": { "collapsed": true }, @@ -1072,7 +1084,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": null, "metadata": { "collapsed": false }, @@ -1097,279 +1109,18 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "defaultdict(list,\n", - " {0: [0.052631578947368474,\n", - " 0.036363636363636376,\n", - " 0.22123893805309736,\n", - " 0.22123893805309736,\n", - " 0.19266055045871555,\n", - " 0.22123893805309736,\n", - " 0.0,\n", - " 0.19266055045871555,\n", - " 0.19999999999999996,\n", - " 0.19266055045871555,\n", - " 0.19999999999999996,\n", - " 0.0,\n", - " 0.1132075471698113,\n", - " 0.0,\n", - " 0.19266055045871555,\n", - " 0.19266055045871555,\n", - " 0.21818181818181814],\n", - " 1: [0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.1842105263157895,\n", - " 0.1428571428571429,\n", - " 0.1842105263157895,\n", - " 0.0,\n", - " 0.1842105263157895,\n", - " 0.012345679012345734,\n", - " 0.0,\n", - " 0.0,\n", - " 0.08433734939759041,\n", - " 0.30000000000000004,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.03614457831325302],\n", - " 2: [0.1123595505617978,\n", - " 0.41287878787878785,\n", - " 0.6672967863894139,\n", - " 0.7655954631379962,\n", - " 0.6511627906976745,\n", - " 0.7706766917293233,\n", - " 0.020484171322160183,\n", - " 0.6829745596868885,\n", - " 0.7132216014897579,\n", - " 0.6297709923664122,\n", - " 0.7294117647058824,\n", - " 0.8534653465346534,\n", - " 0.6699801192842942,\n", - " 0.011857707509881465,\n", - " 0.7007575757575757,\n", - " 0.672514619883041,\n", - " 0.7045454545454546],\n", - " 3: [0.027027027027026973,\n", - " 0.09243697478991597,\n", - " 0.1875,\n", - " 0.2222222222222222,\n", - " 0.2713178294573644,\n", - " 0.12962962962962965,\n", - " 0.0,\n", - " 0.18518518518518523,\n", - " 0.1333333333333333,\n", - " 0.11475409836065575,\n", - " 0.2100840336134454,\n", - " 0.09243697478991597,\n", - " 0.0,\n", - " 0.08799999999999997,\n", - " 0.12903225806451613,\n", - " 0.027027027027026973,\n", - " 0.296875],\n", - " 4: [0.010695187165775444,\n", - " 0.05982905982905984,\n", - " 0.04278074866310155,\n", - " 0.1515151515151515,\n", - " 0.07103825136612019,\n", - " 0.10626702997275206,\n", - " 0.06233062330623307,\n", - " 0.07816711590296499,\n", - " 0.125,\n", - " 0.010752688172043001,\n", - " 0.0,\n", - " 0.06382978723404253,\n", - " 0.05945945945945941,\n", - " 0.0,\n", - " 0.07103825136612019,\n", - " 0.07356948228882831,\n", - " 0.17048346055979646],\n", - " 5: [0.008695652173912993,\n", - " 0.09401709401709402,\n", - " 0.10344827586206895,\n", - " 0.008695652173912993,\n", - " 0.008695652173912993,\n", - " 0.008695652173912993,\n", - " 0.0,\n", - " 0.008695652173912993,\n", - " 0.0535714285714286,\n", - " 0.008695652173912993,\n", - " 0.0,\n", - " 0.008695652173912993,\n", - " 0.0,\n", - " 0.0,\n", - " 0.008695652173912993,\n", - " 0.04201680672268904],\n", - " 6: [0.05882352941176472,\n", - " 0.007518796992481258,\n", - " 0.11475409836065575,\n", - " 0.21259842519685035,\n", - " 0.14492753623188404,\n", - " 0.007518796992481258,\n", - " 0.007518796992481258,\n", - " 0.1428571428571429,\n", - " 0.21259842519685035,\n", - " 0.007518796992481258,\n", - " 0.055118110236220486,\n", - " 0.04347826086956519,\n", - " 0.04761904761904767,\n", - " 0.12903225806451613,\n", - " 0.21259842519685035,\n", - " 0.4018691588785047],\n", - " 7: [0.09195402298850575,\n", - " 0.0,\n", - " 0.018181818181818188,\n", - " 0.09202453987730064,\n", - " 0.08670520231213874,\n", - " 0.0650887573964497,\n", - " 0.11377245508982037,\n", - " 0.04597701149425293,\n", - " 0.16564417177914115,\n", - " 0.02298850574712641,\n", - " 0.0,\n", - " 0.02298850574712641,\n", - " 0.0,\n", - " 0.06172839506172845,\n", - " 0.09202453987730064,\n", - " 0.19480519480519476],\n", - " 8: [0.06306306306306309,\n", - " 0.008695652173912993,\n", - " 0.10344827586206895,\n", - " 0.008695652173912993,\n", - " 0.008695652173912993,\n", - " 0.008695652173912993,\n", - " 0.008695652173912993,\n", - " 0.0,\n", - " 0.06306306306306309,\n", - " 0.008695652173912993,\n", - " 0.0,\n", - " 0.008695652173912993,\n", - " 0.0,\n", - " 0.0,\n", - " 0.008695652173912993,\n", - " 0.008695652173912993],\n", - " 9: [0.08609271523178808,\n", - " 0.0,\n", - " 0.4084507042253521,\n", - " 0.41428571428571426,\n", - " 0.16312056737588654,\n", - " 0.11258278145695366,\n", - " 0.24137931034482762,\n", - " 0.13725490196078427,\n", - " 0.2024539877300614,\n", - " 0.08609271523178808,\n", - " 0.03749999999999998,\n", - " 0.28859060402684567,\n", - " 0.2551724137931034],\n", - " 10: [0.08609271523178808,\n", - " 0.0,\n", - " 0.18881118881118886,\n", - " 0.15107913669064743,\n", - " 0.034965034965035,\n", - " 0.0,\n", - " 0.0,\n", - " 0.08965517241379306,\n", - " 0.0,\n", - " 0.0,\n", - " 0.14492753623188404],\n", - " 11: [0.0625,\n", - " 0.0,\n", - " 0.17460317460317465,\n", - " 0.2710280373831776,\n", - " 0.03816793893129766,\n", - " 0.052631578947368474,\n", - " 0.0,\n", - " 0.08270676691729328,\n", - " 0.03076923076923077,\n", - " 0.0,\n", - " 0.22033898305084743],\n", - " 12: [0.011673151750972721,\n", - " 0.0,\n", - " 0.12252964426877466,\n", - " 0.07999999999999996,\n", - " 0.011673151750972721,\n", - " 0.011673151750972721,\n", - " 0.011673151750972721,\n", - " 0.0424710424710425,\n", - " 0.011673151750972721,\n", - " 0.0117647058823529,\n", - " 0.12605042016806722],\n", - " 13: [0.09375,\n", - " 0.0,\n", - " 0.032258064516129004,\n", - " 0.0,\n", - " 0.07936507936507942,\n", - " 0.13207547169811318,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0],\n", - " 14: [0.09090909090909094,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.12727272727272732,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0],\n", - " 15: [0.10043668122270744,\n", - " 0.08225108225108224,\n", - " 0.26681127982646424,\n", - " 0.3244444444444444,\n", - " 0.3150105708245243,\n", - " 0.21684210526315795,\n", - " 0.07158351409978303,\n", - " 0.002123142250530785,\n", - " 0.07359307359307354],\n", - " 16: [0.0, 0.0, 0.1454545454545455],\n", - " 17: [0.07189542483660127, 0.031847133757961776, 0.0],\n", - " 18: [0.07758620689655171, 0.288135593220339],\n", - " 19: [0.22480620155038755, 0.0],\n", - " 20: [0.0],\n", - " 21: [0.0],\n", - " 22: [0.04347826086956519],\n", - " 23: [0.23943661971830987],\n", - " 24: [0.18518518518518523],\n", - " 25: [0.022900763358778664],\n", - " 26: [0.04081632653061229],\n", - " 27: [0.0444444444444444],\n", - " 28: [0.02020202020202022],\n", - " 29: [0.0],\n", - " 30: [0.018587360594795488],\n", - " 31: [0.04132231404958675],\n", - " 32: [0.07228915662650603],\n", - " 33: [0.0],\n", - " 34: [0.21259842519685035],\n", - " 35: [0.037878787878787845],\n", - " 36: [0.0],\n", - " 37: [0.04347826086956519],\n", - " 38: [0.0],\n", - " 39: [0.0],\n", - " 40: [0.23943661971830987]})" - ] - }, - "execution_count": 31, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "distance_per_segment_per_project['Group 1 - Session 1']" ] }, { "cell_type": "code", - "execution_count": 32, + "execution_count": null, "metadata": { "collapsed": true }, @@ -1389,304 +1140,13 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "rejected 2 entries from 18\n", - "rejected 1 entries from 18\n", - "rejected 3 entries from 18\n", - "rejected 1 entries from 18\n", - "rejected 1 entries from 18\n", - "rejected 1 entries from 18\n", - "rejected 0 entries from 15\n", - "rejected 0 entries from 14\n", - "rejected 0 entries from 11\n", - "rejected 1 entries from 11\n", - "rejected 1 entries from 10\n", - "rejected 1 entries from 9\n", - "rejected 0 entries from 9\n", - "rejected 1 entries from 6\n", - "rejected 0 entries from 4\n", - "rejected 0 entries from 3\n", - "rejected 0 entries from 1\n", - "rejected 0 entries from 1\n", - "rejected 0 entries from 18\n", - "rejected 1 entries from 17\n", - "rejected 1 entries from 17\n", - "rejected 3 entries from 17\n", - "rejected 1 entries from 17\n", - "rejected 0 entries from 17\n", - "rejected 1 entries from 17\n", - "rejected 1 entries from 17\n", - "rejected 0 entries from 16\n", - "rejected 0 entries from 14\n", - "rejected 0 entries from 12\n", - "rejected 2 entries from 9\n", - "rejected 1 entries from 8\n", - "rejected 0 entries from 7\n", - "rejected 1 entries from 7\n", - "rejected 0 entries from 6\n", - "rejected 0 entries from 5\n", - "rejected 0 entries from 4\n", - "rejected 0 entries from 4\n", - "rejected 0 entries from 4\n", - "rejected 0 entries from 2\n", - "rejected 0 entries from 1\n", - "rejected 0 entries from 1\n", - "rejected 0 entries from 1\n", - "rejected 2 entries from 17\n", - "rejected 3 entries from 17\n", - "rejected 3 entries from 17\n", - "rejected 2 entries from 17\n", - "rejected 2 entries from 16\n", - "rejected 2 entries from 16\n", - "rejected 1 entries from 16\n", - "rejected 0 entries from 14\n", - "rejected 2 entries from 12\n", - "rejected 1 entries from 11\n", - "rejected 0 entries from 10\n", - "rejected 0 entries from 7\n", - "rejected 0 entries from 5\n", - "rejected 0 entries from 5\n", - "rejected 0 entries from 4\n", - "rejected 0 entries from 3\n", - "rejected 0 entries from 3\n", - "rejected 0 entries from 1\n", - "rejected 0 entries from 1\n", - "rejected 0 entries from 1\n", - "rejected 0 entries from 1\n", - "rejected 2 entries from 17\n", - "rejected 2 entries from 17\n", - "rejected 2 entries from 17\n", - "rejected 2 entries from 17\n", - "rejected 3 entries from 17\n", - "rejected 4 entries from 17\n", - "rejected 1 entries from 16\n", - "rejected 2 entries from 16\n", - "rejected 1 entries from 16\n", - "rejected 1 entries from 16\n", - "rejected 1 entries from 13\n", - "rejected 1 entries from 11\n", - "rejected 1 entries from 11\n", - "rejected 3 entries from 11\n", - "rejected 2 entries from 11\n", - "rejected 1 entries from 10\n", - "rejected 0 entries from 9\n", - "rejected 1 entries from 4\n", - "rejected 0 entries from 2\n", - "rejected 0 entries from 2\n", - "rejected 0 entries from 2\n", - "rejected 0 entries from 1\n", - "rejected 0 entries from 1\n", - "rejected 0 entries from 1\n", - "rejected 0 entries from 1\n", - "rejected 0 entries from 1\n", - "rejected 0 entries from 1\n", - "rejected 0 entries from 1\n", - "rejected 0 entries from 1\n", - "rejected 0 entries from 1\n", - "rejected 0 entries from 1\n", - "rejected 0 entries from 1\n", - "rejected 0 entries from 1\n", - "rejected 0 entries from 1\n", - "rejected 0 entries from 1\n", - "rejected 0 entries from 1\n", - "rejected 0 entries from 1\n", - "rejected 0 entries from 1\n", - "rejected 0 entries from 1\n", - "rejected 0 entries from 1\n", - "rejected 0 entries from 1\n", - "rejected 0 entries from 1\n", - "rejected 0 entries from 17\n", - "rejected 3 entries from 17\n", - "rejected 0 entries from 17\n", - "rejected 3 entries from 17\n", - "rejected 0 entries from 17\n", - "rejected 0 entries from 15\n", - "rejected 0 entries from 10\n", - "rejected 0 entries from 9\n", - "rejected 0 entries from 7\n", - "rejected 0 entries from 5\n", - "rejected 0 entries from 3\n", - "rejected 0 entries from 3\n", - "rejected 0 entries from 3\n", - "rejected 0 entries from 2\n", - "rejected 0 entries from 2\n", - "rejected 0 entries from 2\n", - "rejected 0 entries from 1\n", - "rejected 0 entries from 1\n", - "rejected 0 entries from 1\n", - "rejected 0 entries from 1\n", - "rejected 0 entries from 1\n", - "rejected 0 entries from 1\n", - "rejected 0 entries from 1\n", - "rejected 0 entries from 1\n", - "rejected 0 entries from 1\n", - "rejected 0 entries from 1\n", - "rejected 0 entries from 1\n", - "rejected 0 entries from 1\n", - "rejected 0 entries from 1\n", - "rejected 0 entries from 1\n", - "rejected 0 entries from 1\n", - "rejected 0 entries from 1\n", - "rejected 0 entries from 1\n", - "rejected 5 entries from 16\n", - "rejected 5 entries from 16\n", - "rejected 2 entries from 16\n", - "rejected 4 entries from 16\n", - "rejected 4 entries from 16\n", - "rejected 3 entries from 16\n", - "rejected 1 entries from 15\n", - "rejected 4 entries from 15\n", - "rejected 1 entries from 14\n", - "rejected 0 entries from 14\n", - "rejected 0 entries from 12\n", - "rejected 0 entries from 9\n", - "rejected 0 entries from 7\n", - "rejected 0 entries from 6\n", - "rejected 1 entries from 6\n", - "rejected 0 entries from 6\n", - "rejected 1 entries from 4\n", - "rejected 0 entries from 4\n", - "rejected 0 entries from 2\n", - "rejected 0 entries from 1\n", - "rejected 2 entries from 19\n", - "rejected 3 entries from 18\n", - "rejected 0 entries from 18\n", - "rejected 4 entries from 17\n", - "rejected 0 entries from 16\n", - "rejected 1 entries from 16\n", - "rejected 1 entries from 11\n", - "rejected 1 entries from 11\n", - "rejected 0 entries from 9\n", - "rejected 3 entries from 7\n", - "rejected 1 entries from 4\n", - "rejected 0 entries from 3\n", - "rejected 0 entries from 3\n", - "rejected 0 entries from 2\n", - "rejected 0 entries from 2\n", - "rejected 0 entries from 2\n", - "rejected 0 entries from 1\n", - "rejected 0 entries from 1\n", - "rejected 0 entries from 1\n", - "rejected 5 entries from 17\n", - "rejected 2 entries from 17\n", - "rejected 2 entries from 17\n", - "rejected 2 entries from 17\n", - "rejected 2 entries from 17\n", - "rejected 1 entries from 17\n", - "rejected 4 entries from 17\n", - "rejected 2 entries from 17\n", - "rejected 5 entries from 17\n", - "rejected 1 entries from 17\n", - "rejected 0 entries from 17\n", - "rejected 1 entries from 17\n", - "rejected 3 entries from 17\n", - "rejected 0 entries from 16\n", - "rejected 3 entries from 15\n", - "rejected 0 entries from 15\n", - "rejected 1 entries from 12\n", - "rejected 0 entries from 10\n", - "rejected 0 entries from 10\n", - "rejected 0 entries from 8\n", - "rejected 0 entries from 8\n", - "rejected 0 entries from 8\n", - "rejected 2 entries from 6\n", - "rejected 1 entries from 3\n", - "rejected 1 entries from 3\n", - "rejected 0 entries from 2\n", - "rejected 0 entries from 2\n", - "rejected 0 entries from 1\n", - "rejected 0 entries from 1\n", - "rejected 0 entries from 1\n", - "rejected 0 entries from 1\n", - "rejected 0 entries from 1\n", - "rejected 0 entries from 1\n", - "rejected 0 entries from 1\n", - "rejected 0 entries from 1\n", - "rejected 2 entries from 10\n", - "rejected 2 entries from 10\n", - "rejected 3 entries from 10\n", - "rejected 1 entries from 10\n", - "rejected 1 entries from 10\n", - "rejected 1 entries from 10\n", - "rejected 2 entries from 10\n", - "rejected 1 entries from 10\n", - "rejected 2 entries from 10\n", - "rejected 2 entries from 9\n", - "rejected 1 entries from 9\n", - "rejected 2 entries from 9\n", - "rejected 1 entries from 9\n", - "rejected 1 entries from 9\n", - "rejected 3 entries from 9\n", - "rejected 1 entries from 9\n", - "rejected 1 entries from 8\n", - "rejected 1 entries from 7\n", - "rejected 1 entries from 5\n", - "rejected 1 entries from 4\n", - "rejected 0 entries from 2\n", - "rejected 0 entries from 1\n", - "rejected 0 entries from 1\n", - "rejected 0 entries from 1\n", - "rejected 2 entries from 10\n", - "rejected 2 entries from 10\n", - "rejected 0 entries from 10\n", - "rejected 3 entries from 10\n", - "rejected 0 entries from 10\n", - "rejected 2 entries from 10\n", - "rejected 1 entries from 9\n", - "rejected 2 entries from 9\n", - "rejected 1 entries from 8\n", - "rejected 2 entries from 10\n", - "rejected 0 entries from 8\n", - "rejected 2 entries from 6\n", - "rejected 0 entries from 6\n", - "rejected 0 entries from 2\n", - "rejected 0 entries from 2\n", - "rejected 0 entries from 2\n", - "rejected 0 entries from 2\n", - "rejected 0 entries from 2\n", - "rejected 0 entries from 2\n", - "rejected 0 entries from 1\n", - "rejected 0 entries from 1\n", - "rejected 0 entries from 1\n", - "rejected 0 entries from 1\n", - "rejected 0 entries from 1\n", - "rejected 2 entries from 13\n", - "rejected 3 entries from 13\n", - "rejected 1 entries from 13\n", - "rejected 2 entries from 13\n", - "rejected 1 entries from 12\n", - "rejected 2 entries from 12\n", - "rejected 1 entries from 12\n", - "rejected 0 entries from 11\n", - "rejected 0 entries from 8\n", - "rejected 0 entries from 5\n", - "rejected 0 entries from 3\n", - "rejected 0 entries from 2\n", - "rejected 0 entries from 14\n", - "rejected 0 entries from 14\n", - "rejected 0 entries from 14\n", - "rejected 2 entries from 14\n", - "rejected 1 entries from 14\n", - "rejected 1 entries from 14\n", - "rejected 0 entries from 14\n", - "rejected 0 entries from 8\n", - "rejected 1 entries from 5\n", - "rejected 0 entries from 5\n", - "rejected 0 entries from 2\n" - ] - } - ], + "outputs": [], "source": [ "# Get times per segment, reject outliers\n", - "\n", "times_per_segment_per_project = defaultdict()\n", "for project_id, sessions in sessions_by_project.items():\n", " times_per_segment_per_project[project_id] = defaultdict(list)\n", @@ -1730,7 +1190,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": null, "metadata": { "collapsed": true }, @@ -1780,7 +1240,7 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": null, "metadata": { "collapsed": true }, @@ -1830,7 +1290,7 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": null, "metadata": { "collapsed": true }, @@ -1855,7 +1315,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": null, "metadata": { "collapsed": true }, @@ -1869,7 +1329,7 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": null, "metadata": { "collapsed": false }, @@ -1883,7 +1343,7 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 16, "metadata": { "collapsed": false }, @@ -1894,9 +1354,2013 @@ "project_name_map = {doc['name']:doc['internalName'] for doc in document_configs}" ] }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# get posteditor actions per project\n", + "pe_sessions = {k:v for k,v in sessions_by_project.items() if k in post_editor_project_names.keys()}\n", + "actions_per_segment_per_project = {}\n", + "for project_id, sessions in pe_sessions.items():\n", + " actions_per_segment_per_project[project_id] = defaultdict(list)\n", + " for session in sessions:\n", + " segment_actions = get_editing_actions_per_segment(session['segments'])\n", + " for seg_id, actions in segment_actions:\n", + " for action,count in actions.items():\n", + " if 'postEditor' not in action:\n", + " del actions[action]\n", + " actions_per_segment_per_project[project_id][seg_id].append(actions)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "\n", + "avg_actions_per_segment_per_project = {}\n", + "for project, segments in actions_per_segment_per_project.items():\n", + " avg_actions_per_segment = {}\n", + " for seg_id, action_counts in segments.items():\n", + " action_sums = sum(action_counts, Counter())\n", + " action_means = {k: count/float(len(action_counts)) for k, count in action_sums.items()}\n", + " avg_actions_per_segment[seg_id] = action_means\n", + " avg_actions_per_segment_per_project[post_editor_project_names[project]] = avg_actions_per_segment\n" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "\n", + "avg_actions_per_project = {}\n", + "action_counts_per_project = {}\n", + "raw_action_counts = []\n", + "for project, segments in actions_per_segment_per_project.items():\n", + " all_actions = []\n", + " for seg_id, action_counts in segments.items():\n", + " all_actions.extend(action_counts)\n", + " raw_action_counts.extend(action_counts)\n", + " project_action_sums = sum(all_actions, Counter())\n", + " project_action_means = {k: v / float(len(all_actions)) for k,v in project_action_sums.items()}\n", + "\n", + " avg_actions_per_project[post_editor_project_names[project]] = project_action_means\n", + " action_counts_per_project[post_editor_project_names[project]] = project_action_sums\n", + " \n", + "\n", + "global_sum = sum(raw_action_counts, Counter())\n", + "global_mean = {k: v / float(len(raw_action_counts)) for k,v in global_sum.items()}" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "Counter({u'postEditor.delete': 1138,\n", + " u'postEditor.insert': 572,\n", + " u'postEditor.move': 272,\n", + " u'postEditor.replace': 1480})" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "global_sum" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{u'postEditor.delete': 0.9475437135720233,\n", + " u'postEditor.insert': 0.47626977518734387,\n", + " u'postEditor.move': 0.22647793505412156,\n", + " u'postEditor.replace': 1.2323064113238968}" + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "global_mean" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'Marketing Questionnaire - Post Editor': {u'postEditor.delete': 1.894736842105263,\n", + " u'postEditor.insert': 0.7142857142857143,\n", + " u'postEditor.move': 0.13533834586466165,\n", + " u'postEditor.replace': 1.330827067669173},\n", + " 'Product Catalog - Office Supplies - Post Editor': {u'postEditor.delete': 0.8983050847457628,\n", + " u'postEditor.insert': 0.6271186440677966,\n", + " u'postEditor.move': 0.23728813559322035,\n", + " u'postEditor.replace': 1.228813559322034},\n", + " 'Product Catalog - Office Supplies - postEditor': {u'postEditor.delete': 1.0252100840336134,\n", + " u'postEditor.insert': 0.5840336134453782,\n", + " u'postEditor.move': 0.4789915966386555,\n", + " u'postEditor.replace': 1.6638655462184875},\n", + " 'User Manual - Industrial Equipment - Post Editor': {u'postEditor.delete': 0.7377521613832853,\n", + " u'postEditor.insert': 0.42939481268011526,\n", + " u'postEditor.move': 0.25360230547550433,\n", + " u'postEditor.replace': 1.1181556195965419},\n", + " 'User Manual - Industrial Equipment - postEditor': {u'postEditor.delete': 0.4405940594059406,\n", + " u'postEditor.insert': 0.2524752475247525,\n", + " u'postEditor.move': 0.019801980198019802,\n", + " u'postEditor.replace': 0.8910891089108911}}" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "avg_actions_per_project" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "with open('average_actions_per_postediting_project.csv', 'w') as out:\n", + " sorted_pj_names = sorted(avg_actions_per_project.keys())\n", + " out.write('{}, {}, {}, {}, {}\\n'.format('Project Name', 'insert', 'delete', 'move', 'replace'))\n", + " for pj in sorted_pj_names:\n", + " seg_actions = avg_actions_per_project[pj]\n", + " out.write('{}, {}, {}, {}, {}\\n'.format(pj,\n", + " seg_actions.get('postEditor.insert', 0.),\n", + " seg_actions.get('postEditor.delete', 0.),\n", + " seg_actions.get('postEditor.move', 0.),\n", + " seg_actions.get('postEditor.replace', 0.)\n", + " ))" + ] + }, { "cell_type": "code", "execution_count": 43, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "with open('action_counts_per_postediting_project.csv', 'w') as out:\n", + " sorted_pj_names = sorted(action_counts_per_project.keys())\n", + " out.write('{}, {}, {}, {}, {}\\n'.format('Project Name', 'insert', 'delete', 'move', 'replace'))\n", + " for pj in sorted_pj_names:\n", + " seg_actions = action_counts_per_project[pj]\n", + " out.write('{}, {}, {}, {}, {}\\n'.format(pj,\n", + " seg_actions.get('postEditor.insert', 0.),\n", + " seg_actions.get('postEditor.delete', 0.),\n", + " seg_actions.get('postEditor.move', 0.),\n", + " seg_actions.get('postEditor.replace', 0.)\n", + " ))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Global action counts\n", + "all_counts = []\n", + "for pj, counts in action_counts_per_project.items():\n", + " all_counts.append(counts)\n", + " global_counts = " + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "with open('average_actions_per_segment_per_postediting_project.csv', 'w') as out:\n", + " sorted_pj_names = sorted(avg_actions_per_segment_per_project.keys())\n", + " for pj in sorted_pj_names:\n", + " out.write('Project Name: {}\\n'.format(pj))\n", + " out.write('{}, {}, {}, {}, {}\\n'.format('Segment Index', 'insert', 'delete', 'move', 'replace'))\n", + " for i in range(max(r_id for r_id in avg_actions_per_segment_per_project[pj].keys())):\n", + " seg_actions = avg_actions_per_segment_per_project[pj][i]\n", + " out.write('{}, {}, {}, {}, {}\\n'.format(i,\n", + " seg_actions.get('postEditor.insert', 0.),\n", + " seg_actions.get('postEditor.delete', 0.),\n", + " seg_actions.get('postEditor.move', 0.),\n", + " seg_actions.get('postEditor.replace', 0.)\n", + " ))\n", + " out.write('\\n') " + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{u'Group 1 - Session 2': defaultdict(list,\n", + " {0: [Counter({u'postEditor.delete': 1}),\n", + " Counter(),\n", + " Counter({u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.delete': 2, u'postEditor.replace': 3}),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.insert': 4,\n", + " u'postEditor.replace': 1}),\n", + " Counter(),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 3}),\n", + " Counter({u'postEditor.replace': 2}),\n", + " Counter(),\n", + " Counter({u'postEditor.move': 2, u'postEditor.replace': 2}),\n", + " Counter(),\n", + " Counter(),\n", + " Counter({u'postEditor.insert': 2, u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 3}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 2}),\n", + " Counter()],\n", + " 1: [Counter(),\n", + " Counter(),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter(),\n", + " Counter(),\n", + " Counter({u'postEditor.replace': 2}),\n", + " Counter(),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter(),\n", + " Counter({u'postEditor.delete': 1}),\n", + " Counter(),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter()],\n", + " 2: [Counter({u'postEditor.delete': 8,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.insert': 1, u'postEditor.replace': 4}),\n", + " Counter({u'postEditor.delete': 2,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 3,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.move': 1}),\n", + " Counter({u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.replace': 3}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 3}),\n", + " Counter({u'postEditor.insert': 1,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.delete': 1}),\n", + " Counter({u'postEditor.delete': 1}),\n", + " Counter({u'postEditor.insert': 1}),\n", + " Counter({u'postEditor.insert': 2,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 2, u'postEditor.replace': 2})],\n", + " 3: [Counter({u'postEditor.delete': 1, u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter(),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.insert': 2,\n", + " u'postEditor.move': 2,\n", + " u'postEditor.replace': 6}),\n", + " Counter(),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter(),\n", + " Counter({u'postEditor.delete': 1}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.replace': 2}),\n", + " Counter()],\n", + " 4: [Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter()],\n", + " 5: [Counter({u'postEditor.delete': 1, u'postEditor.move': 1}),\n", + " Counter({u'postEditor.delete': 4,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 3, u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.move': 3,\n", + " u'postEditor.replace': 6}),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.insert': 1,\n", + " u'postEditor.move': 3,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 5,\n", + " u'postEditor.insert': 2,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.insert': 2,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.insert': 2,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.insert': 2,\n", + " u'postEditor.move': 2,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 4}),\n", + " Counter({u'postEditor.delete': 3,\n", + " u'postEditor.insert': 2,\n", + " u'postEditor.move': 7}),\n", + " Counter({u'postEditor.insert': 2,\n", + " u'postEditor.move': 2,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 2,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.move': 4,\n", + " u'postEditor.replace': 6}),\n", + " Counter({u'postEditor.delete': 3,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.move': 2,\n", + " u'postEditor.replace': 3}),\n", + " Counter({u'postEditor.delete': 4, u'postEditor.replace': 1})],\n", + " 6: [Counter({u'postEditor.delete': 3,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 4,\n", + " u'postEditor.insert': 2,\n", + " u'postEditor.move': 1}),\n", + " Counter({u'postEditor.delete': 2,\n", + " u'postEditor.insert': 2,\n", + " u'postEditor.move': 2,\n", + " u'postEditor.replace': 6}),\n", + " Counter({u'postEditor.delete': 4,\n", + " u'postEditor.insert': 5,\n", + " u'postEditor.move': 6,\n", + " u'postEditor.replace': 5}),\n", + " Counter({u'postEditor.delete': 2,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.move': 2,\n", + " u'postEditor.replace': 10}),\n", + " Counter({u'postEditor.delete': 3,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.move': 3,\n", + " u'postEditor.replace': 10}),\n", + " Counter({u'postEditor.delete': 2,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.replace': 6}),\n", + " Counter({u'postEditor.delete': 8,\n", + " u'postEditor.insert': 2,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.delete': 3,\n", + " u'postEditor.move': 2,\n", + " u'postEditor.replace': 14}),\n", + " Counter({u'postEditor.delete': 4,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 6}),\n", + " Counter({u'postEditor.delete': 4,\n", + " u'postEditor.insert': 5,\n", + " u'postEditor.move': 4,\n", + " u'postEditor.replace': 7}),\n", + " Counter({u'postEditor.delete': 6, u'postEditor.insert': 4}),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.insert': 2,\n", + " u'postEditor.move': 4,\n", + " u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.delete': 6,\n", + " u'postEditor.insert': 10,\n", + " u'postEditor.move': 2,\n", + " u'postEditor.replace': 5}),\n", + " Counter({u'postEditor.delete': 2,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.move': 2,\n", + " u'postEditor.replace': 9}),\n", + " Counter({u'postEditor.delete': 3,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.replace': 7}),\n", + " Counter({u'postEditor.delete': 10,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.replace': 3})],\n", + " 7: [Counter(),\n", + " Counter({u'postEditor.move': 1, u'postEditor.replace': 4}),\n", + " Counter({u'postEditor.insert': 1,\n", + " u'postEditor.move': 2,\n", + " u'postEditor.replace': 3}),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 4}),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 5}),\n", + " Counter({u'postEditor.delete': 2,\n", + " u'postEditor.insert': 3,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.insert': 2}),\n", + " Counter({u'postEditor.delete': 2,\n", + " u'postEditor.insert': 2,\n", + " u'postEditor.move': 2,\n", + " u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.insert': 1,\n", + " u'postEditor.move': 2,\n", + " u'postEditor.replace': 3}),\n", + " Counter({u'postEditor.delete': 2,\n", + " u'postEditor.insert': 2,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.insert': 1,\n", + " u'postEditor.move': 2,\n", + " u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.move': 1}),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 3}),\n", + " Counter({u'postEditor.insert': 2,\n", + " u'postEditor.move': 2,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.insert': 1,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 3}),\n", + " Counter({u'postEditor.delete': 2,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.replace': 3}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.insert': 1})],\n", + " 8: [Counter({u'postEditor.delete': 1, u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.replace': 4}),\n", + " Counter({u'postEditor.delete': 2,\n", + " u'postEditor.insert': 3,\n", + " u'postEditor.replace': 2}),\n", + " Counter(),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 3}),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.insert': 2,\n", + " u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.delete': 2, u'postEditor.replace': 6}),\n", + " Counter(),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.insert': 2,\n", + " u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.delete': 2,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 2, u'postEditor.insert': 3}),\n", + " Counter({u'postEditor.delete': 2,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.replace': 7}),\n", + " Counter({u'postEditor.delete': 2,\n", + " u'postEditor.insert': 2,\n", + " u'postEditor.replace': 4}),\n", + " Counter({u'postEditor.delete': 3, u'postEditor.replace': 3})],\n", + " 9: [Counter({u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.delete': 2, u'postEditor.replace': 4}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 4}),\n", + " Counter({u'postEditor.delete': 6,\n", + " u'postEditor.insert': 3,\n", + " u'postEditor.replace': 5}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 3}),\n", + " Counter(),\n", + " Counter({u'postEditor.delete': 4,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.replace': 7}),\n", + " Counter({u'postEditor.delete': 4,\n", + " u'postEditor.insert': 2,\n", + " u'postEditor.replace': 8}),\n", + " Counter({u'postEditor.delete': 4,\n", + " u'postEditor.insert': 2,\n", + " u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.insert': 1, u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 2,\n", + " u'postEditor.insert': 4,\n", + " u'postEditor.replace': 1}),\n", + " Counter(),\n", + " Counter({u'postEditor.delete': 4,\n", + " u'postEditor.insert': 4,\n", + " u'postEditor.replace': 5}),\n", + " Counter({u'postEditor.delete': 4, u'postEditor.replace': 4})],\n", + " 10: [Counter(),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter(),\n", + " Counter(),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.delete': 1}),\n", + " Counter(),\n", + " Counter(),\n", + " Counter({u'postEditor.replace': 2}),\n", + " Counter()],\n", + " 11: [Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter(),\n", + " Counter(),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1}),\n", + " Counter()],\n", + " 12: [Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 2,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.delete': 2,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 2}),\n", + " Counter(),\n", + " Counter({u'postEditor.delete': 2,\n", + " u'postEditor.move': 2,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.move': 3,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 2,\n", + " u'postEditor.insert': 2,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 3, u'postEditor.insert': 2})],\n", + " 13: [Counter(),\n", + " Counter({u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1})],\n", + " 14: [Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 1}),\n", + " Counter(),\n", + " Counter()],\n", + " 15: [Counter({u'postEditor.replace': 1}),\n", + " Counter(),\n", + " Counter(),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter()],\n", + " 16: [Counter({u'postEditor.delete': 1,\n", + " u'postEditor.replace': 4}),\n", + " Counter({u'postEditor.move': 1, u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.delete': 2, u'postEditor.move': 1}),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.move': 2,\n", + " u'postEditor.replace': 2}),\n", + " Counter()],\n", + " 17: [Counter({u'postEditor.move': 1, u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.delete': 3,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.move': 3,\n", + " u'postEditor.replace': 5}),\n", + " Counter({u'postEditor.delete': 2,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 4}),\n", + " Counter({u'postEditor.move': 1, u'postEditor.replace': 2})],\n", + " 18: [Counter({u'postEditor.insert': 1,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.move': 3,\n", + " u'postEditor.replace': 5}),\n", + " Counter({u'postEditor.delete': 4,\n", + " u'postEditor.insert': 4,\n", + " u'postEditor.move': 2,\n", + " u'postEditor.replace': 6}),\n", + " Counter({u'postEditor.delete': 8, u'postEditor.replace': 2})],\n", + " 19: [Counter({u'postEditor.move': 1, u'postEditor.replace': 2}),\n", + " Counter(),\n", + " Counter({u'postEditor.move': 2, u'postEditor.replace': 1}),\n", + " Counter()],\n", + " 20: [Counter({u'postEditor.delete': 1,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.replace': 1}),\n", + " Counter()],\n", + " 21: [Counter()],\n", + " 22: [Counter()],\n", + " 23: [Counter()]}),\n", + " u'Group 1 - Session 4': defaultdict(list,\n", + " {0: [Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter(),\n", + " Counter(),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter()],\n", + " 1: [Counter(),\n", + " Counter({u'postEditor.insert': 1}),\n", + " Counter({u'postEditor.insert': 1}),\n", + " Counter(),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.insert': 1}),\n", + " Counter({u'postEditor.insert': 1}),\n", + " Counter(),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.insert': 1, u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.insert': 1}),\n", + " Counter({u'postEditor.delete': 1}),\n", + " Counter({u'postEditor.insert': 1}),\n", + " Counter(),\n", + " Counter(),\n", + " Counter({u'postEditor.insert': 2}),\n", + " Counter({u'postEditor.insert': 1}),\n", + " Counter(),\n", + " Counter({u'postEditor.insert': 1})],\n", + " 2: [Counter({u'postEditor.delete': 1, u'postEditor.insert': 2}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.insert': 1, u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.replace': 4}),\n", + " Counter({u'postEditor.insert': 1, u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.insert': 1, u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.insert': 1, u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.insert': 1, u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.insert': 1, u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.replace': 3}),\n", + " Counter({u'postEditor.insert': 1, u'postEditor.replace': 2}),\n", + " Counter(),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.insert': 2}),\n", + " Counter({u'postEditor.insert': 1, u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.insert': 1, u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.insert': 2, u'postEditor.replace': 2})],\n", + " 3: [Counter(),\n", + " Counter({u'postEditor.replace': 3}),\n", + " Counter({u'postEditor.replace': 4}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 5}),\n", + " Counter({u'postEditor.replace': 4}),\n", + " Counter({u'postEditor.delete': 2,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.replace': 3}),\n", + " Counter({u'postEditor.replace': 4}),\n", + " Counter({u'postEditor.delete': 3,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.replace': 4}),\n", + " Counter({u'postEditor.replace': 4}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 5}),\n", + " Counter({u'postEditor.replace': 4}),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.insert': 2,\n", + " u'postEditor.replace': 3}),\n", + " Counter({u'postEditor.delete': 2, u'postEditor.insert': 1}),\n", + " Counter({u'postEditor.replace': 4}),\n", + " Counter({u'postEditor.replace': 4}),\n", + " Counter({u'postEditor.replace': 4}),\n", + " Counter({u'postEditor.replace': 3}),\n", + " Counter({u'postEditor.delete': 2, u'postEditor.replace': 4})],\n", + " 4: [Counter(),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 3}),\n", + " Counter({u'postEditor.delete': 2, u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.delete': 2, u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.delete': 4,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 2,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.delete': 3, u'postEditor.insert': 2}),\n", + " Counter({u'postEditor.delete': 1}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.insert': 1}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter(),\n", + " Counter({u'postEditor.replace': 3})],\n", + " 5: [Counter(),\n", + " Counter(),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 3}),\n", + " Counter({u'postEditor.replace': 5}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 2}),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1}),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 1}),\n", + " Counter(),\n", + " Counter()],\n", + " 6: [Counter({u'postEditor.delete': 1}),\n", + " Counter({u'postEditor.delete': 1}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.delete': 1}),\n", + " Counter({u'postEditor.insert': 1, u'postEditor.replace': 1}),\n", + " Counter(),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.insert': 1}),\n", + " Counter({u'postEditor.delete': 2, u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 3}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 2, u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 1})],\n", + " 7: [Counter(),\n", + " Counter({u'postEditor.delete': 1}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter(),\n", + " Counter({u'postEditor.insert': 1, u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter(),\n", + " Counter(),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 3}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.replace': 1}),\n", + " Counter()],\n", + " 8: [Counter(),\n", + " Counter(),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.insert': 1}),\n", + " Counter({u'postEditor.replace': 2}),\n", + " Counter(),\n", + " Counter(),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter(),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter()],\n", + " 9: [Counter(),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter(),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.replace': 6}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 1}),\n", + " Counter(),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter(),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 3}),\n", + " Counter()],\n", + " 10: [Counter({u'postEditor.delete': 1, u'postEditor.move': 1}),\n", + " Counter({u'postEditor.delete': 2, u'postEditor.replace': 1}),\n", + " Counter(),\n", + " Counter(),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.insert': 1}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 2}),\n", + " Counter(),\n", + " Counter(),\n", + " Counter({u'postEditor.delete': 4,\n", + " u'postEditor.insert': 2,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 2, u'postEditor.insert': 1})],\n", + " 11: [Counter(),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter()],\n", + " 12: [Counter({u'postEditor.delete': 1}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 5, u'postEditor.replace': 1}),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 2,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 1})],\n", + " 13: [Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter({u'postEditor.replace': 2}),\n", + " Counter()],\n", + " 14: [Counter({u'postEditor.delete': 1}),\n", + " Counter({u'postEditor.move': 1, u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.insert': 1}),\n", + " Counter({u'postEditor.delete': 1})],\n", + " 15: [Counter({u'postEditor.move': 1}),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.insert': 2,\n", + " u'postEditor.replace': 3}),\n", + " Counter()],\n", + " 16: [Counter({u'postEditor.replace': 1})],\n", + " 17: [Counter()]}),\n", + " u'Group 2 - Session 2': defaultdict(list,\n", + " {0: [Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter({u'postEditor.delete': 1}),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter()],\n", + " 1: [Counter({u'postEditor.insert': 1}),\n", + " Counter({u'postEditor.insert': 1, u'postEditor.replace': 3}),\n", + " Counter({u'postEditor.insert': 1}),\n", + " Counter(),\n", + " Counter({u'postEditor.delete': 2,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.insert': 1}),\n", + " Counter({u'postEditor.insert': 1}),\n", + " Counter({u'postEditor.insert': 2, u'postEditor.replace': 1}),\n", + " Counter(),\n", + " Counter({u'postEditor.insert': 1}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter(),\n", + " Counter({u'postEditor.insert': 1}),\n", + " Counter(),\n", + " Counter({u'postEditor.insert': 1}),\n", + " Counter({u'postEditor.insert': 1}),\n", + " Counter({u'postEditor.delete': 4,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.move': 1})],\n", + " 2: [Counter({u'postEditor.replace': 3}),\n", + " Counter({u'postEditor.insert': 2, u'postEditor.replace': 3}),\n", + " Counter({u'postEditor.insert': 1, u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.insert': 1, u'postEditor.replace': 3}),\n", + " Counter({u'postEditor.insert': 1, u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.insert': 1, u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.insert': 3,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.replace': 3}),\n", + " Counter({u'postEditor.insert': 2, u'postEditor.replace': 5}),\n", + " Counter({u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.insert': 1, u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.insert': 1, u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.insert': 1, u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.insert': 4}),\n", + " Counter({u'postEditor.replace': 2})],\n", + " 3: [Counter({u'postEditor.delete': 1, u'postEditor.replace': 4}),\n", + " Counter({u'postEditor.insert': 2, u'postEditor.replace': 7}),\n", + " Counter({u'postEditor.replace': 4}),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.replace': 5}),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.replace': 4}),\n", + " Counter({u'postEditor.replace': 3}),\n", + " Counter({u'postEditor.delete': 2,\n", + " u'postEditor.insert': 3,\n", + " u'postEditor.replace': 4}),\n", + " Counter({u'postEditor.replace': 4}),\n", + " Counter({u'postEditor.delete': 2, u'postEditor.replace': 4}),\n", + " Counter({u'postEditor.replace': 6}),\n", + " Counter({u'postEditor.replace': 3}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 5}),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.replace': 4}),\n", + " Counter({u'postEditor.replace': 4}),\n", + " Counter({u'postEditor.delete': 3,\n", + " u'postEditor.insert': 3,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 5})],\n", + " 4: [Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 4}),\n", + " Counter({u'postEditor.delete': 3,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.replace': 4}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.delete': 1}),\n", + " Counter({u'postEditor.insert': 1, u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 3}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter(),\n", + " Counter(),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 3}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.insert': 1}),\n", + " Counter({u'postEditor.replace': 1})],\n", + " 5: [Counter(),\n", + " Counter({u'postEditor.delete': 4,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.replace': 2}),\n", + " Counter(),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.delete': 2,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 2}),\n", + " Counter(),\n", + " Counter({u'postEditor.delete': 1}),\n", + " Counter(),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 2, u'postEditor.insert': 2}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 2})],\n", + " 6: [Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.insert': 1, u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.delete': 2, u'postEditor.insert': 1}),\n", + " Counter({u'postEditor.delete': 4, u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.delete': 4,\n", + " u'postEditor.insert': 2,\n", + " u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.insert': 3, u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 2}),\n", + " Counter({u'postEditor.delete': 4, u'postEditor.insert': 5}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 1}),\n", + " Counter(),\n", + " Counter({u'postEditor.delete': 3, u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.insert': 1}),\n", + " Counter({u'postEditor.delete': 3, u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.delete': 2, u'postEditor.insert': 1}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 1})],\n", + " 7: [Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.insert': 1, u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 2, u'postEditor.insert': 2}),\n", + " Counter({u'postEditor.insert': 2, u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 2}),\n", + " Counter({u'postEditor.delete': 2, u'postEditor.insert': 2}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1}),\n", + " Counter(),\n", + " Counter({u'postEditor.delete': 2, u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.insert': 1}),\n", + " Counter({u'postEditor.delete': 3,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.insert': 1}),\n", + " Counter({u'postEditor.replace': 1})],\n", + " 8: [Counter(),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 1}),\n", + " Counter(),\n", + " Counter(),\n", + " Counter({u'postEditor.delete': 1}),\n", + " Counter({u'postEditor.delete': 3}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter(),\n", + " Counter(),\n", + " Counter({u'postEditor.move': 1, u'postEditor.replace': 1}),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 1}),\n", + " Counter()],\n", + " 9: [Counter({u'postEditor.delete': 1, u'postEditor.insert': 1}),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.insert': 4,\n", + " u'postEditor.replace': 6}),\n", + " Counter({u'postEditor.delete': 2, u'postEditor.insert': 1}),\n", + " Counter({u'postEditor.delete': 2, u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 3}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 1}),\n", + " Counter(),\n", + " Counter({u'postEditor.insert': 1, u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.delete': 2,\n", + " u'postEditor.insert': 2,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 1}),\n", + " Counter(),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.insert': 2}),\n", + " Counter({u'postEditor.delete': 2,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.replace': 2})],\n", + " 10: [Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.move': 3,\n", + " u'postEditor.replace': 1}),\n", + " Counter(),\n", + " Counter(),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.insert': 2,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.insert': 2,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 2,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.move': 2,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 2, u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.delete': 2,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.move': 2,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 2, u'postEditor.insert': 1}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 1}),\n", + " Counter(),\n", + " Counter({u'postEditor.delete': 3, u'postEditor.replace': 3}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 1})],\n", + " 11: [Counter(),\n", + " Counter({u'postEditor.delete': 1}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter({u'postEditor.move': 4}),\n", + " Counter(),\n", + " Counter(),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter(),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 1}),\n", + " Counter()],\n", + " 12: [Counter({u'postEditor.delete': 1,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 1}),\n", + " Counter(),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1}),\n", + " Counter({u'postEditor.delete': 3,\n", + " u'postEditor.move': 9,\n", + " u'postEditor.replace': 4}),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.move': 3,\n", + " u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 3,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.move': 3,\n", + " u'postEditor.replace': 4}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 3, u'postEditor.replace': 1})],\n", + " 13: [Counter(),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter(),\n", + " Counter({u'postEditor.move': 2, u'postEditor.replace': 2}),\n", + " Counter(),\n", + " Counter(),\n", + " Counter({u'postEditor.move': 6, u'postEditor.replace': 7}),\n", + " Counter({u'postEditor.move': 1, u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.move': 4, u'postEditor.replace': 1}),\n", + " Counter(),\n", + " Counter(),\n", + " Counter({u'postEditor.delete': 2,\n", + " u'postEditor.move': 2,\n", + " u'postEditor.replace': 1}),\n", + " Counter(),\n", + " Counter({u'postEditor.move': 1, u'postEditor.replace': 3}),\n", + " Counter({u'postEditor.insert': 1,\n", + " u'postEditor.move': 4,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 6,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.replace': 1})],\n", + " 14: [Counter(),\n", + " Counter({u'postEditor.delete': 2,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.insert': 1,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.insert': 1,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.insert': 2, u'postEditor.move': 1}),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.insert': 1,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.insert': 2,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 1}),\n", + " Counter(),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 2})],\n", + " 15: [Counter(),\n", + " Counter({u'postEditor.delete': 2,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 4}),\n", + " Counter({u'postEditor.delete': 2,\n", + " u'postEditor.insert': 2,\n", + " u'postEditor.move': 4,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.move': 2,\n", + " u'postEditor.replace': 3}),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.replace': 4}),\n", + " Counter(),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.replace': 3}),\n", + " Counter(),\n", + " Counter({u'postEditor.delete': 2,\n", + " u'postEditor.move': 4,\n", + " u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.insert': 1, u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.delete': 2,\n", + " u'postEditor.insert': 2,\n", + " u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.delete': 3,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.delete': 2, u'postEditor.replace': 3}),\n", + " Counter({u'postEditor.delete': 5,\n", + " u'postEditor.insert': 3,\n", + " u'postEditor.replace': 3}),\n", + " Counter({u'postEditor.delete': 4,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.replace': 4})],\n", + " 16: [Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter({u'postEditor.delete': 1}),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 2}),\n", + " Counter(),\n", + " Counter()],\n", + " 17: [Counter({u'postEditor.insert': 2,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.insert': 3,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 3,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.insert': 1, u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.insert': 1}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.insert': 1}),\n", + " Counter({u'postEditor.insert': 1, u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.insert': 1}),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 3}),\n", + " Counter({u'postEditor.insert': 2, u'postEditor.replace': 2})],\n", + " 18: [Counter({u'postEditor.delete': 1,\n", + " u'postEditor.replace': 1}),\n", + " Counter(),\n", + " Counter({u'postEditor.replace': 2}),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter({u'postEditor.delete': 2, u'postEditor.replace': 2}),\n", + " Counter(),\n", + " Counter(),\n", + " Counter({u'postEditor.delete': 2, u'postEditor.replace': 4})],\n", + " 19: [Counter({u'postEditor.delete': 3,\n", + " u'postEditor.insert': 3,\n", + " u'postEditor.replace': 3}),\n", + " Counter({u'postEditor.delete': 5,\n", + " u'postEditor.insert': 2,\n", + " u'postEditor.replace': 4}),\n", + " Counter({u'postEditor.delete': 3,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.replace': 4}),\n", + " Counter({u'postEditor.delete': 6,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.replace': 4}),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 4}),\n", + " Counter({u'postEditor.delete': 5,\n", + " u'postEditor.insert': 2,\n", + " u'postEditor.replace': 7}),\n", + " Counter({u'postEditor.delete': 5, u'postEditor.insert': 2}),\n", + " Counter({u'postEditor.delete': 4,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.replace': 1})],\n", + " 20: [Counter(),\n", + " Counter({u'postEditor.delete': 2, u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 2, u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1}),\n", + " Counter({u'postEditor.delete': 7,\n", + " u'postEditor.insert': 2,\n", + " u'postEditor.move': 2,\n", + " u'postEditor.replace': 3}),\n", + " Counter({u'postEditor.replace': 2}),\n", + " Counter()],\n", + " 21: [Counter(),\n", + " Counter(),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter()],\n", + " 22: [Counter(),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1}),\n", + " Counter(),\n", + " Counter()],\n", + " 23: [Counter(), Counter({u'postEditor.replace': 1}), Counter()],\n", + " 24: [Counter({u'postEditor.delete': 2,\n", + " u'postEditor.replace': 1}),\n", + " Counter(),\n", + " Counter()],\n", + " 25: [Counter({u'postEditor.delete': 2,\n", + " u'postEditor.replace': 1}),\n", + " Counter()],\n", + " 26: [Counter(),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 1})],\n", + " 27: [Counter()],\n", + " 28: [Counter()],\n", + " 29: [Counter()],\n", + " 30: [Counter()],\n", + " 31: [Counter({u'postEditor.replace': 1})],\n", + " 32: [Counter({u'postEditor.insert': 1})],\n", + " 33: [Counter({u'postEditor.replace': 1})],\n", + " 34: [Counter()]}),\n", + " u'Group 2 - Session 4': defaultdict(list,\n", + " {0: [Counter(),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.replace': 3}),\n", + " Counter(),\n", + " Counter({u'postEditor.replace': 3}),\n", + " Counter({u'postEditor.replace': 3}),\n", + " Counter({u'postEditor.replace': 3}),\n", + " Counter({u'postEditor.replace': 3}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 4}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter(),\n", + " Counter({u'postEditor.delete': 2, u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 2, u'postEditor.replace': 1}),\n", + " Counter(),\n", + " Counter({u'postEditor.replace': 4}),\n", + " Counter({u'postEditor.delete': 3,\n", + " u'postEditor.insert': 2,\n", + " u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.delete': 3, u'postEditor.replace': 1})],\n", + " 1: [Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter({u'postEditor.insert': 1, u'postEditor.replace': 1}),\n", + " Counter(),\n", + " Counter(),\n", + " Counter({u'postEditor.delete': 2, u'postEditor.replace': 1}),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter({u'postEditor.delete': 3, u'postEditor.replace': 1}),\n", + " Counter(),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter(),\n", + " Counter({u'postEditor.replace': 1})],\n", + " 2: [Counter({u'postEditor.delete': 3,\n", + " u'postEditor.insert': 2,\n", + " u'postEditor.move': 2,\n", + " u'postEditor.replace': 3}),\n", + " Counter({u'postEditor.delete': 16,\n", + " u'postEditor.insert': 7,\n", + " u'postEditor.move': 2,\n", + " u'postEditor.replace': 7}),\n", + " Counter({u'postEditor.delete': 6,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.replace': 4}),\n", + " Counter({u'postEditor.delete': 6,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 4}),\n", + " Counter({u'postEditor.delete': 6,\n", + " u'postEditor.insert': 2,\n", + " u'postEditor.move': 2,\n", + " u'postEditor.replace': 6}),\n", + " Counter({u'postEditor.delete': 8,\n", + " u'postEditor.insert': 2,\n", + " u'postEditor.move': 2,\n", + " u'postEditor.replace': 6}),\n", + " Counter({u'postEditor.delete': 5,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 8,\n", + " u'postEditor.insert': 4,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 8}),\n", + " Counter({u'postEditor.delete': 5,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 6}),\n", + " Counter({u'postEditor.delete': 7,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.move': 2,\n", + " u'postEditor.replace': 7}),\n", + " Counter({u'postEditor.delete': 9, u'postEditor.replace': 8}),\n", + " Counter({u'postEditor.delete': 3,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 4}),\n", + " Counter({u'postEditor.delete': 8,\n", + " u'postEditor.insert': 5,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 4}),\n", + " Counter({u'postEditor.delete': 4, u'postEditor.insert': 2}),\n", + " Counter({u'postEditor.delete': 14,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 14}),\n", + " Counter({u'postEditor.delete': 4,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.replace': 6}),\n", + " Counter({u'postEditor.delete': 14,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.replace': 5})],\n", + " 3: [Counter({u'postEditor.insert': 1}),\n", + " Counter({u'postEditor.insert': 1, u'postEditor.replace': 3}),\n", + " Counter({u'postEditor.delete': 2, u'postEditor.insert': 1}),\n", + " Counter(),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.insert': 2}),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.insert': 2,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.insert': 2, u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.insert': 2}),\n", + " Counter({u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.insert': 1}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.insert': 2}),\n", + " Counter(),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 3}),\n", + " Counter(),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 1})],\n", + " 4: [Counter({u'postEditor.delete': 4, u'postEditor.insert': 1}),\n", + " Counter(),\n", + " Counter({u'postEditor.delete': 2, u'postEditor.insert': 2}),\n", + " Counter({u'postEditor.delete': 3,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 3}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 3}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter(),\n", + " Counter({u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.insert': 1, u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.insert': 1, u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.insert': 3,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 4, u'postEditor.replace': 5}),\n", + " Counter(),\n", + " Counter({u'postEditor.delete': 2,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.replace': 3})],\n", + " 5: [Counter(),\n", + " Counter(),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter(),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter(),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter(),\n", + " Counter(),\n", + " Counter()],\n", + " 6: [Counter({u'postEditor.delete': 2}),\n", + " Counter({u'postEditor.delete': 2, u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 1}),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter({u'postEditor.delete': 3}),\n", + " Counter(),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 1}),\n", + " Counter()],\n", + " 7: [Counter({u'postEditor.delete': 1}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter(),\n", + " Counter(),\n", + " Counter({u'postEditor.delete': 2}),\n", + " Counter(),\n", + " Counter(),\n", + " Counter({u'postEditor.delete': 4, u'postEditor.insert': 1}),\n", + " Counter()],\n", + " 8: [Counter(),\n", + " Counter(),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter(),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter()],\n", + " 9: [Counter(),\n", + " Counter(),\n", + " Counter({u'postEditor.move': 1}),\n", + " Counter(),\n", + " Counter()],\n", + " 10: [Counter(), Counter(), Counter()],\n", + " 11: [Counter({u'postEditor.insert': 1}), Counter(), Counter()],\n", + " 12: [Counter(),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 1})],\n", + " 13: [Counter(), Counter()],\n", + " 14: [Counter(), Counter()],\n", + " 15: [Counter(),\n", + " Counter({u'postEditor.delete': 3,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.replace': 2})],\n", + " 16: [Counter()],\n", + " 17: [Counter()],\n", + " 18: [Counter()],\n", + " 19: [Counter()],\n", + " 20: [Counter()],\n", + " 21: [Counter()],\n", + " 22: [Counter({u'postEditor.replace': 1})],\n", + " 23: [Counter({u'postEditor.insert': 1})],\n", + " 24: [Counter()],\n", + " 25: [Counter({u'postEditor.replace': 1})],\n", + " 26: [Counter({u'postEditor.replace': 1})],\n", + " 27: [Counter({u'postEditor.replace': 1})],\n", + " 28: [Counter({u'postEditor.replace': 1})],\n", + " 29: [Counter()],\n", + " 30: [Counter()],\n", + " 31: [Counter()],\n", + " 32: [Counter({u'postEditor.delete': 3,\n", + " u'postEditor.replace': 1})]}),\n", + " u'Group 3 - Session 2': defaultdict(list,\n", + " {0: [Counter({u'postEditor.delete': 1, u'postEditor.insert': 2}),\n", + " Counter(),\n", + " Counter({u'postEditor.replace': 3}),\n", + " Counter({u'postEditor.delete': 2,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 2, u'postEditor.replace': 3}),\n", + " Counter({u'postEditor.replace': 3}),\n", + " Counter(),\n", + " Counter({u'postEditor.delete': 1}),\n", + " Counter({u'postEditor.delete': 3}),\n", + " Counter({u'postEditor.delete': 3, u'postEditor.replace': 1})],\n", + " 1: [Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter({u'postEditor.delete': 2, u'postEditor.replace': 1}),\n", + " Counter(),\n", + " Counter()],\n", + " 2: [Counter({u'postEditor.delete': 21, u'postEditor.insert': 8}),\n", + " Counter({u'postEditor.delete': 18,\n", + " u'postEditor.insert': 5,\n", + " u'postEditor.replace': 3}),\n", + " Counter({u'postEditor.delete': 8,\n", + " u'postEditor.insert': 3,\n", + " u'postEditor.move': 3,\n", + " u'postEditor.replace': 8}),\n", + " Counter({u'postEditor.delete': 7,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.move': 2}),\n", + " Counter({u'postEditor.delete': 8,\n", + " u'postEditor.insert': 3,\n", + " u'postEditor.replace': 5}),\n", + " Counter({u'postEditor.delete': 17,\n", + " u'postEditor.insert': 5,\n", + " u'postEditor.move': 4,\n", + " u'postEditor.replace': 13}),\n", + " Counter({u'postEditor.delete': 7,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.replace': 5}),\n", + " Counter({u'postEditor.delete': 6,\n", + " u'postEditor.move': 2,\n", + " u'postEditor.replace': 10}),\n", + " Counter({u'postEditor.delete': 7,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 5}),\n", + " Counter({u'postEditor.delete': 11,\n", + " u'postEditor.insert': 2,\n", + " u'postEditor.replace': 6})],\n", + " 3: [Counter({u'postEditor.delete': 1, u'postEditor.insert': 2}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.insert': 1}),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.insert': 2,\n", + " u'postEditor.replace': 5}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.insert': 2}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.insert': 3}),\n", + " Counter({u'postEditor.insert': 1}),\n", + " Counter({u'postEditor.insert': 1,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 3}),\n", + " Counter({u'postEditor.insert': 1}),\n", + " Counter({u'postEditor.replace': 1})],\n", + " 4: [Counter({u'postEditor.delete': 5, u'postEditor.insert': 4}),\n", + " Counter({u'postEditor.delete': 4,\n", + " u'postEditor.insert': 2,\n", + " u'postEditor.replace': 4}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.delete': 2,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 2,\n", + " u'postEditor.insert': 2,\n", + " u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.insert': 1, u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 2,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.replace': 12}),\n", + " Counter({u'postEditor.delete': 3,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.replace': 1})],\n", + " 5: [Counter({u'postEditor.insert': 1}),\n", + " Counter(),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter(),\n", + " Counter({u'postEditor.insert': 2}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 3}),\n", + " Counter(),\n", + " Counter()],\n", + " 6: [Counter({u'postEditor.delete': 3, u'postEditor.insert': 1}),\n", + " Counter({u'postEditor.delete': 3, u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 4,\n", + " u'postEditor.insert': 2,\n", + " u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.delete': 2, u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 2, u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 4}),\n", + " Counter()],\n", + " 7: [Counter({u'postEditor.delete': 4}),\n", + " Counter({u'postEditor.delete': 3}),\n", + " Counter(),\n", + " Counter({u'postEditor.delete': 2}),\n", + " Counter({u'postEditor.delete': 3,\n", + " u'postEditor.insert': 3,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 2}),\n", + " Counter({u'postEditor.delete': 2}),\n", + " Counter({u'postEditor.delete': 5, u'postEditor.insert': 1}),\n", + " Counter({u'postEditor.delete': 3, u'postEditor.insert': 1})],\n", + " 8: [Counter({u'postEditor.insert': 2}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 3}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 3}),\n", + " Counter()],\n", + " 9: [Counter({u'postEditor.delete': 5, u'postEditor.insert': 3}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 3,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 5}),\n", + " Counter({u'postEditor.delete': 2,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.delete': 2,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 4, u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.delete': 2, u'postEditor.replace': 4}),\n", + " Counter({u'postEditor.delete': 3, u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 4, u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 6,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.replace': 2})],\n", + " 10: [Counter({u'postEditor.delete': 2, u'postEditor.insert': 1}),\n", + " Counter(),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 3, u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 1}),\n", + " Counter(),\n", + " Counter()],\n", + " 11: [Counter({u'postEditor.delete': 2, u'postEditor.insert': 3}),\n", + " Counter(),\n", + " Counter({u'postEditor.delete': 1}),\n", + " Counter({u'postEditor.delete': 1}),\n", + " Counter({u'postEditor.delete': 4,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.replace': 1}),\n", + " Counter()],\n", + " 12: [Counter({u'postEditor.delete': 2, u'postEditor.insert': 2}),\n", + " Counter(),\n", + " Counter({u'postEditor.delete': 2, u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 1}),\n", + " Counter(),\n", + " Counter()],\n", + " 13: [Counter({u'postEditor.replace': 1}), Counter()],\n", + " 14: [Counter({u'postEditor.replace': 1}), Counter()],\n", + " 15: [Counter({u'postEditor.delete': 2,\n", + " u'postEditor.insert': 2,\n", + " u'postEditor.move': 2,\n", + " u'postEditor.replace': 4}),\n", + " Counter({u'postEditor.delete': 2,\n", + " u'postEditor.insert': 3,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 2})],\n", + " 16: [Counter({u'postEditor.delete': 1,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.insert': 1})],\n", + " 17: [Counter({u'postEditor.delete': 1}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.insert': 2})],\n", + " 18: [Counter(), Counter({u'postEditor.replace': 1})],\n", + " 19: [Counter({u'postEditor.delete': 2,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.replace': 1})],\n", + " 20: [Counter({u'postEditor.delete': 1,\n", + " u'postEditor.replace': 1})],\n", + " 21: [Counter({u'postEditor.replace': 2})],\n", + " 22: [Counter({u'postEditor.delete': 1,\n", + " u'postEditor.insert': 2,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 4})],\n", + " 23: [Counter()]}),\n", + " u'Group 3 - Session 4': defaultdict(list,\n", + " {0: [Counter({u'postEditor.insert': 4}),\n", + " Counter({u'postEditor.insert': 1}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 3}),\n", + " Counter({u'postEditor.insert': 1, u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 3}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 3}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 3}),\n", + " Counter(),\n", + " Counter({u'postEditor.replace': 2})],\n", + " 1: [Counter(),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.insert': 1, u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 2}),\n", + " Counter(),\n", + " Counter()],\n", + " 2: [Counter({u'postEditor.insert': 1}),\n", + " Counter({u'postEditor.delete': 2, u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 2, u'postEditor.insert': 1}),\n", + " Counter({u'postEditor.replace': 3}),\n", + " Counter(),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.delete': 2,\n", + " u'postEditor.insert': 2,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 2,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.insert': 1, u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.insert': 1,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.delete': 1}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 1})],\n", + " 3: [Counter({u'postEditor.insert': 2}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 1}),\n", + " Counter(),\n", + " Counter({u'postEditor.delete': 1}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.replace': 2}),\n", + " Counter(),\n", + " Counter()],\n", + " 4: [Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter(),\n", + " Counter()],\n", + " 5: [Counter({u'postEditor.delete': 3,\n", + " u'postEditor.insert': 3,\n", + " u'postEditor.move': 1}),\n", + " Counter({u'postEditor.delete': 5,\n", + " u'postEditor.move': 2,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 3,\n", + " u'postEditor.insert': 2,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 3}),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.insert': 1,\n", + " u'postEditor.move': 2,\n", + " u'postEditor.replace': 4}),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 3,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.move': 2, u'postEditor.replace': 6}),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.insert': 2,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 2,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.move': 1, u'postEditor.replace': 4}),\n", + " Counter({u'postEditor.delete': 3, u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 1})],\n", + " 6: [Counter({u'postEditor.delete': 7,\n", + " u'postEditor.insert': 8,\n", + " u'postEditor.move': 3}),\n", + " Counter(),\n", + " Counter({u'postEditor.delete': 5, u'postEditor.replace': 2}),\n", + " Counter(),\n", + " Counter({u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.move': 2,\n", + " u'postEditor.replace': 7}),\n", + " Counter({u'postEditor.delete': 2, u'postEditor.replace': 6}),\n", + " Counter(),\n", + " Counter({u'postEditor.delete': 2,\n", + " u'postEditor.insert': 5,\n", + " u'postEditor.move': 3,\n", + " u'postEditor.replace': 7}),\n", + " Counter({u'postEditor.delete': 6,\n", + " u'postEditor.insert': 4,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 3,\n", + " u'postEditor.insert': 4,\n", + " u'postEditor.move': 2,\n", + " u'postEditor.replace': 6}),\n", + " Counter(),\n", + " Counter({u'postEditor.delete': 4,\n", + " u'postEditor.insert': 3,\n", + " u'postEditor.move': 1,\n", + " u'postEditor.replace': 3}),\n", + " Counter({u'postEditor.delete': 14, u'postEditor.insert': 3})],\n", + " 7: [Counter({u'postEditor.delete': 2, u'postEditor.insert': 4}),\n", + " Counter({u'postEditor.move': 1, u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.insert': 2}),\n", + " Counter(),\n", + " Counter(),\n", + " Counter({u'postEditor.move': 1, u'postEditor.replace': 3}),\n", + " Counter(),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 1})],\n", + " 8: [Counter({u'postEditor.delete': 2,\n", + " u'postEditor.insert': 3,\n", + " u'postEditor.move': 1}),\n", + " Counter({u'postEditor.delete': 2, u'postEditor.insert': 1}),\n", + " Counter({u'postEditor.delete': 2,\n", + " u'postEditor.insert': 3,\n", + " u'postEditor.replace': 2}),\n", + " Counter({u'postEditor.delete': 1,\n", + " u'postEditor.insert': 1,\n", + " u'postEditor.replace': 1}),\n", + " Counter({u'postEditor.delete': 2, u'postEditor.insert': 1})],\n", + " 9: [Counter(),\n", + " Counter(),\n", + " Counter({u'postEditor.delete': 2,\n", + " u'postEditor.insert': 3,\n", + " u'postEditor.replace': 3}),\n", + " Counter({u'postEditor.delete': 2, u'postEditor.replace': 8}),\n", + " Counter({u'postEditor.delete': 1, u'postEditor.replace': 1})],\n", + " 10: [Counter(), Counter()]})}" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "actions_per_segment_per_project" + ] + }, + { + "cell_type": "code", + "execution_count": null, "metadata": { "collapsed": false }, @@ -1908,7 +3372,7 @@ }, { "cell_type": "code", - "execution_count": 44, + "execution_count": null, "metadata": { "collapsed": false }, @@ -1920,20 +3384,11 @@ }, { "cell_type": "code", - "execution_count": 45, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Global avg time in post editor mode: 11.6813884486, global avg time in autocomplete mode: 7.93700674133\n", - "Global avg distance in post editor mode: 0.132449358189, global avg distance in autocomplete mode: 0.135950570635\n" - ] - } - ], + "outputs": [], "source": [ "print('Global avg time in post editor mode: {}, global avg time in autocomplete mode: {}'.format(avg_posteditor_time, avg_autocomplete_time))\n", "print('Global avg distance in post editor mode: {}, global avg distance in autocomplete mode: {}'.format(avg_posteditor_distance, avg_autocomplete_distance))" @@ -1941,7 +3396,7 @@ }, { "cell_type": "code", - "execution_count": 47, + "execution_count": null, "metadata": { "collapsed": true }, @@ -1956,7 +3411,7 @@ }, { "cell_type": "code", - "execution_count": 48, + "execution_count": null, "metadata": { "collapsed": true },