AS08 - Clustering Commenters Based on Behavior#

In the Cluster Tutorial, we explored how to cluster documents using words as features, treating these words as unique fingerprints (features) of the documents. In this assignment, we shift our focus to analyzing commenters. Here, the posts commented on by the commenters are considered as indicators of their behavioral patterns. By treating these commenting behaviors as distinct features, we aim to cluster commenters based on these behavioral characteristics.

1- Loading Data#

Once again, we will utilize PTT posts from January 2, 2020. There are a total of 118 posts, each with its own unique ID (canonical_url). Additionally, each post contains a series of comments written by commenters (authors).

import json
post_list = []

# 開啟 JSONL 檔案,一行一行讀取並解析 JSON
with open("../_build/html/data/2020-01-02.jsonl", "r", encoding="utf-8") as file:
    for line in file:
        try:
            # 解析 JSON 字典並加入到列表中
            post = json.loads(line)
            post_list.append(post)
        except json.JSONDecodeError as e:
            # 處理解析錯誤
            print(f"解析 JSON 時出錯: {str(e)}")
print(len(post_list))
---------------------------------------------------------------------------
FileNotFoundError                         Traceback (most recent call last)
Cell In[1], line 5
      2 post_list = []
      4 # 開啟 JSONL 檔案,一行一行讀取並解析 JSON
----> 5 with open("../_build/html/data/2020-01-02.jsonl", "r", encoding="utf-8") as file:
      6     for line in file:
      7         try:
      8             # 解析 JSON 字典並加入到列表中

File ~/anaconda3/lib/python3.10/site-packages/IPython/core/interactiveshell.py:282, in _modified_open(file, *args, **kwargs)
    275 if file in {0, 1, 2}:
    276     raise ValueError(
    277         f"IPython won't let you open fd={file} by default "
    278         "as it is likely to crash IPython. If you know what you are doing, "
    279         "you can use builtins' open."
    280     )
--> 282 return io_open(file, *args, **kwargs)

