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也可以!?先放在這裡有時間看)