# Message Predict Label https://drive.google.com/file/d/1NVLMCIdBZqR5itseG8MagLeCcKjQBSWT/view?usp=sharing ## 環境需求 * numpy==1.19.2 * pandas==1.1.3 * pytorch==1.6.0 * jieba==0.42.1 * transformers==3.4.0 * tqdm==4.50.2 * langid==1.1.6 * opencc==0.1.6 * pypinyin==0.40.0 ## 使用方式 範例使用方式如下: ```python def main(): # user custom setting msg_filename = 'test_2019_Nov_Data' # please without .csv msg_folder_path = 'message/' zh_model_path = 'zh_model_201104.model' en_model_path = 'en_model_201021.model' label_folder_path = 'label/' label_filename = 'all_word_labels' # please without .csv jieba_dict_path = 'jieba_user_dict.txt' # jieba model save_folder_path = 'message_predict_result/' # Filter advertising message by if the message meets the following rules then advertisement rule = ['=', '=', ...] pinyin = load_pinyin_label_list(f'{label_folder_path}{label_filename}.csv') # can replace by your own list format message msg_list = preprocess_from_csv_to_list(f'{msg_folder_path}{msg_filename}.csv') analysis(msg_list, jieba_dict_path, save_folder_path, msg_filename, zh_model_path=zh_model_path, en_model_path=en_model_path, rule=rule, pinyin=pinyin) ``` 在程式碼中的以下變數可以自由調整: * `msg_filename`: 要檢視的訊息檔案,輸出結果也以此為命名(需為 csv 檔,但不用打上副檔名) * `msg_folder_path`:訊息檔案存放資料夾路徑 * `zh_model_path`:中文訊息 textcnn model 路徑,若設定成 `None` 則停用中文訊息檢查功能 * `en_model_path`:英文訊息 textcnn model 路徑,若設定成 `None` 則停用英文訊息檢查功能 * `label_folder_path`:拼音檔案存放資料夾路徑 * `label_filename`:拼音檔案名稱 * `jieba_dict_path`:斷詞字典路徑 * `save_folder_path`:預測結果存放資料夾路徑 在程式碼中的 `rule` list 變數,可自行新增需要特別偵測的字詞: ```python rule = ['=', '=', ...] ``` 在程式碼中的 `pinyin` 變數,可提供拼音檢查功能(僅處理中文訊息),若不需要的話在 `analysis` 取消加入即可停用檢查功能。 此版程式碼的訊息格式提供讀檔以及 `list`,如果傳入 `list` 的話,替換 `msg_list` 這個變數即可。 上述功能依照需求調整後,直接執行程式碼即可。 ``` $ python batch_analysis.py ``` ## 結果查看方式 程式完成後會輸出結果存放路徑及檔名: ``` result save at: message_predict_result/test_2019_Nov_Data_201215_1824.csv ``` 拼音偵測與模型預測結果不同的輸出結果存放路徑及檔名: ``` (pinyin fix label) result save at: label/fix_labels_201216_0506.csv ``` ## 輸出結果欄位說明 ### message predict result * `Message`:為原聊天室訊息 * `Language`:由 langid 所判別的訊息語系 * `Account`:偵測到的帳號數量 * `0`:正常類單詞次數統計 * `1`:涉政類單詞次數統計 * `2`:辱罵類單詞次數統計 * `3`:違禁類單詞次數統計 * `4`:色情類單詞次數統計 * `5`:廣告類單詞次數統計 * `6`:人工禁詞類單詞次數統計 * `Result`:訊息切詞及預測的詳細結果 * `Pinyin`:拼音偵測後與模型預測結果不符的詳細資訊 * `Ban`:`True` 為需要阻擋的訊息,`False` 為正常的訊息 ![](https://i.imgur.com/jkVZIBy.png) ### pinyin fix label result * `words`:訊息切詞 * `predict`:模型預測結果 * `pinyin`:拼音偵測結果 ![](https://i.imgur.com/wxGiScC.png)