2013-03-20 137 views
0

我有記錄(行)在數據庫中,我想識別相似的記錄。我有一個使用餘弦相似性的約束。如果變量(屬性,列)的類型而有所不同,並提出以這種形式:如何計算多類型數據的餘弦相似度?

[number] [number] [boolean] [20 words string] 

我如何可以繼續申請餘弦相似性的量化?對於字符串我可以採取簡單的tf-idf。但是對於數字和布爾值?這又如何結合?我的想法是矢量長度爲1 + 1 + 1 + 20。但是在語義上,只是將記錄的數字轉換爲我的向量中的係數,並將它們與字符串的tf-idf連接以計算餘弦相似度,這在語義上「高效」或者,我可以將數字視爲單詞並將tf-idf應用於數字。還有另一種技術嗎?

回答

0

向量中的每一個位置元件必須測量感興趣的實體的特定屬性/特性。通常,當涉及單詞時,可能會出現每個單詞的計數的向量元素。因此,您的矢量可能具有1 + 1 + 1 +(詞彙大小)的大小。

由於餘弦相似度計算基礎上的數字,你可能需要非數字轉換爲數字。例如,您可以使用0,1來表示布爾值。

你不提你的數字字段是否代表測量或離散值(例如,鍵)。如果數值是測量值,則餘弦相似性是非常合適的(儘管如果不同屬性的數量有不同的比例,它可能會偏差你的結果)。但是,如果數字代表關鍵字,那麼對每個字段使用單個屬性將會導致較差的結果,因爲5的關鍵點不會接近6而不是200關係,但是餘弦相似性不知道這一點。在數據庫字段包含密鑰的情況下,您可能希望爲每個可能的值都有一個布爾(0,1)向量元素。