Behavior to Text

By 泰瑋

目錄

  • 目標
  • 流程
    • Wiki Category 爬蟲
    • 新版KCEM
    • 消歧義
    • 分析手機的log,提取關鍵字及概念
    • To Sequence
  • 結論

目標

流程

流程

從wiki Category建立kcem

Tf-idf提取手機accessbility log關鍵字

透過kcem將關鍵字提升成概念

 

將概念描述成句子

舉例

歌手

周杰倫

導演

演員

林志玲

職業種類

社會

{
    "category": "",
    "app": "Dcard",
    "id": "72",
    "context": "香蕉船也太過分了吧 都註明兒童防曬了還防腐劑超標 還有天良嗎⋯⋯ 說實在有些人說用什麼沒有曬黑不一定準 因為可能本身是不容易被曬黑 就像我有朋友從來不擦防曬但是沒黑過 白到一個誇張 所以就算她用哪瓶都嘛可以說曬不黑 沒寫出哪些合格 ",
    "time": "2017/07/05 16:32:43",
    "event": "TYPE_VIEW_SCROLLED"
  },

痘痘 -> 病毒性疾病

防腐劑 -> 食品添加劑

超標 -> None

食品添加劑超標

會導致病毒性疾病!!!

Wiki Category 爬蟲

查Child

{
  "node": [
    "宮崎駿電影"
  ],
  "leafNode": [
    "宮崎敬介",
    "魯邦三世卡里奧斯特羅之城",
    "嫁給波比",
    "小行星8883",
    "宮崎吾朗",
    "小行星10160",
    "宮崎駿的雜想筆記",
    "熊貓小熊貓",
    "龍貓",
    "風起 (漫畫)",
    "巨神兵現身東京",
    "阿爾卑斯山的少女",
    "宮崎駿"
  ],
  "key": "宮崎駿"
}

查Parent

{
  "ParentOfLeafNode": [
    "動畫電影導演",
    "shin-ei動畫",
    "報知電影獎最佳導演得主",
    "日本漫畫家",
    "分鏡畫師",
    "學習院大學校友",
    "東京都出身人物",
    "1941年出生",
    "每日電影獎最佳導演得主",
  ],
  "parentNode": [
    "以日本漫畫家命名的分類"
  ],
  "key": "宮崎駿"
}

新版KCEM

以宮崎駿為例:

{
    "ParentOfLeafNode": [
      "分鏡畫師",
      "日本動畫導演",
      "動畫電影導演",
      "學習院大學校友",
      "每日電影獎最佳導演得主"
      ...
    ],
    "parentNode": [
      "以日本漫畫家命名的分類"
    ],
    "key": "宮崎駿"
  }
{
  "node": [
    "宮崎駿電影"
  ],
  "leafNode": [
    "宮崎敬介",
    "魯邦三世卡里奧斯特羅之城",
    "嫁給波比",
    "小行星8883",
    "宮崎吾朗",
    "小行星10160",
    "宮崎駿的雜想筆記",
    "熊貓小熊貓",
    "龍貓",
    "風起 (漫畫)",
    "巨神兵現身東京",
    "阿爾卑斯山的少女",
    "宮崎駿"
  ],
  "key": "宮崎駿"
}

PerentOfLeafNode都是正確的is-a的關係

挑哪個呢?

{
  "key": "宮崎駿",
  "ParentOfLeafNode": [
    "動畫電影導演",
    "日本動畫導演",
    "shin-ei動畫",
    "吉卜力工作室人物",
    "每日電影獎最佳導演得主"
  ]
}

PerentOfLeafNode都是is-a的關係

Score = \frac {\sum_{i=1}^{|P|}sim(keyword,~p_i)}{|P|}
Score=i=1Psim(keyword, pi)PScore = \frac {\sum_{i=1}^{|P|}sim(keyword,~p_i)}{|P|}
Wi = sim(keyword,\:parent)
Wi=sim(keyword,parent)Wi = sim(keyword,\:parent)

