協作閣

開源協作部落格

Revisiting Yibo (一波)

Jessica / 2019-04-12 /


上(上?)週的meeting老師提到使用語料庫的事情,說希望大家多多利用我們“自產自銷”的PTT語料庫,也許能在過程中提供可以修改、改進的地方。這讓我想到我上一次使用PTT語料庫已經是約莫一年前,在“語言與文化”課上的期末報告,主題是V+一波 (e.g., 怒吃一波、爽買一波)的這個網路上新興的用法。我發現V+一波前的動詞幾乎都是特定某幾種動詞:像是activity verb(活動動詞)semelfactive verb(瞬時動詞) 、偶爾也跟 stative verb (靜態動詞) 在一起。 這裡為大家科普複習一下這些動詞的特性: * activity verb(活動動詞) : 沒有「終結性」和「瞬時性」的非靜態動詞,表達持續進行的活動,例如「吃」。 * semelfactive verb(瞬時動詞):沒有「終結性」但有「瞬時性」的非靜態動詞,表達瞬間發生的事件,例如「漲」、「衝」。 * stative verb (靜態動詞):不表示變化、只表示靜止狀態的動詞,例如「認真」、「認識」。 * accomplishment verb(成就動詞): 有「終結性」但沒有「瞬時性」的非靜態動詞,表達持續進行以至達到終結點的活動,例如「度過」。 * achievement verb(達成動詞): 有「終結性」和「瞬時性」的非靜態動詞,表達瞬間達到終結點的事件,例如「看見」。

我當時用了PTT語料庫作為語料來源,總共看了105筆有“V+一波”的語料,但那時候所有分析過程幾乎都是手動的,一筆一筆自己看、自己標記、分類,看得我頭昏眼花又沒效率。因此這次我決定重新用較為“自動化”的方法,找出與“一波”最常一起出現的動詞及其類型(但當然標記分類還是要靠手動QQ),但工作已經輕鬆許多。

下面是使用PMI(Pointwise Mutual Information)關聯值的方法,找出語料裡與“一波”關聯度最高的詞。PMI主要是分析兩個字之間是否存在某種關係, 例如某些字比較容易一起出現, 這些字一起出現時, 可能就帶有某種訊息。例如, 在新聞報導中, 有 New , York , 這兩個字一起出現, 可以代表一個地名 New York , 所以當出現了 New 這個字, 則有可能出現 York。

它的公式如下: $$ pmi(x,y)=log \frac{P(x,y)}{P(x) \times P(y)}$$

P(x,y) 代表文字 x 和文字 y 一起出現的機率, 而 P(x) 為文字 x 出現的機率 , P(y) 為文字 y 出現的機率。 如果某兩個字的出現是獨立事件, 則 PMI 為 0; 若有兩個字出現的機率不是獨立事件,表示這兩個字的出現越不是偶然,則 PMI 越高(>0)。

把從PTT語料庫擷取下來、105筆有“V+一波”的語料,進行斷詞:

