---
# System prepended metadata

title: 專題進度追蹤

---

# 專題進度追蹤

滷肉飯：ip: 140.113.87.168
portal: eugene0422
password: adg463321

### 3/10 大 meeting:

1.從future work去想或是想點小改變，改進performance，這學期先把code改好
2.下學期做成應用，demo system 


期末要交正式的報告要有50頁，文獻之前可以先寫著
問：
1. 教授說這學期就要接出可以動的demo聊天機器人？？
2. 要期末報告的範本？？

### 3/17 小 meeting:


1. 討論這學期規劃流程：
a. 先寫一個問題回答是template版的，item跟feature都要有名字，拿陳或是李之前的那兩篇論文

- NLP版

b. 用linebot來寫、手機app

c. **先把KGSF接到linebot上來跑**

d. 解決server沒辦法跑KGSF的問題

e. transformer在產生字的時候是怎麼結合推薦那邊的item

f. 先確定model從哪邊吃user的字，產出對話的地方推薦的地方怎麼跟推薦的東西整合，觀察結果的好壞有沒有比較有意義的句子

g. model能不能問user問題，transformer的資料集有沒有問句，沒有的話是train不出問句的，可以另外接一個model去決定要問問題還是推薦

f.資料集那些item名字要換回來，資料集要有辦法讓結果看的出


時程：
1. 下週要先把KGSF原本結果接上linebot

    a. KGSF
    b. linebot
    c. 期末報告 ㄧ、二



https://zx2515296964.medium.com/python-linebot-%E6%95%99%E4%BD%A0%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8python%E6%88%90%E5%8A%9F%E4%B8%B2%E6%8E%A5linebot-2020%E7%89%88-c98672eec44e

### 3/20
進度
Tony: linebot完成
Max: 大致複習 KGSF 的論文、思考未來可以改動的地方、研究 linebot
An: 訓練完model，在看code

### 3/23
進度

Tony: 
1. 每次重開linebot都要去kill掉port上的process
2. run KGSF code
3. EAR paper
Max: 
An:

EAR 接上linebot

### 3/24 大meeting

這星期的進度還有下週要做的事：

1. 研究KGSF(NLP)的code:
    a. 跑完KGSF
    b. 這部分先擱置
    
    
2. EAR+linebot:
    a. linebot可以用(研究顯示yes, no, 還有介面設計)
    b. 重train EAR model，看看要怎麼接到linebot上
    c. 確定我們要用哪個資料集，重新parsing把id跟真名的那個留起來
    d. 想一下變成cold-start怎麼做？
    e. 要設定對話的長度嗎(ex:4, 5次就要推)
    f. 把EARtesting那邊改成linebot要接的地方
    g. 把對話流程的邏輯寫起來，ex: 1. testing user有一個知道他要買的東西，拿他本來要買的東西去回答問題 2. 系統先給一個歡迎的提示，然後使用者用template去回答，我們要設計出一個template去回答
    h. 我們的proposed method可以去想想EAR面對cold-start的user時要怎麼解決，或是可以換別的推薦器，·不要用MF改成某些Sequential的方式
    i. 下週可以報一下EAR的paper，跟接model跟linebot遇到的困難
    j. linebot一進去可以先推hot的東西給user，可以把是非題做出button看起來很炫砲
    k.不能完全的開放式問答，要給選項，要怎麼找出user可能會選的選項也是我們可以改的地方



任務：
寫50頁報告 (先寫推薦器(KVMN, GRU4Rec, Dream), CRS(Qrec, EAR, CRM))
EAR paper
接model


問學長的問題：
1.
Q:
EAR要用Yes/No question？假設說linebot問一個問答的問題，user要怎麼回答問題
A:
linebot要給他表單讓user去選要回答什麼

2
Q: 
一個新的人進來，隨便assign系統裡的一個人
A:
    a.實際online上可能是使用是先推hot的東西給他然後設計去找原本有沒有跟他很相似的user
    b.或是要有一個cold-start user的embedding

3
Q:怎麼找回商品的圖片？
A: 重新載資料集，不一定要用beauty，然後id要能對到真名跟圖片



### 3/27

Tony: 沒
Max: 沒


### 3/30

