《Using OpenRefine》翻譯~14

上一篇:《Using OpenRefine》翻譯~13

第四章:數據集關聯

數據集之間並不是互相獨立的。總在某些時候,可能在你預想不到的地方,數據之間互相關聯,比如,如果你的數據集有一列是關於國家的數據,那麼這列就和國家地理數據庫有關聯。一個書籍數據庫中關於作者的列就和人物傳記數據庫有關聯。所有的數據集都有這種聯繫,但是可能你並沒有覺察到,有時候計算機也沒有。舉個例子,書籍數據庫中某條關於The Picture of Dorian Gray的記錄可能列出作者是Wilde, O,但是人物傳記數據庫中可能只有一條關於Oscar Wilde的記錄。雖然它們都指向同一個人,但是具體表達式是不同的,這也導致很難對它們進行關聯。另外,確實很難對所有數據集進行關聯,因爲實在數據量太大了。

所以,我們的目的是找到單元格值得唯一標識符。這裏就是URL(統一資源定位符)。我們這裏不再用名稱Oscar Wilde來唯一標識,而是使用URL地址 http://en.wikipedia.org/wiki/Oscar_Wilde.來代替 。這樣不光 我們 能夠使用URL來 唯一標識作家Oscar Wilde(不會與碰巧叫同一個名字的人搞混),而且還可以通過點擊鏈接來訪問更多的信息。因此,URL可以使得我們能夠把不同的數據集互聯起來。在本章中,我們將學習如何把 與URL進行關聯,具體的內容有以下幾點:

•點1-使用Freebase解析值

•點2-安裝擴展包

•點3-增加解析服務

•點4-與關聯數據進行解析

•點5-抽取單名稱項

和以前一樣,你也可以直接閱讀你感興趣的點。但是請確保在學習後三點前學會如何安裝OpenRefine擴展包。學習每一點前請使用原始的Powerhouse Museum數據集,其中Categories列已經擴展成了多行。

 

 

 

•點1-使用Freebase解析值

當你想將單元格值從一串簡單字符串轉換成URL時,你有很多的選擇,因爲一個確定的內容可以被很多URL所解析,這些不同的URL指向同一個主題。只要每個URL都清晰無誤的指向一個單一的內容就沒有什麼大的問題。但是,我們還是得確定一個我們所要使用的URL。在互聯網上,有很多關於內容的數據庫,最出名的是Wikipedia。對於人類來說有很多這樣的數據庫,當然對於電腦來說也有很多。有一個例子是Freebase。這是一個共創知識集,基於對機器可讀的特性,基本上覆蓋了現有大部分主題。

在openRefine以前叫做Google Refine的時候,其是被Freebase創建者MetaWeb擁有的,並且它的名稱叫做Freebase Gridworks。作爲一個處理大數據集的工具,其天生就和Freebase結構化數據相契合。

因此,我們將把單元格值解析成Freebase URL。因爲Freebase 解析是OpenRefine內置的,所以我們可以直接嘗試。記得我們在對Powerhouse數據集進行處理的時候Categories列已經被分割成多行。這很重要,我們必須確保每個單元格包含單個值,這個值將於一個Freebase主體匹配。多內容字段比如Description就不合適用來直接解析。(對於這種情況,可以使用本章最後一點:抽取單名稱項來解決)

點擊Categories 列下拉菜單Reconcile|Start reconciling…. 開始對單元格進行解析。OpenRefine 會彈出解析對話框。在對話框左側你可以看到解析服務項,有兩個Freebase解析項是內置的:

Freebase Query-based Reconciliation: 當列值已經是Freebase IDs (比如 /en/solar_system) 或者 GUIDs(十六進制標識符)時特別有用。

Freebase Reconciliation Service:此項不要求嚴格與Freebase標識符對應,用來應對更加一般的情況。

很顯然我們需要選擇第二項:Freebase Reconciliation Service.進過一會,OpenRefine會在右側顯示服務參數配置界面:


 

你的OpenRefine打開界面可能和上圖略有不同,因爲你可以自己安裝解析服務,我們將在下一點中介紹

有三個選項可以用來設置。首先,你需要確定什麼類型的記錄需要解析。這個能夠限制只搜索特定的主題,這在你的列只包含城市或者人名時十分高效。這樣設置的話解析會很快,並且發生錯誤解析的可能性較低。在你選擇解析服務並開始解析後,OpenRefine會與解析服務器你選擇的部分數據進行交互,並且嘗試猜測你列的數據類型。這裏恰恰不湊巧,這裏提供的Categories列的兩個選項:人名和地址並不與該列明顯相關。當然我們也可以選擇Reconcile against type.來自己設定,但是這裏我們並不能確定是否數據集中的categories列是否屬於某個特定的類型,所以我們只選擇Reconcile against no particular type.

第二個可以選擇的選項是Auto-match candidates with high confidence。解析服務會返回一個匹配分數,這個分數來指示匹配的程度。這個選項默認是選中的,這表明如果分數足夠高,OpenRefine會假設這個選擇正確並且申明這個匹配。對於其他單元格(如果你去掉了該選項勾選),那麼你就得手工確認匹配項。我們的建議是你還是保留勾選,因爲這能夠節省大量的時間。

第三個也是最後一個選項能夠讓我們發送額外列數據到解析服務器。這不同於匹配單列值,這個選項可以讓我們考慮多個列內容。你需要指定某個合適的列。對於Powerhouse Museum數據集,並沒有這樣相關的列存在。但是如果你有一個數據集,包含國家名稱和國家碼,那麼將它們同時發送到解析服務會比較好。