每日 | 電影獎 | 最佳 | 導演 | 得主

超多字,平均後超低分

{
  "key": "宮崎駿",
  "ParentOfLeafNode": [
    "動畫電影導演",
    "日本動畫導演",
    "shin-ei動畫",
    "吉卜力工作室人物",
    "每日電影獎最佳導演得主"
  ]
}

PerentOfLeafNode都是is-a的關係

Score = \frac {\sum_{i=1}^{n}w_i}{len(W)}
Score=i=1nwilen(W)Score = \frac {\sum_{i=1}^{n}w_i}{len(W)}

日本 |動畫 | 導演

吉卜力 | 工作室 | 人物

shin-ei | 動畫

 

不在word2Vec裏面

Score 只看動畫的similarity,分數高

低分

{
  "key": "宮崎駿",
  "ParentOfLeafNode": [
    "動畫電影導演",
    "日本動畫導演",
    "shin-ei動畫",
    "吉卜力工作室人物",
    "每日電影獎最佳導演得主"
  ]
}

PerentOfLeafNode都是is-a的關係

Score = \frac {\sum_{i=1}^{n}w_i}{N}
Score=i=1nwiNScore = \frac {\sum_{i=1}^{n}w_i}{N}

分母改N,就會變低分

(N是斷詞後的長度)

日本 |動畫 | 導演

吉卜力 | 工作室 | 人物

shin-ei | 動畫

( 0 + 0.55 ) / 2

{
  "key": "宮崎駿",
  "ParentOfLeafNode": [
    "動畫電影導演",
    "日本動畫導演",
    "shin-ei動畫",
    "吉卜力工作室人物",
    "每日電影獎最佳導演得主"
  ]
}

PerentOfLeafNode都是is-a的關係

Score = \frac {\sum_{i=1}^{n}w_i}{N}
Score=i=1nwiNScore = \frac {\sum_{i=1}^{n}w_i}{N}

吉卜力分數超高

日本  高很多...

日本 |動畫 | 導演

吉卜力 | 工作室 | 人物

shin-ei | 動畫

( 0 + 0.55 ) / 2

分母改N,就會變低分

{
  "key": "宮崎駿",
  "ParentOfLeafNode": [
    "動畫電影導演",
    "日本動畫導演",
    "shin-ei動畫",
    "吉卜力工作室人物",
    "每日電影獎最佳導演得主"
  ]
}

PerentOfLeafNode都是is-a的關係

is-a 的答案愈具代表性愈好

愈具代表性 -> 詞頻愈高 -> kcm 分數高

吉卜力分數超高

日本  高很多...

日本 |動畫 | 導演

吉卜力 | 工作室 | 人物

shin-ei | 動畫

{
  "key": "宮崎駿",
  "ParentOfLeafNode": [
    "動畫電影導演",
    "日本動畫導演",
    "shin-ei動畫",
    "吉卜力工作室人物",
    "依漫畫家劃分的漫畫作品",
  ]
}

PerentOfLeafNode都是is-a的關係

Score = \frac {\sum_{i=1}^{n}w_i \: + \: \sum_{i=1}^{n}kcm_i}{N}
Score=i=1nwi+i=1nkcmiNScore = \frac {\sum_{i=1}^{n}w_i \: + \: \sum_{i=1}^{n}kcm_i}{N}
kcm = \frac {kcm_i}{max(kcm)}
kcm=kcmimax(kcm)kcm = \frac {kcm_i}{max(kcm)}

日本 |動畫 | 導演

吉卜力 | 工作室 | 人物

shin-ei | 動畫

日本kcm比

吉卜力kcm高很多

PerentOfLeafNode都是is-a的關係

Score = \frac {\sum_{i=1}^{n}w_i \: + \: \sum_{i=1}^{n}kcm_i}{N}
Score=i=1nwi+i=1nkcmiNScore = \frac {\sum_{i=1}^{n}w_i \: + \: \sum_{i=1}^{n}kcm_i}{N}

懲罰太長、太罕見字

