Get the comments' HTML


In [60]:
import requests
from bs4 import BeautifulSoup
url = "http://www.theguardian.com/discussion/p/4fqc7"
r = requests.get(url)
html = r.text

soup = BeautifulSoup(html, "html.parser")
comments = soup.select(".d-comment__main")
comment_authors = soup.select(".d-comment__author")

print len (comments), " comments found in first page."
print len (comment_authors), " authors found in first page."


50  comments found in first page.
50  authors found in first page.

Extract the comments


In [61]:
comments_dict = []
parsed_comments = []
parsed_authors = []
for comment, author in zip(comments, comment_authors):
    c = comment.select(".d-comment__body")[0].text
    a = author['title']
    comments_dict.append({"text": c, "author": a})
    parsed_comments.append(c)
    parsed_authors.append(a)
    
print comments_dict[:6]


[{'text': u'\nIf you think what we have now is working then your idea of " intellectual sophistication " needs reassessing. \nI doubt you\'re capable of such a simple feat. \nBack to Tory Central office for you. Judging by the rest of your comments your masters aren\'t going to keep you for much longer.\n', 'author': u'excathedra'}, {'text': u"\nWe have punitive tax rates for those at the bottom, with tax rates far higher than those at the top.\n...which is clearly bonkers. Why would I support that?\n\nIt's clear when you resort to childish insults you've not got any argument based on evidence. The evidence is there for a rebalancing but sadly your ideology refuses to acknowledge it.\n\nIt is clear that you lack the intellectual sophistication required, to avoid regarding anyone right of centre as a straw man clich\xe9 who conforms to your own crude prejudices about them.\n", 'author': u'yourcomment'}, {'text': u"\nI agree. Taxpayers contribute approx 2k per year to the NHS and yet have no choice. So the NHS is not 'free.'What if half of that went to the NHS and the other half went to other providers.\n", 'author': u'bootsyjam'}, {'text': u"\nReally? So the idea that the more benefits from your labour that is taken away will have no effect on your motivation to go out and earn has been discredited? \nYou're right, economics is just maths and does not have a psychological element to it (which is largely ignored nowadays). We are all robots who do not respond to stimulus or constraints. It's just Maths.\n", 'author': u'bootsyjam'}, {'text': u"\nWe have punitive tax rates for those at the bottom, with tax rates far higher than those at the top. The Scandinavian countries have shown how a graduated tax rate has provided a much wider middle class base which genuinely supports families and children. \nIt's clear when you resort to childish insults you've not got any argument based on evidence. The evidence is there for a rebalancing but sadly your ideology refuses to acknowledge it.\n", 'author': u'excathedra'}, {'text': u'\nThey were profitable - in fact, easy money for the get-rich-quick brigade - before the govt slashed funding & susbsidies, and local council budgets (councils were meant to foot the bill). They all saw a quick killing and piled in, without much thought to efficient management, financing, structures etc. Then came the cuts, hence that whole sector plunged into crisis. In other words, standard practice for current Conservative-style capitalism!\n', 'author': u'DaanSaaf'}]

Create comment stemmer and TFIDF vectorizer

We will do some stemming in the comment text in order to create shorter vectors that represent each comment.


In [ ]:
from sklearn.feature_extraction.text import TfidfVectorizer
import nltk.stem

english_stemmer = nltk.stem.SnowballStemmer('english')

class StemmedTfidfVectorizer(TfidfVectorizer):
    def build_analyzer(self):
        analyzer=super(StemmedTfidfVectorizer,self).build_analyzer()
        return lambda doc:(english_stemmer.stem(w) for w in analyzer(doc))

Vectorize extracted comments


In [89]:
stem_vectorizer = StemmedTfidfVectorizer(min_df=1, stop_words='english')
stem_analyze = stem_vectorizer.build_analyzer()
# print [tok for tok in stem_analyze ("When we have a real living wage, there will no longer need to be 'stupid tax credits'. Until then, people need a top up to support themselves, because the companies they work for, don't want to give people their dues.")]

comment_vectors = stem_vectorizer.fit_transform(parsed_comments)

print "%d features found" % (len(stem_vectorizer.get_feature_names()))
print stem_vectorizer.get_feature_names()


