-1
我的數據集大約有數千行(或大約數百個RDF三元組的數百行)。從表格的角度來看,每行表示一個人參與一些過程。數據嘈雜,似乎是單獨的個人可能實際上是同一個人。 根據規則,我需要權威地爲每個在數據中建模的獨特人員分配新的標識符,但我甚至不知道這種做法是否有名稱。基於規則的分組近似的個體(不聚類?)
我熟悉各種聚類方法,但這對我來說似乎不同。我不知道真正的數字獨特的個人,我不想找到他們之間有最小距離的個人。我想找到符合我的合作者提供的一些規則的個人。
舉例來說,如果我有這些數據:
+-------------+-----+------------+--------+
| Transaction | ID | DOB | Gender |
+-------------+-----+------------+--------+
| 1 | 111 | 5/5/1969 | M |
| 2 | 112 | 6/6/1966 | F |
| 3 | 113 | 7/7/1970 | F |
| 4 | 113 | 9/9/1970 | F |
| 5 | 114 | 2/3/2000 | M |
| 6 | 114 | 2/4/2000 | F |
| 7 | 115 | 9/10/2001 | M |
| 8 | 115 | 11/11/2001 | F |
+-------------+-----+------------+--------+
而且這些詳盡的規則
- 人具有相同標識符和同性別是相同的 人
- 人誰具有相同的標識符並具有出生日期 一天之內另一個人是同一個人
那麼解決辦法是
+-------------+-----+------------+--------+-----------------+-----------------------------------------------------+
| Transaction | ID | DOB | Gender | UniqueIdByRules | Notes |
+-------------+-----+------------+--------+-----------------+-----------------------------------------------------+
| 1 | 111 | 5/5/1969 | M | A | |
| 2 | 112 | 6/6/1966 | F | B | |
| 3 | 113 | 7/7/1970 | F | C | |
| 4 | 113 | 9/9/1970 | F | C | IDs identical, genders identical |
| 5 | 114 | 2/3/2000 | M | D | |
| 6 | 114 | 2/4/2000 | F | D | IDs identical, birthdates within one day of another |
| 7 | 115 | 9/10/2001 | M | E | |
| 8 | 115 | 11/11/2001 | F | F | |
+-------------+-----+------------+--------+-----------------+-----------------------------------------------------+
我的「最好的語言」是R,但我的項目的核心語言是斯卡拉。所以我特別感興趣的是可以在R,Scala或Java中合理實現的解決方案。原始數據來作爲表格,但轉換爲RDF三元組在我的過程中相當早,所以也許SWRL是相關的?我的一個合作者隨便提出PyCLIPS這樣的問題,所以也許Jess或Drools是相關的?
- 我的問題/任務叫什麼?
- 除了詳盡的配對比較之外,是否有現有解決方案?
- 我是否會遇到傳遞性問題,因爲我有兩條(或更多)規則,其中一條不需要標識?
你確切的問題是什麼?你想從最初的最終數據框?或者你已經有解決方案,你只是想找出這個過程的名字? –
謝謝,@RameshMaharjan。我還沒有實現任何東西。我用手輸入了最終的和最初的。除了詳盡的配對比較之外,我想不出有任何辦法可以進行1天的出生日期比較,這看起來效率不高。而規則可能會在未來發生變化,所以我正在尋找一些可以普遍化的東西。 –
@MarkMiller您的樣本數據中存在一個小錯誤,即id'113'將根據性別規則不匹配 – AKSW