Tony: 看EAP paper，看code，開50頁報吿共編，打50頁報吿
Max: 沒

### 50頁論文：
1. Knowledge graph learning and recommendation: system
- Tony:
	- KTUP 
		- https://hackmd.io/zQaDedbPSL6l1t9COyI-Dg

2. reinforcement learning recommendation system:
- Tony:
	- Top-K, Slate-Q
		- https://hackmd.io/8ko19Om2TgeQ4B0XE50LpQ
		- https://hackmd.io/hhi2tkMcR9OysxDRRDwS5Q
- Max:
	- Leveraging Demonstrations for Reinforcement Recommendation Reasoning over Knowledge Graphs
		- https://hackmd.io/rJHkhsyrSfapOjb0_N61QQ

3. session-based recommendation system:
- Tony:
	- KSR
	  - https://www.cnblogs.com/Lee-yl/p/11986218.html
- Max:
	- GRU4REC
		- https://hackmd.io/hwIedgimSoC47DjHpRoXyQ

4. CRS:
- Tony:
	- Qrec
		- https://hackmd.io/FGKfzbFyTg2qIN0YC7QSiA
	- KGSF
		- https://hackmd.io/XqJjjOCfTxOmfnHSIaMD8Q

- Max:
	- EAR
		- https://hackmd.io/o1X68YTTQ8WsujoiRM2CkA?view
	- CRS
		- https://hackmd.io/wMUCrC3CSS-Wob7p1EHtFA?view
	

ps. 109上報告：
https://docs.google.com/document/d/1w4ImOIQG_MbwuN6-73V-uAjmx77z-3zbqRBxpWw7_ow/edit


1. 不要都全部推薦
2. 不能推到最後還沒有中
3. 換資料集
4. 下禮拜要做出linebot可以demo的模式
5. 選新的資料集時可以用yelp的形式，問的entity可以做成階層式的不要一次有那麼大的action space


### 4/7問題
EAR model:
1. metadata只能載2018的，可是rating是載2014，結果會導致rating裡出現的2萬3千多個item只有6千多個有在metadata裡。
    - ~~rating載2018版，資料量變多(27W->1128W)~~
        - 改掉FM
    - rating維持2014，但是將item不在metadata中的紀錄刪掉
2. metadata給的圖片連接中，大部分圖片是模糊的，無法辨認
    - 以metadata給的商品名稱在Amazon的網站搜尋圖片(?)
3. 和之前一樣model會出現問不中對的問題
    - 再調整
4. item的feature選擇
    - 目前是將所有item中的category底下的資訊當feature(以出現次數篩選)，可是metadata中還有其他像是feature，brand等資訊

Chatbot:

1. 目前還在調整原本論文的code，把model改成class的形式去接linebot api，應該下週前可以弄出來



ps. 
1個episode:
S:system
U:user

1. S: linebot首先要問使用者一個entity
2. U: 使用者回答yes, no

3. loop: (終止條件：hit or 含上面總共15回對答)
    1. S: EAR選擇action是要推薦還是問entity
    2. U: hit(Y/n) or entity(Y/n)

### 4/13

Tony: ngrok可以用在server上
problem:
    1. env_demo, the user_response 怎麼將 system ask 跟 user response 接到linbot
    
跑 response(user_res) 得到 system res, model要在這邊等下一個user_res
    
### 4/14 小meeting

Max => 爬蟲：
1. 用 metadata 的 url 去爬圖片
2. 用 title 直接去上網爬物品相關的資訊(e.g.商品描述、價錢...等) + 圖片 

### 4/20:

Max:

使用的網站：https://www.scrapehero.com/tutorial-how-to-scrape-amazon-product-details-using-python-and-selectorlib/

遇到的問題：我把商品的網址都收集到一個txt檔丟進去我在網路上找到的py檔去跑,總共有6000多筆結果大概最後的1000多筆資料都沒抓到資料，但是我自己一個一個測是可以的，我也有試過只跑最後1000多筆，但還是不行，不知道是什麼問題。

code在我server: **/mnt/sdb/max881230/clothing_data/amazon-scraper**

每執行一次 amazon.py 就會生成一個 output.jsonl
有加上6000的檔案是原始的資料