865 features found
[u'000', u'10', u'100', u'11', u'15', u'175', u'18', u'1920s', u'1980s', u'1983', u'1987', u'20', u'2008', u'2011', u'2015', u'2020', u'21', u'23', u'2k', u'30', u'320', u'3bn', u'40', u'400', u'40bn', u'40s', u'50', u'56', u'636', u'84', u'91', u'abid', u'abl', u'accord', u'account', u'accur', u'acknowledg', u'acquaint', u'actual', u'acut', u'addit', u'adequ', u'admiss', u'advis', u'advisor', u'afford', u'age', u'agenda', u'agent', u'agre', u'agricultur', u'amount', u'analys', u'analysi', u'annual', u'annum', u'answer', u'anti', u'approach', u'approx', u'aren', u'arent', u'argument', u'arrog', u'arthriti', u'articl', u'asid', u'ask', u'asset', u'associ', u'assum', u'attempt', u'author', u'averag', u'avoid', u'awar', u'away', u'backsid', u'bank', u'banker', u'base', u'basi', u'basic', u'bastard', u'bbc', u'beard', u'begun', u'behalf', u'believ', u'benefit', u'best', u'better', u'big', u'bit', u'blinker', u'bn', u'bodi', u'bone', u'bonker', u'book', u'borough', u'borrow', u'bought', u'breach', u'breathtak', u'brick', u'brigad', u'britain', u'british', u'broke', u'brown', u'budget', u'build', u'butb', u'buy', u'buyer', u'bye', u'calcium', u'came', u'cancel', u'cancer', u'capabl', u'capit', u'car', u'care', u'case', u'caus', u'cell', u'centr', u'central', u'certain', u'certainti', u'challeng', u'chang', u'charg', u'check', u'childish', u'children', u'choic', u'choos', u'chosen', u'christma', u'chronic', u'circumst', u'citizen', u'civil', u'claim', u'class', u'clean', u'clear', u'clich\xe9', u'client', u'close', u'coincident', u'colleagu', u'collect', u'come', u'comfort', u'comment', u'communiti', u'compar', u'complet', u'complex', u'concern', u'conclud', u'condit', u'conform', u'consequ', u'conserv', u'consid', u'constant', u'constraint', u'contain', u'contempt', u'contrari', u'contribut', u'convict', u'corbyn', u'correct', u'correl', u'cost', u'couldn', u'council', u'counter', u'countri', u'courag', u'cours', u'cover', u'crap', u'creat', u'crisi', u'cross', u'crude', u'current', u'cut', u'cutback', u'daili', u'data', u'dcp171766_263808', u'deal', u'dear', u'debt', u'decad', u'decid', u'declar', u'defend', u'definit', u'delay', u'delet', u'delirium', u'delud', u'demand', u'dementia', u'dental', u'depend', u'deposit', u'describ', u'devast', u'dfs', u'did', u'didn', u'die', u'diet', u'differ', u'difficulti', u'diggin', u'direct', u'discredit', u'diseas', u'dishonest', u'dismiss', u'disord', u'disproportion', u'dissuad', u'dmo', u'do', u'doctor', u'doe', u'doesn', u'don', u'dont', u'doubl', u'doubt', u'drive', u'earli', u'earn', u'earner', u'eas', u'easi', u'eat', u'econom', u'economi', u'economist', u'edg', u'educ', u'effect', u'effici', u'eh', u'elder', u'element', u'emigr', u'employ', u'energi', u'enforc', u'entitl', u'envi', u'equal', u'essenti', u'establish', u'europ', u'euthanasia', u'eventu', u'evid', u'exacerb', u'exact', u'excus', u'expens', u'explain', u'fact', u'fallaci', u'fallen', u'fals', u'famili', u'faq', u'far', u'fault', u'favour', u'fear', u'feat', u'fee', u'fell', u'fellow', u'fertil', u'fewer', u'ffs', u'fiddl', u'figur', u'final', u'financ', u'financi', u'fit', u'flat', u'fli', u'foist', u'follow', u'food', u'foot', u'forget', u'formula', u'fortun', u'fraction', u'free', u'frs102', u'fudg', u'fulli', u'function', u'fund', u'futur', u'gaap', u'garden', u'gargantuan', u'gcse', u'gear', u'general', u'generat', u'genet', u'genuin', u'get', u'gilt', u'glass', u'go', u'gold', u'good', u'gordon', u'got', u'gov', u'govern', u'govt', u'graduat', u'great', u'greater', u'ground', u'grow', u'grown', u'guarante', u'guy', u'half', u'hand', u'handout', u'happen', u'happi', u'hard', u'hatton', u'have', u'haven', u'head', u'health', u'healthcar', u'healthi', u'heart', u'help', u'hernia', u'hidden', u'high', u'higher', u'highest', u'hip', u'hit', u'home', u'hook', u'hope', u'hospit', u'hous', u'http', u'human', u'hypothec', u'idea', u'ideal', u'ideolog', u'ignor', u'ill', u'immun', u'impli', u'import', u'improv', u'inadequ', u'inattent', u'includ', u'incom', u'increas', u'index', u'industri', u'inequ', u'inevit', u'infect', u'inflat', u'inherit', u'inland', u'inquir', u'insist', u'instanc', u'instead', u'institut', u'insult', u'insur', u'intellectu', u'intellig', u'interest', u'intergener', u'intern', u'internet', u'invest', u'involv', u'issu', u'issuanc', u'item', u'jar', u'jeopardis', u'jeremi', u'job', u'judg', u'junior', u'just', u'justic', u'kill', u'kiss', u'know', u'la', u'labour', u'lack', u'larg', u'last', u'law', u'lazi', u'lead', u'leav', u'leg', u'legal', u'lent', u'lessen', u'level', u'liabil', u'librari', u'life', u'like', u'limit', u'link', u'list', u'literatur', u'littl', u'live', u'll', u'local', u'logan', u'london', u'long', u'longer', u'look', u'loss', u'lot', u'low', u'magnesium', u'mail', u'main', u'major', u'make', u'man', u'manag', u'manchest', u'mari', u'market', u'master', u'mate', u'math', u'matter', u'mean', u'meant', u'mechan', u'mere', u'metabol', u'mid', u'middl', u'million', u'miner', u'mislead', u'miss', u'misunderstood', u'moan', u'moder', u'modern', u'modifi', u'money', u'mortar', u'mortgag', u'motiv', u'mr', u'mum', u'nation', u'nationwid', u'natur', u'ncbi', u'necessari', u'need', u'nervous', u'net', u'new', u'nhs', u'ni', u'nickel', u'nih', u'nitrat', u'nitrogen', u'nlm', u'nob', u'nose', u'notic', u'noughti', u'nowaday', u'nuclear', u'number', u'object', u'obvious', u'occur', u'octob', u'offic', u'oil', u'okay', u'old', u'older', u'omit', u'on', u'ongo', u'optimum', u'organis', u'origin', u'osborn', u'overcrowd', u'overflow', u'owe', u'owner', u'padi', u'page', u'paid', u'pair', u'pale', u'panel', u'parad', u'parti', u'particular', u'past', u'patent', u'patient', u'pay', u'payment', u'pdf', u'peanut', u'penalis', u'penni', u'pension', u'peopl', u'percentag', u'perform', u'perpetu', u'person', u'petrol', u'pfi', u'ph', u'pick', u'pile', u'place', u'plan', u'pleb', u'plung', u'pm', u'pmc', u'pmc3068045', u'pocket', u'point', u'polit', u'poor', u'pose', u'possibl', u'post', u'potenti', u'pound', u'poverti', u'practic', u'prefer', u'prejudic', u'prepar', u'presid', u'prevent', u'price', u'prime', u'principl', u'privat', u'problem', u'profess', u'profession', u'profit', u'promot', u'proper', u'properti', u'proport', u'propos', u'proprietor', u'protein', u'prove', u'provid', u'prudent', u'psycholog', u'public', u'punit', u'pure', u'push', u'quantat', u'question', u'quick', u'quot', u'raid', u'rain', u'rais', u'rang', u'rapid', u'rate', u'ratio', u'read', u'real', u'realiti', u'realli', u'reason', u'reassess', u'rebalanc', u'receiv', u'recent', u'recipi', u'reduc', u'refer', u'refus', u'regard', u'regress', u'rehab', u'relat', u'relationship', u'reli', u'remain', u'rememb', u'remov', u'repay', u'repeat', u'replac', u'repli', u'repres', u'requir', u'reserv', u'resid', u'resolv', u'resort', u'resourc', u'respect', u'respond', u'respons', u'rest', u'restrict', u'result', u'return', u'revenu', u'rheumat', u'rich', u'richest', u'right', u'rise', u'rob', u'robber', u'robberi', u'robot', u'rocket', u'root', u'roundabout', u'routin', u'rubbish', u'rule', u'run', u'sacrific', u'sad', u'said', u'sake', u'salari', u'save', u'saw', u'say', u'scandinavian', u'scheme', u'scholar', u'school', u'screw', u'scupper', u'search', u'sector', u'self', u'separ', u'servant', u'servic', u'shaft', u'shame', u'share', u'sheffield', u'shortag', u'show', u'shown', u'sick', u'sicken', u'silent', u'simpl', u'simpli', u'sink', u'sit', u'situat', u'size', u'slant', u'slash', u'small', u'smallest', u'sniff', u'soar', u'social', u'societi', u'socio', u'sofa', u'sole', u'solv', u'sophist', u'sorri', u'special', u'spend', u'spent', u'squad', u'staff', u'stand', u'standard', u'start', u'starter', u'stat', u'state', u'stay', u'steven', u'stimulus', u'stock', u'stolen', u'stone', u'stori', u'straw', u'strong', u'structur', u'stuf', u'stupid', u'style', u'subsidi', u'subsidis', u'suffer', u'suggest', u'suppli', u'support', u'suppos', u'sure', u'surplus', u'susbsidi', u'synonym', u'synthesis', u'system', u'take', u'taken', u'talk', u'target', u'tax', u'taxat', u'taxpay', u'teacher', u'tell', u'term', u'tertiari', u'test', u'thank', u'that', u'theori', u'thiev', u'thing', u'think', u'thought', u'threat', u'time', u'tip', u'tit', u'tomorrow', u'took', u'tori', u'total', u'transact', u'transfer', u'treat', u'treatment', u'tri', u'trickl', u'trillion', u'twice', u'type', u'typic', u'uk', u'ultra', u'unawar', u'unchang', u'understand', u'unemploy', u'unfair', u'unlaw', u'unpreced', u'unstimul', u'uptak', u'use', u'utter', u'vain', u'valu', u'valuabl', u'vast', u've', u'victimis', u'viewpoint', u'vire', u'visit', u'vitamin', u'vocat', u'wage', u'wait', u'want', u'ward', u'warp', u'watson', u'way', u'wealth', u'wealthier', u'weigh', u'weight', u'weightlift', u'welfar', u'went', u'westminst', u'whistl', u'wider', u'wil', u'wish', u'wonder', u'word', u'work', u'worker', u'wors', u'worst', u'worth', u'wouldn', u'wrong', u'www', u'year', u'yes', u'young', u'younger', u'zoopla']

These are the vectorized comments


In [90]:
formatted = ["Comment #{0}\n{1}".format(i,cv) for i, cv in enumerate(comment_vectors)]
for f in formatted:
    print f