e.q. 日刊體育電影大獎最佳導演得主

獎勵跟keyword

類似的parent

通常是他的職業

e.q. 歌手、導演

獎勵很概念、籠統的單字

e.q. 台灣、音樂、日本

PerentOfLeafNode都是is-a的關係

Score = \frac {\sum_{i=1}^{n}w_i \: + \: \sum_{i=1}^{n}kcm_i}{N}
Score=i=1nwi+i=1nkcmiNScore = \frac {\sum_{i=1}^{n}w_i \: + \: \sum_{i=1}^{n}kcm_i}{N}

懲罰太長、太罕見字

e.q. 日刊體育電影大獎最佳導演得主、

shin-ei動畫

獎勵他的職業

e.q. 動畫電影導演

獎勵很概念的單字

e.q. 日本動畫師

取平方,拉大距離

Score = \frac {\sum_{i=1}^{n}w_i^2 \: + \: \sum_{i=1}^{n}kcm_i^2}{N}
Score=i=1nwi2+i=1nkcmi2NScore = \frac {\sum_{i=1}^{n}w_i^2 \: + \: \sum_{i=1}^{n}kcm_i^2}{N}
Score = \frac {\sum_{i=1}^{n}sign(w) \times w_i^2 \: + \: \sum_{i=1}^{n}kcm_i^2}{N}
Score=i=1nsign(w)×wi2+i=1nkcmi2NScore = \frac {\sum_{i=1}^{n}sign(w) \times w_i^2 \: + \: \sum_{i=1}^{n}kcm_i^2}{N}

因為word2vec是-1~1,所以平方後要保留正副號

Score範圍:-1~2

有負號 -> 要正規化

min-max normalization

Y_i = \frac {X_i - min(X)}{Max(X) - min(X)}
Yi=Ximin(X)Max(X)min(X)Y_i = \frac {X_i - min(X)}{Max(X) - min(X)}

計算機率

Y_i = \frac {Y_i}{Sum(X)}
Yi=YiSum(X)Y_i = \frac {Y_i}{Sum(X)}

p.s. 算機率這步驟算正規化嘛?
算機率也是正規化?

 

都變成0~1範圍

總和為1

最後結果

[
  [
    "動畫電影導演",
    0.2709243099429301
  ],
  [
    "日本動畫導演",
    0.19741261747908173
  ],
  [
    "shin-ei動畫",
    0.12709972265647268
  ],
  [
    "吉卜力工作室人物",
    0.091889067227798965
  ],
  [
    "日本動畫師",
    0.07437543544129388
  ],
  [
    "日本漫畫家",
    0.056947279636608984
  ],
  [
    "依漫畫家劃分的漫畫作品",
    0.049494162325712243
  ],
  [
    "分鏡畫師",
    0.029389358317867435
  ],
  [
    "日刊體育電影大獎最佳導演得主",
    0.024226581843431065
  ],
  [
    "以日本漫畫家命名的分類",
    0.019802666714873123
  ],
  [
    "報知電影獎最佳導演得主",
    0.016728075960346284
  ],
  [
    "每日電影獎最佳導演得主",
    0.013518559414334346
  ],
  [
    "東京都出身人物",
    0.008951161879963327
  ],
  [
    "日本反核電活動家",
    0.0084761331947834622
  ],
  [
    "在世人物",
    0.0056576712676407737
  ],
  [
    "女性主義藝術家",
    0.0039301149109975614
  ],
  [
    "1941年出生",
    0.00095024216936229102
  ],
  [
    "包含16元素的規範控制",
    0.00016104385083015539
  ],
  [
    "學習院大學校友",
    0.000065795765671548519
  ],
  [
    "包含規範控制信息的維基百科條目",
    0.0
  ]
]

分母除以N懲罰太長的category

坐骨神經痛
{'keyword': '坐骨神經痛', 'value': [('骨科', 0.43420728997426), ('神經外科', 0.32419576773054753),
('周圍神經系統疾病', 0.24159694229519249), ('分類', 0.0)]}