Tony: 
1. linebot v2.
    a.完成yes/no介面設計
    b.多個user同時使用
    
Q: 接下來的改進
    
2. 打50頁



### 4/28 小meeting

1. 把Max_turn 調整成5次

問題：
1. 接上圖片
2. 推薦的item名縮短標註在圖片下方
3. 5127的id有問題
4. cold start的方式還沒有確定要怎麼做


### 5/12 小meeting
#### 上週進度：
Tony: 
1. 寫50頁報告


#### 下週進度：
1. 把model弄到可以問
2.  a. 弄成一開始先輸入userid, itemid
    b. 弄出cold-start版本
4. 看一下推薦的list怎麼顯示、可以做成linebot carousel


現在先確定一個資料集一個方法可以跑就好，之後又跑實驗結果時可以跑多個資料集多個方法(改推薦器, ex:用 KVMN, GRU4Rec)
50頁paper可以暑假完前生出來

實驗方法
1. EAR這篇本身的實驗可以寫進去，寫參考EAR的技術還有問題設定等等

後面接著說接著EAR原本的架構我們整合了什麼東西
2. 把 linebot 架構間起來就是
3. cold-start user的處理
4. pre-train
5. 可以把推薦跟問問題拆成兩個不要用2000多個去做

### 5/17 小meeting
1. 按S後先隨機顯示是哪個User哪個Target item
    還有顯示正確的entity讓使用者可以正確回答
    
2. 推薦的list接上carousel跟圖片


### 5/19 大meeting

之後方向：
1. 換推薦的模型跟資料集
    RS: FM(現在), MF, KVMN, GRU4Rec
    dataset: clothing(現在), beauty, lastfm
3. RL 改成2階段式選action
    1-layer: ask-question, recommend
    2-layer: 從question裡選entity問

3. cold start模式

老師feedback:
1. 問的entity不直覺

- 
    問的 標題
    不是直接問大標
    有沒有辦法循序漸進的問??
    e.g. 買房子 > 區域 > 價位
    
### 5/25 小meeting
1. demo版本：先篩少一點entity(這會有點麻煩，看看能不能改問法讓問題看起來正常一點)
2. 真正實驗版本：dataset不動
    a. Clothing, Shoes and Jewelry
    b. Beauty
    c. Video Game
    ps.
    train的時候可以開到20去做
    testing 的時候可以有SR5, SR10, SR15, SR20去做
3. raw_data/datapreprocess.py 87行，small_meta_data看看裡面的資料
4. 先做出demo版本


#### question_map.json
key:question_id
value:question

0: Do you like
1: Do you prefer (材質、功能)
2: Are you looking for (名稱(特定領域的)比如說內褲、球鞋、女用內衣等)

報告可以簡單講一下
**entity 加上粗體或著引號**


#### tag_question_map.json
key: entity_name
value: question_id