Comment #0
  (0, 456)	0.205887006719
  (0, 330)	0.192929186203
  (0, 60)	0.205887006719
  (0, 471)	0.246137673625
  (0, 158)	0.222592542856
  (0, 662)	0.222592542856
  (0, 420)	0.246137673625
  (0, 524)	0.246137673625
  (0, 129)	0.222592542856
  (0, 795)	0.205887006719
  (0, 288)	0.246137673625
  (0, 713)	0.205887006719
  (0, 121)	0.246137673625
  (0, 242)	0.246137673625
  (0, 631)	0.246137673625
  (0, 502)	0.182341875949
  (0, 731)	0.222592542856
  (0, 405)	0.222592542856
  (0, 376)	0.182341875949
  (0, 852)	0.147143910764
  (0, 787)	0.182341875949
Comment #1
  (0, 588)	0.16162547186
  (0, 192)	0.16162547186
  (0, 166)	0.16162547186
  (0, 150)	0.16162547186
  (0, 466)	0.146164641282
  (0, 751)	0.16162547186
  (0, 128)	0.16162547186
  (0, 670)	0.126686298348
  (0, 639)	0.146164641282
  (0, 74)	0.146164641282
  (0, 653)	0.146164641282
  (0, 429)	0.126686298348
  (0, 36)	0.146164641282
  (0, 638)	0.146164641282
  (0, 378)	0.135195007414
  (0, 684)	0.126686298348
  (0, 632)	0.146164641282
  (0, 272)	0.292329282565
  (0, 80)	0.146164641282
  (0, 62)	0.135195007414
  (0, 334)	0.119734176837
  (0, 824)	0.119734176837
  (0, 403)	0.146164641282
  (0, 136)	0.146164641282
  (0, 657)	0.146164641282
  (0, 762)	0.126686298348
  (0, 98)	0.16162547186
  (0, 149)	0.405585022242
  (0, 364)	0.146164641282
  (0, 284)	0.146164641282
  (0, 624)	0.253372596696
  (0, 774)	0.186607424782
  (0, 612)	0.135195007414
  (0, 731)	0.146164641282
  (0, 405)	0.146164641282
Comment #2
  (0, 608)	0.20983197789
  (0, 844)	0.419663955781
  (0, 346)	0.363738265572
  (0, 311)	0.20983197789
  (0, 138)	0.232027336709
  (0, 506)	0.545607398358
  (0, 860)	0.181869132786
  (0, 18)	0.232027336709
  (0, 59)	0.232027336709
  (0, 175)	0.20983197789
  (0, 776)	0.194084120193
  (0, 49)	0.171888761374
Comment #3
  (0, 171)	0.20880075469
  (0, 746)	0.20880075469
  (0, 660)	0.20880075469
  (0, 675)	0.20880075469
  (0, 517)	0.20880075469
  (0, 379)	0.174655759724
  (0, 430)	0.163663526544
  (0, 259)	0.20880075469
  (0, 610)	0.20880075469
  (0, 237)	0.147088629974
  (0, 473)	0.417601509379
  (0, 422)	0.24107444623
  (0, 250)	0.154682218081
  (0, 227)	0.20880075469
  (0, 245)	0.174655759724
  (0, 494)	0.188827213047
  (0, 255)	0.174655759724
  (0, 76)	0.188827213047
  (0, 771)	0.20880075469
  (0, 428)	0.188827213047
  (0, 89)	0.163663526544
  (0, 629)	0.163663526544
  (0, 670)	0.163663526544
  (0, 376)	0.154682218081
Comment #4
  (0, 137)	0.164233596964
  (0, 282)	0.137376628224
  (0, 326)	0.164233596964
  (0, 147)	0.164233596964
  (0, 481)	0.164233596964
  (0, 847)	0.164233596964
  (0, 338)	0.164233596964
  (0, 709)	0.164233596964
  (0, 184)	0.148523277368
  (0, 691)	0.164233596964
  (0, 608)	0.148523277368
  (0, 36)	0.148523277368
  (0, 638)	0.148523277368
  (0, 378)	0.137376628224
  (0, 684)	0.128730615443
  (0, 632)	0.148523277368
  (0, 272)	0.297046554736
  (0, 80)	0.297046554736
  (0, 62)	0.137376628224
  (0, 334)	0.121666308628
  (0, 824)	0.121666308628
  (0, 403)	0.148523277368
  (0, 136)	0.148523277368
  (0, 657)	0.148523277368
  (0, 762)	0.128730615443
  (0, 149)	0.137376628224
  (0, 364)	0.148523277368
  (0, 284)	0.148523277368
  (0, 624)	0.386191846328
  (0, 774)	0.284428019663
  (0, 612)	0.137376628224
Comment #5
  (0, 122)	0.16520740688
  (0, 756)	0.149403934206
  (0, 168)	0.16520740688
  (0, 193)	0.129493913283
  (0, 586)	0.149403934206
  (0, 739)	0.122387719228
  (0, 851)	0.149403934206
  (0, 190)	0.16520740688
  (0, 572)	0.16520740688
  (0, 698)	0.138191191902
  (0, 194)	0.138191191902
  (0, 118)	0.16520740688
  (0, 753)	0.16520740688
  (0, 298)	0.16520740688
  (0, 467)	0.138191191902
  (0, 256)	0.16520740688
  (0, 788)	0.149403934206
  (0, 568)	0.16520740688
  (0, 424)	0.16520740688
  (0, 689)	0.16520740688
  (0, 306)	0.16520740688
  (0, 476)	0.149403934206
  (0, 111)	0.149403934206
  (0, 182)	0.33041481376
  (0, 452)	0.129493913283
  (0, 766)	0.16520740688
  (0, 316)	0.122387719228
  (0, 720)	0.16520740688
  (0, 337)	0.16520740688
  (0, 106)	0.16520740688
  (0, 617)	0.33041481376
  (0, 668)	0.149403934206
  (0, 491)	0.0893633027859
  (0, 248)	0.138191191902
  (0, 278)	0.116379517764
  (0, 599)	0.16520740688
Comment #6
  (0, 360)	0.173878916571
  (0, 442)	0.173878916571
  (0, 694)	0.173878916571
  (0, 99)	0.15724594134
  (0, 321)	0.173878916571
  (0, 581)	0.145444657605
  (0, 410)	0.173878916571
  (0, 448)	0.173878916571
  (0, 693)	0.173878916571
  (0, 368)	0.128811682375
  (0, 124)	0.11701039864
  (0, 682)	0.145444657605
  (0, 743)	0.112178707144
  (0, 188)	0.173878916571
  (0, 823)	0.15724594134
  (0, 734)	0.15724594134
  (0, 570)	0.173878916571
  (0, 696)	0.173878916571
  (0, 664)	0.173878916571
  (0, 440)	0.272581741574
  (0, 388)	0.272581741574
  (0, 389)	0.136290870787
  (0, 75)	0.173878916571
  (0, 741)	0.173878916571
  (0, 542)	0.224357414288
  (0, 277)	0.31449188268
  (0, 777)	0.145444657605
  (0, 491)	0.0940538597091
  (0, 629)	0.136290870787
  (0, 776)	0.145444657605
  (0, 774)	0.200754846819
  (0, 612)	0.145444657605
Comment #7
  (0, 521)	0.218042819387
  (0, 47)	0.241106694888
  (0, 57)	0.241106694888
  (0, 781)	0.218042819387
  (0, 475)	0.178614863796
  (0, 465)	0.169846385284
  (0, 669)	0.241106694888
  (0, 133)	0.241106694888
  (0, 576)	0.241106694888
  (0, 478)	0.241106694888
  (0, 579)	0.436085638774
  (0, 217)	0.241106694888
  (0, 299)	0.188985772668
  (0, 819)	0.241106694888
  (0, 289)	0.218042819387
  (0, 301)	0.241106694888
  (0, 26)	0.218042819387
Comment #8
  (0, 92)	0.44599780644
  (0, 85)	0.533189851408
  (0, 225)	0.533189851408
  (0, 466)	0.48218577474
Comment #9
  (0, 450)	0.709175579481
  (0, 558)	0.399476353072
  (0, 824)	0.58093772541
Comment #10
  (0, 763)	0.61690239956
  (0, 260)	0.787039661908