# 105 sentences
import nltk
from nltk.util import ngrams
import collections
import math
from collections import Counter
corpus="國際 油價 大跌 小 賺 一波 好 舒服 爽 睡 一波 飲料 的 價格 又 怒 漲 了 一波 不 看 了 決定 怒 睡 一波 可以 出 個 聲 讓 我 羨慕 一波 嗎 ? 漲停 之前 也 緩 漲 一波 了 當時 大 當 機 也 被 掃 到 一波 上網 約 砲 心 有 不甘 決定 怒 告 一波 被 狂飆 一波 我 想 大便 先 去 一波 了 自己 先 去 怒 吃 一波 朋友 去 了 昨天 也 怒 衝 一波 等等 跟 室友 再 去 吃 一波 買 個 點數 怒 花 一波 想 說 怒 嗆 他 一波 看到 餛飩 麵 回家 大 吃 一波 天 冷冷 就是 要 吃 一波 火鍋 房價 就是 因 為 這種 惡 炒 後 大 漲 一波 過年 看來 會 忙 一波 被 撞死 之後 又 可以 爽 領 一波 賠償金 了 只好 怒 嗆 女友 一波 只好 先 等 一波 寒假 想 回家 偷 練 一波 吉他 太 破爛 先 被 推銷 一波 聽說 風 評 不錯 下檔 前 衝 一波 又 被 前任 閃 怒 徵 一波 想不到 年底 還 會 哭 一波 大家 看看 會 不會 在 漲 一波 我 周末 要衝 一波 怒 熬夜 準備 一波 更新 完 想 跟 著 炫耀 一波 可惡 阿 怒 吃 一波 所有 東西 都 趁勢 怒 漲 一波 男同事 怒斥 她 一波 五點 多 回來 怒 睡 一波 想 說 可以 定存 一波 等等 我 要 怒 吃 一波 倫敦 三日 遊 老老實實 代購 一波 已經 拚 到 這樣 輸 這 一波 拿 著 旗 桿 放 上 國旗 怒 掛 一波 我 也 在 臉 書上 跟風 一波 暗示 我 要衝 一波 嗎 ? 看到 5 吋 iphone 就 怒 換 一波 價格 跟 這 新莊 線 通車 怒 漲 一波 物價 通通 都 漲 了 一波 用 很 久 了 想 說 可以 爽 換 一波 一 早就 和 男友 熱血 一波 我 就 怒 嗆 他 一波 價格 年前 狂漲 一波 心情 憂鬱 只好 怒 吃 一波 這時候 竟然 給 我 下雨 一波 怒 嗆 他 一波 明天 去 怒 買 一波 我 就 去 隔壁 怒 徵 一波 好 無聊 怒 睡 一波 午覺 回家 怒 睡 一波 三個 同學 怒 衝 了 一波 劍湖山 朋友 壓力 大 的 時候 怒 睡 一波 人氣 還 因此 再 翻 漲 一波 下次 看到 你 先 陰 你 一波 我 睡 了 一波 之後 還是 好累 七月 漲價 今天 來 怒 吃 一波 在 外面 走 個 十分鐘 就 爆 汗 一波 是不是 應該 先 喝 一波 早餐 店 奶茶 清清 腸胃 是不是 連鎖 飲料店 決定 再 漲價 一波 呢 快點 開始 一波 連勝 吧 還是 我 應該 嗆 他 一波 跟 市長 爽 賺 一波 來 麥當勞 怒 吃 一波 回敬 一波 他們 想要 怒 打 一波 會戰 補完 了 漫畫 也 衝 了 一波 電影 XXX 被 打 了 一波 俄國 自己 用 核武 反 打 一波 價格 都 沒變 只好 怒 吃 一波 了 還 不如 把 錢 拿 去 怒 吃 一波 請 幫 解釋 一波 一樣 要 怒 吃 一波 明天 再 去 怒 買 一波 好 想 怒 衝 台 中 一波 怒 吃 一波 東區 美食街 要 開獎 囉 當然 怒 衝 一波 跟 同學 騎車 衝 了 一波 我 也 想 試 一波 趁 發 廢 文 認真 一波 各國 ( 價格 ) 幾乎 都 漲 了 一波 不聽話 的 又 開始 洗腦 一波 想必 有 鄉民 也 有 賺 到 一波 吧 ? 馬上 怒 買 一波 所以 今天 決定 怒 吃 一波 怒 吃 一波 明天 放學 要衝 一波 燈會 想要 穩定 又 要 搞 一波 趁 這次 去 香港 大 掃 一波 只是 一時 興起 想 說 勸 她 一波 我 要 不要 怒 衝 消夜 一波 我 一定 怒 嗆 他 一波 睡 起來 再 吃 一波"
texts=corpus.split()
#詞頻字典
word_cntdict=collections.Counter (texts)
#ngram 計數字典
ngram_cntdict=collections.Counter(ngrams(texts,3))
ngram_cntdict
Counter({('國際', '油價', '大跌'): 1,
         ('油價', '大跌', '小'): 1,
         ('大跌', '小', '賺'): 1,
         ('小', '賺', '一波'): 1,
         ('賺', '一波', '好'): 1,
         ('一波', '好', '舒服'): 1,
         ('好', '舒服', '爽'): 1,
         ('舒服', '爽', '睡'): 1,
         ('爽', '睡', '一波'): 1,
         ('睡', '一波', '飲料'): 1,
         ('一波', '飲料', '的'): 1,
         ('飲料', '的', '價格'): 1,
         ('的', '價格', '又'): 1,
         ('價格', '又', '怒'): 1,
         ('又', '怒', '漲'): 1,
         ('怒', '漲', '了'): 1,
         ('漲', '了', '一波'): 3,
         ('了', '一波', '不'): 1,
         ('一波', '不', '看'): 1,
         ('不', '看', '了'): 1,
         ('看', '了', '決定'): 1,
         ('了', '決定', '怒'): 1,
         ('決定', '怒', '睡'): 1,
         ('怒', '睡', '一波'): 5,
         ('睡', '一波', '可以'): 1,
         ('一波', '可以', '出'): 1,
         ('可以', '出', '個'): 1,
         ('出', '個', '聲'): 1,
         ('個', '聲', '讓'): 1,
         ('聲', '讓', '我'): 1,
         ('讓', '我', '羨慕'): 1,
         ('我', '羨慕', '一波'): 1,
         ('羨慕', '一波', '嗎'): 1,
         ('一波', '嗎', '?'): 2,
         ('嗎', '?', '漲停'): 1,
         ('?', '漲停', '之前'): 1,
         ('漲停', '之前', '也'): 1,
         ('之前', '也', '緩'): 1,
         ('也', '緩', '漲'): 1,
         ('緩', '漲', '一波'): 1,
         ('漲', '一波', '了'): 1,
         ('一波', '了', '當時'): 1,
         ('了', '當時', '大'): 1,
         ('當時', '大', '當'): 1,
         ('大', '當', '機'): 1,
         ('當', '機', '也'): 1,
         ('機', '也', '被'): 1,
         ('也', '被', '掃'): 1,
         ('被', '掃', '到'): 1,
         ('掃', '到', '一波'): 1,
         ('到', '一波', '上網'): 1,
         ('一波', '上網', '約'): 1,
         ('上網', '約', '砲'): 1,
         ('約', '砲', '心'): 1,
         ('砲', '心', '有'): 1,
         ('心', '有', '不甘'): 1,
         ('有', '不甘', '決定'): 1,
         ('不甘', '決定', '怒'): 1,
         ('決定', '怒', '告'): 1,
         ('怒', '告', '一波'): 1,
         ('告', '一波', '被'): 1,
         ('一波', '被', '狂飆'): 1,
         ('被', '狂飆', '一波'): 1,
         ('狂飆', '一波', '我'): 1,
         ('一波', '我', '想'): 1,
         ('我', '想', '大便'): 1,
         ('想', '大便', '先'): 1,
         ('大便', '先', '去'): 1,
         ('先', '去', '一波'): 1,
         ('去', '一波', '了'): 1,
         ('一波', '了', '自己'): 1,
         ('了', '自己', '先'): 1,
         ('自己', '先', '去'): 1,
         ('先', '去', '怒'): 1,
         ('去', '怒', '吃'): 2,
         ('怒', '吃', '一波'): 12,
         ('吃', '一波', '朋友'): 1,
         ('一波', '朋友', '去'): 1,
         ('朋友', '去', '了'): 1,
         ('去', '了', '昨天'): 1,
         ('了', '昨天', '也'): 1,
         ('昨天', '也', '怒'): 1,
         ('也', '怒', '衝'): 1,
         ('怒', '衝', '一波'): 2,
         ('衝', '一波', '等等'): 1,
         ('一波', '等等', '跟'): 1,
         ('等等', '跟', '室友'): 1,
         ('跟', '室友', '再'): 1,
         ('室友', '再', '去'): 1,
         ('再', '去', '吃'): 1,
         ('去', '吃', '一波'): 1,
         ('吃', '一波', '買'): 1,
         ('一波', '買', '個'): 1,
         ('買', '個', '點數'): 1,
         ('個', '點數', '怒'): 1,
         ('點數', '怒', '花'): 1,
         ('怒', '花', '一波'): 1,
         ('花', '一波', '想'): 1,
         ('一波', '想', '說'): 2,
         ('想', '說', '怒'): 1,
         ('說', '怒', '嗆'): 1,
         ('怒', '嗆', '他'): 4,
         ('嗆', '他', '一波'): 5,
         ('他', '一波', '看到'): 1,
         ('一波', '看到', '餛飩'): 1,
         ('看到', '餛飩', '麵'): 1,
         ('餛飩', '麵', '回家'): 1,
         ('麵', '回家', '大'): 1,
         ('回家', '大', '吃'): 1,
         ('大', '吃', '一波'): 1,
         ('吃', '一波', '天'): 1,
         ('一波', '天', '冷冷'): 1,
         ('天', '冷冷', '就是'): 1,
         ('冷冷', '就是', '要'): 1,
         ('就是', '要', '吃'): 1,
         ('要', '吃', '一波'): 1,
         ('吃', '一波', '火鍋'): 1,
         ('一波', '火鍋', '房價'): 1,
         ('火鍋', '房價', '就是'): 1,
         ('房價', '就是', '因'): 1,
         ('就是', '因', '為'): 1,
         ('因', '為', '這種'): 1,
         ('為', '這種', '惡'): 1,
         ('這種', '惡', '炒'): 1,
         ('惡', '炒', '後'): 1,
         ('炒', '後', '大'): 1,
         ('後', '大', '漲'): 1,
         ('大', '漲', '一波'): 1,
         ('漲', '一波', '過年'): 1,
         ('一波', '過年', '看來'): 1,
         ('過年', '看來', '會'): 1,
         ('看來', '會', '忙'): 1,
         ('會', '忙', '一波'): 1,
         ('忙', '一波', '被'): 1,
         ('一波', '被', '撞死'): 1,
         ('被', '撞死', '之後'): 1,
         ('撞死', '之後', '又'): 1,
         ('之後', '又', '可以'): 1,
         ('又', '可以', '爽'): 1,
         ('可以', '爽', '領'): 1,
         ('爽', '領', '一波'): 1,
         ('領', '一波', '賠償金'): 1,
         ('一波', '賠償金', '了'): 1,
         ('賠償金', '了', '只好'): 1,
         ('了', '只好', '怒'): 1,
         ('只好', '怒', '嗆'): 1,
         ('怒', '嗆', '女友'): 1,
         ('嗆', '女友', '一波'): 1,
         ('女友', '一波', '只好'): 1,
         ('一波', '只好', '先'): 1,
         ('只好', '先', '等'): 1,
         ('先', '等', '一波'): 1,
         ('等', '一波', '寒假'): 1,
         ('一波', '寒假', '想'): 1,
         ('寒假', '想', '回家'): 1,
         ('想', '回家', '偷'): 1,
         ('回家', '偷', '練'): 1,
         ('偷', '練', '一波'): 1,
         ('練', '一波', '吉他'): 1,
         ('一波', '吉他', '太'): 1,
         ('吉他', '太', '破爛'): 1,
         ('太', '破爛', '先'): 1,
         ('破爛', '先', '被'): 1,
         ('先', '被', '推銷'): 1,
         ('被', '推銷', '一波'): 1,
         ('推銷', '一波', '聽說'): 1,
         ('一波', '聽說', '風'): 1,
         ('聽說', '風', '評'): 1,
         ('風', '評', '不錯'): 1,
         ('評', '不錯', '下檔'): 1,
         ('不錯', '下檔', '前'): 1,
         ('下檔', '前', '衝'): 1,
         ('前', '衝', '一波'): 1,
         ('衝', '一波', '又'): 1,
         ('一波', '又', '被'): 1,
         ('又', '被', '前任'): 1,
         ('被', '前任', '閃'): 1,
         ('前任', '閃', '怒'): 1,
         ('閃', '怒', '徵'): 1,
         ('怒', '徵', '一波'): 2,
         ('徵', '一波', '想不到'): 1,
         ('一波', '想不到', '年底'): 1,
         ('想不到', '年底', '還'): 1,
         ('年底', '還', '會'): 1,
         ('還', '會', '哭'): 1,
         ('會', '哭', '一波'): 1,
         ('哭', '一波', '大家'): 1,
         ('一波', '大家', '看看'): 1,
         ('大家', '看看', '會'): 1,
         ('看看', '會', '不會'): 1,
         ('會', '不會', '在'): 1,
         ('不會', '在', '漲'): 1,
         ('在', '漲', '一波'): 1,
         ('漲', '一波', '我'): 1,
         ('一波', '我', '周末'): 1,
         ('我', '周末', '要衝'): 1,
         ('周末', '要衝', '一波'): 1,
         ('要衝', '一波', '怒'): 1,
         ('一波', '怒', '熬夜'): 1,
         ('怒', '熬夜', '準備'): 1,
         ('熬夜', '準備', '一波'): 1,
         ('準備', '一波', '更新'): 1,
         ('一波', '更新', '完'): 1,
         ('更新', '完', '想'): 1,
         ('完', '想', '跟'): 1,
         ('想', '跟', '著'): 1,
         ('跟', '著', '炫耀'): 1,
         ('著', '炫耀', '一波'): 1,
         ('炫耀', '一波', '可惡'): 1,
         ('一波', '可惡', '阿'): 1,
         ('可惡', '阿', '怒'): 1,
         ('阿', '怒', '吃'): 1,
         ('吃', '一波', '所有'): 1,
         ('一波', '所有', '東西'): 1,
         ('所有', '東西', '都'): 1,
         ('東西', '都', '趁勢'): 1,
         ('都', '趁勢', '怒'): 1,
         ('趁勢', '怒', '漲'): 1,
         ('怒', '漲', '一波'): 2,
         ('漲', '一波', '男同事'): 1,
         ('一波', '男同事', '怒斥'): 1,
         ('男同事', '怒斥', '她'): 1,
         ('怒斥', '她', '一波'): 1,
         ('她', '一波', '五點'): 1,
         ('一波', '五點', '多'): 1,
         ('五點', '多', '回來'): 1,
         ('多', '回來', '怒'): 1,
         ('回來', '怒', '睡'): 1,
         ('睡', '一波', '想'): 1,
         ('想', '說', '可以'): 2,
         ('說', '可以', '定存'): 1,
         ('可以', '定存', '一波'): 1,
         ('定存', '一波', '等等'): 1,
         ('一波', '等等', '我'): 1,
         ('等等', '我', '要'): 1,
         ('我', '要', '怒'): 1,
         ('要', '怒', '吃'): 2,
         ('吃', '一波', '倫敦'): 1,
         ('一波', '倫敦', '三日'): 1,
         ('倫敦', '三日', '遊'): 1,
         ('三日', '遊', '老老實實'): 1,
         ('遊', '老老實實', '代購'): 1,
         ('老老實實', '代購', '一波'): 1,
         ('代購', '一波', '已經'): 1,
         ('一波', '已經', '拚'): 1,
         ('已經', '拚', '到'): 1,
         ('拚', '到', '這樣'): 1,
         ('到', '這樣', '輸'): 1,
         ('這樣', '輸', '這'): 1,
         ('輸', '這', '一波'): 1,
         ('這', '一波', '拿'): 1,
         ('一波', '拿', '著'): 1,
         ('拿', '著', '旗'): 1,
         ('著', '旗', '桿'): 1,
         ('旗', '桿', '放'): 1,
         ('桿', '放', '上'): 1,
         ('放', '上', '國旗'): 1,
         ('上', '國旗', '怒'): 1,
         ('國旗', '怒', '掛'): 1,
         ('怒', '掛', '一波'): 1,
         ('掛', '一波', '我'): 1,
         ('一波', '我', '也'): 2,
         ('我', '也', '在'): 1,
         ('也', '在', '臉'): 1,
         ('在', '臉', '書上'): 1,
         ('臉', '書上', '跟風'): 1,
         ('書上', '跟風', '一波'): 1,
         ('跟風', '一波', '暗示'): 1,
         ('一波', '暗示', '我'): 1,
         ('暗示', '我', '要衝'): 1,
         ('我', '要衝', '一波'): 1,
         ('要衝', '一波', '嗎'): 1,
         ('嗎', '?', '看到'): 1,
         ('?', '看到', '5'): 1,
         ('看到', '5', '吋'): 1,
         ('5', '吋', 'iphone'): 1,
         ('吋', 'iphone', '就'): 1,
         ('iphone', '就', '怒'): 1,
         ('就', '怒', '換'): 1,
         ('怒', '換', '一波'): 1,
         ('換', '一波', '價格'): 1,
         ('一波', '價格', '跟'): 1,
         ('價格', '跟', '這'): 1,
         ('跟', '這', '新莊'): 1,
         ('這', '新莊', '線'): 1,
         ('新莊', '線', '通車'): 1,
         ('線', '通車', '怒'): 1,
         ('通車', '怒', '漲'): 1,
         ('漲', '一波', '物價'): 1,
         ('一波', '物價', '通通'): 1,
         ('物價', '通通', '都'): 1,
         ('通通', '都', '漲'): 1,
         ('都', '漲', '了'): 2,
         ('了', '一波', '用'): 1,
         ('一波', '用', '很'): 1,
         ('用', '很', '久'): 1,
         ('很', '久', '了'): 1,
         ('久', '了', '想'): 1,
         ('了', '想', '說'): 1,
         ('說', '可以', '爽'): 1,
         ('可以', '爽', '換'): 1,
         ('爽', '換', '一波'): 1,
         ('換', '一波', '一'): 1,
         ('一波', '一', '早就'): 1,
         ('一', '早就', '和'): 1,
         ('早就', '和', '男友'): 1,
         ('和', '男友', '熱血'): 1,
         ('男友', '熱血', '一波'): 1,
         ('熱血', '一波', '我'): 1,
         ('一波', '我', '就'): 2,
         ('我', '就', '怒'): 1,
         ('就', '怒', '嗆'): 1,
         ('他', '一波', '價格'): 1,
         ('一波', '價格', '年前'): 1,
         ('價格', '年前', '狂漲'): 1,
         ('年前', '狂漲', '一波'): 1,
         ('狂漲', '一波', '心情'): 1,
         ('一波', '心情', '憂鬱'): 1,
         ('心情', '憂鬱', '只好'): 1,
         ('憂鬱', '只好', '怒'): 1,
         ('只好', '怒', '吃'): 2,
         ('吃', '一波', '這時候'): 1,
         ('一波', '這時候', '竟然'): 1,
         ('這時候', '竟然', '給'): 1,
         ('竟然', '給', '我'): 1,
         ('給', '我', '下雨'): 1,
         ('我', '下雨', '一波'): 1,
         ('下雨', '一波', '怒'): 1,
         ('一波', '怒', '嗆'): 1,
         ('他', '一波', '明天'): 1,
         ('一波', '明天', '去'): 1,
         ('明天', '去', '怒'): 1,
         ('去', '怒', '買'): 2,
         ('怒', '買', '一波'): 3,
         ('買', '一波', '我'): 1,
         ('我', '就', '去'): 1,
         ('就', '去', '隔壁'): 1,
         ('去', '隔壁', '怒'): 1,
         ('隔壁', '怒', '徵'): 1,
         ('徵', '一波', '好'): 1,
         ('一波', '好', '無聊'): 1,
         ('好', '無聊', '怒'): 1,
         ('無聊', '怒', '睡'): 1,
         ('睡', '一波', '午覺'): 1,
         ('一波', '午覺', '回家'): 1,
         ('午覺', '回家', '怒'): 1,
         ('回家', '怒', '睡'): 1,
         ('睡', '一波', '三個'): 1,
         ('一波', '三個', '同學'): 1,
         ('三個', '同學', '怒'): 1,
         ('同學', '怒', '衝'): 1,
         ('怒', '衝', '了'): 1,
         ('衝', '了', '一波'): 3,
         ('了', '一波', '劍湖山'): 1,
         ('一波', '劍湖山', '朋友'): 1,
         ('劍湖山', '朋友', '壓力'): 1,
         ('朋友', '壓力', '大'): 1,
         ('壓力', '大', '的'): 1,
         ('大', '的', '時候'): 1,
         ('的', '時候', '怒'): 1,
         ('時候', '怒', '睡'): 1,
         ('睡', '一波', '人氣'): 1,
         ('一波', '人氣', '還'): 1,
         ('人氣', '還', '因此'): 1,
         ('還', '因此', '再'): 1,
         ('因此', '再', '翻'): 1,
         ('再', '翻', '漲'): 1,
         ('翻', '漲', '一波'): 1,
         ('漲', '一波', '下次'): 1,
         ('一波', '下次', '看到'): 1,
         ('下次', '看到', '你'): 1,
         ('看到', '你', '先'): 1,
         ('你', '先', '陰'): 1,
         ('先', '陰', '你'): 1,
         ('陰', '你', '一波'): 1,
         ('你', '一波', '我'): 1,
         ('一波', '我', '睡'): 1,
         ('我', '睡', '了'): 1,
         ('睡', '了', '一波'): 1,
         ('了', '一波', '之後'): 1,
         ('一波', '之後', '還是'): 1,
         ('之後', '還是', '好累'): 1,
         ('還是', '好累', '七月'): 1,
         ('好累', '七月', '漲價'): 1,
         ('七月', '漲價', '今天'): 1,
         ('漲價', '今天', '來'): 1,
         ('今天', '來', '怒'): 1,
         ('來', '怒', '吃'): 1,
         ('吃', '一波', '在'): 1,
         ('一波', '在', '外面'): 1,
         ('在', '外面', '走'): 1,
         ('外面', '走', '個'): 1,
         ('走', '個', '十分鐘'): 1,
         ('個', '十分鐘', '就'): 1,
         ('十分鐘', '就', '爆'): 1,
         ('就', '爆', '汗'): 1,
         ('爆', '汗', '一波'): 1,
         ('汗', '一波', '是不是'): 1,
         ('一波', '是不是', '應該'): 1,
         ('是不是', '應該', '先'): 1,
         ('應該', '先', '喝'): 1,
         ('先', '喝', '一波'): 1,
         ('喝', '一波', '早餐'): 1,
         ('一波', '早餐', '店'): 1,
         ('早餐', '店', '奶茶'): 1,
         ('店', '奶茶', '清清'): 1,
         ('奶茶', '清清', '腸胃'): 1,
         ('清清', '腸胃', '是不是'): 1,
         ('腸胃', '是不是', '連鎖'): 1,
         ('是不是', '連鎖', '飲料店'): 1,
         ('連鎖', '飲料店', '決定'): 1,
         ('飲料店', '決定', '再'): 1,
         ('決定', '再', '漲價'): 1,
         ('再', '漲價', '一波'): 1,
         ('漲價', '一波', '呢'): 1,
         ('一波', '呢', '快點'): 1,
         ('呢', '快點', '開始'): 1,
         ('快點', '開始', '一波'): 1,
         ('開始', '一波', '連勝'): 1,
         ('一波', '連勝', '吧'): 1,
         ('連勝', '吧', '還是'): 1,
         ('吧', '還是', '我'): 1,
         ('還是', '我', '應該'): 1,
         ('我', '應該', '嗆'): 1,
         ('應該', '嗆', '他'): 1,
         ('他', '一波', '跟'): 1,
         ('一波', '跟', '市長'): 1,
         ('跟', '市長', '爽'): 1,
         ('市長', '爽', '賺'): 1,
         ('爽', '賺', '一波'): 1,
         ('賺', '一波', '來'): 1,
         ('一波', '來', '麥當勞'): 1,
         ('來', '麥當勞', '怒'): 1,
         ('麥當勞', '怒', '吃'): 1,
         ('吃', '一波', '回敬'): 1,
         ('一波', '回敬', '一波'): 1,
         ('回敬', '一波', '他們'): 1,
         ('一波', '他們', '想要'): 1,
         ('他們', '想要', '怒'): 1,
         ('想要', '怒', '打'): 1,
         ('怒', '打', '一波'): 1,
         ('打', '一波', '會戰'): 1,
         ('一波', '會戰', '補完'): 1,
         ('會戰', '補完', '了'): 1,
         ('補完', '了', '漫畫'): 1,
         ('了', '漫畫', '也'): 1,
         ('漫畫', '也', '衝'): 1,
         ('也', '衝', '了'): 1,
         ('了', '一波', '電影'): 1,
         ('一波', '電影', 'XXX'): 1,
         ('電影', 'XXX', '被'): 1,
         ('XXX', '被', '打'): 1,
         ('被', '打', '了'): 1,
         ('打', '了', '一波'): 1,
         ('了', '一波', '俄國'): 1,
         ('一波', '俄國', '自己'): 1,
         ('俄國', '自己', '用'): 1,
         ('自己', '用', '核武'): 1,
         ('用', '核武', '反'): 1,
         ('核武', '反', '打'): 1,
         ('反', '打', '一波'): 1,
         ('打', '一波', '價格'): 1,
         ('一波', '價格', '都'): 1,
         ('價格', '都', '沒變'): 1,
         ('都', '沒變', '只好'): 1,
         ('沒變', '只好', '怒'): 1,
         ('吃', '一波', '了'): 1,
         ('一波', '了', '還'): 1,
         ('了', '還', '不如'): 1,
         ('還', '不如', '把'): 1,
         ('不如', '把', '錢'): 1,
         ('把', '錢', '拿'): 1,
         ('錢', '拿', '去'): 1,
         ('拿', '去', '怒'): 1,
         ('吃', '一波', '請'): 1,
         ('一波', '請', '幫'): 1,
         ('請', '幫', '解釋'): 1,
         ('幫', '解釋', '一波'): 1,
         ('解釋', '一波', '一樣'): 1,
         ('一波', '一樣', '要'): 1,
         ('一樣', '要', '怒'): 1,
         ('吃', '一波', '明天'): 2,
         ('一波', '明天', '再'): 1,
         ('明天', '再', '去'): 1,
         ('再', '去', '怒'): 1,
         ('買', '一波', '好'): 1,
         ('一波', '好', '想'): 1,
         ('好', '想', '怒'): 1,
         ('想', '怒', '衝'): 1,
         ('怒', '衝', '台'): 1,
         ('衝', '台', '中'): 1,
         ('台', '中', '一波'): 1,
         ('中', '一波', '怒'): 1,
         ('一波', '怒', '吃'): 2,
         ('吃', '一波', '東區'): 1,
         ('一波', '東區', '美食街'): 1,
         ('東區', '美食街', '要'): 1,
         ('美食街', '要', '開獎'): 1,
         ('要', '開獎', '囉'): 1,
         ('開獎', '囉', '當然'): 1,
         ('囉', '當然', '怒'): 1,
         ('當然', '怒', '衝'): 1,
         ('衝', '一波', '跟'): 1,
         ('一波', '跟', '同學'): 1,
         ('跟', '同學', '騎車'): 1,
         ('同學', '騎車', '衝'): 1,
         ('騎車', '衝', '了'): 1,
         ('了', '一波', '我'): 1,
         ('我', '也', '想'): 1,
         ('也', '想', '試'): 1,
         ('想', '試', '一波'): 1,
         ('試', '一波', '趁'): 1,
         ('一波', '趁', '發'): 1,
         ('趁', '發', '廢'): 1,
         ('發', '廢', '文'): 1,
         ('廢', '文', '認真'): 1,
         ('文', '認真', '一波'): 1,
         ('認真', '一波', '各國'): 1,
         ('一波', '各國', '('): 1,
         ('各國', '(', '價格'): 1,
         ('(', '價格', ')'): 1,
         ('價格', ')', '幾乎'): 1,
         (')', '幾乎', '都'): 1,
         ('幾乎', '都', '漲'): 1,
         ('了', '一波', '不聽話'): 1,
         ('一波', '不聽話', '的'): 1,
         ('不聽話', '的', '又'): 1,
         ('的', '又', '開始'): 1,
         ('又', '開始', '洗腦'): 1,
         ('開始', '洗腦', '一波'): 1,
         ('洗腦', '一波', '想必'): 1,
         ('一波', '想必', '有'): 1,
         ('想必', '有', '鄉民'): 1,
         ('有', '鄉民', '也'): 1,
         ('鄉民', '也', '有'): 1,
         ('也', '有', '賺'): 1,
         ('有', '賺', '到'): 1,
         ('賺', '到', '一波'): 1,
         ('到', '一波', '吧'): 1,
         ('一波', '吧', '?'): 1,
         ('吧', '?', '馬上'): 1,
         ('?', '馬上', '怒'): 1,
         ('馬上', '怒', '買'): 1,
         ('買', '一波', '所以'): 1,
         ('一波', '所以', '今天'): 1,
         ('所以', '今天', '決定'): 1,
         ('今天', '決定', '怒'): 1,
         ('決定', '怒', '吃'): 1,
         ('吃', '一波', '怒'): 1,
         ('一波', '明天', '放學'): 1,
         ('明天', '放學', '要衝'): 1,
         ('放學', '要衝', '一波'): 1,
         ('要衝', '一波', '燈會'): 1,
         ('一波', '燈會', '想要'): 1,
         ('燈會', '想要', '穩定'): 1,
         ('想要', '穩定', '又'): 1,
         ('穩定', '又', '要'): 1,
         ('又', '要', '搞'): 1,
         ('要', '搞', '一波'): 1,
         ('搞', '一波', '趁'): 1,
         ('一波', '趁', '這次'): 1,
         ('趁', '這次', '去'): 1,
         ('這次', '去', '香港'): 1,
         ('去', '香港', '大'): 1,
         ('香港', '大', '掃'): 1,
         ('大', '掃', '一波'): 1,
         ('掃', '一波', '只是'): 1,
         ('一波', '只是', '一時'): 1,
         ('只是', '一時', '興起'): 1,
         ('一時', '興起', '想'): 1,
         ('興起', '想', '說'): 1,
         ('想', '說', '勸'): 1,
         ('說', '勸', '她'): 1,
         ('勸', '她', '一波'): 1,
         ('她', '一波', '我'): 1,
         ('一波', '我', '要'): 1,
         ('我', '要', '不要'): 1,
         ('要', '不要', '怒'): 1,
         ('不要', '怒', '衝'): 1,
         ('怒', '衝', '消夜'): 1,
         ('衝', '消夜', '一波'): 1,
         ('消夜', '一波', '我'): 1,
         ('一波', '我', '一定'): 1,
         ('我', '一定', '怒'): 1,
         ('一定', '怒', '嗆'): 1,
         ('他', '一波', '睡'): 1,
         ('一波', '睡', '起來'): 1,
         ('睡', '起來', '再'): 1,
         ('起來', '再', '吃'): 1,
         ('再', '吃', '一波'): 1})