FileNotFoundError: [Errno 2] No such file or directory: '../_build/html/data/2020-01-02.jsonl'
post_list[0]
{'version': 1582899164,
 'canonical_url': 'https://www.ptt.cc/bbs/Gossiping/M.1577894589.A.09F.html',
 'title': 'Re: [爆卦] 館長直播爆料柯師傅執行力強大',
 'author': 'KKB',
 'connect_from': '111.71.86.187',
 'published_at': '2020-01-02T00:03:06',
 'first_seen_at': '2020-02-28T22:12:44',
 'last_updated_at': '2020-03-29T07:27:57',
 'id': 'd3678ba0-6acb-46c6-bb8b-f191b70cfbb6',
 'producer_id': '5030a4ff-81fe-11ea-8627-f23c92e71bad',
 'text': '這館長直播重播\nhttps://youtu.be/Lv3JIt5GKVA?t=838\n找到了14:00開始\n大家看一下他是在黑\n還是只是被陷害\n該還人一個公道\n\n看完了越看越氣\n連雙子星也在黑柯\n南海是你們行政院投審會放行的\n說得好像台北市放行\n\n高嘉瑜你有上PTT\n明天最好上來講清楚\n挺你那麼久\n不講清楚以後看你一次黑你一次\n\n--',
 'urls': ['https://youtu.be/Lv3JIt5GKVA?t=838'],
 'image_urls': [],
 'hashtags': [],
 'keywords': [],
 'tags': [],
 'metadata': {'metatags': {'og:site_name': 'Ptt 批踢踢實業坊',
   'og:title': 'Re: [爆卦] 館長直播爆料柯師傅執行力強大',
   'og:description': '這館長直播重播\nhttps://youtu.be/Lv3JIt5GKVA?t=838\n找到了14:00開始\n大家看一下他是在黑\n還是只是被陷害\n',
   'viewport': 'width=device-width, initial-scale=1',
   'robots': 'all',
   'keywords': 'Ptt BBS 批踢踢',
   'description': '這館長直播重播\nhttps://youtu.be/Lv3JIt5GKVA?t=838\n找到了14:00開始\n大家看一下他是在黑\n還是只是被陷害\n'},
  'microdata': [],
  'json-ld': [],
  'opengraph': [{'namespace': {'og': 'http://ogp.me/ns#'},
    'properties': [['og:site_name', 'Ptt 批踢踢實業坊'],
     ['og:title', 'Re: [爆卦] 館長直播爆料柯師傅執行力強大'],
     ['og:description',
      '這館長直播重播\nhttps://youtu.be/Lv3JIt5GKVA?t=838\n找到了14:00開始\n大家看一下他是在黑\n還是只是被陷害\n']]}],
  'microformat': [],
  'rdfa': [{'@id': '',
    'http://ogp.me/ns#description': [{'@value': '這館長直播重播\nhttps://youtu.be/Lv3JIt5GKVA?t=838\n找到了14:00開始\n大家看一下他是在黑\n還是只是被陷害\n'}],
    'http://ogp.me/ns#site_name': [{'@value': 'Ptt 批踢踢實業坊'}],
    'http://ogp.me/ns#title': [{'@value': 'Re: [爆卦] 館長直播爆料柯師傅執行力強大'}]}],
  'ga-id': ['UA-32365737-1']},
 'comments': [{'id': 0,
   'reaction': '推',
   'author': 'aaaba',
   'text': '政問掰',
   'published_at': '01/02 00:03',
   'connect_from': '180.217.65.220'},
  {'id': 1,
   'reaction': '→',
   'author': 'justice2008',
   'text': '很前面就講了 稍微跳一下',
   'published_at': '01/02 00:04',
   'connect_from': '220.132.86.43'},
  {'id': 2,
   'reaction': '→',
   'author': 'justice2008',
   'text': '整段講了分鐘有了',
   'published_at': '01/02 00:04',
   'connect_from': '220.132.86.43'},
  {'id': 3,
   'reaction': '→',
   'author': 'l23l23',
   'text': '15分開始吧  最不想國民黨倒的果然是DPP',
   'published_at': '01/02 00:04',
   'connect_from': '114.24.34.132'},
  {'id': 4,
   'reaction': '→',
   'author': 'justice2008',
   'text': '整段講了5分鐘有了',
   'published_at': '01/02 00:04',
   'connect_from': '220.132.86.43'},
  {'id': 5,
   'reaction': '→',
   'author': 'l23l23',
   'text': '郝斌斌很欣慰 終於有人覺得他好了',
   'published_at': '01/02 00:05',
   'connect_from': '114.24.34.132'},
  {'id': 6,
   'reaction': '→',
   'author': 'firose',
   'text': '最怕國民黨消失的就是民進黨',
   'published_at': '01/02 00:05',
   'connect_from': '220.134.26.93'},
  {'id': 7,
   'reaction': '推',
   'author': 'ubcs',
   'text': 'https://youtu.be/Lv3JIt5GKVA?t=1050',
   'published_at': '01/02 00:05',
   'connect_from': '1.160.167.50'},
  {'id': 8,
   'reaction': '推',
   'author': 'eko112',
   'text': '13:40開始看說的~',
   'published_at': '01/02 00:06',
   'connect_from': '220.142.174.3'},
  {'id': 9,
   'reaction': '推',
   'author': 'gg7965977',
   'text': '之前高嘉瑜的演唱會才請學姊',
   'published_at': '01/02 00:07',
   'connect_from': '219.71.240.126'},
  {'id': 10,
   'reaction': '→',
   'author': 'eko112',
   'text': '你改影片連結了~~XD',
   'published_at': '01/02 00:07',
   'connect_from': '220.142.174.3'},
  {'id': 11,
   'reaction': '→',
   'author': 'gg7965977',
   'text': '哪有那麼快被刺人的啦',
   'published_at': '01/02 00:07',
   'connect_from': '219.71.240.126'},
  {'id': 12,
   'reaction': '→',
   'author': 'justice2008',
   'text': '就真的背刺啦',
   'published_at': '01/02 00:08',
   'connect_from': '220.132.86.43'},
  {'id': 13,
   'reaction': '→',
   'author': 'justice2008',
   'text': '他那段講的好像柯P有後門可以走一樣',
   'published_at': '01/02 00:08',
   'connect_from': '220.132.86.43'},
  {'id': 14,
   'reaction': '推',
   'author': 'lasekoutkast',
   'text': '高真的很誇張 那麼快就背刺',
   'published_at': '01/02 00:08',
   'connect_from': '114.27.70.8'},
  {'id': 15,
   'reaction': '→',
   'author': 'justice2008',
   'text': '感覺上就變了一個人',
   'published_at': '01/02 00:08',
   'connect_from': '220.132.86.43'},
  {'id': 16,
   'reaction': '推',
   'author': 'aa01081008tw',
   'text': '兩人一搭一唱講超爽.聊天室也罵柯罵',
   'published_at': '01/02 00:09',
   'connect_from': '36.234.218.223'},
  {'id': 17,
   'reaction': '→',
   'author': 'aa01081008tw',
   'text': '的很開心..沒誤會他們兩個人拉',
   'published_at': '01/02 00:09',
   'connect_from': '36.234.218.223'},
  {'id': 18,
   'reaction': '→',
   'author': 'jiaching',
   'text': '有憑有據的背刺也就算了 直接抹黑背刺',
   'published_at': '01/02 00:09',
   'connect_from': '114.37.234.54'},
  {'id': 19,
   'reaction': '→',
   'author': 'jiaching',
   'text': '我也是驚呆了',
   'published_at': '01/02 00:09',
   'connect_from': '114.37.234.54'},
  {'id': 20,
   'reaction': '→',
   'author': 'aa01081008tw',
   'text': '尤其館長自己又補不能開健身房是北',
   'published_at': '01/02 00:10',
   'connect_from': '36.234.218.223'},
  {'id': 21,
   'reaction': '→',
   'author': 'justice2008',
   'text': '就超噁的 去年怎麼舔的 今年就怎麼桶',
   'published_at': '01/02 00:10',
   'connect_from': '220.132.86.43'},
  {'id': 22,
   'reaction': '→',
   'author': 'aa01081008tw',
   'text': '市在刁難..那些館粉聽到整個暴怒XD',
   'published_at': '01/02 00:10',
   'connect_from': '36.234.218.223'},
  {'id': 23,
   'reaction': '推',
   'author': 'Fatsnow',
   'text': '其實從14分開始講 1555直接點名柯市府',
   'published_at': '01/02 00:10',
   'connect_from': '122.121.119.66'},
  {'id': 24,
   'reaction': '→',
   'author': 'lasekoutkast',
   'text': '柯還敢去館長節目喔?',
   'published_at': '01/02 00:11',
   'connect_from': '114.27.70.8'},
  {'id': 25,
   'reaction': '→',
   'author': 'lasekoutkast',
   'text': '11月9日要去耶 XD',
   'published_at': '01/02 00:11',
   'connect_from': '114.27.70.8'},
  {'id': 26,
   'reaction': '→',
   'author': 'lasekoutkast',
   'text': '館粉很多都柯粉',
   'published_at': '01/02 00:12',
   'connect_from': '114.27.70.8'},
  {'id': 27,
   'reaction': '噓',
   'author': 'valentian',
   'text': '高這樣要拿柯粉的票喔?',
   'published_at': '01/02 00:12',
   'connect_from': '123.205.150.104'},
  {'id': 28,
   'reaction': '推',
   'author': 'yannicklatte',
   'text': '11月?',
   'published_at': '01/02 00:12',
   'connect_from': '101.12.4.170'},
  {'id': 29,
   'reaction': '→',
   'author': 'lasekoutkast',
   'text': '1月9日 打太快',
   'published_at': '01/02 00:12',
   'connect_from': '114.27.70.8'},
  {'id': 30,
   'reaction': '→',
   'author': 'lasekoutkast',
   'text': '選前好像要去',
   'published_at': '01/02 00:13',
   'connect_from': '114.27.70.8'},
  {'id': 31,
   'reaction': '推',
   'author': 'AGODC',
   'text': '聽說高是台北市議員,這麼大的案子是記錯還',
   'published_at': '01/02 00:13',
   'connect_from': '27.52.36.51'},
  {'id': 32,
   'reaction': '→',
   'author': 'AGODC',
   'text': '是在操弄似是而非的抹黑?',
   'published_at': '01/02 00:13',
   'connect_from': '27.52.36.51'},
  {'id': 33,
   'reaction': '→',
   'author': 'valentian',
   'text': '看來贏李彥秀很多',
   'published_at': '01/02 00:13',
   'connect_from': '123.205.150.104'},
  {'id': 34,
   'reaction': '→',
   'author': 'lasekoutkast',
   'text': '應該贏李很多',
   'published_at': '01/02 00:14',
   'connect_from': '114.27.70.8'},
  {'id': 35,
   'reaction': '→',
   'author': 'valentian',
   'text': '老K如果能打,小黨也不用這麽辛苦',
   'published_at': '01/02 00:14',
   'connect_from': '123.205.150.104'},
  {'id': 36,
   'reaction': '推',
   'author': 'azeroth',
   'text': '反正這場選完 DPP要狂咬柯囉 準備好吧',
   'published_at': '01/02 00:14',
   'connect_from': '114.27.213.4'},
  {'id': 37,
   'reaction': '→',
   'author': 'jiaching',
   'text': '柯上館長直撥不表明支持反紅媒 館長氣的',
   'published_at': '01/02 00:14',
   'connect_from': '114.37.234.54'},
  {'id': 38,
   'reaction': '→',
   'author': 'lasekoutkast',
   'text': ' 之前高就黑過柯很多次了',
   'published_at': '01/02 00:14',
   'connect_from': '114.27.70.8'},
  {'id': 39,
   'reaction': '→',
   'author': 'jiaching',
   'text': '要死 結果反紅媒法案不過 館長又裝死了',
   'published_at': '01/02 00:14',
   'connect_from': '114.37.234.54'},
  {'id': 40,
   'reaction': '噓',
   'author': 'MADAOTW',
   'text': '假柯粉別裝了,綠畜才這樣',
   'published_at': '01/02 00:15',
   'connect_from': '180.176.98.25'},
  {'id': 41,
   'reaction': '→',
   'author': 'lasekoutkast',
   'text': '館長是愛國商人啦',
   'published_at': '01/02 00:15',
   'connect_from': '114.27.70.8'},
  {'id': 42,
   'reaction': '推',
   'author': 'a19851106',
   'text': '看清了',
   'published_at': '01/02 00:15',
   'connect_from': '123.192.210.132'},
  {'id': 43,
   'reaction': '推',
   'author': 'bolue',
   'text': '高出來講喇 這張票 你不想要就算了',
   'published_at': '01/02 00:17',
   'connect_from': '36.228.17.143'},
  {'id': 44,
   'reaction': '推',
   'author': 'hugr86',
   'text': '愛錢雙標仔商人 跟愛票風向政客 一搭一唱',
   'published_at': '01/02 00:17',
   'connect_from': '118.170.196.107'},
  {'id': 45,
   'reaction': '推',
   'author': 'aa01081008tw',
   'text': '真的是多邊形高手.一下捧一下戳都不',
   'published_at': '01/02 00:17',
   'connect_from': '36.234.218.223'},
  {'id': 46,
   'reaction': '→',
   'author': 'vow70',
   'text': '高嘉瑜這噁心政客不要臉,造謠放假消息誤導',
   'published_at': '01/02 00:17',
   'connect_from': '178.128.104.221'},
  {'id': 47,
   'reaction': '→',
   'author': 'aa01081008tw',
   'text': '知道你高嘉瑜下一步要幹嘛.佩服XD',
   'published_at': '01/02 00:18',
   'connect_from': '36.234.218.223'},
  {'id': 48,
   'reaction': '→',
   'author': 'lasekoutkast',
   'text': '港湖區的人又不知道?',
   'published_at': '01/02 00:18',
   'connect_from': '114.27.70.8'},
  {'id': 49,
   'reaction': '→',
   'author': 'vow70',
   'text': '配上無腦商人在那一搭一唱,看了就想吐。',
   'published_at': '01/02 00:18',
   'connect_from': '178.128.104.221'},
  {'id': 50,
   'reaction': '→',
   'author': 'valentian',
   'text': '高不是柯,她是八面玲瓏又長於言辭的,',
   'published_at': '01/02 00:18',
   'connect_from': '123.205.150.104'},
  {'id': 51,
   'reaction': '→',
   'author': 'lasekoutkast',
   'text': '可以跟綠營的朋友講高挺郭柯?',
   'published_at': '01/02 00:18',
   'connect_from': '114.27.70.8'},
  {'id': 52,
   'reaction': '→',
   'author': 'valentian',
   'text': '所以她說出來的話,我覺得不會令人誤解',
   'published_at': '01/02 00:18',
   'connect_from': '123.205.150.104'},
  {'id': 53,
   'reaction': '→',
   'author': 'valentian',
   'text': ',而是聽起來像什麼,就是她的意思。也',
   'published_at': '01/02 00:18',
   'connect_from': '123.205.150.104'},
  {'id': 54,
   'reaction': '→',
   'author': 'valentian',
   'text': '因此我才認為柯一定要組黨,所謂友柯人',
   'published_at': '01/02 00:18',
   'connect_from': '123.205.150.104'},
  {'id': 55,
   'reaction': '推',
   'author': 'aifighter',
   'text': '最大柯粉被講成無腦商人 這韓粉吧',
   'published_at': '01/02 00:18',
   'connect_from': '111.243.46.16'},
  {'id': 56,
   'reaction': '→',
   'author': 'valentian',
   'text': '士,不過都是需要柯才是好朋友,何志偉',
   'published_at': '01/02 00:19',
   'connect_from': '123.205.150.104'},
  {'id': 57,
   'reaction': '→',
   'author': 'lasekoutkast',
   'text': '跟柯粉講高背刺柯?',
   'published_at': '01/02 00:19',
   'connect_from': '114.27.70.8'},
  {'id': 58,
   'reaction': '→',
   'author': 'valentian',
   'text': '高不是柯,她是八面玲瓏又長於言辭的,',
   'published_at': '01/02 00:19',
   'connect_from': '123.205.150.104'},
  {'id': 59,
   'reaction': '→',
   'author': 'valentian',
   'text': '所以她說出來的話,我覺得不會令人誤解',
   'published_at': '01/02 00:19',
   'connect_from': '123.205.150.104'},
  {'id': 60,
   'reaction': '→',
   'author': 'valentian',
   'text': ',而是聽起來像什麼,就是她的意思。也',
   'published_at': '01/02 00:19',
   'connect_from': '123.205.150.104'},
  {'id': 61,
   'reaction': '→',
   'author': 'valentian',
   'text': '因此我才認為柯一定要組黨,所謂友柯人',
   'published_at': '01/02 00:19',
   'connect_from': '123.205.150.104'},
  {'id': 62,
   'reaction': '→',
   'author': 'valentian',
   'text': '士,不過都是需要柯才是好朋友,何志偉',
   'published_at': '01/02 00:19',
   'connect_from': '123.205.150.104'},
  {'id': 63,
   'reaction': '→',
   'author': 'vow70',
   'text': '最大柯粉又怎樣?無腦不懂得查證是事實。',
   'published_at': '01/02 00:19',
   'connect_from': '178.128.104.221'},
  {'id': 64,
   'reaction': '→',
   'author': 'valentian',
   'text': '就是[典範]',
   'published_at': '01/02 00:19',
   'connect_from': '123.205.150.104'},
  {'id': 65,
   'reaction': '推',
   'author': 'justiceyes',
   'text': '+<><是票太多,不需要柯粉票了嗎?呵',
   'published_at': '01/02 00:19',
   'connect_from': '220.137.44.68'},
  {'id': 66,
   'reaction': '→',
   'author': 'aifighter',
   'text': '不要再說柯拙於言詞 他是故意失言',
   'published_at': '01/02 00:19',
   'connect_from': '111.243.46.16'},
  {'id': 67,
   'reaction': '→',
   'author': 'aa01081008tw',
   'text': '還在館長是柯粉?.別脫節了.館長現在',
   'published_at': '01/02 00:20',
   'connect_from': '36.234.218.223'},
  {'id': 68,
   'reaction': '→',
   'author': 'vow70',
   'text': '每次被打臉就出來哭自己多可憐,被民進黨摸',
   'published_at': '01/02 00:20',
   'connect_from': '178.128.104.221'},
  {'id': 69,
   'reaction': '→',
   'author': 'aa01081008tw',
   'text': '不爽柯的言論很多.只是沒像對韓一樣',
   'published_at': '01/02 00:20',
   'connect_from': '36.234.218.223'},
  {'id': 70,
   'reaction': '→',
   'author': 'aa01081008tw',
   'text': '完全翻臉罷了.表面還是稱我大哥XD',
   'published_at': '01/02 00:20',
   'connect_from': '36.234.218.223'},
  {'id': 71,
   'reaction': '→',
   'author': 'aifighter',
   'text': '原來 所以柯粉真的變少了呢',
   'published_at': '01/02 00:20',
   'connect_from': '111.243.46.16'},
  {'id': 72,
   'reaction': '→',
   'author': 'vow70',
   'text': '頭馬上乖得跟小孩子一樣',
   'published_at': '01/02 00:21',
   'connect_from': '178.128.104.221'},
  {'id': 73,
   'reaction': '→',
   'author': 'aifighter',
   'text': '感謝死忠柯粉說明',
   'published_at': '01/02 00:21',
   'connect_from': '111.243.46.16'},
  {'id': 74,
   'reaction': '→',
   'author': 'aa01081008tw',
   'text': '人家現在是侯粉..真正的大哥',
   'published_at': '01/02 00:21',
   'connect_from': '36.234.218.223'},
  {'id': 75,
   'reaction': '→',
   'author': 'vow70',
   'text': '還開健身房北市刁難他咧,他怎麼不講他沒符',
   'published_at': '01/02 00:22',
   'connect_from': '178.128.104.221'},
  {'id': 76,
   'reaction': '推',
   'author': 'tpkgo',
   'text': '                      +<><畫個三角形而已',
   'published_at': '01/02 00:22',
   'connect_from': '111.254.112.229'},
  {'id': 77,
   'reaction': '→',
   'author': 'a19851106',
   'text': '反正沒過就是刁難啦 叭叭~~~~',
   'published_at': '01/02 00:22',
   'connect_from': '123.192.210.132'},
  {'id': 78,
   'reaction': '→',
   'author': 'vow70',
   'text': '合台北市法規才開不成?',
   'published_at': '01/02 00:22',
   'connect_from': '178.128.104.221'},
  {'id': 79,
   'reaction': '推',
   'author': 'poisonshing',
   'text': '幹你高價魚給我出來講清楚',
   'published_at': '01/02 00:22',
   'connect_from': '101.14.141.83'},
  {'id': 80,
   'reaction': '→',
   'author': 'lasekoutkast',
   'text': '稱柯是我大哥 暗地背刺柯 XD',
   'published_at': '01/02 00:22',
   'connect_from': '114.27.70.8'},
  {'id': 81,
   'reaction': '推',
   'author': 'stevencool',
   'text': '就是論事啊',
   'published_at': '01/02 00:23',
   'connect_from': '101.136.23.224'},
  {'id': 82,
   'reaction': '推',
   'author': 'valentian',
   'text': '我不是指柯失言的部分,我是指有些話他',
   'published_at': '01/02 00:23',
   'connect_from': '123.205.150.104'},
  {'id': 83,
   'reaction': '→',
   'author': 'valentian',
   'text': '就是沒辦法講清楚,跳來跳去。',
   'published_at': '01/02 00:23',
   'connect_from': '123.205.150.104'},
  {'id': 84,
   'reaction': '推',
   'author': 'azeroth',
   'text': '高這種站在友柯立場黑柯的 殺傷力才大',
   'published_at': '01/02 00:23',
   'connect_from': '114.27.213.4'},
  {'id': 85,
   'reaction': '→',
   'author': 'azeroth',
   'text': '跟瓜吉一樣 A_A',
   'published_at': '01/02 00:24',
   'connect_from': '114.27.213.4'},
  {'id': 86,
   'reaction': '推',
   'author': 'max0928895',
   'text': '高現在是怎樣?上演公主獻頭喔XDDDD',
   'published_at': '01/02 00:24',
   'connect_from': '111.240.216.38'},
  {'id': 87,
   'reaction': '→',
   'author': 'max0928895',
   'text': '我就不信她這樣還可以選贏李彥秀',
   'published_at': '01/02 00:24',
   'connect_from': '111.240.216.38'},
  {'id': 88,
   'reaction': '→',
   'author': 'valentian',
   'text': '拉攏年輕人和深綠吧',
   'published_at': '01/02 00:25',
   'connect_from': '123.205.150.104'},
  {'id': 89,
   'reaction': '→',
   'author': 'max0928895',
   'text': '還敢說民進黨沒有要消滅民眾黨?',
   'published_at': '01/02 00:26',
   'connect_from': '111.240.216.38'},
  {'id': 90,
   'reaction': '→',
   'author': 'valentian',
   'text': '她會贏李彥秀。良心從不是政治人物生存',
   'published_at': '01/02 00:26',
   'connect_from': '123.205.150.104'},
  {'id': 91,
   'reaction': '→',
   'author': 'valentian',
   'text': '的必須品,厚黑學才是',
   'published_at': '01/02 00:26',
   'connect_from': '123.205.150.104'},
  {'id': 92,
   'reaction': '推',
   'author': 'gg7965977',
   'text': '如果是就他所知的去講我倒是還好',
   'published_at': '01/02 00:26',
   'connect_from': '219.71.240.126'},
  {'id': 93,
   'reaction': '推',
   'author': 'aa01081008tw',
   'text': '我猜拉.高大概是看柯現在風向有點不',
   'published_at': '01/02 00:26',
   'connect_from': '36.234.218.223'},
  {'id': 94,
   'reaction': '推',
   'author': 'exceedMyself',
   'text': '要票又要黑 這黨專出這種',
   'published_at': '01/02 00:27',
   'connect_from': '27.242.37.121'},
  {'id': 95,
   'reaction': '→',
   'author': 'gg7965977',
   'text': '如果是為了選票被刺柯文哲 那該死',
   'published_at': '01/02 00:27',
   'connect_from': '219.71.240.126'},
  {'id': 96,
   'reaction': '→',
   'author': 'aa01081008tw',
   'text': '妙..來一記回馬槍把票打出來.高招',
   'published_at': '01/02 00:27',
   'connect_from': '36.234.218.223'},
  {'id': 97,
   'reaction': '→',
   'author': 'valentian',
   'text': '就她所知的去講?她台北市議員耶',
   'published_at': '01/02 00:27',
   'connect_from': '123.205.150.104'},
  {'id': 98,
   'reaction': '→',
   'author': 'azeroth',
   'text': '還是選的贏李彥秀阿 一般人不會知道這些',
   'published_at': '01/02 00:28',
   'connect_from': '114.27.213.4'},
  {'id': 99,
   'reaction': '推',
   'author': 'ghostdx',
   'text': '是指在18分左右那段?',
   'published_at': '01/02 00:28',
   'connect_from': '123.194.185.130'},
  {'id': 100,
   'reaction': '→',
   'author': 'azeroth',
   'text': '大部分人會比較像館長 被騙那種',
   'published_at': '01/02 00:28',
   'connect_from': '114.27.213.4'},
  {'id': 101,
   'reaction': '→',
   'author': 'valentian',
   'text': '明知館粉也是柯的一塊基地',
   'published_at': '01/02 00:28',
   'connect_from': '123.205.150.104'},
  {'id': 102,
   'reaction': '推',
   'author': 'sharkimage',
   'text': '最怕國民黨消失的就是民進黨+1',
   'published_at': '01/02 00:29',
   'connect_from': '218.161.27.64'},
  {'id': 103,
   'reaction': '推',
   'author': 'Shin722',
   'text': '就看柯政黨票沒威脅到民進黨,當然可以安',
   'published_at': '01/02 00:29',
   'connect_from': '114.39.195.192'},
  {'id': 104,
   'reaction': '推',
   'author': 'vow70',
   'text': '用假消息要拉票喔,怎麼沒想到被DPP監察院',
   'published_at': '01/02 00:29',
   'connect_from': '178.128.104.221'},
  {'id': 105,
   'reaction': '→',
   'author': 'Shin722',
   'text': '心的拿刀刺人囉',
   'published_at': '01/02 00:29',
   'connect_from': '114.39.195.192'},
  {'id': 106,
   'reaction': '推',
   'author': 'gg7965977',
   'text': '館粉很少柯粉了啦= =',
   'published_at': '01/02 00:29',
   'connect_from': '219.71.240.126'},
  {'id': 107,
   'reaction': '→',
   'author': 'vow70',
   'text': '和內政部打臉的事實放在選民眼前時會怎樣?',
   'published_at': '01/02 00:29',
   'connect_from': '178.128.104.221'},
  {'id': 108,
   'reaction': '→',
   'author': 'valentian',
   'text': '才不是公主獻頭,是綁公主頭w',
   'published_at': '01/02 00:29',
   'connect_from': '123.205.150.104'},
  {'id': 109,
   'reaction': '→',
   'author': 'gg7965977',
   'text': '館長想在北市開健身房 一直被擋',
   'published_at': '01/02 00:30',
   'connect_from': '219.71.240.126'},
  {'id': 110,
   'reaction': '推',
   'author': 'aa01081008tw',
   'text': '真正的鐵館粉以館粉指令為準.哪會是',
   'published_at': '01/02 00:30',
   'connect_from': '36.234.218.223'},
  {'id': 111,
   'reaction': '→',
   'author': 'aa01081008tw',
   'text': '其他人的粉..改天館長又挺KMT.這些',
   'published_at': '01/02 00:30',
   'connect_from': '36.234.218.223'},
  {'id': 112,
   'reaction': '→',
   'author': 'aa01081008tw',
   'text': '館粉180立場轉換也是很簡單的',
   'published_at': '01/02 00:31',
   'connect_from': '36.234.218.223'},
  {'id': 113,
   'reaction': '→',
   'author': 'vow70',
   'text': '商人永遠是想到自己而已啦',
   'published_at': '01/02 00:31',
   'connect_from': '178.128.104.221'},
  {'id': 114,
   'reaction': '推',
   'author': 'ghostdx',
   'text': '會看館長直播的幾乎都年輕人',
   'published_at': '01/02 00:31',
   'connect_from': '123.194.185.130'},
  {'id': 115,
   'reaction': '推',
   'author': 'lasekoutkast',
   'text': ' 像高這種友柯的 講的話殺傷力才大',
   'published_at': '01/02 00:32',
   'connect_from': '114.27.70.8'},
  {'id': 116,
   'reaction': '推',
   'author': 'sharkimage',
   'text': 'https://i.imgur.com/9pvR44J.jpg',
   'published_at': '01/02 00:32',
   'connect_from': '218.161.27.64'},
  {'id': 117,
   'reaction': '推',
   'author': 'xian',
   'text': '這種表面友好 私下背刺的最恐怖喔',
   'published_at': '01/02 00:33',
   'connect_from': '111.83.80.188'},
  {'id': 118,
   'reaction': '→',
   'author': 'ghostdx',
   'text': '其實顏色很淺 比較會看聽論述 但不見得',
   'published_at': '01/02 00:33',
   'connect_from': '123.194.185.130'},
  {'id': 119,
   'reaction': '→',
   'author': 'lasekoutkast',
   'text': '最少要讓一般人知道吧',
   'published_at': '01/02 00:33',
   'connect_from': '114.27.70.8'},
  {'id': 120,
   'reaction': '→',
   'author': 'ghostdx',
   'text': '能分辨真假',
   'published_at': '01/02 00:33',
   'connect_from': '123.194.185.130'},
  {'id': 121,
   'reaction': '→',
   'author': 'valentian',
   'text': '柯現在其實沒有很大的影響力W但以前喜',
   'published_at': '01/02 00:33',
   'connect_from': '123.205.150.104'},
  {'id': 122,
   'reaction': '→',
   'author': 'valentian',
   'text': '歡高,不介意她被說風向仔,是因為覺得',
   'published_at': '01/02 00:33',
   'connect_from': '123.205.150.104'},
  {'id': 123,
   'reaction': '→',
   'author': 'lasekoutkast',
   'text': '彥秀阿姨可以去宣傳啊',
   'published_at': '01/02 00:33',
   'connect_from': '114.27.70.8'},
  {'id': 124,
   'reaction': '→',
   'author': 'valentian',
   'text': '不管是挺柯槓上姚,或挺賴槓上小英,她',
   'published_at': '01/02 00:33',
   'connect_from': '123.205.150.104'},
  {'id': 125,
   'reaction': '→',
   'author': 'valentian',
   'text': '也還算講義氣,不是風向不對就噤聲,但',
   'published_at': '01/02 00:33',
   'connect_from': '123.205.150.104'},
  {'id': 126,
   'reaction': '→',
   'author': 'valentian',
   'text': '是今天之後,我覺得柯還是努力靠自己吧',
   'published_at': '01/02 00:34',
   'connect_from': '123.205.150.104'},
  {'id': 127,
   'reaction': '→',
   'author': 'valentian',
   'text': '0rZ',
   'published_at': '01/02 00:34',
   'connect_from': '123.205.150.104'},
  {'id': 128,
   'reaction': '→',
   'author': 'lasekoutkast',
   'text': '就講友柯的議員還背刺柯 這種人你',
   'published_at': '01/02 00:34',
   'connect_from': '114.27.70.8'},
  {'id': 129,
   'reaction': '推',
   'author': 'woaifafewen',
   'text': '那兩個人一搭一唱真的笑死',
   'published_at': '01/02 00:34',
   'connect_from': '27.96.235.247'},
  {'id': 130,
   'reaction': '→',
   'author': 'lasekoutkast',
   'text': '敢支持?',
   'published_at': '01/02 00:34',
   'connect_from': '114.27.70.8'},
  {'id': 131,
   'reaction': '→',
   'author': 'ghostdx',
   'text': 'DPP早已抓到方法處理柯的影響力',
   'published_at': '01/02 00:34',
   'connect_from': '123.194.185.130'},
  {'id': 132,
   'reaction': '推',
   'author': 'NgJovi',
   'text': '蠻可愛的',
   'published_at': '01/02 00:35',
   'connect_from': '123.194.200.134'},
  {'id': 133,
   'reaction': '→',
   'author': 'lasekoutkast',
   'text': '所以更要支持民眾黨',
   'published_at': '01/02 00:35',
   'connect_from': '114.27.70.8'},
  {'id': 134,
   'reaction': '→',
   'author': 'NgJovi',
   'text': '幹 推錯篇',
   'published_at': '01/02 00:35',
   'connect_from': '123.194.200.134'},
  {'id': 135,
   'reaction': '→',
   'author': 'lasekoutkast',
   'text': '因為擺明第一個要消滅的就是民眾黨',
   'published_at': '01/02 00:35',
   'connect_from': '114.27.70.8'},
  {'id': 136,
   'reaction': '噓',
   'author': 'NgJovi',
   'text': '噓回來',
   'published_at': '01/02 00:37',
   'connect_from': '123.194.200.134'},
  {'id': 137,
   'reaction': '→',
   'author': 'woaifafewen',
   'text': '還影射柯支持南海雙子星 明明是不爽',
   'published_at': '01/02 00:37',
   'connect_from': '27.96.235.247'},
  {'id': 138,
   'reaction': '→',
   'author': 'woaifafewen',
   'text': '投審會卡五個月不做決定',
   'published_at': '01/02 00:37',
   'connect_from': '27.96.235.247'},
  {'id': 139,
   'reaction': '推',
   'author': 'tw536653',
   'text': '我覺得他只是搞不清楚狀況,然後黨內的同',
   'published_at': '01/02 00:38',
   'connect_from': '114.27.25.248'},
  {'id': 140,
   'reaction': '推',
   'author': 'willion003',
   'text': '哈哈哈,不說我還以為執政黨是國民黨',
   'published_at': '01/02 00:38',
   'connect_from': '114.137.206.83'},
  {'id': 141,
   'reaction': '→',
   'author': 'willion003',
   'text': '呢!什麼民進黨執政?那麼就是國民黨',
   'published_at': '01/02 00:38',
   'connect_from': '114.137.206.83'},
  {'id': 142,
   'reaction': '→',
   'author': 'willion003',
   'text': '遺毒啦',
   'published_at': '01/02 00:38',
   'connect_from': '114.137.206.83'},
  {'id': 143,
   'reaction': '→',
   'author': 'tw536653',
   'text': '溫層一直扭曲,他還是退民進黨比較有救',
   'published_at': '01/02 00:38',
   'connect_from': '114.27.25.248'},
  {'id': 144,
   'reaction': '推',
   'author': 'jarry011',
   'text': '高就投機啊',
   'published_at': '01/02 00:42',
   'connect_from': '58.115.96.243'},
  {'id': 145,
   'reaction': '推',
   'author': 'williamsm',
   'text': '想不到高是這種人..',
   'published_at': '01/02 00:42',
   'connect_from': '39.8.8.188'},
  {'id': 146,
   'reaction': '推',
   'author': 'willtaiwan',
   'text': '高的事蹟大家還不清楚嗎?曾經ptt新聞',
   'published_at': '01/02 00:43',
   'connect_from': '223.140.127.240'},
  {'id': 147,
   'reaction': '→',
   'author': 'willtaiwan',
   'text': '部長亂搞,風向精的很,真的想做事柯',
   'published_at': '01/02 00:43',
   'connect_from': '223.140.127.240'},
  {'id': 148,
   'reaction': '→',
   'author': 'willtaiwan',
   'text': '找她當副市長怎麼百般拒絕的',
   'published_at': '01/02 00:43',
   'connect_from': '223.140.127.240'},
  {'id': 149,
   'reaction': '→',
   'author': 'woaifafewen',
   'text': '當議員的人最好搞不清楚狀況',
   'published_at': '01/02 00:43',
   'connect_from': '27.96.235.247'},
  {'id': 150,
   'reaction': '推',
   'author': 'stlinman',
   'text': '心機魚',
   'published_at': '01/02 00:43',
   'connect_from': '150.116.32.15'},
  {'id': 151,
   'reaction': '噓',
   'author': 'chris44099',
   'text': '嘔嘔嘔嘔嘔',
   'published_at': '01/02 00:44',
   'connect_from': '36.239.51.200'},
  {'id': 152,
   'reaction': '噓',
   'author': 'navicrops',
   'text': '柯粉真的很急呢  幫QQ',
   'published_at': '01/02 00:45',
   'connect_from': '122.117.206.137'},
  {'id': 153,
   'reaction': '推',
   'author': 'sus304',
   'text': '叫學姐跟柯幫忙站台,回頭來用假消息背刺',
   'published_at': '01/02 00:45',
   'connect_from': '110.50.151.29'},
  {'id': 154,
   'reaction': '→',
   'author': 'sus304',
   'text': ',。。。',
   'published_at': '01/02 00:45',
   'connect_from': '110.50.151.29'},
  {'id': 155,
   'reaction': '推',
   'author': 'sulabird',
   'text': 'wow DPP優質候選人',
   'published_at': '01/02 00:45',
   'connect_from': '220.129.0.20'},
  {'id': 156,
   'reaction': '推',
   'author': 'woaifafewen',
   'text': '洗那麼多篇了 蟑螂還想不到怎麼回才',
   'published_at': '01/02 00:45',
   'connect_from': '27.96.235.247'},
  {'id': 157,
   'reaction': '→',
   'author': 'woaifafewen',
   'text': '急吧',
   'published_at': '01/02 00:46',
   'connect_from': '27.96.235.247'},
  {'id': 158,
   'reaction': '推',
   'author': 'lexmrkz32',
   'text': '唉 還以為她形象好,沒想到是這種人',
   'published_at': '01/02 00:46',
   'connect_from': '124.6.9.230'},
  {'id': 159,
   'reaction': '→',
   'author': 'woaifafewen',
   'text': '希望綠蟑們明天能討論出答案喔^^',
   'published_at': '01/02 00:46',
   'connect_from': '27.96.235.247'},
  {'id': 160,
   'reaction': '→',
   'author': 'rabbit83035',
   'text': '幹 民進黨人真的都不要臉',
   'published_at': '01/02 00:47',
   'connect_from': '114.44.0.64'},
  {'id': 161,
   'reaction': '噓',
   'author': 'aaaba',
   'text': '柯糞怎麼會有蟑螂care高價魚的錯覺?蟑螂',
   'published_at': '01/02 00:51',
   'connect_from': '180.217.65.220'},
  {'id': 162,
   'reaction': '→',
   'author': 'aaaba',
   'text': '主要目標是黑柯,黑不到就默默等下個題材',
   'published_at': '01/02 00:51',
   'connect_from': '180.217.65.220'},
  {'id': 163,
   'reaction': '→',
   'author': 'aaaba',
   'text': ',不用浪費力氣護航高價魚',
   'published_at': '01/02 00:51',
   'connect_from': '180.217.65.220'},
  {'id': 164,
   'reaction': '推',
   'author': 'lasekoutkast',
   'text': 'dpp優質候選人',
   'published_at': '01/02 00:52',
   'connect_from': '42.75.107.18'},
  {'id': 165,
   'reaction': '→',
   'author': 'lasekoutkast',
   'text': '我看本篇文章都在批評高吧',
   'published_at': '01/02 00:53',
   'connect_from': '42.75.107.18'},
  {'id': 166,
   'reaction': '推',
   'author': 'terry1020',
   'text': '高甲魚黑歷史不少啊,欠黑',
   'published_at': '01/02 00:57',
   'connect_from': '180.20.122.170'},
  {'id': 167,
   'reaction': '推',
   'author': 'fytnship',
   'text': '這一段高嘉瑜真的不行 只講片面資訊',
   'published_at': '01/02 00:58',
   'connect_from': '112.105.75.33'},
  {'id': 168,
   'reaction': '推',
   'author': 'atzer2002',
   'text': '這件事不解釋絕對變高黑',
   'published_at': '01/02 01:03',
   'connect_from': '220.143.39.159'},
  {'id': 169,
   'reaction': '噓',
   'author': 'facewind',
   'text': '雙子星當初過了,不知道是否蓋的完?',
   'published_at': '01/02 01:04',
   'connect_from': '118.167.113.93'},
  {'id': 170,
   'reaction': '推',
   'author': 'ship1228',
   'text': 'dpp再無人才',
   'published_at': '01/02 01:06',
   'connect_from': '218.166.152.56'},
  {'id': 171,
   'reaction': '噓',
   'author': 'ANCEE',
   'text': '台北市又沒責任了噢 柯粉真敢說耶',
   'published_at': '01/02 01:06',
   'connect_from': '111.71.2.127'},
  {'id': 172,
   'reaction': '→',
   'author': 'ANCEE',
   'text': '好朋友繼續護航起來阿',
   'published_at': '01/02 01:06',
   'connect_from': '111.71.2.127'},
  {'id': 173,
   'reaction': '推',
   'author': 'dy2012',
   'text': '高很早就在關注這件案子了 其他人是會比她',
   'published_at': '01/02 01:07',
   'connect_from': '27.242.12.14'},
  {'id': 174,
   'reaction': '推',
   'author': 'sharkimage',
   'text': 'ANCEE覺得柯市府的責任是什麼',
   'published_at': '01/02 01:07',
   'connect_from': '218.161.27.64'},
  {'id': 175,
   'reaction': '→',
   'author': 'dy2012',
   'text': '了解?',
   'published_at': '01/02 01:07',
   'connect_from': '27.242.12.14'},
  {'id': 176,
   'reaction': '推',
   'author': 'Kelvinchen',
   'text': '高嘉瑜看來是不想要柯粉票了,民調咬',
   'published_at': '01/02 01:09',
   'connect_from': '1.200.53.39'},
  {'id': 177,
   'reaction': '→',
   'author': 'Kelvinchen',
   'text': '這麼近,還在那亂黑,不要到時落選了',
   'published_at': '01/02 01:09',
   'connect_from': '1.200.53.39'},
  {'id': 178,
   'reaction': '推',
   'author': 'chachaemail',
   'text': '給她機會説清楚吧',
   'published_at': '01/02 01:10',
   'connect_from': '124.218.40.245'},
  {'id': 179,
   'reaction': '→',
   'author': 'jackhg',
   'text': '柯糞可撥',
   'published_at': '01/02 01:13',
   'connect_from': '1.169.75.76'},
  {'id': 180,
   'reaction': '推',
   'author': 'ThisIsEasy',
   'text': '推',
   'published_at': '01/02 01:15',
   'connect_from': '59.127.173.219'},
  {'id': 181,
   'reaction': '推',
   'author': 'Jcoray',
   'text': '原來是假柯',
   'published_at': '01/02 01:24',
   'connect_from': '220.132.85.30'},
  {'id': 182,
   'reaction': '推',
   'author': 's916813',
   'text': '那時候監察院是kmt欸',
   'published_at': '01/02 01:26',
   'connect_from': '118.167.6.99'},
  {'id': 183,
   'reaction': '推',
   'author': 'ryosuke234',
   'text': '館長直播人家講甚麼就信甚麼 又不考證',
   'published_at': '01/02 01:33',
   'connect_from': '36.236.31.61'},
  {'id': 184,
   'reaction': '→',
   'author': 'ryosuke234',
   'text': '會把自己的信用搞差啦',
   'published_at': '01/02 01:33',
   'connect_from': '36.236.31.61'},
  {'id': 185,
   'reaction': '推',
   'author': 'qoomai',
   'text': '推',
   'published_at': '01/02 01:34',
   'connect_from': '218.166.9.106'},
  {'id': 186,
   'reaction': '推',
   'author': 'RAY1203',
   'text': '唉民進黨少數的清流......也變成綠色kmt',
   'published_at': '01/02 01:36',
   'connect_from': '111.251.42.2'},
  {'id': 187,
   'reaction': '推',
   'author': 'joanrey',
   'text': '她就只是講話比較溫柔的徐佳青而已',
   'published_at': '01/02 01:36',
   'connect_from': '114.136.106.2'},
  {'id': 188,
   'reaction': '推',
   'author': 'qkenny',
   'text': '推',
   'published_at': '01/02 01:37',
   'connect_from': '141.61.113.193'},
  {'id': 189,
   'reaction': '→',
   'author': 'catvsdog',
   'text': '高真的誇張',
   'published_at': '01/02 01:39',
   'connect_from': '115.82.10.37'},
  {'id': 190,
   'reaction': '噓',
   'author': 'Faust0073152',
   'text': '柯粉準備殺魚啦',
   'published_at': '01/02 01:40',
   'connect_from': '110.26.12.166'},
  {'id': 191,
   'reaction': '→',
   'author': 'commissar',
   'text': '教徒森77囉~',
   'published_at': '01/02 01:43',
   'connect_from': '118.168.26.86'},
  {'id': 192,
   'reaction': '噓',
   'author': 'sid3',
   'text': '雙子星那種渾水摸魚偷渡中資是不行的',
   'published_at': '01/02 01:46',
   'connect_from': '1.171.148.213'},
  {'id': 193,
   'reaction': '推',
   'author': 'bolue',
   'text': '雙子星不行 陽信可以 因為陽信有黨證',
   'published_at': '01/02 01:51',
   'connect_from': '36.228.17.143'},
  {'id': 194,
   'reaction': '推',
   'author': 'fxntdsxdr',
   'text': '講的好像郝市府不敢過柯市府卻過了 卻',
   'published_at': '01/02 01:53',
   'connect_from': '1.170.46.217'},
  {'id': 195,
   'reaction': '→',
   'author': 'fxntdsxdr',
   'text': '不提監察院報告輕輕帶過蠻不爽的',
   'published_at': '01/02 01:53',
   'connect_from': '1.170.46.217'},
  {'id': 196,
   'reaction': '推',
   'author': 'jesusk',
   'text': '果然是最會選舉的政黨出來的人 這也要抹~',
   'published_at': '01/02 01:55',
   'connect_from': '61.223.155.15'},
  {'id': 197,
   'reaction': '→',
   'author': 'jay7777777',
   'text': '偷渡中資不行 所以dpp是中共同路人囉',
   'published_at': '01/02 01:59',
   'connect_from': '114.41.239.50'},
  {'id': 198,
   'reaction': '推',
   'author': 'sindy520',
   'text': '要跟李彥秀競爭,結果黑柯,有事嗎?',
   'published_at': '01/02 02:16',
   'connect_from': '211.22.149.51'},
  {'id': 199,
   'reaction': '推',
   'author': 'GREENM',
   'text': '倒也不算什麼黑吧 以她的立場看起來的確是',
   'published_at': '01/02 02:19',
   'connect_from': '114.37.42.11'},
  {'id': 200,
   'reaction': '→',
   'author': 'GREENM',
   'text': '這樣',
   'published_at': '01/02 02:19',
   'connect_from': '114.37.42.11'},
  {'id': 201,
   'reaction': '推',
   'author': 'A0908',
   'text': '蟑螂趕快起來上班啦',
   'published_at': '01/02 02:25',
   'connect_from': '49.216.67.210'},
  {'id': 202,
   'reaction': '推',
   'author': 'eason10',
   'text': '推,高價魚出來說清楚,陳述事實的框架',
   'published_at': '01/02 02:33',
   'connect_from': '114.136.191.226'},
  {'id': 203,
   'reaction': '推',
   'author': 'smartwife',
   'text': '支持菸黨才可悲吧',
   'published_at': '01/02 02:33',
   'connect_from': '1.160.22.12'},
  {'id': 204,
   'reaction': '→',
   'author': 'eason10',
   'text': '沒問題嗎?',
   'published_at': '01/02 02:33',
   'connect_from': '114.136.191.226'},
  {'id': 205,
   'reaction': '推',
   'author': 'foryou168',
   'text': '有種背刺阿伯的感覺 高最好把這段給說',
   'published_at': '01/02 02:33',
   'connect_from': '36.224.141.194'},
  {'id': 206,
   'reaction': '→',
   'author': 'foryou168',
   'text': '清楚',
   'published_at': '01/02 02:33',
   'connect_from': '36.224.141.194'},
  {'id': 207,
   'reaction': '推',
   'author': 'MIKEmike07',
   'text': '柯糞崩潰啦',
   'published_at': '01/02 02:54',
   'connect_from': '67.188.29.63'},
  {'id': 208,
   'reaction': '噓',
   'author': 'JimloveJill',
   'text': '柯粉集體進攻囉',
   'published_at': '01/02 03:44',
   'connect_from': '58.114.12.165'},
  {'id': 209,
   'reaction': '→',
   'author': 'sgheart',
   'text': '好多大官',
   'published_at': '01/02 06:55',
   'connect_from': '1.34.166.113'},
  {'id': 210,
   'reaction': '推',
   'author': 'runfive',
   'text': '為何友柯的要背刺柯,柯市府依法行政',
   'published_at': '01/02 06:57',
   'connect_from': '110.28.230.102'},
  {'id': 211,
   'reaction': '→',
   'author': 'runfive',
   'text': '有錯嗎?該修法不修是代議士怠惰吧',
   'published_at': '01/02 06:59',
   'connect_from': '110.28.230.102'},
  {'id': 212,
   'reaction': '噓',
   'author': 'joeypp',
   'text': '柯粉真噁',
   'published_at': '01/02 07:08',
   'connect_from': '61.219.7.181'},
  {'id': 213,
   'reaction': '噓',
   'author': 'zsert13322',
   'text': '可憐',
   'published_at': '01/02 07:15',
   'connect_from': '27.247.160.62'},
  {'id': 214,
   'reaction': '→',
   'author': 'j357788',
   'text': '噁心柯粉',
   'published_at': '01/02 07:28',
   'connect_from': '42.72.212.80'},
  {'id': 215,
   'reaction': '→',
   'author': 'lel801511',
   'text': '講你媽啦  去你的柯粉',
   'published_at': '01/02 07:31',
   'connect_from': '39.9.132.121'},
  {'id': 216,
   'reaction': '噓',
   'author': 'johnsky75',
   'text': '太誇張了',
   'published_at': '01/02 07:35',
   'connect_from': '27.242.65.68'},
  {'id': 217,
   'reaction': '推',
   'author': 'k24315315',
   'text': '意圖風向的不能罵哦,綠共?',
   'published_at': '01/02 07:37',
   'connect_from': '126.193.77.219'},
  {'id': 218,
   'reaction': '→',
   'author': 'sharkimage',
   'text': 'https://i.imgur.com/F4aIiaP.jpg',
   'published_at': '01/02 08:03',
   'connect_from': '218.161.27.64'},
  {'id': 219,
   'reaction': '→',
   'author': 'ukif',
   'text': '綠共真無恥',
   'published_at': '01/02 08:16',
   'connect_from': '101.13.191.68'},
  {'id': 220,
   'reaction': '推',
   'author': 'smartwife',
   'text': '看到別人被抹還拍手叫好的才噁心吧',
   'published_at': '01/02 08:31',
   'connect_from': '223.136.185.89'},
  {'id': 221,
   'reaction': '→',
   'author': 'feliz5566',
   'text': '柯粉吃屎 糙',
   'published_at': '01/02 08:47',
   'connect_from': '45.77.214.16'},
  {'id': 222,
   'reaction': '推',
   'author': 'surelose',
   'text': '高沒柯粉贏得了李嗎? 李在2016大逆風仍',
   'published_at': '01/02 09:07',
   'connect_from': '180.204.181.49'},
  {'id': 223,
   'reaction': '→',
   'author': 'surelose',
   'text': '贏耶 還是高不在乎柯粉票?',
   'published_at': '01/02 09:07',
   'connect_from': '180.204.181.49'},
  {'id': 224,
   'reaction': '推',
   'author': 'leo6543210',
   'text': '推',
   'published_at': '01/02 09:21',
   'connect_from': '111.82.234.87'},
  {'id': 225,
   'reaction': '噓',
   'author': 'jimichang',
   'text': '看一次黑一次 好可怕',
   'published_at': '01/02 10:00',
   'connect_from': '211.72.129.191'},
  {'id': 226,
   'reaction': '推',
   'author': 'ccuman',
   'text': '噁心蟑螂還是太多了',
   'published_at': '01/02 10:04',
   'connect_from': '36.226.28.85'},
  {'id': 227,
   'reaction': '噓',
   'author': 'leehom309536',
   'text': '郝不過為何柯會過',
   'published_at': '01/02 10:09',
   'connect_from': '106.1.221.72'},
  {'id': 228,
   'reaction': '推',
   'author': 'dreamelves',
   'text': '背刺!',
   'published_at': '01/02 10:55',
   'connect_from': '223.136.119.62'},
  {'id': 229,
   'reaction': '推',
   'author': 'CleanThunder',
   'text': '講的很好只挑自己有利的說',
   'published_at': '01/02 11:37',
   'connect_from': '117.19.140.197'},
  {'id': 230,
   'reaction': '推',
   'author': 'dog118113',
   'text': '噁心魚',
   'published_at': '01/02 11:44',
   'connect_from': '39.13.135.55'},
  {'id': 231,
   'reaction': '推',
   'author': 'Jameshunter',
   'text': '顆顆 監察院+中央政府突然都神隱了',
   'published_at': '01/02 13:35',
   'connect_from': '140.109.214.4'},
  {'id': 232,
   'reaction': '推',
   'author': 'hcln24',
   'text': 'kmt倒了ddp就是下一個拉 難怪kmt倒不了',
   'published_at': '01/02 17:36',
   'connect_from': '42.75.169.14'},
  {'id': 233,
   'reaction': '→',
   'author': 'insingW',
   'text': '噁心,還裝',
   'published_at': '01/02 19:25',
   'connect_from': '114.32.204.170'}]}