Comment #11
  (0, 728)	0.115513849483
  (0, 754)	0.127732536852
  (0, 845)	0.127732536852
  (0, 84)	0.127732536852
  (0, 596)	0.115513849483
  (0, 750)	0.127732536852
  (0, 614)	0.127732536852
  (0, 268)	0.115513849483
  (0, 27)	0.10684455283
  (0, 285)	0.127732536852
  (0, 201)	0.237696419715
  (0, 95)	0.127732536852
  (0, 28)	0.127732536852
  (0, 792)	0.127732536852
  (0, 778)	0.255465073704
  (0, 838)	0.115513849483
  (0, 796)	0.127732536852
  (0, 803)	0.283877596383
  (0, 3)	0.10684455283
  (0, 695)	0.127732536852
  (0, 804)	0.127732536852
  (0, 552)	0.0792321399049
  (0, 347)	0.127732536852
  (0, 807)	0.179961072235
  (0, 548)	0.115513849483
  :	:
  (0, 401)	0.100120123927
  (0, 818)	0.0899805361173
  (0, 239)	0.0824071780922
  (0, 609)	0.127732536852
  (0, 619)	0.127732536852
  (0, 786)	0.0899805361173
  (0, 207)	0.127732536852
  (0, 801)	0.10684455283
  (0, 67)	0.127732536852
  (0, 457)	0.100120123927
  (0, 703)	0.127732536852
  (0, 161)	0.127732536852
  (0, 559)	0.152719936996
  (0, 558)	0.195205754355
  (0, 475)	0.189251730922
  (0, 743)	0.164814356184
  (0, 823)	0.115513849483
  (0, 193)	0.100120123927
  (0, 491)	0.13818510419
  (0, 422)	0.0737378814385
  (0, 428)	0.115513849483
  (0, 860)	0.200240247855
  (0, 774)	0.0737378814385
  (0, 330)	0.200240247855
  (0, 787)	0.0946258654609
Comment #12
  (0, 426)	0.562224435141
  (0, 239)	0.433633048456
  (0, 334)	0.497928741798
  (0, 376)	0.497928741798
Comment #13
  (0, 286)	0.128416718708
  (0, 235)	0.128416718708
  (0, 837)	0.111303517707
  (0, 678)	0.14200023052
  (0, 673)	0.14200023052
  (0, 666)	0.118779063702
  (0, 397)	0.14200023052
  (0, 445)	0.14200023052
  (0, 354)	0.256833437417
  (0, 319)	0.284000461039
  (0, 352)	0.284000461039
  (0, 77)	0.14200023052
  (0, 836)	0.14200023052
  (0, 200)	0.14200023052
  (0, 42)	0.14200023052
  (0, 361)	0.14200023052
  (0, 371)	0.111303517707
  (0, 135)	0.14200023052
  (0, 345)	0.14200023052
  (0, 850)	0.14200023052
  (0, 736)	0.284000461039
  (0, 302)	0.284000461039
  (0, 841)	0.128416718708
  (0, 584)	0.118779063702
  (0, 20)	0.128416718708
  (0, 749)	0.128416718708
  (0, 17)	0.128416718708
  (0, 832)	0.128416718708
  (0, 840)	0.128416718708
  (0, 416)	0.128416718708
  (0, 748)	0.128416718708
  (0, 763)	0.111303517707
  (0, 475)	0.210391103782
  (0, 542)	0.0916120400796
  (0, 452)	0.111303517707
  (0, 491)	0.0768101735585
  (0, 278)	0.100031340376
  (0, 237)	0.100031340376
  (0, 776)	0.118779063702
  (0, 774)	0.163948770147
  (0, 852)	0.0848893586269
Comment #14
  (0, 114)	0.0855952181567
  (0, 857)	0.0855952181567
  (0, 115)	0.0855952181567
  (0, 519)	0.0670917846043
  (0, 622)	0.0855952181567
  (0, 419)	0.0774073183726
  (0, 527)	0.0715979110233
  (0, 563)	0.0715979110233
  (0, 274)	0.0774073183726
  (0, 349)	0.0715979110233
  (0, 5)	0.0855952181567
  (0, 856)	0.0855952181567
  (0, 864)	0.0855952181567
  (0, 33)	0.0774073183726
  (0, 597)	0.0855952181567
  (0, 421)	0.0855952181567
  (0, 687)	0.154814636745
  (0, 790)	0.241188464854
  (0, 9)	0.0855952181567
  (0, 0)	0.143195822047
  (0, 6)	0.0855952181567
  (0, 153)	0.0855952181567
  (0, 706)	0.0855952181567
  (0, 102)	0.0855952181567
  (0, 492)	0.0855952181567
  :	:
  (0, 498)	0.171190436313
  (0, 665)	0.0774073183726
  (0, 794)	0.0774073183726
  (0, 10)	0.171190436313
  (0, 290)	0.0774073183726
  (0, 625)	0.0855952181567
  (0, 592)	0.134183569209
  (0, 372)	0.482376929709
  (0, 235)	0.0774073183726
  (0, 584)	0.143195822047
  (0, 268)	0.0774073183726
  (0, 552)	0.0530944774709
  (0, 239)	0.055222111455
  (0, 368)	0.0634100112392
  (0, 682)	0.0715979110233
  (0, 440)	0.0670917846043
  (0, 388)	0.134183569209
  (0, 278)	0.0602971162136
  (0, 430)	0.0670917846043
  (0, 422)	0.0494127041058
  (0, 250)	0.0634100112392
  (0, 245)	0.0715979110233
  (0, 346)	0.134183569209
  (0, 860)	0.0670917846043
  (0, 60)	0.0715979110233
Comment #15
  (0, 607)	0.275649448275
  (0, 336)	0.204204568778
  (0, 577)	0.23057274806
  (0, 582)	0.216061291836
  (0, 183)	0.275649448275
  (0, 406)	0.551298896549
  (0, 181)	0.275649448275
  (0, 704)	0.275649448275
  (0, 790)	0.194179852272
  (0, 786)	0.194179852272
  (0, 62)	0.23057274806
  (0, 824)	0.204204568778
  (0, 795)	0.23057274806
  (0, 852)	0.164786386503
Comment #16

Comment #17
  (0, 221)	0.0415166368199
  (0, 396)	0.0375452226571
  (0, 451)	0.0347274594659
  (0, 230)	0.0415166368199
  (0, 387)	0.0325418325345
  (0, 307)	0.0375452226571
  (0, 265)	0.0415166368199
  (0, 765)	0.0415166368199
  (0, 544)	0.0415166368199
  (0, 186)	0.0325418325345
  (0, 825)	0.0415166368199
  (0, 813)	0.0830332736398
  (0, 459)	0.0375452226571
  (0, 23)	0.0415166368199
  (0, 11)	0.0415166368199
  (0, 690)	0.0347274594659
  (0, 560)	0.0415166368199
  (0, 134)	0.0830332736398
  (0, 2)	0.0415166368199
  (0, 444)	0.0307560453032
  (0, 839)	0.0415166368199
  (0, 672)	0.0375452226571
  (0, 640)	0.0415166368199
  (0, 635)	0.0415166368199
  (0, 843)	0.0415166368199
  :	:
  (0, 558)	0.0211491047581
  (0, 465)	0.0292461837125
  (0, 579)	0.0375452226571
  (0, 581)	0.0347274594659
  (0, 388)	0.195250995207
  (0, 542)	0.187492417983
  (0, 698)	0.0694549189319
  (0, 467)	0.0347274594659
  (0, 452)	0.0325418325345
  (0, 668)	0.0375452226571
  (0, 491)	0.0224570063586
  (0, 248)	0.0347274594659
  (0, 245)	0.208364756796
  (0, 255)	0.0347274594659
  (0, 89)	0.0325418325345
  (0, 346)	0.0325418325345
  (0, 670)	0.0325418325345
  (0, 653)	0.0750904453142
  (0, 429)	0.0325418325345
  (0, 684)	0.0325418325345
  (0, 774)	0.0479337358984
  (0, 456)	0.0347274594659
  (0, 129)	0.0375452226571
  (0, 502)	0.0922681359095
  (0, 852)	0.0992764774843
