Szöveges dokumentum rekordokra bontása és csatlakoztatása egy relációs adatbázishoz

Adott egy szöveges helynévlexikon. Milyen király lenne, ha ebből gombnyomásra ki tudnánk varázsolni a számunkra szükséges adatokat, nem igaz? A megszerzett adatok használatához azonban elengedhetetlen, hogy már konkrétan beazonosított településekhez kapcsoljuk őket. A poszt ennek lépéseit mutatja be egy példán keresztül.

Az adatokat tartalmazó források használata nem számít különösebben szokatlan tevékenységnek egy történésznél. Ezekből a forrásokból azonban gyakran többet is ki lehet hozni annál, amint amire önmagukban állva alkalmasak. Ha megtaláljuk a lehetőséget arra, hogy összekapcsoljuk őket más adatforrásokkal, akkor a különböző tartalmak kombinálásával egészen új lehetőségek nyílhatnak meg előttünk. Ez a poszt egy olyan kapcsolat megteremtésére mutat egy példát, amelyben az egyik forrás egy relációs adatbázis, a másik viszont egy szöveges dokumentum. A feladat az, hogy az utóbbit jól beazonosítható rekordokra bontsuk, majd hozzákapcsoljuk ezeket az adatbázis releváns rekordjaihoz.

Az adatbázis a Demeter Gábor által vezetett GISta Hungarorum OTKA projektből (2015–2017) származik. A 8_MO_1865_1910_settlement.accdb MAI_NEV_ES_ORSZAG nevű táblája tartalmazza a szűkebb – Horvátország nélküli, de Fiumével együtt értett – Magyarország területén 1910-ben összeírt 12542 település nevét és egyedi azonosítóját. A szöveges forrásunk pedig Gyalay Mihály Magyar igazgatástörténeti helységnévlexikonának az Arcanum által CD-ROM-on megjelentetett anyaga. Ez ugyancsak magában foglalja a mondott időpont 12542 települését és azok azonosítóját, de strukturálatlan módon, egy-egy szócikk formájában. A szócikkeket először azonosítanunk kell, utána pedig ki kell bányásznunk belőlük a számunkra hasznos információkat. A két adatforrás összekapcsolását az teszi lehetővé, hogy a maga módján mindkettő egy logikusan felépített rendszer szerint egyedileg beazonosíthatóvá tette a településeket. S bár a két szisztéma némileg eltérő egymástól, de egy kis bűvészkedéssel közös nevezőre hozhatók.

A Gyalay-féle helységnévtár rekordokra bontása

Gyalay Mihály Magyar igazgatástörténeti helységnévlexikonát az idők során többféle digitális kiadásban is megjelentette az Arcanum. Noha a webes és a kétrétegű PDF dokumentumokban közzétett változat a szélesebb közönség számára is könnyen hozzáférhető, ezek a formátumok nem éppen ideálisak a szövegbányászati feladatokhoz. A CD-ROM-os kiadáshoz képest legalábbis jóval bonyolultabbá tennék a munkát. Ezért én az utóbbit használom, amit annak idején – amikor még a láthatáron sem voltak az újabb formátumok – megvásároltam. Szerzői jogi okokból természetesen nem áll módomban itt elérhetővé tenni ezt a szöveges anyagot. Aki nem rendelkezik a kérdéses CD-ROM-mal és szüksége lenne rá, az könyvtárból (könyvtárközi kölcsönzéssel) bizonyára be tudja szerezni azt. Megvenni sajnos már nem lehet.

Gyalay Mihály Magyar igazgatástörténeti helységnévlexikonának betűrendes része az CD-ROM-os verzió Folio Views alkalmazásában megnyitva

Gyalay Mihály Magyar igazgatástörténeti helységnévlexikonának betűrendes része az CD-ROM-os verzió Folio Views alkalmazásában megnyitva

A kitűzött feladat végrehajtásához először is szükségünk van a lexikon szöveges részére. (Gyalay munkája egyébként nem csak ebből áll.) Ennek kinyerése nagyon egyszerű a CD-ROM-ból. A Folio Views alkalmazásban a Böngészés fülre kattintva láthatóvá váló fa struktúrán be kell pipálni a BETŰRENDES RÉSZ szakaszt. A Fájl ➽ Export… menüpontból megnyíló ablakban válasszuk ki a “Generic Text (*.TXT)” típust és az exportálási tartománynak állítsuk be a “Kijelölt ágak” lehetőséget. A fájl neve gyalay.txt legyen. Az Export gomb megnyomásával megtörténik a szöveges fájl legyártása, benne a lexikon betűrendes részének teljes tartalmával. Ezt másoljuk be a munkakönyvtárunkba.

