Szerkesztő:Gyimbot/Összegképlet robot/1. változat
Az összegképlet robot (röviden kémia bot) összegyűjti és kereshetővé teszi a magyar Wikipédia vegyület szócikkeiben szereplő összegképleteket. Egyúttal „dicsőségtáblát” készít a szócikkek létrehozóiról, és néhány statisztikai adatot is gyűjt a szócikkek létrejöttéről. Az eredmények külső wikire kerülnek, és naponta, hajnalban frissülnek:[1]
- Keresés összegképletre
- A vegyületek listája a létrehozó és utoljára módosító szerkesztővel és az időponttal. A lista rendezhető.
- Statisztikák a vegyületek létrehozóiról és a létrehozási időkről
A külső szerver legfőbb indoka, hogy a Wikipédia szoftvere nem teszi lehetővé beviteli form készítését. A bot korábbi változata ezt a korlátot listákkal próbálta elkerülni, ezek használata azonban kényelmetlen volt.
A változás a dicsőséglista tartalmát is érinti. A bot azokat a vegyületlapokat találja meg, amelyek
- a fő (szócikk) névtérben vannak
- valamelyik vegyületsablont használják (lásd alább).
A régi és új lista között akkor van eltérés, ha a fenti két feltétel valamelyike nem áll fenn a szócikk létrehozásakor (szerkesztői lapon hozzák létre, vagy utólag kerül rá a vegyületsablon).
A korábbi listában kézzel szűrtem ki az ilyen eseteket, hogy csak a valóban új szócikkek kerüljenek bele (egy idő után a szócikk névtérbe kerülés dátumát vettem keletkezési időnek). Az új, gépi lista a laptörténet legkorábbi dátumát tekinti a lap keletkezési idejének. Ebből az is következik, hogy az éves statisztika visszamenőleg is változhatik, a bot által újonnan megtalált vegyület pedig nem a (keletkezési idő szerint rendezett) vegyületlista elejére kerül.
Forrásprogram
[szerkesztés]A bot programjai linux shell scriptek, lua és C programok. Az amd64-re fordított kód és a forrás megtalálható a http://www.gyimesilaszlo.hu debian-repositoryban, a kemiabot csomagban. Az alábbi rövid leírásnál több technikai részlet található a man lapokon.
Üzemeltetés
[szerkesztés]A bot raspberry pi-n fut, raspbian disztribúcióban, a már említett debian repositoryból, forrásból letöltött debian-csomagokkal.
Miután a kémiai szócikk írásának nincsenek pontos szabályai, a bot időnként tévedhet. Legutóbb pl. a tantált hitte vegyületnek, mert a lapon a veszélyszimbólumok miatt vegyületsablon is van. Ilyenkor a kezi.txt módosítása segít (lásd alább).
A hasonló hibákat emailben lehet jelezni. Bejelentkezett szerkesztők a Wikipédia levelezőjével is írhatnak Szerkesztő:Gyimhunak.
Működés
[szerkesztés]Lépések:
- A bot lekérdezi a szócikk névtérből a kémiai sablonokra hivatkozó lapokat. Egyenként letölti őket, és kinyeri belőlük az összegképletet.
- Az összegképletek listáját korrigálja a kézzel megadott összegképletekkel, kihagyja belőlük a kézzel megadott szócikkeket.
Generálja a wiki-lapokat.- Lekérdezi a letöltött lapok létrehozási és utolsó módosítási dátumát és az azt végző szerkesztőt.
- Statisztikákat készít a vegyületlapokról.
- Feltölti a lapokat a
Wikipédiárakülső szerverre.
A bot működésének fontos alapelve, hogy nem köti meg a szócikkek alakját, vagyis nem korlátozza a szerkesztőket, hanem alkalmazkodik hozzájuk. (Ez minden botra érvényes kellene legyen.)
Az összegképletes lapok összegyűjtése
[szerkesztés]Kémiai sablonok:
{{Chembox}}
{{Chembox_new}}
(?){{Chembox új}}
(?){{Drugbox}}
(?){{Gyógyszeresdoboz}}
(?){{Vegyület_infobox}}
(?)
A shell script neve kembot, ami egyúttal le is kérdezi a lapokat (lásd alább). A lapok összegyűjtésére a sablhiv scriptet hívja a wikiscript csomagból a sablonra hivatkozó lapok lekérdezésére.
- Bemenő fájl: –
- Eredményfájl: kembot.mol.
A fenti sablonokra hivatkozó laplisták lekérdezése párhuzamosan történik, így a futási idő néhány másodperc. A sávszélességet maximálisan kihasználja, a processzor- és diszkigény minimális, .
Az összegképletek lekérdezése
[szerkesztés]Ezt is a kembot csinálja. A lapok lekérdezésére a wikiszoveg scriptet hívja a wikiscript csomagból, a lap parszolására és az összegképlet kinyerésére a kemia nevű C-programot.
Az eredmény ilyen alakú:
Aceton-peroxid Acibenzolár|C=7|N=2|S=2|O=1|H=4
Az első esetben a parszer nem talált összegképletet a lapon, több különbözőt talált, vagy az összegképletet nem tudta értelmezni.[2] Az utóbbi leggyakoribb okai:
- polimer
- kristályvíz
- töltés/ion
- több képlet, vagy ugyanaz a képlet többféle alakban.
A kémiai sablonok lehetővé teszik több eltérő összegképlet megadását, és ezt a wiki parszere nem veszi észre, mert
- többféle paraméterben adhatók meg: Formula, Képlet, kémiai_képlet, chemical_formula. Az összegképlet vegyjel-paraméterekkel is megadható.
- a három chembox típusú sablon alsablonokat hívhat, melyek szintén elfogadják a fenti összegképlet-paramétereket.
Fájlok:
- Bemenő fájl: kembot.mol.
- Eredményfájl: kembot.kepl.
100 Mbit-es hálózatban a futási idő kb. negyed óra. A processzor- és diszkhasználat minimális.
Kézi korrekció
[szerkesztés]Két célja van:
- a parszer által fel nem ismert összegképlet megadása
- szócikk elhagyása az összegképletek közül. Pl. a Béta-receptor-blokkolók hívja a Drugbox sablont, ezért a gépi listában benne lesz, viszont az összegképlet értelmetlen egy vegyületcsoportra (melyek ráadásul kémiailag nem is hasonlóak).
A korrigálni kívánt információt egy kézzel szerkesztett fájlban kell megadni (kezi.txt), melynek alakja azonos a gépi eredményfájléval. Az értelmezésben annyi különbség van, hogy a kezi.txt képletet nem tartalmazó szócikkeit törölni kell a gép által megtaláltak közül.
A kézi lista elsőbbséget élvez a géppel előállítottal szemben. Ha egy szócikk mindkét listában benne van, a gépiből töröljük. Ez lehetővé teszi a gépi összegképlet felülbírálását is (bár remélhetőleg erre nem lesz szükség).
A feladat tehát két lista összefésülése, melyet az olista script végez. Paraméterként megadható a gépi összegképletlista arra az esetre, ha az más módon (pl. a bot régebbi, a wikidump-ot használó verziójával) állt elő.
- Bemenő fájl: kezi.txt, kembot.kepl.
- Eredményfájl: hufo.kepl.
A futási idő néhány másodperc erős diszkhasználattal. Hálózatot nem, processzort minimálisan használ.
Az összegképlet lapok előállítása
[szerkesztés]A bot jelenlegi negyedik változata az összegképletek listáját és az összegképlet nélküli lapok listáját generálja (lásd alább), de azokat sem tölti fel sehová. A két lap mindössze a változások kézi ellenőrzését könnyíti meg. A későbbi változatokból teljesen ki fog maradni ez a lépés.
- Bemenő fájl: welem.txt, wiki.txt, hufo.ali, hufo.kepl.
- Eredményfájlok a huwiki alkönyvtárban.
Statisztika
[szerkesztés]Lekérdezi a szócikkek létrehozási és módosítási idejét. Évenkénti/havonkénti statisztikát csinál.
Az időket és a szerkesztőket a kemcre script kérdezi le, melynek futási ideje kb. megegyezik a szócikkek lekérdezési idejével. Bemenete az olista eredményfájlja: hufo.kepl. Az eredményfájl neve kemcre.ido. A többi statisztikai szkriptnek ez a bemenete. A kemcre.ido átalakítja kimenetét wikilappá is kemcre.wiki néven.
kemcrestat: kilistázza a paraméterként megadott időnél később készült összegképlet lapokat, és kiírja havonként külön táblázatban.- különböző atomok táblázata
- kemcreev: az összegképletes szócikkek száma évenként, 2003 óta.
- kemcreszerk: a legtöbb összegképletes szócikket létrehozó szerkesztők listája, ugyancsak 2003 óta.
- kemstat: a statisztika weblap összeállítása a fenti táblázatokból
A lapok feltöltése
[szerkesztés]A wikibot szkripttel, a bot futásának utolsó lépéseként, hajnali 5 óra körül.
A bot előző programváltozatai
[szerkesztés]Darab | Év |
---|---|
1 | 2003 |
5 | 2004 |
119 | 2005 |
115 | 2006 |
362 | 2007 |
293 | 2008 |
139 | 2009 |
166 | 2010 |
244 | 2011 |
149 | 2012 |
321 | 2013 |
195 | 2014 |
105 | 2015 |
20 | 2016 |
28 | 2017 |
60 | 2018[3] |
A bot első változata wikidump-ból töltötte fel a Wikipédia összes lapját a botot futtató gépre. A letöltés kézzel történt munkaállomásra.
A második változat futás közben töltötte le a vegyületlapokat. A bot átköltözött az állandóan bekapcsolt raspberry pi szerverre. A kimenet nem változott, a futtatás függetlenné vált a wikidump időpontjától.
A harmadik változat az összegképlet lapok helyett külső szerverre tölti fel az összegképleteket, ahol az kereshető.
E fejezet további része a második változat utolsó, Wikipédiára feltöltött futási eredményét tartalmazza.
Az összegképletek összegyűjtésekor a bot az alábbi szócikkekbe ír:
A botot Gyimhu üzemelteti. Az utolsó futás ideje 2018. szeptember 26.
Statisztikák
[szerkesztés]
|
| ||||||||||||||||||||||||||||||||||||||||
Jegyzetek
[szerkesztés]- ↑ Ha az internetszolgáltató UPC és a Wikipédia szerverei is úgy gondolják. A leggyakoribb hálózati hiba a UPC-nél a névfeloldás, a Wikipédiánál az 503-as http-hiba.
- ↑ Az aceton-peroxid esetén a dimer és a trimer képlete is meg van adva a szócikkben, ugyanabban a paraméterben, amint ez a hibakimenetben is látható.
- ↑ a b c d 2018. szeptember 26-ig.
- ↑ Pl. a Na2CO3 különböző atomjainak száma 3. 0 esetén nincs összegképlet, a 2 neve biner.
- ↑ A különböző atomok szerinti vegyületek listája lekérdezhető az Összegképlet lapról úgy, hogy a keresőfeltételek közül csak az atomszámot töltjük ki.
- ↑ Ciklopropatrién, Difoszfor, Dikén, Gyűrűs_ózon, Hexazin, Oktaazakubán, Ózon, Tetranitrogén