Comment #18
  (0, 784)	0.109770832607
  (0, 802)	0.109770832607
  (0, 618)	0.109770832607
  (0, 791)	0.109770832607
  (0, 130)	0.109770832607
  (0, 535)	0.109770832607
  (0, 63)	0.109770832607
  (0, 104)	0.109770832607
  (0, 708)	0.109770832607
  (0, 854)	0.0992703327427
  (0, 707)	0.109770832607
  (0, 623)	0.109770832607
  (0, 220)	0.0992703327427
  (0, 293)	0.109770832607
  (0, 482)	0.109770832607
  (0, 812)	0.0918201095244
  (0, 8)	0.109770832607
  (0, 480)	0.109770832607
  (0, 206)	0.0992703327427
  (0, 602)	0.0992703327427
  (0, 505)	0.219541665213
  (0, 724)	0.0918201095244
  (0, 529)	0.109770832607
  (0, 470)	0.109770832607
  (0, 835)	0.109770832607
  :	:
  (0, 139)	0.0992703327427
  (0, 274)	0.0992703327427
  (0, 790)	0.0773275048896
  (0, 676)	0.0992703327427
  (0, 290)	0.0992703327427
  (0, 592)	0.258123802322
  (0, 372)	0.463965029338
  (0, 818)	0.0773275048896
  (0, 457)	0.0860412674408
  (0, 559)	0.065622256681
  (0, 521)	0.0992703327427
  (0, 465)	0.0773275048896
  (0, 99)	0.0992703327427
  (0, 440)	0.0860412674408
  (0, 193)	0.0860412674408
  (0, 278)	0.0773275048896
  (0, 379)	0.0918201095244
  (0, 237)	0.0773275048896
  (0, 422)	0.0633688865784
  (0, 250)	0.0813196096606
  (0, 629)	0.0860412674408
  (0, 844)	0.198540665485
  (0, 429)	0.0860412674408
  (0, 376)	0.0813196096606
  (0, 852)	0.065622256681
Comment #19
  (0, 29)	0.477302242416
  (0, 764)	0.477302242416
  (0, 552)	0.296069263009
  (0, 237)	0.336233137782
  (0, 494)	0.431644283808
  (0, 774)	0.275538692247
  (0, 852)	0.28533672855
Comment #20
  (0, 199)	0.450977623095
  (0, 782)	0.407837834888
  (0, 526)	0.450977623095
  (0, 451)	0.377229668049
  (0, 355)	0.377229668049
  (0, 349)	0.377229668049
Comment #21
  (0, 247)	0.232662624006
  (0, 615)	0.232662624006
  (0, 409)	0.232662624006
  (0, 547)	0.210406494634
  (0, 191)	0.232662624006
  (0, 297)	0.210406494634
  (0, 761)	0.232662624006
  (0, 395)	0.232662624006
  (0, 569)	0.232662624006
  (0, 654)	0.232662624006
  (0, 310)	0.232662624006
  (0, 331)	0.232662624006
  (0, 156)	0.210406494634
  (0, 34)	0.194615519544
  (0, 252)	0.232662624006
  (0, 78)	0.210406494634
  (0, 794)	0.210406494634
  (0, 401)	0.182367087688
  (0, 457)	0.182367087688
  (0, 739)	0.172359390172
  (0, 491)	0.125850898024
  (0, 762)	0.182367087688
Comment #22
  (0, 116)	0.113749074126
  (0, 425)	0.113749074126
  (0, 167)	0.205736044258
  (0, 312)	0.113749074126
  (0, 594)	0.113749074126
  (0, 323)	0.113749074126
  (0, 318)	0.113749074126
  (0, 174)	0.113749074126
  (0, 485)	0.113749074126
  (0, 35)	0.102868022129
  (0, 281)	0.113749074126
  (0, 280)	0.113749074126
  (0, 538)	0.0891595178395
  (0, 685)	0.113749074126
  (0, 146)	0.102868022129
  (0, 858)	0.113749074126
  (0, 738)	0.102868022129
  (0, 742)	0.102868022129
  (0, 34)	0.380591171501
  (0, 630)	0.0842667408779
  (0, 101)	0.0801299569005
  (0, 332)	0.0891595178395
  (0, 336)	0.0842667408779
  (0, 837)	0.0891595178395
  (0, 27)	0.19029558575
  (0, 201)	0.352791182942
  (0, 803)	0.337066963511
  (0, 3)	0.19029558575
  (0, 807)	0.0801299569005
  (0, 548)	0.102868022129
  (0, 786)	0.0801299569005
  (0, 558)	0.231780921491
  (0, 92)	0.0951477928752
  (0, 475)	0.0842667408779
  (0, 743)	0.293542755522
  (0, 542)	0.146771377761
  (0, 777)	0.0951477928752
  (0, 739)	0.0842667408779
  (0, 851)	0.102868022129
  (0, 467)	0.0951477928752
  (0, 491)	0.0615286756493
  (0, 629)	0.0891595178395
  (0, 49)	0.0842667408779
  (0, 852)	0.0680004948701
Comment #23
  (0, 534)	0.43323639188
  (0, 407)	0.43323639188
  (0, 577)	0.362389644023
  (0, 582)	0.339582085456
  (0, 801)	0.362389644023
  (0, 465)	0.305191173429
  (0, 639)	0.391793701085
Comment #24
  (0, 848)	0.197508755243
  (0, 486)	0.197508755243
  (0, 679)	0.197508755243
  (0, 216)	0.178615387958
  (0, 719)	0.395017510486
  (0, 52)	0.197508755243
  (0, 32)	0.178615387958
  (0, 350)	0.178615387958
  (0, 359)	0.197508755243
  (0, 169)	0.197508755243
  (0, 53)	0.197508755243
  (0, 547)	0.178615387958
  (0, 459)	0.178615387958
  (0, 690)	0.165210330539
  (0, 444)	0.146316963254
  (0, 596)	0.357230775917
  (0, 239)	0.25484719194
  (0, 763)	0.154812560206
  (0, 299)	0.154812560206
  (0, 422)	0.11401853855
  (0, 378)	0.330420661077
Comment #25
  (0, 341)	0.077164996504
  (0, 119)	0.077164996504
  (0, 176)	0.077164996504
  (0, 304)	0.077164996504
  (0, 797)	0.077164996504
  (0, 446)	0.077164996504
  (0, 431)	0.077164996504
  (0, 793)	0.077164996504
  (0, 474)	0.0697835180544
  (0, 436)	0.077164996504
  (0, 515)	0.077164996504
  (0, 187)	0.077164996504
  (0, 141)	0.077164996504
  (0, 218)	0.077164996504
  (0, 441)	0.0604839550144
  (0, 549)	0.231494989512
  (0, 821)	0.462989979024
  (0, 633)	0.0697835180544
  (0, 533)	0.077164996504
  (0, 223)	0.0645462757475
  (0, 317)	0.308659986016
  (0, 308)	0.154329993008
  (0, 648)	0.154329993008
  (0, 798)	0.154329993008
  (0, 350)	0.0697835180544
  (0, 167)	0.0697835180544
  (0, 538)	0.120967910029
  (0, 34)	0.0645462757475
  (0, 206)	0.139567036109
  (0, 186)	0.0604839550144
  (0, 101)	0.163075468304
  (0, 332)	0.0604839550144
  (0, 582)	0.0604839550144
  (0, 563)	0.0645462757475
  (0, 33)	0.139567036109
  (0, 702)	0.0645462757475
  (0, 354)	0.0697835180544
  (0, 728)	0.0697835180544
  (0, 201)	0.191460937031
  (0, 552)	0.0478652342578
  (0, 559)	0.0922602313772
  (0, 558)	0.117926502703
  (0, 743)	0.248916594241
  (0, 542)	0.0497833188482
  (0, 491)	0.20869884339
  (0, 250)	0.342988783787
  (0, 49)	0.171494391893
  (0, 334)	0.114329594596
  (0, 852)	0.0922602313772
  (0, 787)	0.0571647972978