Az alábbiakban R nyelven (v4.0.3) írt kódot használok a feladat végrehajtásához. A magyarázó szövegek közé ékelt fekete kódblokkok tartalmát az RStudio-ban egymás alá illesztve elvileg bárki által reprodukálható az itt bemutatott műveletsor. A kódblokkok # kezdetű sorai pusztán magyarázó funkcióval bírnak, ezekre a program futtatásakor nincs szükség.

Első lépésben betöltjük a szükséges csomagokat és beállítjuk a munkakönyvtárat.

# A szükséges csomagok betöltése.
# A legelső használat előtt az install.packages("...") utasítással telepíteni
# kell ezeket. A ... helyére az adott csomag neve írandó.
library(stringr)
library(rebus)
library(dplyr)
library(forcats)

# Ide a saját munkakönyvtárunk elérését kell beírni!
setwd("C:/Munkakönyvtár")

Ezt követően beolvassuk és adattáblává alakítjuk a gyalay.txt fájlt. Ha jól exportáltuk ki az állományt a CD-ROM-ból, akkor egy 99841 rekordot tartalmazó táblázatot kell kapnunk. Ennek első 20 sorát listáztam ki, ami megfelel a fentebbi ábrának.

gyalaySzoveg <- readLines("gyalay.txt")
gyalaySzoveg <- data.frame("gyalayBejegyz" = gyalaySzoveg, stringsAsFactors = F)
##  [1] "BETŰRENDES RÉSZ"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
##  [2] "A helységek valamennyi elnevezésének betűrendi felsorolása"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
##  [3] "A"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
##  [4] "Aaracs. Somogyaracs."                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
##  [5] "Aarács. Somogyaracs."                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
##  [6] "ABA. Fejér vm. székesfehérvári j. 180401–VI., 16070 kh, 4164 m. /Belsőbáránd + Bodakajtor + Bolondvári t. + Csiháskajtor + Csuti és Csép t. + Detrichakajtor + Dombi p. + Felsőszentiván + Fiáthkajtor + Hálóvölgyi t. + Hirschfeld v. Hirsfeld t. + Kajtori hegy + Kajtor p. + Kincsesi hegy + Kis v. Kiss p. + Külsőbáránd + Méhesvölgyi t. + Sárközi v. Sárközy t. + Sárrétje m. + Sashalom + Szücs t. + Szücs t. + Szücs m. + Szücs Albert t. + Szücs Sándor t. + Tolnai t./ Pm.Tb.Td.; Vá-Td. Aba-Sárkeresztúr 061 + Vmh. Felsőbáránd. HGE: Népsegélyző Egylet Hsz."                                                                                                                                                                                                                                                                                                                                           
##  [7] "Abád. Abádszalók, /Tisza-~/ Abádszalók."                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
##  [8] "Abádi rét. Abádszalók."                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
##  [9] "Abád p. Abádszalók."                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                
## [10] "ABÁDSZALÓK. JNkSz. vm. tiszai felső j. 270401–VIII., 20134 kh, 7103 m. /Abád v. Tisza-Abád + Tisza-Szalók v. Tisza-Szálok; + Abádi rét + Abád p. + Abádszalóki rév + Aranyos p. + Bánom kert + Bata p. + Csákós p. + Csordás fertő + Félix m. + Gyócs p. + Katymárd p. + Kecskés + Kisgyócs + László m. + Nagygyócs + Paphalom + Porcsákos v. Porszákos + Pusztahomok + Pusztatomaj + Szalóki rét + Szánom kert + Pomaj p. + Varjas p. + Vincze m./ Pm-Pu. Pusztataksony-Abádszalók, Tb-Pu. Pusztataksony-Abádszalók; Vá-Td. Pusztataksony-Abádszalók 122 + Vmh. Kisgyócs 38 őrh. 122. HGE: Abádszalóki Gőzfürész és Gőzmalom Rt. /1910/ telepe; Abádszalóki Takarékpénztár Rt. /1893/; Hitelszövetkezet, Cziffra-malom; Wodianer-féle angolfélvérménes; Vizhúzó-telep, Lejeune Testvérek Sör- és Pálinkagyára; Tejszövetkezet; Mirhógát Üzem. */1896. jan. 12-én Tisza-Abád + Tisza-Szalók egyesüléséből alakult./"
## [11] "Abádszalóki Gőzfürész és Gőzmalom Rt. Budapest; telepe: Abádszalók."                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                
## [12] "Abádszalóki Takarékpénztár Rt. Abádszalók."                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
## [13] "Abádszalóki rév. Abádszalók."                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
## [14] "Abafája. Maros-Torda vm. régeni alsó j. 340401–X., 1903 kh, 1235 m., r. /Apalina, APOLINA, Brendorf./ HGE: Huszár br.-i gazdaság és kastély."                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
## [15] "Abafala. Abafalva."                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
## [16] "Abafalva. Gömör vm. tornaljai j. 200801–II., 2102 kh, 738 m. /Abafala, ABOVCE, Abovce v. Abafalva; + Abaffy p. + Erzsébet t. + Miklósfalva v. Miklósfalvi p. + Vigyorgó p./ Vmh. Abafalva 1. Őrh. 129."                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
## [17] "Abafalva 1. őrh. Abafalva."                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
## [18] "Abaffy p. Abafalva."                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                
## [19] "Aba-Geszteréd. Geszteréd."                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
## [20] "Abagy. Apagy."

