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ésA 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ésA 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ésLé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ésKé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ésEzt 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ésKé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ésA 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ésLeké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ésA 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ésDarab | É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