## Wikidata 著錄問題,開源工具可以幫忙什麼 OpenStreetMap x Wikidata [[User:Planetoid]] --- ## Issues 1. 重複資料: 村里或縣市重複 2. 資料來源變動: 參照的維基百科條目改名/結束營業/整併 3. 資料錯誤: 有人把蔡琴跟周采芹搞混啦 4. 其他增進資料品質的方式 --- Slido QA ![](https://i.imgur.com/EHsinh0.png) https://app.sli.do/event/iyqpvodk --- ### Issue 1: 重複資料 村里或縣市重複 原因 * 建立新條目時或使用批次匯入資料工具,建立一筆或多筆條目時,沒有確認有無重複 解決方式構想 * 將縣市或村里名稱當作關鍵字,查詢有無重複條目 --- #### Method 1: 使用 Wikidata 網站介面 (少量資料的作法) 建立新條目之前,使用 Wikidata 網站搜尋介面,確認有無重複 ![](https://i.imgur.com/2hnlLHB.png =700x) --- 如果發現重複,可以合併重複的條目 (1) `更多 V` -> `合併` (介面簡體字 `合并`) ![](https://i.imgur.com/O0OVtNf.png) --- (2) 選擇要合併的其他條目識別碼 (Q 開頭 + 數字) ![](https://i.imgur.com/qPJwkgw.png =700x) --- #### 問題 1: 搜尋結果出現不相關條目 * 問題狀況: 搜尋結果前幾筆是標題或內容包含關鍵字的條目,但是結果後幾筆則會將關鍵字逐字拆解,例如搜尋「中崙里」卻會出現「崙東村」 * 處理方式: 改用精準搜尋,在關鍵字前後加上雙引號,例如 * 原: `中崙里` * 改: `"中崙里"` --- #### 問題 2: 更複雜的搜尋條件 不同縣市都有「中崙里」、同一縣市不同區也有「中崙里」 * 問題: 高雄市、台北市等不同縣市都有「中崙里」 * 處理方式: 將多個關鍵字空格,例如「高雄市 中崙里」或「"高雄市" "中崙里"」或者使用進階搜尋介面 --- ![](https://i.imgur.com/lfE7kht.png) --- #### Method 2: MediaWiki Action API (大量資料的作法) 資料狀況 * 台灣有 368 個[鄉鎮市區](https://zh.wikipedia.org/wiki/%E4%B8%AD%E8%8F%AF%E6%B0%91%E5%9C%8B%E8%87%BA%E7%81%A3%E5%9C%B0%E5%8D%80%E9%84%89%E9%8E%AE%E5%B8%82%E5%8D%80%E5%88%97%E8%A1%A8)(146鄉、38鎮、14市、170區),逐筆輸入手抽筋 解決方法 * 透過 MediaWiki Action API 多筆資料查詢 * `action=query` 取得來自及有關 MediaWiki 的資料。 * 授權條款: `GNU General Public License v.2` https://github.com/wikimedia/mediawiki/ * 說明文件: https://www.wikidata.org/w/api.php?action=help&modules=query --- #### 什麼是 API 應用程式介面 (Application Programming Interface, 簡稱 API) > 一種計算介面,它定義多個軟體中介之間的互動, > 以及可以進行的呼叫(call)或請求(request)的種類, > 如何進行呼叫或發出請求,應使用的資料格式,應遵循的慣例等。 出處: 維基百科 https://zh.wikipedia.org/zh-tw/%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E6%8E%A5%E5%8F%A3 --- ![](https://i.imgur.com/0yzo9z5.jpg =60%x) 相片授權: CC-BY-SA https://commons.wikimedia.org/wiki/File:Gonta_sushi.jpg --- > 服務生:協助餐廳系統內多個中介者 (櫃臺、廚師) 之間的互動, > 以及提供餐點其餐廳其他服務種類, > 如何點餐或請求其他服務,應使用的資料格式,應遵循的慣例 (點菜) 等。 --- * 透過服務生,顧客不需要精通廚房內怎樣備料、櫃台怎樣派工給廚房、廚師如何調理食材等內部細節。 * 透過 API,使用者不需要精通網站內怎樣連線、資料庫資料處理、資料交換過程與輸出等內部細節。 --- #### MediaWiki Action API 基本禮節 * API `讀` 資料雖然沒有硬性的存取限制,但是戳 API 太兇,會被無預警 ban * 循序呼叫 API,而非一次同時呼叫多個 API * 前一個 API 完成後,再呼叫下一個 API * (如果可以) 使用資料管線符號 (|) 在一次呼叫內,組合多個查詢條件,例如`titles=PageA|PageB|PageC`,而不一是一次查詢一個條件 --- * 如果回傳結果有多頁,則使用 `generator`,而不是每次重新呼叫 * 使用 Gzip 壓縮呼叫 API 節省頻寬,例如在 header 設定 > `Accept-Encoding: gzip` 參考資料: API:Etiquette https://www.mediawiki.org/wiki/API:Etiquette/zh --- ![](https://i.imgur.com/YHzVlnX.png =550x) --- #### API REQUEST 格式 ``` https://www.wikidata.org/w/api.php ?action=query &list=search &srsearch=中崙里 &format=json ``` 1. endpoint (端點) * 維基媒體基金會 Wiki API endpoint 格式 `http://example.org/w/api.php` * Wikidata API endpoint `https://www.wikidata.org/w/api.php` 2. 動作 * `action` 變數 `action=query` 呼叫 API 取得資料 --- 3. 模組 * `prop`: 取得條目屬性 * `list`: 取得符合條件的條目清單 * `meta`: 取得 wiki 或使用者後設資訊 (meta information) e.g. `meta=siteinfo` 取得 wiki 資訊 4. 其他變數 * `srsearch=中崙里` 搜尋標題或內容包含「中崙里」的條目 * `format=json` 回傳 `JSON` 格式 --- URL 查詢字串 ``` https://www.wikidata.org/w/api.php 端點 ?action=query 動作 &list=search 模組 &srsearch=中崙里 其他變數 &format=json ``` 直接打開[網址](https://www.wikidata.org/w/api.php?action=query&list=search&srsearch=%E4%B8%AD%E5%B4%99%E9%87%8C&format=json)、或在 API 沙箱[打開](https://www.wikidata.org/wiki/Special:ApiSandbox#action=query&format=json&list=search&srsearch=%E4%B8%AD%E5%B4%99%E9%87%8C) --- #### 關鍵字 `中崙里` 查詢結果 ![](https://i.imgur.com/WRmPxbq.png =550x) --- #### 問題 3: API 夾雜不相關的結果 關鍵字前後加上雙引號,例如`"中崙里"` 查詢結果:`snippet` 欄位標示符合的關鍵字 ![](https://i.imgur.com/jz37uZh.png =800x) 直接打開[網址](https://www.wikidata.org/w/api.php?action=query&list=search&srsearch=%22%E4%B8%AD%E5%B4%99%E9%87%8C%22&format=json)、或在 API 沙箱[打開](https://www.wikidata.org/wiki/Special:ApiSandbox#action=query&format=json&list=search&srsearch=%22%E4%B8%AD%E5%B4%99%E9%87%8C%22) --- #### 問題 4: 輸入中文關鍵字,API 回傳英文結果 > 查詢變數加上 `uselang=zh-tw` ``` https://www.wikidata.org/w/api.php ?action=query &list=search &srsearch=中崙里 &uselang=zh-tw &format=json ``` 偏好英文則使用 `uselang=en`,如果已經登入 wikidata 帳號,瀏覽器顯示的 API 結果會套用帳號設定的介面語言 直接打開[網址](https://www.wikidata.org/w/api.php?action=query&list=search&srsearch=中崙里&uselang=zh-tw&format=json)、或在 API 沙箱[打開](https://www.wikidata.org/wiki/Special:ApiSandbox#action=query&format=json&uselang=zh-tw&list=search&srsearch=%E4%B8%AD%E5%B4%99%E9%87%8C) --- #### 語言代碼清單 | 語言代碼 | 名稱| | -------- | -------- | | en | 英文 | | hak | 客家話 | | zh | 中文 | | zh-tw | 中文(台灣) | | zh-hant | 中文(繁體) | | zh-classicallzh | 文言 | | zh-yue | 粵語 | 相關資料: [其他語言代碼](https://www.mediawiki.org/wiki/API:SetPageLanguage) --- #### 問題 5: API 指定了 lang=中文,還是回傳英文結果 > 錯誤訊息: Unrecognized parameter: lang. > 查詢變數是 `uselang=zh-tw` 不是 `lang`、也不是 `setpagelanguage` ``` https://www.wikidata.org/w/api.php ?action=query &list=search &srsearch=中崙里 &uselang=zh-tw &format=json ``` --- #### 問題 6: API 結果中文亂碼 (\u 和一串數字反覆出現) \uxxxx 是將 Unicode 文字編碼,要還原成一般可讀中文字,可用 * Chrome/Edge 瀏覽器 + 擴充套件 JSONView https://chrome.google.com/webstore/search/jsonview * Firefox 瀏覽器直接還原成一般可讀中文字 * 或使用程式 json decode 編碼 (Encoding) 相關資料: https://rapidjson.org/md_doc_encoding.html --- #### API 沙箱 API 沙箱 (sandbox) 可調整選項變數 * wikidata https://www.wikidata.org/wiki/Special:ApiSandbox * wikipedia https://en.wikipedia.org/wiki/Special:ApiSandbox ![](https://i.imgur.com/JZVN1IV.png) --- 可預覽 API 結果 ![](https://i.imgur.com/U2EwVoX.png) --- 方便取得 URL 查詢字串 ![](https://i.imgur.com/DniLh1n.png) 如果遇到跑版狀況,瀏覽器需要往右捲才能看到 --- ### Issue 2: 資料來源變動 參照的維基百科條目改名/結束營業/整併 改名狀況 e.g.「加工出口區楠梓園區」-->「楠梓科技產業園區」 * 資料呈現: 原維基百科條目「[加工出口區楠梓園區](https://zh.wikipedia.org/w/index.php?title=%E5%8A%A0%E5%B7%A5%E5%87%BA%E5%8F%A3%E5%8D%80%E6%A5%A0%E6%A2%93%E5%9C%92%E5%8D%80&redirect=no)」重新導向頁面 (redirect) 到「[楠梓科技產業園區](https://zh.wikipedia.org/wiki/%E6%A5%A0%E6%A2%93%E7%A7%91%E6%8A%80%E7%94%A2%E6%A5%AD%E5%9C%92%E5%8D%80)」 * 預期結果: 直接修改 Wikidata [楠梓科技產業園區 (Q10900780)](https://www.wikidata.org/wiki/Q10900780) 條目的「標籤」,並將舊名加到「別稱」 --- 結束營業 e.g. 「台北市兒童交通博物館」2008年閉館,目前原址是「台北市客家文化主題公園」 * 資料呈現: 原維基百科條目「[台北市兒童交通博物館](https://zh.wikipedia.org/w/index.php?title=%E5%8F%B0%E5%8C%97%E5%B8%82%E5%85%92%E7%AB%A5%E4%BA%A4%E9%80%9A%E5%8D%9A%E7%89%A9%E9%A4%A8&redirect=no)」重新導向頁面到「[臺北市客家文化主題公園](https://zh.wikipedia.org/wiki/%E8%87%BA%E5%8C%97%E5%B8%82%E5%AE%A2%E5%AE%B6%E6%96%87%E5%8C%96%E4%B8%BB%E9%A1%8C%E5%85%AC%E5%9C%92)」 * 預期結果: 不同機構分別建立兩個 WikiData 條目 [兒童交通博物館 (Q9403819)](https://www.wikidata.org/wiki/Q9403819)、[臺北市客家文化主題公園 (Q98000157)](https://www.wikidata.org/wiki/Q98000157) --- 村里整併 e.g. 台南市「烏樹里」2018年併入「後壁區」 * 資料呈現: Wikipedia 無「烏樹里」條目 * 預期結果: 分別建立兩個 WikiData 條目:[後壁區 (Q709000)](https://www.wikidata.org/wiki/Q709000)、[烏樹里 (Q96976284)](https://www.wikidata.org/wiki/Q96976284?) --- #### 資料狀況與解決方式構想 資料狀況 * Wikipedia 原條目「兒童交通博物館」關注度不足,形同被刪除 * Wikidata 有「解散、廢除或拆毀日」欄位 * Wikipedia 舊條目都是重新導向頁面到新條目 解決方式構想 * Wikidata 條目只能有一個 中文語系 Wikipedia (sitelink)欄位值 * 查詢引用的 Wikipedia 條目名稱是否與 Wikidata 一致 --- #### Method: 使用 API 取得條目名稱、sitelink 與條目名稱 步驟 (1) 指定 Wikidata 識別碼,取得 Wikidata 條目標籤 * 使用 `action=query` 與 `prop` 取得 Wikidata 資料。 * 授權條款: GPL-2.0-or-later * 說明文件: https://www.wikidata.org/w/api.php?action=help&modules=query --- 步驟 (2) 取得中文 Wikipedia sitelink 與條目名稱 * 使用 `action=wbgetentities` 取得多個 Wikibase 實體的資料。 * 授權條款: GPL-2.0-or-later * 說明文件: https://www.wikidata.org/w/api.php?action=help&modules=wbgetentities --- #### 步驟 (1) 指定 Wikidata 識別碼,取得 `條目標籤` URL 查詢字串 ``` https://www.wikidata.org/w/api.php ?action=query 取得 Wikidata 資料 &prop=cirrusbuilddoc 取得頁面資料 &titles=Q98000157 指定 Wikidata 識別碼 e.g. Qxx &format=json 輸出 JSON 格式 ``` 直接打開[網址](https://www.wikidata.org/w/api.php?action=query&format=json&prop=cirrusbuilddoc&titles=Q98000157)、或在 API 沙箱[打開](https://www.wikidata.org/wiki/Special:ApiSandbox#action=query&format=json&uselang=zh-tw&prop=cirrusbuilddoc&titles=Q98000157) --- ![](https://i.imgur.com/Cs3K6HO.png) --- ![](https://i.imgur.com/2kPbQ9m.png =600x) --- #### 步驟 (2) 取得中文 Wikipedia sitelink 與條目名稱 URL 查詢字串 ``` https://www.wikidata.org/w/api.php ?action=wbgetentities 取得 Wikibase 實體的資料 &props=sitelinks 取得 sitelinks 欄位資料 &ids=Q98000157 指定 Wikidata 識別碼 e.g. Qxx &format=json 輸出 JSON 格式 ``` 直接打開[網址](https://www.wikidata.org/w/api.php?action=wbgetentities&format=json&props=sitelinks&ids=Q98000157)、或在 API 沙箱[打開](https://www.wikidata.org/wiki/Special:ApiSandbox#action=query&action=wbgetentities&format=json&props=sitelinks&ids=Q98000157) --- ![](https://i.imgur.com/BoevzE8.png) --- 對應 Wikidata 上[臺北市客家文化主題公園 (Q98000157)](https://www.wikidata.org/wiki/Q98000157)的 2 筆 sitelink 資料 ![](https://i.imgur.com/JCXWn3l.png) --- #### 比較 Wikidata 條目標籤 與 中文 Wikipedia 名稱 * Wikidata: `臺北市客家文化主題公園` * JSON 路徑: `cirrusbuilddoc/labels/zh-tw` * 中文 Wikipedia: `臺北市客家文化主題公園` * JSON 路徑: `sitelinks/zhwiki/title` --- #### 容易混淆的名詞 * 標籤/名稱 * Wikidata 有多語系,所以同一實體可能有多個語言的 `條目標籤` 相當於 Wikipedia `條目名稱` * Wikidata 編號系統:API 結果看到兩種編號系統 * 以 Q 開頭的識別碼,例如 `title=臺北市客家文化主題公園` 對應 `id=Q98000157` * 數字的編號,例如 `title=臺北市客家文化主題公園` 對應 `pageid=96289044` * 使用者網頁上看到的只有 Q 開頭的識別碼,所以 pageid 讓開發者傷腦筋就可以了 --- #### 問題 7: 指定 Wikidata 識別碼,取得條目資訊太少 `prop=info` 取得條目資訊太少 (直接打開[網址](https://www.wikidata.org/w/api.php?action=query&format=json&prop=info&titles=Q98000157)),需要改用 `prop=cirrusbuilddoc` ![](https://i.imgur.com/PVpa4bk.png =500x) --- #### 問題 8: 不同語系 sitelink 太多 法國 [羅浮宮 (Q19675)](https://www.wikidata.org/wiki/Q19675) 共 144 筆 sitelink 資料 ![](https://i.imgur.com/y9YFCiN.png) --- URL 查詢字串使用 `sitefilter=zhwiki` 篩選要顯示的特定 wiki 網站 ``` https://www.wikidata.org/w/api.php ?action=wbgetentities 取得 Wikibase 實體的資料 &props=sitelinks 取得 sitelinks 欄位資料 &ids=Q98000157 指定 Wikidata 識別碼 &sitefilter=zhwiki 只要顯示 zhwiki 網站資料 &format=json 輸出 JSON 格式 ``` 直接打開[網址](https://www.wikidata.org/w/api.php?action=wbgetentities&format=json&props=sitelinks&ids=Q98000157&sitefilter=zhwiki)、或在 API 沙箱[打開](https://www.wikidata.org/wiki/Special:ApiSandbox#action=wbgetentities&format=json&props=sitelinks&ids=Q98000157&sitefilter=zhwiki) --- 原本有 hakawiki 和 zhwiki,改成只顯示 zhwiki ![](https://i.imgur.com/SKWfI4t.png) --- #### 常見 wiki 代碼 | site id | 語言 | | -------- | -------- | | enwiki | 英文 [Wikipedia](https://en.wikipedia.org/wiki/Main_Page) | | zhwiki | 中文 [维基百科](https://zh.wikipedia.org/wiki/Wikipedia:%E9%A6%96%E9%A1%B5) | | zh-yuewiki | 粵文 [維基百科](https://zh-yue.wikipedia.org/wiki/%E9%A0%AD%E7%89%88) | | zh_min_nanwiki | 閩南語 [Wikipedia, chū\-iû ê pek\-kho\-choân\-su](https://zh-min-nan.wikipedia.org/wiki/Th%C3%A2u-ia%CC%8Dh) | | classicalwiki | 文言 [維基大典](https://zh-classical.wikipedia.org/wiki/%E7%B6%AD%E5%9F%BA%E5%A4%A7%E5%85%B8:%E5%8D%B7%E9%A6%96) | | hakwiki | 客家話 [維基百科-自由个百科全書](https://hak.wikipedia.org/wiki/Th%C3%A8u-Ya%CC%8Dp) | --- ### Issue 3: 資料錯誤 有人把蔡琴跟周采芹搞混啦 有人把 #[蔡琴](https://zh.wikipedia.org/wiki/%E8%94%A1%E7%90%B4) 跟 #[周采芹](https://zh.wikipedia.org/wiki/%E5%91%A8%E9%87%87%E8%8A%B9) 搞混啦 ![](https://i.imgur.com/ZICiLoT.png =500x) [文章網址](https://www.facebook.com/groups/2212207218990971/permalink/2782423421969345/) --- #### Method: 電腦視覺辨識 [維基百科](https://zh.wikipedia.org/wiki/%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%A7%86%E8%A7%89): ``` 電腦視覺(Computer vision)是一門研究如何使機器「看」的科學, 更進一步的說,就是指用攝影機和電腦代替人眼對目標進行辨識、 跟蹤和測量等機器視覺,並進一步做圖像處理 ``` --- 秋田 (Akita)、柴犬 (Shiba) 傻傻分不清 ![](https://i.imgur.com/EgzUmPX.jpg =200x) ![](https://i.imgur.com/M29eiEF.jpg =300x) https://zh.wikipedia.org/wiki/%E7%A7%8B%E7%94%B0%E7%8A%AC https://zh.wikipedia.org/wiki/%E6%9F%B4%E7%8A%AC --- 使用「名人人臉辨識」(Celebrity recognition) * [Amazon Rekognition](https://aws.amazon.com/tw/rekognition/?blog-cards.sort-by=item.additionalFields.createdDate&blog-cards.sort-order=desc) * [DeepAI](https://deepai.org/machine-learning-model/celebrity-recognition) * 其他家 ... --- #### 周采芹辨識結果 ![](https://i.imgur.com/9uYYzWa.jpg) --- #### 蔡琴辨識結果 1 臉被麥克風遮住,要辨識難了點 ![](https://i.imgur.com/lZCtF06.jpg) --- #### 蔡琴辨識結果 2 ![](https://i.imgur.com/6jS4T5B.jpg) --- #### 資料錯誤可能原因 兩位明星英文名相同,導致相片 Commons 放錯,連帶影響 Wikidata * 周采芹 [Tsai Chin \(actress\)](https://en.wikipedia.org/wiki/Tsai_Chin_(actress)) * 蔡琴 [Tsai Chin \(singer\)](https://en.wikipedia.org/wiki/Tsai_Chin_(singer)) --- #### 電腦影像辨識 名人辨識結果 | 照片 | 預期結果 | [AWS](https://aws.amazon.com/tw/rekognition/?blog-cards.sort-by=item.additionalFields.createdDate&blog-cards.sort-order=desc) 辨識結果 | [DeepAI](https://deepai.org/machine-learning-model/celebrity-recognition) 辨識結果 | | -------- | -------- | -------- | -------- | | ![](https://i.imgur.com/0TWEVMm.jpg =50x) | 周采芹 | [Tsai Chin](https://www.imdb.com/name/nm0157796/) | N/A | | ![](https://i.imgur.com/En2rWDB.jpg =50x) | 蔡琴 | N/A | N/A | | ![](https://i.imgur.com/zr6xFpo.jpg =50x) | 蔡琴 | [Tsai Chin](https://www.imdb.com/name/nm0157797) | N/A | 相片來源:前兩張取自[Wikimedia Commons](https://commons.wikimedia.org/wiki/Main_Page)、第三張相片取自[台大圖書館](http://focus.lib.ntu.edu.tw/?q=zh-hant/%E5%8F%B0%E7%81%A3%E6%A0%A1%E5%9C%92%E6%B0%91%E6%AD%8C/%E7%B5%B2%E7%B5%A8%E6%AD%8C%E5%90%8E-%E8%94%A1%E7%90%B4) --- ### Issue 4: 其他增進資料品質的方式 * 屬性約束值 (Property constraints) https://www.wikidata.org/wiki/Help:Property_constraints_portal * [Wikidata Schemas](https://www.wikidata.org/wiki/Wikidata:Schemas) 規範特定類型條目有哪些屬性,例如人使用 [Schema:E10](https://www.wikidata.org/wiki/EntitySchema:E10) * 讓問題更容易被發現 * 讓問題修正更容易被進行 --- Slido QA ![](https://i.imgur.com/EHsinh0.png) https://app.sli.do/event/iyqpvodk
{"metaMigratedAt":"2023-06-16T00:07:25.798Z","metaMigratedFrom":"YAML","title":"Wikidata 著錄問題,開源工具可以幫忙什麼","breaks":true,"slideOptions":"{\"theme\":\"white\",\"transition\":\"fade\"}","contributors":"[{\"id\":\"2d64bd97-01e5-4872-b941-bf0089ad4bda\",\"add\":33247,\"del\":19359}]"}
    537 views