Habár 1910-ben csak 12542 település volt a számunkra kérdéses területen, a táblázatunk azonban 99841 sort tartalmaz. Ennek az az oka, hogy a települések leírása mellett rengeteg utalás is szerepel a lexikonban. Jelen esetben arra kell törekednünk, hogy valamilyen módon megragadjuk a tényleges szócikkeket, a felesleges és zavaró soroktól pedig megszabaduljunk.

Az ilyen jellegű feladatoknál mindig egy olyan tényezőt kell keresni, amely a “hasznos sorokban” szerepel, azokat megkülönböztethetővé teszi, a többiből viszont hiányzik. Ez jelen esetben a települések azonosítója. Ahogy a fenti szemelvény 6., 10., 14. és 16. sorában látható, mindegyikben szerepel egy-egy olyan karakterlánc, amely 6 – egyes, itt nem látható esetekben 7 – arab számból, egy kötőjelből és egy római számból áll. Ahol tehát ilyet találunk, arról a sorról feltételezhetjük, hogy a lexikon egyik szócikkével van dolgunk.

Alább a települések azonosítóját egy reguláris kifejezés segítségével bontom ki a szövegből. Azokat a sorokat pedig, amelyekben nem található ilyen, eldobom.

gyalaySzoveg$gyalayTeljesTelepID <- str_extract(gyalaySzoveg$gyalayBejegyz, SPC %R% dgt(6,7) %R% or("\U2013","\U002D")) %>% 
  str_remove_all(or("\U2013","\U002D",SPC))
gyalaySzoveg <- filter(gyalaySzoveg, !is.na(gyalaySzoveg$gyalayTeljesTelepID))

A táblázatban összesen 12554 sor maradt. Ez még mindig több annál, mint amire szükségünk van. Erre a későbbiekben természetesen visszatérek majd.

A helységnévtár rekordjainak beazonosítása

A fenti művelet elvégzése után a táblázatban eltárolásra került a településeket egyértelműen beazonosító hat vagy hét jegyű számkód. Ennek formátuma a következő: VVJJHH vagy VVJJHHH, ahol a V a vármegye, a J a járás, a H pedig a helység kódszáma. Azaz a Gyalay Mihály által kialakított rendszerben az első két számjegy azonosítja a vármegyét, a következő kettő a járást, míg az utolsó kettő vagy három a helységet. (Az utóbbi tehát önmagában állva nem azonosít egy települést, ahhoz mindhárom tényezőre szükség van!)

A kódok az ábécébe sorolt vármegyék, azon belül a járások, majd a helységek neve alapján növekvő sorrendben lettek kiosztva. A rendezett tanácsú városok a vármegyék járásait követően, ábécé rendben, a kódok logikáját tekintve azokkal egy szinten – kvázi további járásokként – szerepelnek, 00-ás helység kóddal. Fiume, Budapest és az ábécé sorrendben lévő 25 törvényhatósági joggal felruházott város pedig egységesen 70-es vármegye kóddal, 00-tól 26-ig terjedő járási kóddal és egységesen 00-ás helység kóddal lett ellátva.

Ebből a hat vagy hétjegyű számból most kibontom és külön is eltárolom az adott vármegyét, járást és helységet azonosító kódot.

gyalaySzoveg$gyalayVarmID <- str_sub(gyalaySzoveg$gyalayTeljesTelepID,1,2)
gyalaySzoveg$gyalayJarID <- str_sub(gyalaySzoveg$gyalayTeljesTelepID,3,4)
gyalaySzoveg$gyalayHelyID <- str_sub(gyalaySzoveg$gyalayTeljesTelepID,5,7)

A GISta Hungarorum projekt az MVVJJHHH formátumban kódolta be a településeket. Ez a rendszer a Gyalay-féle szisztémától az alábbiakban különbözik:

  1. Fiume, Budapest és a törvényhatósági jogú városok be lettek sorolva az őket “körülvevő” vármegyébe, vagyis megkapták annak a kódját. Ezen belül a járás kódja itt egységesen 00, illetve Fiume esetén 01, a helységek pedig ábécérendben és növekvő sorrendben számozódtak be.

  2. A vármegyék statisztikai régiónként lettek ábécébe rendezve, azaz a Gyalaytól eltérő számozásúak.

  3. A helységek kódja mindig 3 számjegyből áll.

  4. A teljes települési kódot mindig megelőzi egy M betű.