2- Building a Commenter-to-Post Dictionary (30 points)#

To cluster commenters based on their behavior, we need to create a commenter feature – a commenter-to-feature matrix. Possible features could include login hours or, simply, the post IDs they have commented on.

In this context, we will use the post IDs on which they have commented as the commenter features. To start, we must construct a dictionary that maps commenters to the posts they have commented on. In other words, we will associate commenter names with a list of post IDs (I recommend treating canonical_url as a post ID).

import re
commentor2post = {}
# your code here

len(commentor2post)
3435

Verification: Output the total number of commenters in the dataset.

# Verification
len(commentor2post)
3435

3- Convert to commenter-to-posts matrix (20 points)#

Step 1: build up commenter-to-posts dictionary#

如果你卡在這邊,要回去看看Clustering教學,注意要被丟進去算tf-idf的documents的資料型態長什麼樣子,也就是這一行程式碼X = vectorizer.fit_transform(documents)documents是什麼型態。

If you are stuck here, please go back and review the Clustering Tutorial. Pay attention to what the data type of the documents that are being used for TF-IDF calculation should look like. In other words, consider what the documents variable in this line of code X = vectorizer.fit_transform(documents) should be in terms of data type.

Hints: commentor_posts[0] should look like this

commentor_posts[0]
'M.1577894589.A.09F M.1577894589.A.09F M.1577894589.A.09F M.1577894589.A.09F M.1577896480.A.640 M.1577947067.A.EAE M.1577947067.A.EAE M.1577978408.A.09B'
commentor_posts = []
# your code here