選中Reconcile against no particular type ,點擊Start Reconciling.解析進程需要一段時間完成,因爲OpenRefine需要對每一個單元格值進行解析以找到一個URL。頂部黃色的提示條會告訴你進度。


解析過程需要時間,你可以休息一下或者幹其他工作,而讓解析過程在後臺運行。解析結束後,你會發現OpenRefine自動創建了一列:judgement並且顯示了best candidate's score透視圖。


judgement 透視圖將數據集中的行分成“已解析到”和“未解析到”,另外還有Categories列中的空值單元格(這些本來就無法解析)。你可能會感到奇怪,這裏只有 (blank)none ,那已解析到的行呢?

很不幸運,這表明,用Freebase解析的結果是沒有找到匹配項。是不是意味着我們做錯了呢?不是,這只是表面我們的數據Freebase並沒有涉及到。那是不是以爲這Freebase不是一個好的解析方式呢?當然不是,這只不過碰巧不適合我們的數據。你可能在其他數據集中得到結果,所以值得一試。

讓我們撤銷透視,點擊RemoveAll 按鈕,或者通過Undo / Redo菜單撤銷(你可以通過Categories下拉菜單| Reconcile |Facets.重新獲得透視圖)。下一點我們將介紹如何使用其他的解析服務。

某些時候,你可能僅僅想看下解析服務如何運作。那麼是不是意味着每次都需要對全部數據進行解析呢?如果你使用透視功能就不需要!我們可以嘗試對一小部分數據進行解析來了解是否需要對所有數據也進行解析。我們可以作下隨機選取,比如,我們可以對Record ID列運行文本透視,輸入比如4.因爲所有ID是按自然數順序增加的,所以我們大概可以選出10%左右的數據。如果這些數據還是過大,那你可以增加數字位數知道數據量減少到幾百左右,比如,413就比較合適。

 

 

•點2-安裝擴展包

雖然OpenRefine能夠讓你簡單的開始解析服務,但是這些服務必須以其規定的方式運行。其實,還有很多不同的解析服務,如果你想使用它們,你就需要以擴展包的方式添加到OpenRefine中。所以在我們介紹如何使用這些解析服務前,我們首先需要學習如何安裝這些擴展包。當然並不是所有的擴展包都是用來提供解析服務的,所以這裏只介紹一般的安裝過程。在寫本文時,有許多OpenRefine擴展包可用,比如下面:

• RDF 擴展包( Digital Enterprise Research Institute(DERI)),這個包提供了對RDF導出格式的支持,對SPARQL 終端查詢功能的支持,我們將在下一點中介紹。

•  Named-Entity Recognition (NER) 擴展包,此包是本書作者之一所寫,可以讓你從多內容單元格中抽取URL。本章最後一點將會介紹。

OpenRefine一樣,擴展包也是免費的。最新可用擴展包清單可以在https://github.com/OpenRefine/OpenRefine/wiki/Extensions查到,也可以通過此頁面的鏈接下載。因爲擴展包多種多樣,所以你可能會疑惑如何安裝。本點將介紹如何安裝它們。

首先,你需要找到擴展包安裝的路徑。這個取決於你的操作系統,當然OpenRefine能夠幫助你找到。在開始界面的底部 ,有一個鏈接叫做Browse workspace directory


如果你點擊這個鏈接,你會打開OpenRefine的軟件安裝目錄(起碼win和mac系統如此,linux的話請看後面)。在這個目錄中,如果沒有一個文件夾叫做extensions,那麼就創建下,這就是你需要安裝擴展包的目錄。不同的操作系統,可能是下面的不同顯示格式:

Windows:

C:\DocumentsandSettings\(yourusername)\ApplicationData\OpenRefine\extensions 或者可能在 Local Settings 文件夾,那麼顯示可能是 C:\Documents and Settings\(your username)\LocalSettings\ApplicationData\OpenRefine\extensions

Mac OS X: /Users/(your username)/Library/Application Support/OpenRefine/extensions 或者根目錄下/Users/(your username)/Library/Application Support/OpenRefine/extensions

Linux: /home/refine/webapp/extensions

下一步是下載一個擴展包並且放到此文件夾中。這裏讓我們安裝RDF擴展包。我們可以到http://refine.deri.ie/下載。下載下來的是ZIP文件。使用你的解壓文件解壓,會得到一系列的文件夾,我們需要的是rdf-extension。

將這個文件夾我們創建的OpenRefine的 extensions文件夾中,這樣在extensions文件夾中我們就會有一個rdf-extension文件夾,裏面包含一些其他的文件夾,如images, MOD-INF, scripts和 styles。

現在重啓OpenRefine以使擴展包生效。只關閉瀏覽器是不夠的。你必須在屏幕底部圖標上點擊選擇close纔行。然後再次打開OpenRefine並且創建一個項目。當項目創建後,右側頂部會顯示RDF按鈕 ,這表明 安裝 已經成功。


如果你沒有看到這個按鈕,請檢查下,是否擴展包文件夾位置對不對,還有OpenRefine是不是重新啓動了。

你可以嘗試對其他擴展包進行上述安裝步驟。下一點中我們將用到RDF擴展包,所以請先安裝。最後一點中,我們還將用到NER擴展包,所以現在也安裝好吧。


下一篇:《Using OpenRefine》翻譯~15



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章