---
# System prepended metadata

title: 以人工智慧與社群網路進行理賠異常偵測 第一階段 視覺化網站 技術報告

---

# 以人工智慧與社群網路進行理賠異常偵測 第一階段 視覺化網站 技術報告



## 摘要
為協助防犯人員更有效地瀏覽可疑案件及相關人員的過去歷史資料，我們建立了視覺化網頁，從原始資料建構出犯防人員容易掌握的網路結構，並透過前端視覺化的技術，清晰地供人員瀏覽。

## 內容
### 環境設置
* Docker image 安裝後端所需套件 （包含MySQL資料庫及Flask Server）
    * Flask
    * SQLAlchemy
    * mysql-connector-python

### 資料處理
* 在 MySQL database 中，產出兩張 table：claims, policy, id_to_claims
    * claims table 欄位：APLY_NO, POLICY_NO, OCR_ID, MOD_REAL_NPAY, ACPT_ID, DOC, OCR_BLACKLIST, ACPT_BLACKLIST
    * policy table 欄位：POLICY_NO, INSD_ID, AGNT_ID, APC_ID, APC_BLACKLIST, INSD_BLACKLIST, APLY_NO, POLICY_NO
    * id_to_claims 欄位：ID, edge, MOD_REAL_NPAY
* claims, policy 產出方法 **(將提供程式碼)**：
    * claims
        * 讀取 RESULT.csv, CLAIM_APLY1.TXT 及 DIAG.csv
        * RESULT.csv 保留欄位 APLY_NO, POLICY_NO, OCR_ID_SAS, MOD_REAL_NPAY -> r_df
        * CLAIM_APLY1.TXT 保留欄位 APLY_NO, ACPT_ID_SAS -> c_df
        * DIAG.csv 保留欄位 APLY_NO, OCR_ID_SAS, DOC (由 HOSP_CODE+DOC_LISN_NO+DOC_NAME 產生) -> d_df
        * r_df left join c_df on [APLY_NO, POLICY_NO] -> rc_df, rc_df left join d_df on [APLY_NO, OCR_ID_SAS]
    * policy
        * 讀取 APC.TXT, INSD.csv, INSURED.csv
        * INSURED.csv 保留欄位 POLICY_NO, INSD_ID_SAS, AGNT_ID_SAS -> in_df
        * APC.TXT 保留欄位 POLICY_NO, APC_ID, APC_BLACKLIST (由 APC_BLACKLIST or APC_BLACKLIST_NOW 產生) -> a_df
        * INSD.csv 保留欄位 POLICY_NO, INSD_ID, INSD_BLACKLIST (由 INSD__BLACKLIST or INSD__BLACKLIST_NOW 產生) - i_df
        * in_df left join a_df left join i_df on POLICY_NO
    * id_to_claims
        * 讀取 APC.TXT, INSD.csv, RESULT.csv, CLAIM_APLY1.TXT, INSURED.csv
        * APC.TXT 保留欄位 POLICY_NO, APC_ID_SAS -> a_df
        * INSD.csv 保留欄位 POLICY_NO, INSD_SAS_ID -> i_df
        * RESULT.csv 保留欄位 APLY_NO, OCR_ID_SAS -> r_df
        * CLAIM_APLY1.TXT 保留欄位 APLY_NO, ACPT_ID_SAS -> c_df
        * INSURED.csv 保留欄位 POLICY_NO AGNT_ID_SAS -> in_df
        * RESULT.csv 保留欄位 APLY_NO, POLICY_NO, MOD_REAL_NPAY -> rr_df
        * a_df, i_df, r_df, c_df, in_df left join rr_df
        * create new column edge: type sting {role}_{POLICY_NO}_{APLY_NO}, e.g. apc_123_180
        * concat all above
    * 親屬關係 family.csv
        * 建立 python dictionary，key 為 id, value 為 list of tuple, 每個 tuple 儲存 id 及對應的親屬關係。 key: person1, value: [(person2, rel), (person3, rel), ...]，(1 配偶, 2 子女, 3 父母, 4 兄弟姐妹)
        * 儲存成 pickle 檔
    * 地址/電話/Email
        * 建立 python dictionary, key 為 id, value 為 list of string, 也就是 list 存與key同地址/電話/Email的所有 id
        * 儲存成 pickle 檔
        * 使用的表及欄位

```
APC
ADDRESS收費地址
ADDRESS_2 (收費地址無資料可用此欄位)
ADDR改變地址紀錄 (若有值，應一併畫在圖上)
---
MOBILE 要保人行動電話
---
EMAIL 電子郵件帳號
CLAIM_APLY1
OCR_ADDR   事故者居住地址
---
OCR_MOBILE_TEL被保險人行動電話
TRN_MOBIL_TEL 送件人手機號碼
```


### 程式設計及網頁架設
* 專案路徑：UserMount/Other/visualization_website/
* 後端
    * app.py：Flask Server 由此檔案建立，指令為 python3 app.py
    * searching.py：搜尋演算法，輸入為 case id, 輸出成一 json 檔
* 前端
    * templates/index.html
    * static/code.js

```
app/
├── app.py            
├── searching/            
└── templates/         
    ├── index.html      
    ├── loading.html
└── static/
    ├── code.js
    ├── loading.gif
└── cached/
```