張錫銘
{'keyword': '張錫銘', 'value': [('張姓', 0.63130512413317885), ('臺灣罪犯', 0.23008190504378936)
('東山區人', 0.088818342879001422), ('臺灣黑社會成員', 0.044573832902622269), ('1968年出生', 0.0052207950414081428), ('在世人物', 0.0)]}


麗寶樂園
{'keyword': '麗寶樂園', 'value': [('后里區', 0.79052753215945137), ('臺中市商場', 0.080961807254884874)
('臺灣水上遊樂園', 0.057404227911668229), ('臺中市旅遊人文景點', 0.04636238503898054), ('臺中市的臺灣之最', 0.024744047635015018), ('2000年臺灣建立', 0.0)]}

分母改成log或者N^x

最終版

harmonic mean試試看

Score = \frac {\sum_{i=1}^{n}sign(w) \times w_i^2 \: + \: \sum_{i=1}^{n}kcm_i^2}{1.17^N}
Score=i=1nsign(w)×wi2+i=1nkcmi21.17NScore = \frac {\sum_{i=1}^{n}sign(w) \times w_i^2 \: + \: \sum_{i=1}^{n}kcm_i^2}{1.17^N}

最終版

harmonic mean試試看

kcem~score = 2\times\frac {w2vScore ~ \times ~ kcmScore}{w2vScore ~ + ~ kcmScore}
kcem score=2×w2vScore × kcmScorew2vScore + kcmScorekcem~score = 2\times\frac {w2vScore ~ \times ~ kcmScore}{w2vScore ~ + ~ kcmScore}
kcmScore = \frac {\sum_{i=1}^{n}kcm_i^2}{N}
kcmScore=i=1nkcmi2NkcmScore = \frac {\sum_{i=1}^{n}kcm_i^2}{N}
w2vScore = \frac {\sum_{i=1}^{n}sign(w) \times w_i^2}{N}
w2vScore=i=1nsign(w)×wi2Nw2vScore = \frac {\sum_{i=1}^{n}sign(w) \times w_i^2}{N}

如果查詢的字不在word2vec裏面,那harmonic mean公式算出來都會是0
   這種情況其實還不少,這樣會導致整個harmonic mean都沒用
所以這種情況就用kcm分數當作依據
 

最終版

harmonic mean試試看

harmonic ~ mean = 2\times\frac {w2v ~ \times ~ tf}{w2v ~ + ~ tf}
harmonic mean=2×w2v × tfw2v + tfharmonic ~ mean = 2\times\frac {w2v ~ \times ~ tf}{w2v ~ + ~ tf}
tf = \frac {\sum_{i=1}^{n}tf_i^2}{N}
tf=i=1ntfi2Ntf = \frac {\sum_{i=1}^{n}tf_i^2}{N}
w2v = \frac {\sum_{i=1}^{n}sign(w) \times w2v_i^2}{N}
w2v=i=1nsign(w)×w2vi2Nw2v = \frac {\sum_{i=1}^{n}sign(w) \times w2v_i^2}{N}

如果查詢的字不在word2vec裏面,那harmonic mean公式算出來都會是0
   這種情況其實還不少,這樣會導致整個harmonic mean都沒用
所以這種情況就用kcm分數當作依據
 

消歧義

單刀

單刀

把歧義字的第1段轉成w2v向量

比較similarity

分析手機的log

提取關鍵字及概念