Comment #26
  (0, 583)	0.15541859258
  (0, 641)	0.15541859258
  (0, 370)	0.15541859258
  (0, 820)	0.15541859258
  (0, 516)	0.15541859258
  (0, 244)	0.15541859258
  (0, 113)	0.15541859258
  (0, 159)	0.140551502011
  (0, 735)	0.15541859258
  (0, 353)	0.15541859258
  (0, 744)	0.15541859258
  (0, 496)	0.15541859258
  (0, 587)	0.15541859258
  (0, 162)	0.15541859258
  (0, 322)	0.15541859258
  (0, 39)	0.31083718516
  (0, 816)	0.15541859258
  (0, 540)	0.15541859258
  (0, 630)	0.230272085626
  (0, 396)	0.140551502011
  (0, 387)	0.121821183022
  (0, 642)	0.130003133382
  (0, 725)	0.140551502011
  (0, 380)	0.140551502011
  (0, 716)	0.140551502011
  (0, 455)	0.130003133382
  (0, 371)	0.243642366044
  (0, 688)	0.130003133382
  (0, 818)	0.109483837303
  (0, 581)	0.130003133382
  (0, 368)	0.230272085626
  (0, 124)	0.313763022554
  (0, 194)	0.130003133382
  (0, 429)	0.121821183022
  (0, 684)	0.121821183022
  (0, 502)	0.115136042813
Comment #27
  (0, 155)	0.169985415066
  (0, 740)	0.169985415066
  (0, 530)	0.169985415066
  (0, 365)	0.187965931283
  (0, 69)	0.187965931283
  (0, 817)	0.187965931283
  (0, 815)	0.187965931283
  (0, 393)	0.187965931283
  (0, 780)	0.187965931283
  (0, 254)	0.187965931283
  (0, 520)	0.169985415066
  (0, 71)	0.187965931283
  (0, 589)	0.187965931283
  (0, 537)	0.187965931283
  (0, 329)	0.169985415066
  (0, 223)	0.157228035786
  (0, 782)	0.169985415066
  (0, 724)	0.314456071571
  (0, 261)	0.157228035786
  (0, 363)	0.169985415066
  (0, 577)	0.157228035786
  (0, 349)	0.157228035786
  (0, 180)	0.157228035786
  (0, 197)	0.169985415066
  (0, 592)	0.147332643647
  (0, 372)	0.132411644562
  (0, 465)	0.132411644562
  (0, 440)	0.147332643647
  (0, 388)	0.147332643647
  (0, 278)	0.132411644562
  (0, 282)	0.157228035786
  (0, 311)	0.169985415066
  (0, 624)	0.147332643647
Comment #28
  (0, 189)	0.284815330666
  (0, 79)	0.266890032739
  (0, 186)	0.266890032739
  (0, 101)	0.479721903813
  (0, 336)	0.252243997911
  (0, 201)	0.21120897162
  (0, 786)	0.239860951907
  (0, 558)	0.173453208429
  (0, 124)	0.229134269548
  (0, 777)	0.284815330666
  (0, 491)	0.368359781577
  (0, 60)	0.284815330666
Comment #29
  (0, 732)	0.403024347463
  (0, 94)	0.445654980289
  (0, 210)	0.445654980289
  (0, 690)	0.372777432116
  (0, 476)	0.403024347463
  (0, 149)	0.372777432116
Comment #30
  (0, 686)	0.267432570414
  (0, 487)	0.267432570414
  (0, 25)	0.267432570414
  (0, 539)	0.267432570414
  (0, 659)	0.267432570414
  (0, 324)	0.241850404346
  (0, 652)	0.241850404346
  (0, 329)	0.241850404346
  (0, 216)	0.241850404346
  (0, 35)	0.241850404346
  (0, 724)	0.223699568663
  (0, 519)	0.209620686725
  (0, 592)	0.209620686725
  (0, 372)	0.188391514442
  (0, 559)	0.159874243129
  (0, 368)	0.198117402594
  (0, 430)	0.209620686725
  (0, 422)	0.154384400843
  (0, 346)	0.209620686725
Comment #31
  (0, 826)	0.181221043806
  (0, 46)	0.181221043806
  (0, 214)	0.181221043806
  (0, 453)	0.181221043806
  (0, 427)	0.181221043806
  (0, 270)	0.181221043806
  (0, 263)	0.181221043806
  (0, 828)	0.181221043806
  (0, 649)	0.181221043806
  (0, 412)	0.181221043806
  (0, 165)	0.181221043806
  (0, 142)	0.181221043806
  (0, 714)	0.181221043806
  (0, 528)	0.181221043806
  (0, 232)	0.181221043806
  (0, 658)	0.181221043806
  (0, 38)	0.163885732589
  (0, 551)	0.181221043806
  (0, 1)	0.163885732589
  (0, 73)	0.151586133541
  (0, 371)	0.142045823337
  (0, 818)	0.255320485747
  (0, 559)	0.108336008485
  (0, 763)	0.142045823337
  (0, 26)	0.163885732589
  (0, 682)	0.151586133541
  (0, 278)	0.127660242874
  (0, 506)	0.426137470011
Comment #32
  (0, 674)	0.17053182534
  (0, 661)	0.17053182534
  (0, 842)	0.17053182534
  (0, 543)	0.17053182534
  (0, 4)	0.17053182534
  (0, 785)	0.17053182534
  (0, 468)	0.17053182534
  (0, 340)	0.17053182534
  (0, 634)	0.15421902743
  (0, 613)	0.17053182534
  (0, 729)	0.17053182534
  (0, 204)	0.34106365068
  (0, 822)	0.17053182534
  (0, 404)	0.15421902743
  (0, 861)	0.15421902743
  (0, 56)	0.17053182534
  (0, 630)	0.252664230416
  (0, 672)	0.15421902743
  (0, 0)	0.142644913119
  (0, 372)	0.120130277276
  (0, 841)	0.15421902743
  (0, 584)	0.142644913119
  (0, 20)	0.15421902743
  (0, 749)	0.15421902743
  (0, 17)	0.15421902743
  (0, 832)	0.15421902743
  (0, 840)	0.15421902743
  (0, 416)	0.15421902743
  (0, 748)	0.15421902743
  (0, 457)	0.133667332595
  (0, 559)	0.101945871677
  (0, 491)	0.0922433650543
  (0, 76)	0.15421902743
  (0, 74)	0.15421902743
  (0, 334)	0.126332115208
  (0, 774)	0.0984452029868
  (0, 713)	0.142644913119
Comment #33
  (0, 283)	0.333290665071
  (0, 208)	0.333290665071
  (0, 651)	0.333290665071
  (0, 31)	0.333290665071
  (0, 488)	0.333290665071
  (0, 647)	0.333290665071
  (0, 159)	0.301408620451
  (0, 220)	0.301408620451
  (0, 739)	0.24690590518
  (0, 158)	0.301408620451
Comment #34
  (0, 314)	0.190387821024
  (0, 811)	0.176099244311
  (0, 82)	0.210526438811
  (0, 22)	0.210526438811
  (0, 154)	0.210526438811
  (0, 66)	0.210526438811
  (0, 722)	0.210526438811
  (0, 269)	0.421052877623
  (0, 855)	0.421052877623
  (0, 108)	0.210526438811
  (0, 628)	0.176099244311
  (0, 854)	0.190387821024
  (0, 186)	0.165016163174
  (0, 357)	0.190387821024
  (0, 332)	0.165016163174
  (0, 552)	0.130588968674
  (0, 558)	0.214489710623
  (0, 491)	0.113877084879
  (0, 184)	0.190387821024
  (0, 624)	0.165016163174
  (0, 774)	0.121533432024
