# 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