# 預測流程方案分析 2021.05.21 ## 掃 Rulebase Time and Accuracy * 環境: colab(cpu) ### 流程 * 5/10 以前的方法 (A/B) ``` 1. 找出 帳號/電話/URL => 直接標記 5 2. Jieba 斷詞 / 完全不斷詞 3. 比對 rule base,完全相同的給對應 label nickname: "你這個蠢蛋" rule base = ['白癡', '蠢蛋' ] [A.斷詞:] case(1) " 你 這個 蠢蛋" 因為 "蠢蛋" 完全相同 rule base 的 "蠢蛋" => 標記 2 case(2) "你 這個 蠢 蛋" 無與 "蠢蛋" 完全相同的字 => model predict [B.無斷詞] 將 "你這個蠢蛋" 與 rule base 比對,無相同 => model predict 4. model predict ``` * 5/10 新採用的方法 (C/D) ``` 1. 找出 帳號/電話/URL => 直接標記 5 2. 比對 rule base 的詞有無出現在帳號中 rule base = ['白癡', '蠢蛋' ] nickname_1 = "你這個蠢蛋" nickname_1 = "你這個帥哥" 以"白癡"與"蠢蛋" 去比對是否存在於 nickname 中 => 解決因斷詞被斷開而無法透過 rule base 找出的情況 3. model predict [C.不斷詞 predict] 「你這個蠢蛋: 2」 [D.斷詞後 predict ] 「你 這個 帥哥」 =>「你:0 這個:0 帥哥:0」 => 「final label:0」 ``` ### Time(單位:秒) | 類別 | 筆數 | A.斷詞後檢查 rule-base | B.不斷詞檢查 rule-base | C.先掃 rule-base 不斷詞 predict | D.先掃 rule-base 再斷詞 predict | | ---- | ---- | ---------------------- | --- | ------------------------------- | ------------------------------- | | 涉政 | 1376 | 400 | 230 | 186 | 373 | | 辱罵 | 302 | 92 |38 | 17 | 48 | | 違禁 | 1182 | 438 | 160 | 132 | 405 | | 色情 | 415 | 124 | 53 | 45 | 114 | | 廣告 | 5529 | 23 | 17 | 28 | 35 | ### Accuracy | 類別 | 筆數 | A.斷詞後檢查 rule-base | B.不斷詞檢查 rule-base | C.先掃 rule-base | D.先掃 rule-base 再斷詞 predict | | ---- | ---- | ------| --- | -------- | ------ | | 涉政 | 1376 | 0.67 | 0.89 | 0.89 | 0.67 | | 辱罵 | 302 | 0.52 | 0.41 | 0.70 | 0.74 | | 違禁 | 1182 | 0.79 | 0.97 | 0.93 | 0.76 | | 色情 | 415 | 0.46 | 0.91 | 0.88 | 0.44 | | 廣告 | 5529 | 0.99 | 0.99 | 0.99 | 0.99 | ## 分析 ### 違禁與色情 why Accuracy B 高於 C C 掃 Rule Base 的方法會將一些含有其他類別 rule base 的詞錯判 常見: `狗` `=` `娘` ``` EX: '妓女 => jnv' 因為 '=' 是廣告的 rule base 故被直接標為 5 (應為4) '氣狗'(好像是中國對某種槍的用語) 因為 '狗' 是辱罵的 rule base 故被直接標為 2 (應為3) ``` ![](https://i.imgur.com/KQPQzHM.png) ![](https://i.imgur.com/WOpDGmj.png) ### 違禁與色情 why Accuracy A 高於 D D 掃 Rule Base 的方法會將一些含有其他類別 rule base 的詞錯判 常見: `價格` `收` `狗` ![](https://i.imgur.com/W8MZtgi.png) ### 涉政 (A:0.67 ; B:0.89 ; C:0.89 ; D:0.67) #### 1. 不斷詞 Accuracy 高 * 因為這些詞都出現過在 Training data Censor word 中整理成 Ground Truth 後加入至 Training data `(2021.04.28)` * 人名及歷史事件斷詞後難預測 ![](https://i.imgur.com/xdwPxVo.png) #### 2. 法輪功: 數美標 1 ; Training Data 標 3 ![](https://i.imgur.com/gpcUCH8.png) #### 3. 異體字 or 特殊字元導致被切開 ![](https://i.imgur.com/KMRa6RD.png) ![](https://i.imgur.com/DUuLoDV.png) ### 辱罵 (A:0.52 ; B: 0.41 ; C:0.70 ; D:0.74) #### 1. 新掃 rule base Accuracy 高 ![](https://i.imgur.com/IXBH0JR.png) 能被判斷的關鍵字容易被切開 or Training data 仍須調整 `ex: 老子 賤 ...` #### 2. 判斷成4 ![](https://i.imgur.com/vwEoThP.png) ### 違禁(A:0.79 ; B:0.93 ; C:0.97 ; D:0.76) #### 1. 同時有多項違禁字,因順位標為 涉政或廣告 ![](https://i.imgur.com/F7PVOes.png) #### 2. 販賣賭博等違禁品被判為 5 ![](https://i.imgur.com/cV2Uhge.png) ### 色情 (A:0.46 ; B:0.91 ; C:0.88 ; D:0.94) #### 1. 判斷成違禁 (Traing data 中類似的字也是標違禁) ![](https://i.imgur.com/lyjDkbs.png) #### 2. C 因為 rule base 而判斷成 辱罵 ![](https://i.imgur.com/BvMCaV5.png) #### 3. 數美標錯(不明所以) ![](https://i.imgur.com/FK1l21o.png) #### 4. 英文 or 中英夾雜 model 判斷不出來 ![](https://i.imgur.com/dzQmsKA.png) #### 5. 斷詞後個別詞為正常 or Training data 仍須調整 ![](https://i.imgur.com/7Zkde6c.png) ## 討論 ### 小結 1. 目前整句給 model predict 效果較好,因為那些句子都在 training data 出現過(老師之前提供的 Censor),但若超出 training data 涵蓋的範圍 => 未知 2. 斷詞(目前已換上新 Jieba 字典,但對這份測試資料無影響) * 容易受 諧音/特殊字元而斷不好` ex: 毛厕東 法@倫@功` * 切開後個別為不同的違禁詞,而預測錯誤 ex:`中國:1 狗:2` `售:5 手槍:3` * 切開後個別為正常的詞 ex: `功官 小姐` `鴛鴦 洗` 3. 掃 rule base 的方法 (AB or CD) * CD 方式可以抓到許多字直接標記,有效提升辱罵正確率,減少一些時間(不預測而省下的) * CD 方式去也可能錯抓一些詞,導致部分 Accuracy: B>C ; A>D ### 結論 * 選擇整句(B/C) 需承擔字詞變化導致超出 training 的風險 * 選擇斷詞則要克服 斷不好(異體字/符號干擾) 與 多個詞違規且比例相同導致錯判 ### 嘗試改進方向 1. 先將整理出需調整的關鍵字新增 or 調整 training data 重 train model 2. 將調整後的 training data 更新 jieba 斷詞表 3. rule base 依觀察做調整 ### Q 1. 涉政 Rule base 多是拼音,是否與拼音功能重疊 2. 斷詞: 多項違規時,違規順序 ex:`出售:5 功弩:3` => 3/5 ? ### Predict result https://drive.google.com/drive/folders/1sAtdfCpEzDSxmzdJrNWZrC5xVRkDg9S-?usp=sharing ## Detail #### A.斷詞後檢查 rule-bas ``` 涉政_A_210520_0413.csv Predict 0 1 2 3 4 5 All label 1 478 1164 3 80 2 9 1736 All 478 1164 3 80 2 9 1736 Accuracy: 0.6705069124423964 Error amount: 572 / 1736 /辱罵_A_210520_0413.csv Predict 0 1 2 4 5 All label 2 87 4 160 48 3 302 All 87 4 160 48 3 302 Accuracy: 0.5298013245033113 Error amount: 142 / 302 違禁_A_210520_0414.csv Predict 0 1 2 3 4 5 All label 3 157 15 5 937 5 63 1182 All 157 15 5 937 5 63 1182 Accuracy: 0.7927241962774958 Error amount: 245 / 1182 色情_A_210520_0414.csv Predict 0 1 2 3 4 5 All label 4 182 6 5 21 195 6 415 All 182 6 5 21 195 6 415 Accuracy: 0.46987951807228917 Error amount: 220 / 415 廣告_A_210520_0414.csv Predict 0 1 4 5 All label 5 47 1 2 5736 5786 All 47 1 2 5736 5786 Accuracy: 0.9913584514344971 Error amount: 50 / 5786 ``` #### B.不斷詞檢查 rule-base ``` 涉政_B_210520_0417.csv Predict 0 1 3 4 5 All label 1 69 1553 106 2 6 1736 All 69 1553 106 2 6 1736 Accuracy: 0.8945852534562212 Error amount: 183 / 1736 辱罵_B_210520_0417.csv Predict 0 1 2 3 4 All label 2 117 4 125 7 49 302 All 117 4 125 7 49 302 Accuracy: 0.4139072847682119 Error amount: 177 / 302 違禁_B_210520_0418.csv Predict 0 1 3 4 5 All label 3 15 3 1154 8 2 1182 All 15 3 1154 8 2 1182 Accuracy: 0.9763113367174281 Error amount: 28 / 1182 色情_B_210520_0418.csv Predict 0 3 4 5 All label 4 9 21 380 5 415 All 9 21 380 5 415 Accuracy: 0.9156626506024096 Error amount: 35 / 415 廣告_B_210520_0418.csv Predict 0 1 3 4 5 All label 5 37 1 12 4 5732 5786 All 37 1 12 4 5732 5786 Accuracy: 0.9906671275492568 ``` #### C.先掃 rule-base 不斷詞 predict ``` 涉政_C_210520_0325.csv Predict 0 1 2 3 4 5 All label 1 46 1551 20 105 1 13 1736 All 46 1551 20 105 1 13 1736 Accuracy: 0.8934331797235023 Error amount: 185 / 1736 辱罵_C_210520_0326.csv Predict 0 1 2 3 4 5 All label 2 58 3 214 2 21 4 302 All 58 3 214 2 21 4 302 Accuracy: 0.7086092715231788 Error amount: 88 / 302 違禁_C_210520_0328.csv Predict 0 1 2 3 4 5 All label 3 14 3 27 1108 8 22 1182 All 14 3 27 1108 8 22 1182 Accuracy: 0.937394247038917 Error amount: 74 / 1182 色情_C_210520_0329.csv Predict 0 1 2 3 4 5 All label 4 7 5 10 19 366 8 415 All 7 5 10 19 366 8 415 Accuracy: 0.8819277108433735 Error amount: 49 / 415 廣告_C_210520_0329.csv Predict 0 1 3 4 5 All label 5 35 1 10 4 5736 5786 All 35 1 10 4 5736 5786 Accuracy: 0.9913584514344971 Error amount: 50 / 5786 ``` #### D.先掃 rule-base 再斷詞 predict ``` 涉政_D_210520_0357.csv Predict 0 1 2 3 4 5 All label 1 448 1169 21 80 2 16 1736 All 448 1169 21 80 2 16 1736 Accuracy: 0.6733870967741935 Error amount: 567 / 1736 辱罵_D_210520_0357.csv Predict 0 1 2 4 5 All label 2 38 3 225 32 4 302 All 38 3 225 32 4 302 Accuracy: 0.7450331125827815 Error amount: 77 / 302 違禁_D_210520_0358.csv Predict 0 1 2 3 4 5 All label 3 154 15 28 903 5 77 1182 All 154 15 28 903 5 77 1182 Accuracy: 0.7639593908629442 Error amount: 279 / 1182 色情_D_210520_0358.csv Predict 0 1 2 3 4 5 All label 4 179 8 13 19 186 10 415 All 179 8 13 19 186 10 415 Accuracy: 0.44819277108433736 Error amount: 229 / 415 廣告_D_210520_0358.csv Predict 0 1 4 5 All label 5 47 1 2 5736 5786 All 47 1 2 5736 5786 Accuracy: 0.9913584514344971 Error amount: 50 / 5786 ``` ## New Model 2021.05.23 ##### `text_cnn_best_99.83006535947712_LR0.001_BATCH100_EPOCH100` ### Training data ##### `new word dataset_add label_normal name_default_Ground truth_Corrected_prohibit_fixed.csv` * information ``` Training data: 61144 0 50727 1 3866 3 3157 4 2364 5 515 2 515 Name: label, dtype: int64 ``` * 組成 ``` 1. Fix 重覆 2. 宗教、法輪功等等 => 3 3. 新增 AV 女優名 4. 新增 命中字詞 ``` ### Accuracy | 類別 | 筆數 | A.斷詞後檢查 rule-base | B.不斷詞檢查 rule-base | C.先掃 rule-base | D.先掃 rule-base 再斷詞 predict | | ---- | ---- | ------| --- | -------- | ------ | | 涉政 | 1376 | 0.69 / 0.77 | 0.84 / 0.94 | 0.84 / 0.94 | 0.69 / 0.77 | | 辱罵 | 302 | 0.65 | 0.45 | 0.72 | 0.82 | | 違禁 | 1182 | 0.83 | 0.98 | 0.94 | 0.80 | | 色情 | 415 | 0.62 | 0.92 | 0.89 | 0.61 | | 廣告 | 5529 | 0.99 | 0.99 | 0.99 | 0.99 | ### 分析 #### 整句 (BC) * 優勢 * 正確率高 * 不必考慮多項違規時的違規順序 ``` [('赵式', 0), ('弓弩', 3), ('销售', 5)] => 1? / 3? / 5? [('我', 0), ('想', 0), ('买', 5), ('枪', 3)] => 3? / 5? [('我', 0), ('想', 0), ('买', 5), ('三级片', 4)] => 4? 5? ``` * 風險 * 超出 Training data 涵蓋範圍時,表現未知 * 需決定 threshold (超過時斷詞) ``` [('我想买枪', 3)] [('我好想买枪', 3)] [('你想买枪吗', 3)] [('妳想买枪吗', 0)] ``` #### 斷詞(A/D) * 優勢 * 彈性較好 (不會超出 training data 就表現未知) * 表現受斷詞結果 與 多項違規時的違規順序 影 想 ``` [('我', 0), ('想', 0), ('买', 5), ('A', 0), ('片', 0)] [('垃圾', 2), ('游戏', 0), ('该', 0), ('卸载', 0), ('了', 0)] ``` * 風險 * 超出 jieba 字典檔時可能切不好導致預測錯誤 * 多項違規時的違規順序影響最後分類類別 #### 斷詞後判斷詞彙是否 in rule base (A/B) * 優勢 * 較不會錯抓 * 風險 * 不斷詞時此機制效果較差 #### 先掃 rule-base 是否存在於 nickname 中 (C/D) * 優勢 * 範圍較大,只要有涵蓋一定抓的到 * 提早預判 label 而省下之後 predict 的時間 * 風險 * 範圍較大,可能錯抓(需要慎選 rule-base) `涉政 27` / `辱罵 4` / `違禁 47` / `色情 14` / `廣告 0` ![](https://i.imgur.com/PTbdV8H.png) ![](https://i.imgur.com/nV26qv6.png) ### To-do 1. 調整 rule base 減少錯抓 2. 決定 threshold 3. 更新 jieba 字典