Comment #35
  (0, 377)	0.112960248501
  (0, 411)	0.112960248501
  (0, 604)	0.112960248501
  (0, 507)	0.112960248501
  (0, 24)	0.112960248501
  (0, 775)	0.112960248501
  (0, 21)	0.112960248501
  (0, 621)	0.112960248501
  (0, 680)	0.112960248501
  (0, 497)	0.112960248501
  (0, 110)	0.102154654284
  (0, 413)	0.102154654284
  (0, 313)	0.112960248501
  (0, 253)	0.112960248501
  (0, 295)	0.112960248501
  (0, 636)	0.112960248501
  (0, 700)	0.112960248501
  (0, 477)	0.112960248501
  (0, 375)	0.112960248501
  (0, 314)	0.102154654284
  (0, 811)	0.094487963177
  (0, 628)	0.094487963177
  (0, 404)	0.102154654284
  (0, 324)	0.102154654284
  (0, 732)	0.102154654284
  :	:
  (0, 155)	0.102154654284
  (0, 156)	0.102154654284
  (0, 203)	0.102154654284
  (0, 449)	0.204309308567
  (0, 238)	0.102154654284
  (0, 849)	0.102154654284
  (0, 790)	0.0795742726993
  (0, 455)	0.094487963177
  (0, 152)	0.102154654284
  (0, 665)	0.102154654284
  (0, 666)	0.094487963177
  (0, 552)	0.210206790693
  (0, 559)	0.0675289259072
  (0, 734)	0.408618617135
  (0, 389)	0.177082431109
  (0, 586)	0.102154654284
  (0, 316)	0.25104710688
  (0, 491)	0.0611019873757
  (0, 237)	0.0795742726993
  (0, 422)	0.195630250909
  (0, 255)	0.094487963177
  (0, 506)	0.177082431109
  (0, 762)	0.0885412155546
  (0, 774)	0.195630250909
  (0, 376)	0.16736473792
Comment #36
  (0, 616)	0.331459037026
  (0, 58)	0.331459037026
  (0, 740)	0.299752202974
  (0, 223)	0.277255846202
  (0, 833)	0.259806316243
  (0, 201)	0.205603125418
  (0, 401)	0.259806316243
  (0, 277)	0.599504405949
  (0, 713)	0.277255846202
Comment #37
  (0, 15)	0.297968991154
  (0, 573)	0.297968991154
  (0, 209)	0.297968991154
  (0, 464)	0.269465760589
  (0, 394)	0.297968991154
  (0, 177)	0.297968991154
  (0, 418)	0.297968991154
  (0, 38)	0.269465760589
  (0, 759)	0.269465760589
  (0, 330)	0.233555936929
  (0, 787)	0.441478332198
Comment #38
  (0, 472)	0.101107111765
  (0, 164)	0.111801900268
  (0, 767)	0.111801900268
  (0, 145)	0.111801900268
  (0, 721)	0.111801900268
  (0, 369)	0.111801900268
  (0, 553)	0.111801900268
  (0, 148)	0.335405700803
  (0, 518)	0.111801900268
  (0, 458)	0.111801900268
  (0, 344)	0.111801900268
  (0, 555)	0.111801900268
  (0, 565)	0.111801900268
  (0, 718)	0.111801900268
  (0, 414)	0.111801900268
  (0, 328)	0.111801900268
  (0, 697)	0.111801900268
  (0, 234)	0.111801900268
  (0, 402)	0.111801900268
  (0, 79)	0.350533086901
  (0, 441)	0.0876332717253
  (0, 538)	0.262899815176
  (0, 146)	0.101107111765
  (0, 630)	0.0828242500599
  (0, 387)	0.0876332717253
  (0, 101)	0.157516560353
  (0, 335)	0.093519038563
  (0, 859)	0.093519038563
  (0, 163)	0.101107111765
  (0, 701)	0.101107111765
  (0, 611)	0.0876332717253
  (0, 519)	0.0876332717253
  (0, 201)	0.277401640082
  (0, 803)	0.0828242500599
  (0, 552)	0.0693504100206
  (0, 807)	0.0787582801764
  (0, 239)	0.0721294615567
  (0, 558)	0.227813260614
  (0, 92)	0.093519038563
  (0, 299)	0.0876332717253
  (0, 124)	0.225708530575
  (0, 743)	0.288517846227
  (0, 193)	0.0876332717253
  (0, 430)	0.0876332717253
  (0, 422)	0.193624165065
  (0, 49)	0.0828242500599
Comment #39
  (0, 79)	0.51920478005
  (0, 426)	0.554076447126
  (0, 239)	0.427348659766
  (0, 787)	0.490712553446
Comment #40
  (0, 863)	0.427307417091
  (0, 45)	0.427307417091
  (0, 294)	0.427307417091
  (0, 831)	0.357430229017
  (0, 563)	0.357430229017
  (0, 390)	0.386431882412
  (0, 558)	0.217675852868
Comment #41
  (0, 861)	0.662582745657
  (0, 237)	0.516124697973
  (0, 49)	0.542770118282
Comment #42
  (0, 830)	0.190251430003
  (0, 683)	0.210375620783
  (0, 692)	0.420751241565
  (0, 54)	0.210375620783
  (0, 19)	0.210375620783
  (0, 715)	0.210375620783
  (0, 382)	0.210375620783
  (0, 484)	0.210375620783
  (0, 783)	0.190251430003
  (0, 464)	0.190251430003
  (0, 441)	0.164897948034
  (0, 582)	0.164897948034
  (0, 687)	0.190251430003
  (0, 837)	0.164897948034
  (0, 559)	0.125764947378
  (0, 558)	0.214336053365
  (0, 389)	0.164897948034
  (0, 111)	0.190251430003
  (0, 316)	0.311697797273
  (0, 506)	0.329795896067
Comment #43
  (0, 61)	0.128905980391
  (0, 550)	0.128905980391
  (0, 296)	0.128905980391
  (0, 160)	0.257811960782
  (0, 86)	0.128905980391
  (0, 37)	0.128905980391
  (0, 626)	0.257811960782
  (0, 760)	0.128905980391
  (0, 229)	0.128905980391
  (0, 70)	0.128905980391
  (0, 755)	0.128905980391
  (0, 386)	0.128905980391
  (0, 275)	0.128905980391
  (0, 178)	0.128905980391
  (0, 772)	0.128905980391
  (0, 240)	0.128905980391
  (0, 830)	0.116575043316
  (0, 783)	0.116575043316
  (0, 628)	0.107826104228
  (0, 441)	0.101039899855
  (0, 297)	0.116575043316
  (0, 812)	0.107826104228
  (0, 444)	0.0954951671532
  (0, 770)	0.116575043316
  (0, 65)	0.233150086632
  (0, 831)	0.107826104228
  (0, 611)	0.202079799709
  (0, 790)	0.272421487356
  (0, 426)	0.107826104228
  (0, 818)	0.0908071624519
  (0, 558)	0.328331759514
  (0, 743)	0.249492690234
  (0, 698)	0.215652208457
  (0, 194)	0.215652208457
  (0, 422)	0.148830581981
  (0, 89)	0.101039899855
  (0, 670)	0.101039899855
  (0, 824)	0.0954951671532
  (0, 456)	0.107826104228
  (0, 330)	0.101039899855
Comment #44
  (0, 233)	0.244618848823
  (0, 44)	0.244618848823
  (0, 437)	0.244618848823
  (0, 333)	0.244618848823
  (0, 88)	0.221219006371
  (0, 202)	0.244618848823
  (0, 264)	0.244618848823
  (0, 348)	0.244618848823
  (0, 110)	0.221219006371
  (0, 801)	0.204616553936
  (0, 558)	0.124611964163
  (0, 781)	0.442438012743
  (0, 475)	0.362433422969
  (0, 743)	0.157816869033
  (0, 542)	0.157816869033
  (0, 175)	0.221219006371
