Wikidata:Mezi bajty/OpenRefine Workshop

From Wikidata
Jump to navigation Jump to search
Logo OpenRefine

Wikidata Workshop OpenRefine je workshop zaměřený na použití OpenRefine (http://openrefine.org/), což je mocný nástroj při importu dat - hlavně co se týče čištění dat, párování s existujícími položkami a nahrávání (viz také Wikidata:Tools/OpenRefine). Nástroj je opensource a multiplatformní - funguje pod Windows, Linuxem i Macem. Prakticky si zkusíme nějaký ten import dat do Wikidat. Viz také Událost na FB.

Na workshop je třeba donést si vlastní notebook ideálně s již nainstalovaným OpenRefine, na místě zřejmě nebudou k dispozici. Organizátorem této akce je Josef Klamo za finanční podpory Wikimedia Czech Republic (Q15735556). Pro mimopražské je možné nechat si proplatit jízdní výdaje, viz ticker v trackeru.

Termín a místo konání

[edit]

Termín: 10. ledna 2020, 18:00 - 20:00
Místo: Kancelář spolku Wikimedia Czech Republic (Q15735556) v SVĚT–HUB (Q55657858), budova Slovenská 21 (Q60577795). Předpokládaný program:

  • 18:00 - 18:50 - úvod a import jednoduchého datasetu společně
  • 18:50 - 19:10 - přestávka
  • 19:10 - 20:00 - import složitějšího menšího datasetu
  • 20:00 - dále - volná zábava (s importy i bez importů)

Co si připravit

[edit]
  • notebook s nainstalovaným OpenRefine (http://openrefine.org/download.html) - stačí verze 3.2 (odvážlivci mohou zkusit i 3.3 RC1), k dispozici bude zřejmě jen jeden notebook
  • menší dataset na import do druhé části workshopu (ideálně do 1000 položek); kdo si nepřinese, bude mu přidělen

Účastníci

[edit]

Zapsat se můžete zde nebo do FB události.

  1. Vojtěch Dostál (talk) 13:31, 3 January 2020 (UTC)[reply]
  2. --MIGORMCZ (talk) 12:02, 7 January 2020 (UTC)[reply]
  3. Nečekal jsem to, ale vypadá to, že nakonec mám čas.--Ben Skála (talk) 12:57, 8 January 2020 (UTC)[reply]
  4. těším se na vás, páni a dámy. --Frettie (talk) 09:50, 9 January 2020 (UTC)[reply]
  5. Linda.jansova (talk) 05:47, 10 January 2020 (UTC)[reply]

Cheatsheet

[edit]
  • Textové GREL funkce
  • Joinování tabulek - např: cell.cross('NKCR-QID convert table','nkcr').cells['item'].value[0]
  • API call pro reconciliation podle českých štítků: https://wdreconcile.toolforge.org/cs/api
  • Získat QID z reconciled sloupce - cell.recon.match.id
  • Vyzobnutí části textu regulákem - Nějaký text (závorka) - value.match(/(.*) \((.*)\)/)[0] -> Nějaký text (případně value.match(/(.*) \((.*)\)/)[1] -> závorka).
  • Nový sloupec s čímkoliv "nějaký text"
  • Srovnání dvou sloupců: if(cells["a"].value == cells["b"].value, "Y", "N")
  • Počet urč. znaků v určitém stringu: value.split(",").length()-1
  • Ztransformovat URL stránky na Wikipedii do ASCII tak, aby ho bylo možné reconciliovat: substring(value,0,indexOf(value,"/wiki/")+6) + escape(substring(value,indexOf(value,"/wiki/")+6),'url')
  • Jak vytáhnout z daného QID daný sitelink - návod: https://groups.google.com/g/openrefine/c/nplJxIFOPR8/m/QmKE0WyEAQAJ
  • Převést datum DD.MM.RRRR na RRRR-MM-DD : forEach(value.replace(" ","").split("."),v,if(length(v)==1,0+v,v)).reverse().join("-")
Výpočet vzdálenosti mezi dvěma GPS

import math def haversine_distance(lat1, lon1, lat2, lon2):

   R = 6371 # Earth's radius in kilometers
   dLat = math.radians(lat2 - lat1) # Convert degrees to radians
   dLon = math.radians(lon2 - lon1) # Convert degrees to radians
   a = math.sin(dLat/2) * math.sin(dLat/2) + \
       math.cos(math.radians(lat1)) * math.cos(math.radians(lat2)) * \
       math.sin(dLon/2) * math.sin(dLon/2)
   c = 2 * math.atan2(math.sqrt(a), math.sqrt(1-a))
   distance = R * c # Distance in kilometers
   return round(distance, 2) # Return the distance rounded to 2 decimal places

lat1 = float(cells["lat"].value) # Latitude of the first point lon1 = float(cells["lon"].value) # Longitude of the first point lat2 = float(cells["GPS_X"].value) # Latitude of the second point lon2 = float(cells["GPS_Y"].value) # Longitude of the second point distance = haversine_distance(lat1, lon1, lat2, lon2) # Calculate the distance return distance

API cally