2013-08-23 48 views
-2

我有一個非常有趣的問題陳述...我有兩個實際上彼此相關的數據集(它們都與汽車製造商和模型有關)。雖然其中一個是處理數據(品牌,型號和變體已被拆分,處理和編輯),而另一列是原始數據。文本挖掘數據總量

有什麼辦法可以讓兩者有聯繫嗎?我完全失去了,因此,沒有提供任何代碼。問題是沒有辦法鏈接兩列,因爲沒有SID ....它的純名字。

+1

你沒有提供足夠的信息,也沒有一個具體問題,足以在這裏真正回答。是的,你可以把它們聯繫起來。不,它不像「波浪魔杖」那麼簡單;這取決於你的數據,可能涉及很大的努力,遠遠超過了對一個問題的答案是適當的。 – Joe

+0

我對不提供信息表示歉意。只是沒有提供的信息......我知道這將是一項非常艱鉅的任務(文本分析從不簡單)......我想要一個理想的地方開始......我想也許,我會得到想法從哪裏開始... – galeej

回答

0

喬是對的,你需要提供樣本數據或至少一個起點,這是一個很好的問題。但無論如何,這都是一個答案的嘗試。

如果你只有名稱變量,假設它們是字符變量,你將要使用字符串比較函數。一般程序如下:

  1. 通過刪除標點符號和標準化大小寫來清除兩個名稱變量。您應該使用compress()和upcase()或lowcase()函數作爲起點。

  2. 接下來,您需要將一個數據集中的每個名稱與另一個數據集中的每個名稱進行比較,並選擇最相似的對作爲初步匹配。查看spedis()和complev()函數,找出創建相似度得分的方法。

  3. 查看輸出數據集結果!像這樣的模糊匹配可以調整得很好,但從長遠來看它不會是完美的,您必須至少檢查結果的隨機樣本以檢查錯誤。前幾次你會發現問題,並希望通過更新#2中的評分方法來開始向更好的解決方案進行迭代。

這裏是代碼的一個非常基本的外殼可能會有所幫助:

DATA output_matches (keep = name_1 match_name match_score); 
    SET input_data_1; 

    match_score = 0; 

    do i = 1 to N_data_2; /* N_data_2 is the number of observations in data set 2. */ 

     SET input_data_2 point = i; 

     score = ...; /* You need to edit this to calculate a similarity score between the variables name_1 and name_2. */ 

     if score < match_score then do; 
      match_score = score; 
      match_name = name_2; 
     end;    

    end;  
RUN; 
+0

非常感謝幫助...我會給它一個鏡頭,並更新你,當我得到一些結果! – galeej