---
# System prepended metadata

title: Message Predict Label

---

# 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)