### 6/2 大meeting
linebot QR code 
使用方式：進入聊天室後請先輸入s開始進行demo
![](https://i.imgur.com/smho4a0.png)
本週進度：
1. hit的carousel template上加超連結的網址
2. 修正問題問法

下週進度：
1. 跑完clothing, beauty跟video_game
2. 改推薦器(MF, KVMN, GRU4Rec)
3. demo時拿比較有代表性的組
4. 製作報告影片


| Training    | SR@5 | SR@10 | SR@15 | SR@20 |
| ----------- | ---- | ----- | ----- | ----- |
| clothing    |   0% |   0%  |  0.1% | 47%   |
| beauty      | 0.5% | 0.9%  | 28.9% | 44%   |
| video games | X    |   X   |  X    | X     |

| dataset     | length |
| ----------- | ------ |
| clothing    | 18.4   |
| beauty      | 17.6   |
| video games | X      |

未來進度：
1. 改成兩階段選Action
2. testing時SR@5還有後面那些必須強迫他推


### 6/10 小meeting

1. 星期一影片要交給學長
2. 星期六前生完投影片
3. 我要看一個新的RS然後實作出來
4. 要收尾了，數據跟demo要出來
5. 內容那幾個表格數字要填一填
6. 預計寫完專題報告應該是暑假結束後
7. 寫的還行的話還可以參加論文比賽、可以參加大專生計畫


小論文寫法：
第三人稱的角度去寫，不能太白話文，格式寫完再來挑，2天直接幹完

6月底前要有大綱出來
學長7月底畢業



第一章 緒論：10頁 ***ps.再寫詳細一點***
- 研究背景動機：
    - 講一個故事，有些人是cold start user...
- 目的：
    - 他要解決的問題
- 技術：
    - 我們要設計一個demo system去研究這個問題
    - 做一些小改善去解決上述問題
- 貢獻跟價值：
	- proposed method
    - 兩段式推薦


第二章 文獻探討：10頁
- 推薦系統歷史
- 還有sequential recommender system
- CRS
- EAR


第三章 實驗方法
- **word手打公式**
- 每一章節寫為什麼要這樣改

- 3.1
    - EAR實驗流程(自己畫一張 換句話說不要照抄\放最終完整版的系統流程圖)
    - 實驗設定\實驗方法\想解決的問題
    - NOTATION的設定\開一張符號表
    - demo system(linebot 的設計, 爬蟲)

- 3.2
    - 自己propose的方法(2階段)
    - 補上改進地方

- 3.3 換 ＲＳ
    - 先 pretrain好（跟FM比）
    - 講說EAR原本的推薦器不夠好，然後換成別的推薦器試試看 
	- 推薦器的公式、設定

	 


第4章 實驗結果 --> 圖表 or 表格
- 4.1 
    - 資料集介紹、實驗設定 等

- 主實驗：
- 4.2 單純推薦器的實驗
    - 推薦器完整版的結果 -> 想辦法把表格拉長
    - SR@1/3/5/7/9
    - testing 
    - 不同推薦器的結果
    - 寫實驗目的 / 小結(比較/原因) 根據表格來寫結果

- 4.3 篩選dataset
    - 刪entity的改進結果(用FM就好然後3組dataset)
    - 刪item的改進結果(用FM就好然後3組dataset)
    - 刪entity/item的改進結果(用FM就好然後3組dataset)
    - 寫實驗目的 / 小結(比較/原因) 根據表格來寫結果
    - 小結刪這兩種有效所以下面CRS的實驗都是刪兩種


- 4.4 CRS的實驗
    - CRS加上原版&改版&不同推薦器的結果
    - 寫實驗目的 / 小節(比較/原因) 根據表格來寫結果

- 4.5 兩段式（補充的小實驗
    - 拿比較好的效果推薦器去套兩段式
    - 寫實驗目的 / 小節(比較/原因) 根據表格來寫結果

- 4.6 demo system
    - linebot
    - 怎麼接api到原本的model上



第五章 結論
- 5.1 demo system
- 5.2
    - 我們的貢獻是哪些
    - 我們的方法改善了原本paper沒考慮到的
    - 更能適用在現實生活的dataset
    - 未來要做什麼樣的改進



### 6/16 大meeting
- 進度:
    - 將原版的EAR model在三個dataset跑出測試結果
    - 我們改進的model的結果
        - 當使用者回答是否定時，也要刪除item
        - 只考慮在candidate item set中有的entity去做詢問
    - 兩者的結果比較 
        - ![](https://i.imgur.com/IDm2fJZ.png)
        - ![](https://i.imgur.com/1uw1XVd.png)
    - 做出期末的報告和影片
- 之後預計要做:
    - 實驗
        - 推薦器改為GRU4REC及再找兩種會考慮時間軸的推薦模型
        - 改成兩階段的RL去選action
    - 專題論文
        - 在暑假前完成專題論文的撰寫


### 7/26 小meeting

下週進度：
1. RS: 
GRU4Rec: Max
把code改成可以用同一份code跑、SASRec: 陳
Stamp: Tony

3組dataset都要跑

2. 兩段式可以選3組最好的那組來跑

3. 論文大綱
4. 完整接下來的實驗
5. 用overleaf寫小論文

### 8/9 小meeting 2:30

1. 推薦器應該只有item embedding
2. 給的東西：把ㄧ連串item進去，要能predict
3. 只用陳璽安的train切成train跟test
4. gru4rec.pickle切 前0.6加下高斯當成我們的train跟test

![](https://i.imgur.com/53r7PP3.jpg)

5. 下週paper進度ch1, ch2完成

### 8/27 


