# LINE TECHPLUSE 2019 ## Keynote ## LINE Platform API Update SPEAKER: Evan Lin ### chatbot: OA 2.0 All accounts will start from $0 with Messaging API - No friends Limit - Free account could have 8000 users - Start from $0 - Less restriction ### Flex Message Update - 更多元、友善的介面/樣式 - Flex Message Simulator [Beta] - 透過選項去修改而不是json ### Interactive: Rich Menu Batch API - 可以批次更新不同user的rich menu ### Get Usage API - 查詢推播...等使用次數的API - get number of [reply/push/multicast/broadcast messages/ sent] ### Get User Interatction API - Number message displayed video displayer / URL opened ### Insight API - Get your friends demographics from API ### LIFF - LINE Front-end Framework(LIFF) - Web application - HTML, CSS, JavaScript - Integration with LINE platform - 整合部分網路功能,使得使用者不用透過url去打開網站就能使用部分功能 - LIFF Supports Modern Browser(LIFF v2) - 遊覽器上可以直接打開,不限於只在app上打開 - 方便debugging(直接在瀏覽器上) - Path and Query Parameters - OpenID Connect - Deeplink - Liff v1: ```Line://``` - Liff v2: ```https://liff.line.me``` - New API - LIFF Playground - Testing API without writing code - 快速了解API的更新和使用 - lief.shateTargetPicker(尚未開放) - 可以將LIEF資訊分享給好友 ### "Try" LINE API - 開發者文件上會有更友善的介紹和操作教學,方便理解參數等使用方式 ### LINE Developer Document - 繁體中文 ## AutoML in Clova Chatbot Builder Framework (English) Jaewon Lee / Penny Sun ### Clova chat bot chatbot builder with "line messenger paltform" - Easy to build, serve, expand ### WHY CLOVA? - built-in dashboard to control different domains ### Model in Use 1. Seq2Seq with attention 2. Classifier Model - Word-level Embedding Layer, Wini - Sentence-level Embedding Layer, Phao 3. Semantic Model - 問得query和哪一個query相似 4. Embedding Model - FastText ### AutoML - Compoment 1: Data Clustering - MultiSplit - Train - Check - Vote - PICO: implementation - Component 2: Hyperparameter Tuning - Component 3: Ensemble Weights - Auto-Evaluation in Ensemble Weights ### Chinese Chatbot Use Case Benefit of Using Chatbot Builder - 不用自己建立內文管理系統,只需要在平台上建立問答集即可 - 不用自己建立NLP Model: 使用AutoML建立了NLP模型 - LINE Chatbot Type of AI Chatbot - Domain Specific Q&A - Task-oriented - 透過多輪的詢問直到蒐集到足夠的資訊,然後作出回覆 - Chit-chat 目前僅開放給企業合作夥伴 ## How LINE Does Enterprise Security (English) Beist ### Service Release Process: Agile Release Train(ART) - Training - Requirements - Design - Implementation - Verifition - Release ### 內部的Security Education Platform for employees ### Machine Learning - Account hijacking atteck detection - suspicious logs filter - ML for offense: To find vulnerabilities in our code - Collecting LINE code to modeling - 目前來說,ML在預防上有一些問題: - 在某些data上work但其他不好 -> Not robust - To have an actual helpful ML system: Tuning your code everyday ### BECKS - https://becks.io ### Bug Bounty Program - https://hackerone.com/line ## Timeline Post Recommender System (English) Jihong Lee ### Line Timeline ### Background knowledge - Collaborative Filtering ### Problem Description ### Model Training Pipeline - Raw Data - User View History Log - User Click History Log - 合併上面兩個資料後就可以產生label: 1代表有click, 0代表沒有click - Preprocess Data - Recommender System 101: Embeddings - reduced dimensionality - has category meanings - User Embedding is to sparse(使用者數量太多) ->先學Post Embedding,再透過Post Embedding的Linear combination去表示User - Model Training - Model Deployment - User Interactions ### How to train the model? - 用第一個Model產生後的User Interactions當成之後Model的input會產生biased - 重新train的input不要使用前一個User Interactions ### Model Architecture Problems with a sole ranking model - computationally expensive - concentrated post distribution Pareto Optimality ### Aligned Embedding - user A有自己的post pool,user B有自己的post pool,可是訓練資料都要有他們,需要align - 找到一個維度使得A和B是aligned的 - Orthogonal Procrustes Problem ## Protostar Program Introduction & Startup Demo Kevin Chen - 現在要消費者重新認識品牌很花費時間,但LINE已有大量用戶 ### 牙醫小幫手 問題: - 電話約診 -> 改約或爽約的背後人力成本 功能: - 自動提醒回診 - 診後追蹤 - 線上約診 - 填寫問卷回饋beacon購買商品 - 推薦牙醫功能 - 機器人與台灣健保診所串接,方便使用者操作 技術: - Line Messaging API - send reply message: 被動確認隱私許可 - send push message: 邀請病人做評價、主動提醒 - Flex message ### 記帳雞 ### 看牙小鬧鐘 - 病例、健保系統整合 技術: - LINEBot Designer app產出template - Flex message as view engine: 每個template存到DB - 透過query去取得對應的template - 滿足診所高度客製化的需求 ### tournii tournii LINE development roadmap - LIFF Rental request form - LINE Pay In-line payment - LINE Flex Rental receipt - LINE SPORT Online merge Offine ### 肚肚 - 整合找餐廳 -> 買餐卷 -> 訂位 -> 查詢流程 - 多元支付 技術: - reply api - LINE login API: 取得用戶資訊,紀錄訂餐卷等資訊 - LINE pushMessage API: 通知用戶目前服務進度 ### 通勤學 語音學習平台 - 在LINE裡面做了一個播放器 - 可以背景執行 ### 影片推薦 - A news reader alike service for video content - 推薦的時候除了推薦影片還會推薦一段highlight video - AI ANALYSIS: 爬影片,分析內容去產生一段highlight - AUTO GENERATE - SMART TAGS - SEARCH EASILY 架構 - 後端:爬蟲、分析... - GCP/AWS - 前端: LINE Chatbot - Conversational UI: Message API - 影片播放無法透過上述API達成: 使用LIFF ### Tiki Poki口袋售票 技術: - Social API: LINE Login、取得PROFILE - Message API ### DR.LINE 智慧診所 - 詢問看診進度或線上掛號 ## LINE Pay - New Features of LINE Pay Webber Su / Sabrina Lee ### Cross Border - Line pay可以跨境支付了 - 透過區塊鏈技術解決跨海交易需求: 尚未完全解決 - 既有的架構:Gateway to Gateway - 第一階段:商家和用戶都知道交易完成 - 第二階段:在交易時間內將金額撥給商家 - 隨著Line pay規模變大, pr現有架構不足以應付 - 新的架構 ### LINE Pay App ### App2App 一種新的認證授權機制概念 - 以前line pay是在line上,打開時就知道使用者是誰 - 現在line pay變成獨立的app後就不知道使用者是誰 - 夠過一開始先去打開line去確認身份,確認完後再開啟line pay app - 解決繁瑣的登入、驗證流程 - open banking - product API - account API - Payment API - open banking ### Line Pay API v3 1. 認證 Authentication 2. 請求支付作業 Request API - 在auto-scaling的技術下,可能會導致使用者IP改變,在舊版會造成無法完成一個合法的交易請求 - 原本從單一產品需求 -> 多個產品需求 ### Payment Flow ### New Features of LINE Pay - LINE PAY v3新增一個欄位,用於 - LINE推出的Digital Wallet,希望能夠真的取代實體錢包 - 實體錢包都有什麼?會員卡片、優惠卷、發票... - LINE PAY想要將這些都收納起來,也就是MYCARD - 不只蒐集起來,還可以與LINE PAY的點數做互換 - **MYCARD** - 整合不同的點數和會員卡 - 透過API增加欄位,讓以下動作都在一次掃瞄完成: - 發票、集點、會員資訊、交易 - 交易的時候會把交易金額跟會員卡號傳給合作夥伴 - 希望增加點數的價值 ## LINE SPOT and How We Build It Julian Shen - 訂位喬時間常常需要來來回回很多次 - 用app訂位?就要開另一個軟體、網站 - 把定位、推薦、探索、交通...整合在一起 -> Line SPOT Challenges - 很多服務需要整合(訂位訂餐、叫車) - 各家的資料格式可能不一樣 - - Shipping Feature More Frequently 使用了microservices - 很多小服務整合成一個完整的系統(Loose Coupling) 傳統架構Monolithic v.s. Microservices Why we adopted microservices? - Flexibility - 只要把新的小服務插進去就好 - Easy to Maintain - 每一個服務都很小,彼此不相干,很好維護和部署 - 傳統部署要全部重來,微服務只需要重新部署需要的小服務 Challenges of Microservices - 互動複雜度變高 - 整合難度提高 - 運帷難度提高 Frontend and Microservices - 帶入API Gateway - GraphQL實作 - 所有溝通的事情由API Gateway來做 - API Gateway和User Interface溝通 Challenges of Data Integration - 資料格式不同 - 可能一家有多個資料庫 Traditional CRUD - 傳統不同的資訊放不同的table - 需要的時候再join起來,但在這個case有那麼多資料怎麼整合? Event Sourcing - 透過世界觀的思維 - 透過Event handler去整合成各自的View給各自的Service用 Deployment with Kubernetes - Drone CI ## Lightning Talk - Data Pipeline and Data Processing Yumei Chen / Jim Horng / Denny Tsai ### Maintainability in LINE SPOT LINE SPOT流程: user在LINE SPOT看資訊 -> LINE SPOT通知parner Practices from cooperating with partners - processing data manually: 一定要保留一個可以手動更新的方法 - ex: csv import - 現實上不是每個合作夥伴都有這些技術 - open-closed principle: 如果要對某個夥伴客製化,不能影響到其他人 - generalization & customization: 不同的data structure如何變成一致? - 要保留可以客製化的彈性 Its all about "Maintainability" - Operability - Simplicity - Evolvability Event Sourcing: - 把每一個event包成message存起來 Summary - Challenge in LINE SPOT: Maintainability - Solution: Event Sourcing ### ML在LINE的假訊息偵測是怎麼做的 - LINE提供了一個Fact Check OA, Dashboard - 如果還沒查證就會回復還沒查證 架構 - 人工和ML並行 - 人工查證 - ML做相似訊息查證、語意近似、分群(增加人工查證速度) Mear-Duplication - Use Cases - 屬於原始句子的子句 ->相似 - 用不同的字呈現相同意思 ->相似 - 句子是一樣的,主詞換了 ->不相似 相似度 - 短句子 - 部分比對和相似比對 - 長句子 - bert - 取出句子或文章的embedding vector - 有中文pretrain model Message Classification - Bert + NN layer Overview of ML system architecture 延伸挑戰 - 越來越多假訊息包含圖片 - VGG - duplicated reported messages - 如果在訓練還沒結束前重複的訊息就出現了該怎麼辦(偵測不到) - 做個簡單的cache層做hash或是簡單的判斷去刪 - 定期house keeping - 希望未來能夠做出一個knowledge graph model ### LINE SPOT: GO \ GraphQL Client to Microservices: client 會需要對不同的services溝通 - 有些api並不是針對client開發,導致拿到的資料沒有很適合client - API Gateway: client跟API Gateway溝通就好,剩下他來負責 - GraphQL: 是一個query langyage GraphQL - consumer centric: server回的都是真的會需要的欄位(rest api不一定每個欄位都會用到) GraphQL with Go ## Lightning Talk - Data Science and Analytics Shawn Tsai / Liwen Liao / Johnson Wu ### 1. - 搜尋是一個排序問題 - 關鍵點: 資料特徵萃取 Approach - 傳統做法: - TF-IDF - limitation: No shared keywords - embedding - word embedding - bert是一個pretrain的語言模型 Query By Vector Representation - Query和Doc都透過embedding轉成vector去比對相似度 Ranking - Learning to Rank - 當查詢進來,先預篩選可能會出現的index去做match ### 2.Analysis of LINE MUSIC in Taiwan Music Users Are Young: - Demographic - Behavior LINE Ringtone - RingTone - Ring Back Tone - Back Ground Music ### 3. LINE MUSIC Auto-Complete Recommendation - 自動補完user還沒打的query - 將搜尋紀錄以字為單位記錄在搜尋樹裡面餵給模型訓練 知識圖譜(開發中) ## Lightning Talk - Client and Automation