[
  {
    "category": "",
    "app": "Chrome",
    "id": "133",
    "context": "[宜蘭景點推薦2017.6.9更新]一日遊、兩日遊行程景點推薦-免費親子景點,頭城景點、礁溪景點、羅東景點、員山景點、三星景點、蘇澳景點懶人包(持續新增) @ Tiss-寫意人生 :: 痞客邦 PIXNET :: tisshuang.tw/blog/post/455784635",
    "time": "2017/07/02 20:22:46",
    "event": "TYPE_VIEW_SCROLLED"
  },
  {
    "category": "",
    "app": "Chrome",
    "id": "134",
    "context": "xzjihui.com/#豐乳 xzjihui.com/#豐乳  這裡被我喻為隱藏版親子餐廳,  電話:03-9233668  shopping  參觀時間:AM 8:30至PM 5:00(免費參觀)  有踩點的會有文章連結, 還沒踩點的會有官網連結喔!  <照片取自官網>  $801 起   1378769158-3464335745  [宜蘭南方澳景點、餐廳]地中海CASA,希臘小教堂、幸福鐘聲、無敵海景陪你一起喝咖啡,CP值超高!  宜蘭積木博物館官網:  在這裡可以看到宜蘭最美的海岸線,  【4.宜蘭頭城外澳景點-九號咖啡】  一直很想帶女兒去DIY彩繪鉛筆,感覺很有趣  電話 : 03-9874882  電話:03-9888260(餐廳訂位)  只記得走馬看花,看人玩童玩,  這邊比較想觀光客玩的地方  營業"
  }
]

Accessibility log

[
  {
    "value": 9.857856840334222,
    "key": "中興大學"
  },
  {
    "value": 8.248418927900122,
    "key": "apple"
  },
  {
    "value": 8.943027029099742,
    "key": "ipad"
  }
]

先建立Wiki IDF

{
  "宜蘭": 120,
  "搜尋": 44,
  "兩天一夜": 43,
  "礁溪": 38,
  "痞客邦": 38,
  "老爺": 24,
  "懶人包": 20,
  "幾米": 17,
  "特惠": 16,
  "超殺": 15,
  "住客": 15,
  "必吃": 14,
  "妮妮": 12,
  "公園": 11,
  "後花園": 11
    ...
    ...
    ...
}

log每個behavior

取出tf-idf top5的單字

然後統計詞頻

{
  "宜蘭": 120,
  "搜尋": 44,
  "兩天一夜": 43,
  "礁溪": 38,
  "痞客邦": 38,
  "老爺": 24,
  "懶人包": 20,
  "幾米": 17,
  "特惠": 16,
  "超殺": 15,
  "住客": 15,
  "必吃": 14,
  "妮妮": 12,
  "公園": 11,
  "後花園": 11
    ...
    ...
    ...
}

單純用tf-idf

前幾名容易有雜訊

{
  "商品": "搜尋",
  "旅遊節目": "兩天一夜",
  "宜蘭縣行政區劃": "礁溪",
  "網誌": "痞客邦",
  "二字臺灣地名消歧義": "宜蘭"
}

is-a 依照情境調整

取的top5

用kcem轉成concept ...

!!!!is-a 依照情境調整!!!!

{
  "宜蘭": 120,
  "搜尋": 44,
  "兩天一夜": 43,
  "礁溪": 38,
  "痞客邦": 38,
  "老爺": 24,
  "懶人包": 20,
  "幾米": 17,
  "特惠": 16,
  "超殺": 15,
  "住客": 15,
  "必吃": 14,
  "妮妮": 12,
  "公園": 11,
  "後花園": 11
    ...
    ...
    ...
}

把tf-idf列表所有的單字

都用kcem轉換

{
  "分類": ["美式","木屐","造訪","足跡","一日遊","老鷹"  ],
  "宜蘭縣行政區劃": ["宜蘭縣","員山鄉","宜蘭市"  ],
  "旅遊": ["旅遊景點","伴手禮","旅行"  ],
  "圖論": ["超值","超殺"  ],
  "食品": ["小吃","泡湯"  ],
  "小宇音樂專輯": ["總在","給在"  ],
  "組織機構消歧義": ["抵用","東森"  ],
  "水體": ["晶泉","海洋"  ],
  "房屋": ["公寓","套房"  ],
  "宜蘭縣河川": ["蘭陽","蘇澳"  ],
  "海洋": ["洋式","勝洋"  ],
  "宜蘭人": ["幾米","礁溪"  ]
}

會有分群的效果

不過效果怪怪的