其實從ngram已經能看出一些端倪了!! (‘小’, ‘賺’, ‘一波’)、(‘爽’, ‘睡’, ‘一波’)、 (‘漲’, ‘了’, ‘一波’)、(‘怒’, ‘睡’, ‘一波’)、(‘我’, ‘羨慕’, ‘一波’)、 (‘狂飆’, ‘一波’, ‘我’)、 (‘怒’, ‘衝’, ‘一波’)、(‘嗆’, ‘他’, ‘一波’)、 (‘大’, ‘漲’, ‘一波’)、(‘怒’, ‘買’, ‘一波’)都出現了!這些我原本都花了好幾個小時才看出來的搭配規則,現在輕輕鬆鬆不到幾秒鐘就顯示出來了~~

#計算所有詞出現的總次數
tot_freg=sum([word_cntdict[key]for key in word_cntdict])
#計算所有3個字詞為單位的總出現次數
tot_ng_freg=sum([ngram_cntdict[key]for key in ngram_cntdict])

#計算每個字詞在語料庫出現的機率
word_prob={x: word_cntdict[x]/tot_freg for x in texts}
#print(word_prob)
#找出與“一波”出現關聯度最高的10個字
keyword="一波"
pair_prob={}
keyword_pmi={}
for word in texts:
    if word != keyword:
        pair_prob[(keyword, word)]=sum([ngram_cntdict[keys]
        for keys in ngram_cntdict if keyword in keys and word in keys])/tot_ng_freg
        if pair_prob[(keyword, word)]==0:
            keyword_pmi[(keyword,word)]=0
        else:
            keyword_pmi[(keyword,word)]=round(math.log((pair_prob[keyword,word]/(word_prob[keyword]*word_prob[word])),2),4)
print(Counter(keyword_pmi).most_common(10))
[(('一波', '狂飆'), 4.2854), (('一波', '回敬'), 4.2854), (('一波', '吃'), 3.7448), (('一波', '好'), 3.7005), (('一波', '睡'), 3.7005), (('一波', '飲料'), 3.7005), (('一波', '不'), 3.7005), (('一波', '羨慕'), 3.7005), (('一波', '嗎'), 3.7005), (('一波', '上網'), 3.7005)]

透過PMI關聯值,可以看得更清楚:「吃」、「睡」這些activity verb(活動動詞)顯然很常跟“一波”一起出現,「狂飆」semelfactive verb(瞬時動詞) 也很常一起出現,「羨慕」stative verb (靜態動詞)也跟“一波”有高相關度。

小小的結論

雖然不能透過PMI的分析,就下結論說’V+一波’只會跟特定某些動詞一起出現,還必須經過其他更為嚴謹的句法分析才行,但至少幫我這部份的工作量減輕許多,算是體會到了寫程式的功用~~下週若有機會,可以看看除了PMI之外,還有沒有其他方法可以找出關聯度最高的關鍵字。

Reference

基於Word2Vec的相似度計算 (原來Word2Vec也可以!?先放在這裡有時間看)