iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 12
0

Document retrieval: A case study in clustering and measuring similarity

在這個章節我們將學習 Clustering(分群) and Similarity(相似度)

通常我們可以從資料當中推理出某種潛在的結構(我想這裡指的結構,可以把他想成我們一般文章中的體裁記敘文、抒情文、論說文、應用文,甚至可以進一步想成,文章的性質(體育、文學、財經、生活...))

同樣的我們將透過例子來引出實際的內容

What is the document retrieval task?

假設你正在讀一篇你感興趣關於足球的文章

如果這篇文章來自阿根廷你會看到關鍵字"football"如果來自巴西則會看到"futebol"

接下來我想要找出另一篇你同樣感興趣的文章

但是我不能夠期望,你讀完全世界文章後來一一告訴我那些是你感興趣的

所以我希望能夠自動檢索出你感興趣的文章,這時候問題就來了...

我們該如何衡量文章之間的相似度?

顯然的我需要一種方法來判斷其他文章跟你正在看的文章的相似度

另一個問題是,我該如何從全部的文章中檢索出下一篇推薦給你的文章?

Word count representation for measuring similarity

首先要考慮的是,我們該如何處理我的資料?

最流行的方法之一稱為Bag-of-words model

這個模型忽略了句子的文章當中句子排列的順序,將它們全部丟到一個袋子裡面打散

其結果與原始文章在袋子裡對應是完全一樣的

忽略句子的結構與順序,僅僅只考慮丹自在文件中出現的次數

舉個例子,假設這文件中只有兩句話

"Carlos calls the sport futbol, Emily calls the sport soccer."

為了計算每個單字在文件出現的次數,我們定義一個考慮我們語言的向量如下圖所示

單字表中與文件出現相同的單字時,向量+1

最後將構成一個用來表示單字在文件中出現的次數有幾次的 Sparse matrix

https://ithelp.ithome.com.tw/upload/images/20171230/20107448CwO5QTS9jC.png

接著假設你正在閱讀一篇文章,我該如何找出其他你感興趣的文章呢?以下面的例子來說

https://ithelp.ithome.com.tw/upload/images/20171230/20107448NHJjeSabeL.png
假設有兩篇文章,我們將其透過Bag-of-words model,並且透過單字出現的次數建立 Sparse matrix

接著我們可以將兩篇文章對應的向量元素求出其點積並相加,數字將會呈現兩篇文章的相似度

但這種用單字統計度量文章相似度的方法有一個很大的問題

現在我們把同一份文章,複製並且黏合成為兩倍長度時,我們將得到更高的相似度
https://ithelp.ithome.com.tw/upload/images/20171230/201074489fqD06VnIC.png
這在文章檢索時並不合理,因為這將有助於更長的文章

那該如何解決這個問題呢?一般來說我們傾向於 normalize 這個向量

我們求出這個單字統計向量的範數(平方合和再取平方根)

透過這層處理,即便長度不一,我依然可以將他們置於相同的地位
https://ithelp.ithome.com.tw/upload/images/20171230/20107448R0fJqryCLy.png

Reference:


上一篇
[day 10] 分類-實作
下一篇
[day 12] 分群與相似度-2
系列文
到底是在learning什麼拉30

尚未有邦友留言

立即登入留言