all accessbility as one article and then show tfidf
[
  ('民宿', 55.946140322966066),
  ('痞客邦', 55.58857155328362),
  ('宜蘭', 55.41308361291991),
  ('礁溪', 51.398097640564366),
  ('必吃', 48.829087725811334)
]
----------------------------------------------------
all accessbility as one article and -> tfidf -> kcem
[
  ('二字臺灣地名消歧義', ['宜蘭']),
  ('網誌', ['痞客邦']),
  ('旅館類型', ['民宿']),
  ('宜蘭人', ['礁溪']),
  ('語言障礙疾病', ['必吃'])
]

如果不是一篇一篇取tfidf

而是全部log合併後取tfidf

[
  ["二字臺灣地名消歧義",394  ],
  ["新鄉旅遊",159  ],
  ["宜蘭人",129  ],
  ["旅館類型",105  ],
  ["分類",104  ],
  ["書信",84  ],
  ["營養學",82  ],
  ["宜蘭縣行政區劃",69  ],
  ["網誌",44  ],
  ["商品",44  ],
  ["家事法",44  ],
  ["內容開放",41  ],
  ["郵政",40  ],
  ["咖啡店",37  ],
  ["東亞傳統",37  ],
  ["臺北州",36  ],
  ["旅遊",36  ]
]

如果全部的文章不取tfidf

直接用kcem

全部比較 tfidf 比較

all accessbility as one article and then show tfidf
[
  ('民宿', 55.946140322966066),
  ('痞客邦', 55.58857155328362),
  ('宜蘭', 55.41308361291991),
  ('礁溪', 51.398097640564366),
  ('必吃', 48.829087725811334)
]
----------------------------------------------------
all accessbility as one article and -> tfidf -> kcem
[
  ('二字臺灣地名消歧義', ['宜蘭']),
  ('網誌', ['痞客邦']),
  ('旅館類型', ['民宿']),
  ('宜蘭人', ['礁溪']),
  ('語言障礙疾病', ['必吃'])
]
{
  "宜蘭": 120,
  "搜尋": 44,
  "兩天一夜": 43,
  "礁溪": 38,
  "痞客邦": 38,
  "老爺": 24,
  "懶人包": 20,
  "幾米": 17,
  "特惠": 16,
  "超殺": 15,
  "住客": 15,
  "必吃": 14,
  "妮妮": 12,
  "公園": 11,
  "後花園": 11
    ...
    ...
    ...
}
{
  "商品": "搜尋",
  "旅遊節目": "兩天一夜",
  "宜蘭縣行政區劃": "礁溪",
  "網誌": "痞客邦",
  "二字臺灣地名消歧義": "宜蘭"
}

log合併成同一份再取tf-idf

每份log都取tf-idf

所累積出來的表格

[
  ["二字臺灣地名消歧義",394  ],
  ["新鄉旅遊",159  ],
  ["宜蘭人",129  ],
  ["旅館類型",105  ],
  ["分類",104  ],
  ["書信",84  ],
  ["營養學",82  ],
  ["宜蘭縣行政區劃",69  ],
  ["網誌",44  ],
  ["商品",44  ],
  ["家事法",44  ],
  ["內容開放",41  ],
  ["郵政",40  ],
  ["咖啡店",37  ],
  ["東亞傳統",37  ],
  ["臺北州",36  ],
  ["旅遊",36  ]
]

全部比較

{
  "分類": ["美式","木屐","造訪","足跡","一日遊","老鷹"  ],
  "宜蘭縣行政區劃": ["宜蘭縣","員山鄉","宜蘭市"  ],
  "旅遊": ["旅遊景點","伴手禮","旅行"  ],
  "圖論": ["超值","超殺"  ],
  "食品": ["小吃","泡湯"  ],
  "小宇音樂專輯": ["總在","給在"  ],
  "組織機構消歧義": ["抵用","東森"  ],
  "水體": ["晶泉","海洋"  ],
  "房屋": ["公寓","套房"  ],
  "宜蘭縣河川": ["蘭陽","蘇澳"  ],
  "海洋": ["洋式","勝洋"  ],
  "宜蘭人": ["幾米","礁溪"  ]
}