A két különböző kódolási elvet tehát valahogyan közös nevezőre kell hozni. Ez a gyakorlatban azt jelenti, hogy a Gyalay-féle kódokat átalakítom a GISta Hungarorumnak mindenben megfelelő rendszerre.

Kezdetnek az 1. pontban említett eltérést korrigálom: Fiumét, Budapestet és a törvényhatósági jogú városokat “besorolom” a releváns vármegyékbe. Mivel a kérdéses településeknél a Gyalayban egységesen 70-es vármegyei kód szerepel, ezért ennek alapján be lehet úgy rendezni a táblázatot, hogy ez a 27 városi törvényhatóság kerüljön annak a tetejére. Ebben az első 27 sorban kell átírni a vármegyék kódjait az adott településnek megfelelőre. Ezek megállapítása egyenkénti átnézéssel történhet. Ahol a vármegye kódja csak egy karakterből áll, ott az üres helyet fel kell tölteni nullával. A járások megkapják egységesen a 00-ás, Fiume a 01-es kódot. Végezetül az első 27 sort vármegyénként és ezen belül településenként ábécébe rendezve automatizálva előállítom a helységek kódjait, három karakter hosszúságban. Utóbbival kipipálhatjuk a 3. pontot is.

gyalaySzoveg <- arrange(gyalaySzoveg, desc(gyalayVarmID), gyalayBejegyz)
gyalaySzoveg[1:27, "gyalayVarmID"] <- str_pad(c(3,5,39,22,64,21,16,1,39,29,30,34,12,11,53,6,40,25,43,5,45,16,18,50,5,50,5), 2, pad = "0")
gyalaySzoveg[1:27, "gyalayJarID"] <- "00"
gyalaySzoveg[5, "gyalayJarID"] <- "01"

gyalaySzoveg[1:27,] <- gyalaySzoveg[1:27,] %>% arrange(gyalayVarmID, gyalayBejegyz)
gyalaySzoveg[1:27, "gyalayHelyID"] <- unlist(sapply(as.numeric(fct_count(gyalaySzoveg$gyalayVarmID[1:27])$n), seq))

gyalaySzoveg$gyalayHelyID <- str_pad(gyalaySzoveg$gyalayHelyID, 3, pad = "0")

A 2. pontban megfogalmazott probléma a vármegyei kódok korrigálását igényli, azaz a Gyalayban szereplő értékeket át kell írni annak a GISta Hungarorumos megfelelőjére. A vármegyék azonosítóinak egymással való megfeleltetését azonban nem manuálisan és egyenként akarom elvégezni. Ezért azt fogom csinálni, hogy mindkét forrásnak megfelelően előállítok egy-egy segédtáblát, amelyek egyik mezője a vármegyék nevét, a másik pedig annak a kódját tartalmazza. Ezeket a táblákat a betűhíven megegyező vármegye nevek alapján egyesíteni lehet. Azaz végül egy olyan táblázatot kapunk, amelyben mindkét szisztéma szerint megtalálható a vármegyék kódszáma. Ennek alapján az eredeti táblánkban rá tudjuk szűrni a Gyalay-féle kódra az annak megfelelő GISta Hungarorumos vármegyei azonosítót.

A Gyalaynak megfelelő vármegyei listával könnyű dolgom volt, mivel én alapból ezt használom a saját adatbázisomban. Azért, hogy e blogposzt olvasóinál is működjön a dolog, az alábbiakban manuálisan létrehozva szerepel. Ügyelve arra is, hogy a vármegyei kódok mindig kétszámjegyűek legyenek.

A másik segédtáblához a GH 8_MO_1865_1910_settlement.accdb adatbázis MAI_NEV_ES_ORSZAG tábláját pontosvesszővel elválasztott CSV formátumban kiexportáltam az Access-ből. Ebben a táblában a települések számának megfelelően 12542 rekord szerepel. A Megye_1910 mező tartalmazza a településekhez tartozó vármegyék nevét, az IDMegye1910 mező pedig azok kódját MVV formában. Ezt a táblát bemásoltam a munkakönyvtárba, beolvastam, majd a sorok duplumait eltávolítottam, hiszen vármegyénként egyetlen név-kód párosra van szükségünk. A kód elejéről levágtam az M betűket (ezzel fentebbi 4. pontban jelzett eltérés is korrigálva lett), a “Gömör és Kishont” nevet pedig “Gömör és Kis-Hont”-ra javítottam, hogy betűhíven megegyezzen a Gyalayban – és egyébként a törvényhatóságokról szóló 1886. évi XXI. törvénycikkben is – szereplő elnevezésnek.

Ezt követően a két segédtáblát egyesítettem, majd az eredeti tábla vármegyei kódjait felülírtam a GISta Hungarorumból származókkal.

