# 以人工智慧與社群網路進行理賠異常偵測 第一階段 視覺化網站 技術報告 ## 摘要 為協助防犯人員更有效地瀏覽可疑案件及相關人員的過去歷史資料,我們建立了視覺化網頁,從原始資料建構出犯防人員容易掌握的網路結構,並透過前端視覺化的技術,清晰地供人員瀏覽。 ## 內容 ### 環境設置 * 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/ ```