全部文章直接做kcem

每篇log自己做tf-idf

再用tf-idf表格去做kcem

To Sequence

To Sequence

 

{
  "宜蘭縣行政區劃": ["宜蘭縣", "礁溪", "宜蘭市", "員山鄉"],
  "旅遊": ["伴手禮", "旅行", "旅遊景點"],
  "宜蘭人": ["幾米", "幾樣", "員山"],
  ...
}

把剛剛乾淨的tf-idf結果湊程句子

To Sequence

 

{
  "宜蘭縣行政區劃": ["宜蘭縣", "礁溪", "宜蘭市", "員山鄉"],
  "旅遊": ["伴手禮", "旅行", "旅遊景點"],
  "宜蘭人": ["幾米", "幾樣", "員山"],
  ...
}

e.q. 去 宜蘭縣行政區劃 旅遊 找 幾米

or 從這三類挑一個詞出來組成句子

e.q.  去 礁溪 買 辦手禮 找 幾米

How to Train

把wiki的文章都轉成concept

周杰倫買下英雄聯盟電競隊 J戰隊 的老闆

 

 

華語流行音樂歌手 買下 garena遊戲 臺灣電子競技團隊 英雄聯盟競技團隊 的老闆

unsupervised learning !!!

How to Train

華語流行音樂歌手 買下 garena遊戲 臺灣電子競技團隊 英雄聯盟競技團隊 的老闆

用這份轉換過的語料,train kcm動詞版

華與流行音樂歌手               唱歌、演唱、發行

How to Train

華語流行音樂歌手 買下 garena遊戲 臺灣電子競技團隊 英雄聯盟競技團隊 的老闆

用這份轉換過的語料,train word2vec

華與流行音樂歌手               日本動畫電影導演

產生sequence

{
  "宜蘭縣行政區劃": ["宜蘭縣", "礁溪", "宜蘭市", "員山鄉"],
  "旅遊": ["伴手禮", "旅行", "旅遊景點"],
  "宜蘭人": ["幾米", "幾樣", "員山"],
  ...
}

e.q. 去 宜蘭縣行政區劃 旅遊 找 幾米

or 從這三類挑一個詞出來組成句子

e.q.  去 礁溪 買 辦手禮 找 幾米
  1. Wiki 應該沒有太多 宜蘭縣行政區劃的句子可以做訓練
    1. vector跟 日月潭國家風景區 相似
  2. Wiki 沒有太多 宜蘭縣行政區劃的相關詞
    1. ​kcm提供他可靠的選項

產生sequence

{
  "宜蘭縣行政區劃": ["宜蘭縣", "礁溪", "宜蘭市", "員山鄉"],
  "旅遊": ["伴手禮", "旅行", "旅遊景點"],
  "宜蘭人": ["幾米", "幾樣", "員山"],
  ...
}

e.q. 去 宜蘭縣行政區劃 旅遊 找 幾米

or 從這三類挑一個詞出來組成句子

e.q.  去 礁溪 買 辦手禮 找 幾米
  1. Wiki 應該沒有太多 宜蘭縣行政區劃的句子可以做訓練
    1. vector跟 日月潭國家風景區 相似
  2. Wiki 沒有太多 宜蘭縣行政區劃的相關詞
    1. ​​kcm提供他可靠的選項

Seq2Seq

  1. Wiki 沒有太多 宜蘭縣行政區劃的相關詞
    1. ​​kcm提供他可靠的選項
    2. 一開始就讓seq2seq選擇下個詞的softmax的機率,按照kcm分佈

TODO

小學生造句

檢查宜蘭詞頻

檢查佛第模

is-a隨著情境調整parent的答案

To Sequence實驗版

To Sequence實驗版

把Context Text透過kcem分群