Comment #45
  (0, 663)	0.0914624738945
  (0, 224)	0.0914624738945
  (0, 656)	0.0914624738945
  (0, 562)	0.0914624738945
  (0, 605)	0.0914624738945
  (0, 643)	0.0914624738945
  (0, 531)	0.0914624738945
  (0, 417)	0.0914624738945
  (0, 287)	0.0914624738945
  (0, 385)	0.0914624738945
  (0, 758)	0.0914624738945
  (0, 737)	0.0914624738945
  (0, 40)	0.182924947789
  (0, 157)	0.0827133219397
  (0, 598)	0.0914624738945
  (0, 68)	0.0914624738945
  (0, 462)	0.0914624738945
  (0, 504)	0.0914624738945
  (0, 55)	0.0914624738945
  (0, 100)	0.0914624738945
  (0, 454)	0.0914624738945
  (0, 132)	0.182924947789
  (0, 727)	0.0914624738945
  (0, 212)	0.0914624738945
  (0, 30)	0.0914624738945
  :	:
  (0, 72)	0.0827133219397
  (0, 126)	0.076505699838
  (0, 196)	0.0827133219397
  (0, 611)	0.0716906940604
  (0, 527)	0.076505699838
  (0, 790)	0.0644302746855
  (0, 309)	0.0827133219397
  (0, 351)	0.0827133219397
  (0, 372)	0.0644302746855
  (0, 558)	0.0465921517251
  (0, 299)	0.0716906940604
  (0, 289)	0.248139965819
  (0, 368)	0.20326964365
  (0, 124)	0.369293554689
  (0, 389)	0.215072082181
  (0, 542)	0.0590073959285
  (0, 756)	0.0827133219397
  (0, 739)	0.0677565478833
  (0, 452)	0.0716906940604
  (0, 316)	0.338782739416
  (0, 282)	0.076505699838
  (0, 250)	0.0677565478833
  (0, 89)	0.0716906940604
  (0, 860)	0.143381388121
  (0, 852)	0.0546773108672
Comment #46
  (0, 173)	0.11681735406
  (0, 415)	0.11681735406
  (0, 383)	0.11681735406
  (0, 600)	0.11681735406
  (0, 514)	0.11681735406
  (0, 723)	0.11681735406
  (0, 443)	0.11681735406
  (0, 83)	0.11681735406
  (0, 489)	0.11681735406
  (0, 853)	0.11681735406
  (0, 339)	0.11681735406
  (0, 107)	0.11681735406
  (0, 251)	0.11681735406
  (0, 109)	0.11681735406
  (0, 730)	0.23363470812
  (0, 433)	0.35045206218
  (0, 48)	0.11681735406
  (0, 726)	0.23363470812
  (0, 303)	0.11681735406
  (0, 279)	0.11681735406
  (0, 408)	0.11681735406
  (0, 513)	0.11681735406
  (0, 157)	0.105642795379
  (0, 392)	0.105642795379
  (0, 413)	0.211285590758
  (0, 189)	0.0977143198192
  (0, 812)	0.0977143198192
  (0, 602)	0.105642795379
  (0, 391)	0.105642795379
  (0, 126)	0.0977143198192
  (0, 355)	0.0977143198192
  (0, 266)	0.316928386137
  (0, 799)	0.105642795379
  (0, 336)	0.0865397611384
  (0, 419)	0.316928386137
  (0, 833)	0.0915645163996
  (0, 627)	0.211285590758
  (0, 666)	0.0977143198192
  (0, 807)	0.164582782198
  (0, 559)	0.0698347476364
  (0, 465)	0.0822913910988
  (0, 316)	0.173079522277
  (0, 491)	0.063188356858
  (0, 248)	0.0977143198192
  (0, 774)	0.0674367268977
  (0, 502)	0.0865397611384
  (0, 852)	0.0698347476364
Comment #47
  (0, 571)	0.202162323498
  (0, 93)	0.223546410684
  (0, 241)	0.223546410684
  (0, 646)	0.223546410684
  (0, 541)	0.223546410684
  (0, 554)	0.223546410684
  (0, 198)	0.223546410684
  (0, 530)	0.404324646995
  (0, 387)	0.175221559775
  (0, 444)	0.165605984998
  (0, 637)	0.202162323498
  (0, 335)	0.186990072184
  (0, 859)	0.186990072184
  (0, 373)	0.202162323498
  (0, 125)	0.202162323498
  (0, 833)	0.175221559775
  (0, 201)	0.138665221275
  (0, 807)	0.157476132364
  (0, 239)	0.288443795623
  (0, 558)	0.113877395184
  (0, 124)	0.150433733684
  (0, 422)	0.129049646498
  (0, 795)	0.186990072184
Comment #48
  (0, 846)	0.257595066747
  (0, 257)	0.257595066747
  (0, 557)	0.257595066747
  (0, 438)	0.257595066747
  (0, 571)	0.232953940329
  (0, 472)	0.232953940329
  (0, 79)	0.201909792457
  (0, 474)	0.232953940329
  (0, 538)	0.201909792457
  (0, 101)	0.181461535004
  (0, 201)	0.159785508613
  (0, 803)	0.190829656485
  (0, 786)	0.181461535004
  (0, 558)	0.131222215216
  (0, 124)	0.173346499059
  (0, 743)	0.332377060133
  (0, 542)	0.166188530066
  (0, 788)	0.232953940329
  (0, 379)	0.215470782903
  (0, 422)	0.148705372641
  (0, 662)	0.232953940329
Comment #49
  (0, 738)	0.259305341109
  (0, 742)	0.259305341109
  (0, 336)	0.424832042752
  (0, 837)	0.224749525732
  (0, 27)	0.239844515104
  (0, 201)	0.355720411998
  (0, 803)	0.424832042752
  (0, 3)	0.239844515104
  (0, 552)	0.355720411998
  (0, 807)	0.201988192026
  (0, 502)	0.212416021376

Apply clustering algorithm to vectorized comments

KMeans with 4 clusters


In [97]:
from sklearn.cluster import KMeans
km = KMeans(n_clusters=4, init='k-means++',
            max_iter=100, n_init=1)
km.fit(comment_vectors)

# Top terms per cluster (out of the 4 clusters)
order_centroids = km.cluster_centers_.argsort()[:, ::-1]
terms = stem_vectorizer.get_feature_names()
for i in range(4):
    print "Cluster %d:"%(i)
    for ind in order_centroids[i, :10]:
        print " %s" % terms[ind]
    print ""


Cluster 0:
 fund
 yes
 doe
 increas
 hous
 agre
 nhs
 head
 okay
 deal

Cluster 1:
 explain
 emigr
 suppos
 diggin
 beard
 comment
 simpl
 man
 start
 big

Cluster 2:
 clear
 tax
 rate
 got
 evid
 know
 intellig
 argument
 idea
 sure

Cluster 3:
 pension
 debt
 state
 banker
 trillion
 just
 don
 money
 care
 borrow


In [98]:
!git add -A && git commit -m "Clusters comments in 4 clusters using kmeans. Now I intend to use agglomerative clustering on the data."


[master c29bcd5] Clusters comments in 4 clusters using kmeans. Now I intend to use agglomerative clustering on the data.
 3 files changed, 2898 insertions(+), 240 deletions(-)

Questions and thoughts

  • The k-means clustering scikit tutorial, talks about dimensionality reduction using LSA, doesn't this makes us loose information? (This is why I didn't do that normalization)
  • After the clustering algorithm is applied, how do we evaluate its effectiveness? The question comes because this is still only halfway through our summarizing pipeline. We still need to extract the most important comments from each cluster that are non-overlapping and best represent the discussion.
  • This very simple approach to summarization is not taking into account dialogue acts. We can use the reply meta information in the comments to tell when a comment is an actual response to another comment. I am not sure how to use this information though. An idea I have is to do some summarization of each set of replies; so, we are basically summarizing the little sub-conversations as well.