gyalayVarm <- data.frame("gyalayVarmMegn" = c("Abaúj-Torna", "Alsó-Fehér", "Arad", "Árva", "Bács-Bodrog", 
                                       "Baranya", "Bars", "Békés", "Bereg", "Beszterce-Naszód", 
                                       "Bihar", "Borsod", "Brassó", "Csanád", "Csík", "Csongrád", 
                                       "Esztergom", "Fejér", "Fogaras", "Gömör és Kis-Hont", "Győr", 
                                       "Hajdú", "Háromszék", "Heves", "Hont", "Hunyad", 
                                       "Jász-Nagykun-Szolnok", "Kis-Küküllő", "Kolozs", "Komárom", 
                                       "Krassó-Szörény", "Liptó", "Máramaros", "Maros-Torda", 
                                       "Moson", "Nagy-Küküllő", "Nógrád", "Nyitra", "Pest-Pilis-Solt-Kiskun", 
                                       "Pozsony", "Sáros", "Somogy", "Sopron", "Szabolcs", "Szatmár", 
                                       "Szeben", "Szepes", "Szilágy", "Szolnok-Doboka", "Temes", "Tolna", 
                                       "Torda-Aranyos", "Torontál", "Trencsén", "Turóc", "Udvarhely", 
                                       "Ugocsa", "Ung", "Vas", "Veszprém", "Zala", "Zemplén", 
                                       "Zólyom", "Fiume város és kerülete"),
                        "gyalayVarmID" = 1:64)
gyalayVarm$gyalayVarmID <- str_pad(gyalayVarm$gyalayVarmID, 2, pad = "0")

MAI_NEV_ES_ORSZAG <- read.csv2("MAI_NEV_ES_ORSZAG.csv")[,c("Megye_1910", "IDMegye1910")]
MAI_NEV_ES_ORSZAG <- MAI_NEV_ES_ORSZAG[!duplicated(MAI_NEV_ES_ORSZAG),]
MAI_NEV_ES_ORSZAG$IDMegye1910 <- str_sub(MAI_NEV_ES_ORSZAG$IDMegye1910,2,3)
MAI_NEV_ES_ORSZAG[31,1] <- "Gömör és Kis-Hont"

gyalayVarm <- inner_join(gyalayVarm, MAI_NEV_ES_ORSZAG, by = c("gyalayVarmMegn" = "Megye_1910"))
gyalaySzoveg <- inner_join(gyalaySzoveg, gyalayVarm[,c("gyalayVarmID", "IDMegye1910")], by = c("gyalayVarmID" = "gyalayVarmID"))

Most már minden adat rendelkezésünkre áll ahhoz, hogy összerakjuk a települések GISta Hungarorum kompatibilis teljes kódját!

gyalaySzoveg$GHTeljesTelepID <- paste0("M", gyalaySzoveg$IDMegye1910, gyalaySzoveg$gyalayJarID, gyalaySzoveg$gyalayHelyID)

A táblázat megtisztítása és ellenőrzése

A települési kódok előállításával azonban még nem értünk a feladat végére, hiszen a táblázatunk továbbra is 12554 sort tartalmaz, noha településből csak 12542 volt 1910-ben. Ennek a differenciának alapvetően két oka lehet.

Egyrészt előfordulhat, hogy a Gyalayban néhány olyan karaktersorozatot is települési kódként azonosítottunk, amely valójában nem az. Ezeket a nem létező kódokat könnyen kiszűrhetjük azzal, hogy az eredeti (fentebb felülírt) MAI_NEV_ES_ORSZAG táblát visszatöltjük, és a települési kódok alapján egyesítjük a saját táblánkkal. Ekkor csak azok a sorok maradnak meg, amelyek mindkét táblában szerepelnek.

MAI_NEV_ES_ORSZAG <- read.csv2("MAI_NEV_ES_ORSZAG.csv")[,c("IDTel1910", "telepulesnev_eredeti_1912")]
gyalaySzoveg <- inner_join(gyalaySzoveg, MAI_NEV_ES_ORSZAG, by = c("GHTeljesTelepID" = "IDTel1910"))

Ezzel sikerült eltüntetnünk a különbség nagy részét, de még mindig maradt 5 plusz sor. A probléma másik lehetséges oka az, hogy néhány település esetleg többször is előfordul a Gyalay-féle lexikonban. Ez, mint kiderült, a következő szócikkeket érinti:

  • A Liptó vármegyei Hlinik és Tvarozsna valójában Bobrovnik község külterületei.

  • A szintén Liptó vármegyei Jánosháza Bukovina néven is előfordul. A népszámlálás eredeti kötete szerint ekkor az utóbbi a hivatalos elnevezés.

  • A Hunyad vármegyei Nagy- és Kisosztró megtalálható Nagyosztró és Kisosztró néven is a szócikkek között.

  • A Hunyad vármegyei Ohábaponor, noha külön szócikket képvisel, ekkor még nem létezett. A lexikon szerint később alakult meg a külön szócikkel képviselt Oláhponor és Ohába egyesítésével.