[
  [
    "大里",
    {
      "key": {"大里": 13, "臺中市": 2},
      "count": 15
    }
  ],
  [
    "網絡流行語",
    {
      "key": {"懶人包": 3},
      "count": 3
    }
  ],
  [
    "市場",
    {
      "key": {"夜市": 3},
      "count": 3
    }
  ],
  [
    "一天裡的時刻",
    {
      "key": {"凌晨": 1, "晚上": 2},
      "count": 3
    }
  ],
  [
    "中部地區",
    {
      "key": {"彰化": 1, "臺中": 1},
      "count": 2
    }
  ],
  [
    "臺灣網站",
    {
      "key": {"痞客邦": 2},
      "count": 2
    }
  ],
  [
    "飲食",
    {
      "key": {"飲料": 1, "火鍋": 1},
      "count": 2
    }
  ]
]

把Context Text透過kcem分群

[
  [
    "公公",
    {
      "count": 6,
      "key": {"老爺": 6}
    }
  ],
  [
    "旅館",
    {
      "count": 4,
      "key": {"酒店": 4}
    }
  ],
  [
    "二字臺灣地名消歧義",
    {
      "count": 2,
      "key": {"宜蘭": 2}
    }
  ],
  [
    "臺灣旅館",
    {
      "count": 1,
      "key": {"老爺酒店集團": 1}
    }
  ],
  [
    "房屋",
    {
      "count": 1,
      "key": {"套房": 1}
    }
  ]
]

造句版模

[
  {
    "key": ["在", "網站", "查詢", "台中", "美食", "的", "資訊"],
    "value": [1, 3, 4]
  },
  {
    "key": ["在", "網站", "查詢", "台中", "飯店", "的", "資訊"],
    "value": [1, 3, 4]
  },
  {
    "key": ["在", "網站", "查詢", "台中", "火車", "的", "資訊"],
    "value": [1, 3, 4]
  },
  {
    "key": ["想去", "旅遊", "正在", "查詢", "美食", "以及", "遊樂園", "的", "資訊"],
    "value": [1, 4, 6]
  },
  {
    "key": ["在", "查詢", "飯店", "的", "房間", "資訊"],
    "value": [2, 4]
  }
]

流程

  1. 透過Word2Vec決定選擇哪個版模
  2. 透過Word2Vec決定Context Text的topn填入版模的哪裡

1. 透過Word2Vec決定選擇哪個版模

["在", "網站", "查詢", "台中", "美食", "的", "資訊"]
["在", "網站", "查詢", "台中", "飯店", "的", "資訊"]

["在", "查詢", "飯店", "的", "房間", "資訊"]

公公 <- 老爺

旅館 <- 酒店

房屋 <- 套房

句子的similarity 

網站跟3個字最高的similarity + 台中...

然後挑出最好的template

2. 透過W2V決定Context Text的topn填入版模的哪裡

["在", "查詢", "飯店", "的", "房間", "資訊"]

公公 <- 老爺

旅館 <- 酒店

房屋 <- 套房

句子的similarity 

網站跟3個字最高的similarity + 台中...

然後挑出最好的template

Output

 

旅館 <- 酒店

房屋 <- 套房

在查詢旅館的房屋資訊      在查詢酒店的套房資訊

 

遇到的問題

轉成concept時需要消歧義

{
    "專輯":["天天", "去走走", "初學者"]
}

消歧義API

如果entity的parent有一個是消歧義

就會觸發消歧義api

{
    "專輯":["天天", "去走走", "初學者"]
}

Context Text

Vector

新的Parent : 天天日報

TF-IDF 比較

把TF-IDF的topn丟入一樣的模式當中

TODO

  1. template取的時候要記得平均
  2. kcem結合tf-idf
  3. 把topk從2~8都給老師
  4. 看一下tfidf跟kcem娶到的字是啥

TODO LIST

  1. kcem的__init__.py,再get的時候,要按照docVec,決定要回傳哪個hypernym

Behavior to Sequence

By davidtnfsh

Behavior to Sequence

  • 986