commentor_posts[0]
'M.1577894589.A.09F M.1577894589.A.09F M.1577894589.A.09F M.1577894589.A.09F M.1577896480.A.640 M.1577947067.A.EAE M.1577947067.A.EAE M.1577978408.A.09B'

Step 2: Using CountVectorizer#

Now, you should follow the code below to construct commentor features (The code below builds a document-to-term matrix.) If you get stuck here, remember to ask ChaGPT for help. Hint: Use CountVectorizer instead of TfidfVectorizer.

vectorizer = TfidfVectorizer(
    ngram_range = (1, 2),
    max_df =0.2,
    token_pattern = r"(?u)\b\w+\b",
    use_idf = True
)
X = vectorizer.fit_transform(documents)
from sklearn.feature_extraction.text import CountVectorizer

vectorizer = CountVectorizer(
    # ngram_range=(1, 2),
    max_df=0.2,
    # token_pattern=r"(?u)\b\w+\b"
)

X = vectorizer.fit_transform(commentor_posts)

Clustering (20 points)#

Now that we have the commenter-to-posts matrix X, we can utilize HDBSCAN to cluster the commenters.

# your code here


print(f"{cluster_counter[-1]/len(commentor2post):.2%} 的人沒有被分群")
print(f"分群數量: {len(cluster_counter)-1}")
19.91% 的人沒有被分群
分群數量: 17

Visualization Using UMAP (10+20points)#

To facilitate clearer observation, you might consider exploring various dimension reduction algorithms, such as TSNE and UMAP. After experimenting with both, I ultimately chose TSNE for my analysis.

from sklearn.manifold import TSNE
# Your code here
# points = ...
import umap
# points = ...
import matplotlib.pyplot as plt
import numpy as np
plt.figure(figsize=(32, 32), dpi=300)

# Your code here
/var/folders/j3/p4x0mssx55nd8dn903h5wdb00000gn/T/ipykernel_94522/3180840412.py:10: MatplotlibDeprecationWarning: The get_cmap function was deprecated in Matplotlib 3.7 and will be removed two minor releases later. Use ``matplotlib.colormaps[name]`` or ``matplotlib.colormaps.get_cmap(obj)`` instead.
  cmap = plt.cm.get_cmap('viridis', len(set(labels)))
18
../_images/2410840dd0a92f6a6954ef99635e745219f85d339df4e5f39613864ee4d50302.png