# Ezzel ki tudjuk listázni azokat a rekordokat, amelyek azonosítója többször is szerepel a táblázatban.
View(filter(gyalaySzoveg, GHTeljesTelepID %in% gyalaySzoveg[duplicated(gyalaySzoveg$GHTeljesTelepID),]$GHTeljesTelepID))

gyalaySzoveg <- gyalaySzoveg[-c(7530,7609,7542,8733,8756),]

Mindezeket figyelembe véve sikerült elérni, hogy számszakilag megfelelő mennyiségű, 12542 bejegyzésünk maradjon, és ezek mindegyikéhez önálló települési azonosító tartozzon a GISta Hungarorum adatbázisában.

Nem dőlhetünk azonban még hátra, mert nem árt leellenőrizni azt sem, hogy a Gyalayban szereplő településnevek megegyeznek-e a másik adatbázisából hozzájuk párosított nevekkel. Az előbbieket egy reguláris kifejezéssel állítottam elő, az egyes szócikkek első szavát alapul véve. Emellett mindkét listát csupa kisbetűssé konvertáltam és eltávolítottam a nevekből az ékezeteket. Ezt követően került sor a párhuzamba állított két lista tételes, automatizált összehasonlítására.

gyalaySzoveg$gyalayTelepNev <- tolower(str_extract(gyalaySzoveg$gyalayBejegyz, START %R% one_or_more(or(WRD, "-")) %R% BOUNDARY)) %>% iconv(from = "UTF-8", to="ASCII//TRANSLIT")
gyalaySzoveg$telepulesnev_eredeti_1912 <- tolower(gyalaySzoveg$telepulesnev_eredeti_1912) %>% iconv(to="ASCII//TRANSLIT")

# Ezzel az eltérő név miatt gyanúsnak tűnő települések listáját kapjuk meg.
View(gyalaySzoveg[!(gyalaySzoveg$gyalayTelepNev == gyalaySzoveg$telepulesnev_eredeti_1912),] %>% arrange(GHTeljesTelepID))

A vizsgálat eredménye 126 különbséget mutat. Ezeket a települések azonosítói alapján rendeztem növekvő sorrendbe, arra a problémára gyanakodva, hogy a két forrásban esetleg nem volt tökéletesen egyforma a települések ábécérendbe sorolása. Ekkor az elcsúszott daraboknak egymás alatt kell lenniük.

##    telepulesnev_eredeti_1912   gyalayTelepNev
## 1               hercegszolos    hercegszollos
## 2              herczegszabar     hercegszabar
## 3               kovagoszolos    kovagoszollos
## 4               babarcszolos    babarcszollos
## 5                    goricza           gorica
## 6               vertesszolos    vertesszollos
## 7               somgytarnoca    somogytarnoca
## 8               szolosgyorok    szollosgyorok
## 9               szoloskislak    szolloskislak
## 10                celldomolk           csonge
## 11                    csonge       celldomolk
## 12                     niczk             nick
## 13            gyongyosszolos  gyongyosszollos
## 14                 kisszolos       kisszollos
## 15               somloszolos     somloszollos
## 16             balatonszolos   balatonszollos
## 17                    pincze            pince
## 18           vindornyaszolos vindornyaszollos
## 19                  csimhova         csimbova
## 20               garamszolos     garamszollos

Ahogy az iménti 20 soros szemelvényen látható, szó sincs arról, hogy 126 hibás sorunk lenne. A településnevek közötti eltérések kevés kivétellel azok eltérő helyesírásából adódnak. (Ebből a szempontból elmondható egyébként, hogy egyik forrásunk sem betűhíven közölte az 1910-es népszámlálás – két évvel később kiadott – helységnévanyagát.) Emellett sokszor hiányzik a településeket egyedivé tevő elő- vagy utótag, és természetesen az is gondot okozhat, hogy a bejegyzéseknek csak az első szavát emeltem ki településnév gyanánt.

Vannak azonban valódi hibák is listában, amelyeket szemrevételezéssel derítettem fel. A szemelvényben ilyen látható a 10–11. sorban Celldömölk és Csönge felcserélődésével, de hasonló a probléma az itt nem látható Cigla, Csarnó és Cseres településeknél is. Ezeket manuálisan javítottam a táblázat megfelelő celláinak átírásával.

gyalaySzoveg[1415, "GHTeljesTelepID"] <- "M0901005"
gyalaySzoveg[1427, "GHTeljesTelepID"] <- "M0901006"
gyalaySzoveg[5437, "GHTeljesTelepID"] <- "M3203010"
gyalaySzoveg[5438, "GHTeljesTelepID"] <- "M3203011"
gyalaySzoveg[5442, "GHTeljesTelepID"] <- "M3203012"

gyalaySzoveg <- gyalaySzoveg[, c("GHTeljesTelepID", "gyalayBejegyz")]

Ezzel készen is vagyunk. A végeredmény tehát egy olyan tábla, amelynek 12542 rekordja tartalmazza a Gyalay Mihály-féle Magyar igazgatástörténeti helységnévlexikon szócikkeinek szövegét, valamint az azokhoz tartozó települési azonosítókat a GISta Hungarorum projektből. Alább ennek első 20 sora látható.

##  [1] "M0204001 ABA. Fejér vm. székesfehérvári j. 180401–VI., 16070 kh, 4164 m. /Belsőbáránd + Bodakajtor + Bolondvári t. + Csiháskajtor + Csuti és Csép t. + Detrichakajtor + Dombi p. + Felsőszentiván + Fiáthkajtor + Hálóvölgyi t. + Hirschfeld v. Hirsfeld t. + Kajtori hegy + Kajtor p. + Kincsesi hegy + Kis v. Kiss p. + Külsőbáránd + Méhesvölgyi t. + Sárközi v. Sárközy t. + Sárrétje m. + Sashalom + Szücs t. + Szücs t. + Szücs m. + Szücs Albert t. + Szücs Sándor t. + Tolnai t./ Pm.Tb.Td.; Vá-Td. Aba-Sárkeresztúr 061 + Vmh. Felsőbáránd. HGE: Népsegélyző Egylet Hsz."                                                                                                                                                                                                                                                                                                                                           
##  [2] "M2604001 ABÁDSZALÓK. JNkSz. vm. tiszai felső j. 270401–VIII., 20134 kh, 7103 m. /Abád v. Tisza-Abád + Tisza-Szalók v. Tisza-Szálok; + Abádi rét + Abád p. + Abádszalóki rév + Aranyos p. + Bánom kert + Bata p. + Csákós p. + Csordás fertő + Félix m. + Gyócs p. + Katymárd p. + Kecskés + Kisgyócs + László m. + Nagygyócs + Paphalom + Porcsákos v. Porszákos + Pusztahomok + Pusztatomaj + Szalóki rét + Szánom kert + Pomaj p. + Varjas p. + Vincze m./ Pm-Pu. Pusztataksony-Abádszalók, Tb-Pu. Pusztataksony-Abádszalók; Vá-Td. Pusztataksony-Abádszalók 122 + Vmh. Kisgyócs 38 őrh. 122. HGE: Abádszalóki Gőzfürész és Gőzmalom Rt. /1910/ telepe; Abádszalóki Takarékpénztár Rt. /1893/; Hitelszövetkezet, Cziffra-malom; Wodianer-féle angolfélvérménes; Vizhúzó-telep, Lejeune Testvérek Sör- és Pálinkagyára; Tejszövetkezet; Mirhógát Üzem. */1896. jan. 12-én Tisza-Abád + Tisza-Szalók egyesüléséből alakult./"
##  [3] "M5804001 Abafája. Maros-Torda vm. régeni alsó j. 340401–X., 1903 kh, 1235 m., r. /Apalina, APOLINA, Brendorf./ HGE: Huszár br.-i gazdaság és kastély."                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
##  [4] "M3108001 Abafalva. Gömör vm. tornaljai j. 200801–II., 2102 kh, 738 m. /Abafala, ABOVCE, Abovce v. Abafalva; + Abaffy p. + Erzsébet t. + Miklósfalva v. Miklósfalvi p. + Vigyorgó p./ Vmh. Abafalva 1. Őrh. 129."                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
##  [5] "M0102001 ABALIGET. Baranya vm. hegyháti j. 060201–XII., 2792 kh, 727 n, m. /Abaligeth, Baliget; + Jakabhegy és csepkőbarlangja./ Pm.Tb.; Vá-Td. 50. */A XI.sz.-ban már fennállott és honfoglaló hősről nevezett falu. 1919. márc.-1921. aug. SHS. megszállás alatt. A XVI-XVII.sz.-beli iszlám népirtás után német betelepítéssel./"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
##  [6] "M3505001 Abara. Zemplén vm. nagymihályi j. 620501–III., 2906 kh, 721 m. /OBORIN, Oborin v. Abara; + Kisabara p. + Nagyerdő p./ Pü. HGE: Faipari és Lótenyésztési Vállalat. */Vára, az 1471:III. tc.29.§-a szerint „örökös hűtlenség büntetése alatt lerontandó és teljesen lebontandó”. 1940-ben átm. Ung vm. nagykaposi j.-ába átkebelezve./"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
##  [7] "M2502001 ABASÁR. Heves vm. gyöngyösi j. 240201–VII., 3804 kh, 2690 m. /Saar, Sáár, Sár/ Pm. HGE: Borgazdaság és pincészet a földalatti barlangüregekben. */1042-ben itt már állott a Sári monostor; 1619-ben - már megszünt lévén - eladományozva. 1950-től + Pálosvörösmart./"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
##  [8] "M6301001 Abásfalva. Udvarhely vm. homoródi j. 560101–XVII., 1729 kh, 486 m. /Abasfaleu, Abasfalva, ALDEA, Homoródabásfalva./ HGE: Juhtenyésztés. */A XVIII.sz.-ig a ksg. neve Abbásfalva./"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
##  [9] "M1805001 Abaszállás. Nyitra vm. nyitrai j. 380501–I., 1912 kh, 1160 szl. /Aba-Lehota, Abba-Lehota, LEHOTA, Lehota pri Nitre, Lehotha; + Huszár m. + Polányi v. Pollányi m./ Pü."                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
## [10] "M2804001 Abaszéplak. Abaúj-Torna vm. kassai j. 010401–III., 1649 kh, 1064 szl, m. /KRÁSNA NAD HORNÁDOM, Krasna nad Hornádom v. Széplak, Hosszú- és Rövidszer; + Hajnal t. és Rezső m./ HGE: OKH-szövetkezet. */1143-ban alapított benedekrendi széplaki apátsága mellett települt. 1513-ban birtokaik védelme Kassa városa gondjába adva; 1521, 1528, 1538-i papi és világi újabb ef.-okkal. 1558-ban a király által megszüntetett apátságot a nagyszombati jézsuiták szerzik meg. 1943 szept. 27-től + Széplakapáti = Széplakapáti./"                                                                                                                                                                                                                                                                                                                                                                                       
## [11] "M2803001 ABAÚJALPÁR. Abaúj-Torna vm. gönci j. 010301–III., 1462 kh, 265 m. /Alpar, Alpár; + Aranyos fürdő + Aranyosi malom./ HGE: Aranyos Fürdő Üzem; Alpári Szőllőgazdaság Vállalat."                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
## [12] "M2805001 ABAÚJDEVECSER. Abaúj-Torna vm. szikszói j. 010501–III., 1728 kh, 545 m. /Devecser./ */1945-okt-től a csereháti j.-ba beosztva./"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
## [13] "M2804002 Abaújharaszti. Abaúj-Torna vm. kassai j. 010402–III., 824 kh, 263 szl, m. /CHRASTNÉ, Haraszti, Krasne, Kraszne./"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   
## [14] "M2803002 ABAÚJKÉR Abaúj-Torna vm. gönci j. 010302–III., 3365 kh, 1036 m. /Kéér, Kér; + Aranyos v. Aranyos p. + Sóstó + Tuzsa v. Tuzsa p./ Pm.; Vá. 139. */1806 után Kis-Kér + Nagy-Kér egyesítéséből./"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
## [15] "M2805002 ABAÚJLAK. Abaúj-Torna vm. szikszói j. 010502–III., 1184 kh, 334 m. /Újlak, Újlak és Szamlicska, Újlak és Szamliczka, Újlak-Sztancsika; + Sztancsika p. v. Szanticska p./"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
## [16] "M2802001 Abaújnádasd. Abaúj-Torna vm. füzéri j. 010201–III., 2292 kh, 1045 szl, m. /Nádasd, Nádosť, TRSTENÉ PRI HORNÁDE./"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   
## [17] "M2802002 Abaújrákos. Abaúj-Torna vm. füzéri j. 010202–III., 1837 kh, 199 m, szl. /RAKOS, Rákos; + Kálmán p./"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                
## [18] "M2805003 Abaújsáp. Abaúj-Torna vm. szikszói j. 010503–III., 584 kh, 188 m. /Saap, Sáp./ */1938-től + Rásony, 1940-től + Szárazberencs = Rásonyberencs ill. RÁSONY-SÁPBERENCS./"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
## [19] "M2804003 Abaújszakály. Abaúj-Torna vm. kassai j. 010403–III., 1911 kh, 555 szl, m. /SOKOĽANY v. HUTNIKY, Szakaly, Szakály./"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
## [20] "M2803003 ABAÚJSZÁNTÓ Abaúj-Torna vm. gönci j. 010303–VIII., 7724 kh, 4698 m. /Szántó; + Sashalom./ Pm.Tb, Td.; Vá. + Vmh. Abaújszántó-vásártér 139. HGE: Adóhivatal /mk./; Abaújszántói Hitelbank Rt. /-1928,/; Abaújszántói Takarékpénztár Rt. /1870/; Blau Vaskeréskedelmi Rt. /1922/; Felsőmagyarországi Árukereskedelmi Rt. /1924/; Abaújszántói Borkereskedelmi Rt.; OKH-szövetkezet. */Már 1275-ben szőlleiről ismert; később részben - Kassa város tulajdonában. 1943. jan. 1-től + Cekeháza; végl. 1944. jun. 21-től, ei. Cekeháza kt. lakotth lett./"

Az immáron konkrét településekhez rendelt szócikkek alkalmasak arra, hogy a szövegükből további információkat bányásszunk ki az adott helységekre vonatkozóan.

comments powered by Disqus