Főmenü megnyitása

Gyimbot

Csatlakozott ekkor: 2012. december 24.
 
== Összegképlet robot ==
'''Az összegképlet robot az API változása miatt jelenleg nem üzemel. Az utolsó feltöltött adat állapota 2014. augusztus 17. Részletek [[#uzemszunet|alább]].'''
 
Az összegképletek összegyűjtésekor a bot az alábbi szócikkekbe ír:
{| border="1"
 
A botot [[Szerkesztő:Gyimhu|Gyimhu]] üzemelteti.
== Működé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 az új lapokról.
# Feltölti a lapokat a Wikipédiára.
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.)
 
A bot programjai linux shell scriptek és C programok. Debian disztribúcióban az amd64-re fordított kód és a forrás megtalálható a http://www.gyimesilaszlo.hu lapon, a <tt>kemiabot</tt> csomagban. Az alábbi rövid leírásnál több technikai részlet található a man lapokon.
{{anchor|stat}}A legutolsó dump dátuma: {{A dump dátuma}}
* az utolsó futás ideje: 2014. szeptember 7.
* a használt adatbázis dump: http://dumps.wikimedia.org/huwiki/20140907/ szeptember 7.]
 
=== Az összegképletes lapok összegyűjtése ===
* Géppel felismert vegyület: 1972
Kémiai sablonok:
* Hibásan felismert (a fentin felül): 8
* {{sl|Chembox}}
* Kézzel hozzáadott vegyület: 34
* {{sl|Chembox_new}}
* Vegyület összesen: 2006
* {{sl|Chembox új}}
* Felismert összegképlet: 1879
* {{sl|Drugbox}}
* Fel nem ismert összegképlet: 93
* {{sl|Gyógyszeresdoboz}}
* Kézzel megadott összegképlet az új vegyületekkel együtt: 73
* {{sl|Vegyület_infobox}}
* Összegképlet összesen: 1952
A shell script neve <tt>kembot</tt>, ami egyúttal le is kérdezi a lapokat (lásd alább). A lapok összegyűjtésére a <tt>sablhiv</tt> scriptet hívja a wikiscript csomagból a sablonra hivatkozó lapok lekérdezésére.
* DISPLAYTITLE: 16
* Bemenő fájl: –
* Eredményfájl: <tt>kembot.mol</tt>.
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, .
 
=== AAz robotösszegképletek futtatásalekérdezése ===
Ezt is a <tt>kembot</tt> csinálja. A lapok lekérdezésére a <tt>wikiszoveg</tt> scriptet hívja a wikiscript csomagból, a lap parszolására és az összegképlet kinyerésére a <tt>kemia</tt> nevű C-programot.
# [[#A wikidump letöltése|A wikidump letöltése]]. Futási idő 10–15 perc.
# [[Szerkesztő:Gyimbot/t3.sql|A mysql táblák létrehozása indexek nélkül]]. A huwiki-n a mediawiki verziójának változásával a szkript változhatik. A végrehajtási idő olyan rövid, hogy nem mérhető.
# A huWiki importálása: <code>java -jar mwdumper.jar pages-articles.xml</code>. A futási idő kb. negyed óra.
# [[Szerkesztő:Gyimbot/t3ind.sql|Indexek létrehozása]] a beimportált táblákra. Futási idő 3–4 perc.
# [[Szerkesztő:Gyimbot/drugbox.sql|Munkatábla létrehozása]] az összegképleteket tartalmazó szócikkek számára. Memóriakorlátos a régi konfigurációban, ezért érdemes leállítani a gnome-ot és saját wikit. Az új konfigurációban diszkkorlátos. Futási idő a régi konfigurációban 4–4½ óra, az újban 3½ perc. (!)
# A [[Szerkesztő:Gyimbot/Kézi javítólista|kézi javítólista]] utolsó változtatásainak ellenőrzése, eltárolás a helyi filerendszerben (<tt>kezi.txt</tt>).
# [[#Az összegképletek kigyűjtése|Az összegképletek kigyűjtése]]
# [[#A wiki-lapok generálása|A wiki-lapok generálása]], [[Szerkesztő:Gyimbot/robot|feltöltés a helyi wiki-be]] ellenőrzés céljából.
# [[Szerkesztő:Gyimbot/stat|statisztika előállítása]], [[#stat|jelen lap]] kézi szerkesztése. A kapott lap összevetése a helyi wiki [[Sablon:Összeglista|összegképlet lap|]] utolsó és utolsó előtti változatának különbségével. A új, [[Sablon:Nincs összegképlet|összegképlet nélküli lapok]] ellenőrzése, szükség esetén az összegképlet javítása és az [[Szerkesztő:Gyimbot/Kézi javítólista|összegképlet kézi megadása]]. (A következő futtatáskor ne felejtsük el törölni a javított összegképletű lapokat a kézi listából.) A vegyületekben szereplő elemek számának változása esetén a [[Szerkesztő:Gyimbot/wtabl.c|wtabl.c]] program módosítása.
# az utolsó letöltés óta keletkezett [[Szerkesztő:Gyimbot/ujvegy|új lapok]] letöltése, kézi javítása, a [[Wikipédia:Kémiaműhely#.C3.9Aj_vegy.C3.BCletek|kémia munkacsoport lapjának]] szerkesztése
# [[Szerkesztő:Gyimbot/robot|a lapok feltöltése]] huwiki-be.
 
Az eredmény ilyen alakú:
=== Konfiguráció ===
* processzor: 2 darab 2-magos Intel(R) Core(TM) i5-3210M, 2.5 GHz
* memória: 4G
* operációs rendszer: debian 7.4 (wheezy)
 
Szükséges csomagok: mysql, libmysqlclient-dev, gcc, wget, openjdk-6-jre.<ref>Vagy más Java-csomag, mely képes az <tt>mwdumper.jar</tt>-t futtatni.</ref>
 
=== A wikidump letöltése ===
FNEV=pages-articles.xml.bz2
rm -f $FNEV
wget -t1 "http://dumps.wikimedia.org/huwiki/latest/huwiki-latest-pages-articles.xml.bz2" -O - | bunzip2 -c >$FNEV
 
=== Az összegképletek kigyűjtése ===
* [[Szerkesztő:Gyimbot/olista|Az összegképlet lapok generálása]]. A gépi listát (<tt>gepi.txt</tt>) előállító program (<tt>hufo</tt>) [[C (programozási nyelv)|C nyelven]] íródott, futási ideje kb. egy perc. Ez a robot magja.
 
Az összegképlet-lista egyszerű szövegfile. Két példasor:
Aceton-peroxid
Aciklovir|C=8|H=11|N=5|O=3
Az eredményfile-ban minden munkatáblabeli szócikk szerepel, ami nincs a tiltólistán (a [[Szerkesztő:Gyimbot/Kézi javítólista|kézi javítólista]] összegképlet nélküli sorai). Az első sorban a C-program nem találta meg az összegképletet, a másodikban a szócikkbeli összegképlettel azonos sorrendben sorolta fel az elemeket.
 
Ugyanilyen szerkezetű a [[Szerkesztő:Gyimbot/Kézi javítólista|kézi javítólista]] is. A lapgeneráló automatikusan összedolgozza a kettőt.
 
Ugyanez a program gyűjti ki és írja file-ba a DISPLAYTITLE sablonokat. A teljes eredményfile (<tt>hufo.ali</tt>):
<pre>
Aceton-peroxid
Alfa-ketoizokapronsav|''alfa''-Ketoizokapronsav
Acibenzolár|C=7|N=2|S=2|O=1|H=4
B12-vitamin|B<sub>12</sub>-vitamin
Delta-valerolakton|''δ''-Valerolakton
Dinitro-orto-krezol|Dinitro-''orto''-krezol
Gamma-valerolakton|''γ''-Valerolakton
N-klórszukcinimid|''N''-klórszukcinimid
N-metilkoniin|''N''-Metilkoniin
P-Toluolszulfonsav|''p''-Toluolszulfonsav
Terc-butil-bromid|''terc''-Butil-bromid
</pre>
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.<ref>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ó.</ref> 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: <tt>Formula</tt>, <tt>Képlet</tt>, <tt>kémiai_képlet</tt>, <tt>chemical_formula</tt>. Az összegképlet vegyjel-paraméterekkel is megadható.
* a három <tt>chembox</tt> típusú sablon alsablonokat hívhat, melyek szintén elfogadják a fenti összegképlet-paramétereket.
 
Fájlok:
=== A wiki-lapok generálása ===
* Bemenő fájl: <tt>kembot.mol</tt>.
A lapgeneráló lelke két C-program. Mindkettő a fent leírt összegképlet-file-t olvas be.<ref>A két program ugyanazokból a [[Szerkesztő:Gyimbot/wtabl.c|forrásfile]]-okból áll. A különbség a C-fordítónak adott kapcsoló, melyet a <tt>main()</tt>- tartalmazó C-programban az <code>#ifdef</code> preprocesszor-utasítás figyel.</ref> A <tt>wossz</tt> lista, a <tt>wtabl</tt> táblázat alakú weblapot állít elő.
* Eredményfájl: <tt>kembot.kepl</tt>.
100 Mbit-es hálózatban a futási idő kb. negyed óra. A processzor- és diszkhasználat minimális.
 
=== Kézi korrekció ===
Az első paraméter az összegképlet-file. Ha a program második filenevet is kap, kiírja az elemgyakoriságokat is (melyeket egyébként is figyel a táblázatos weblap miatt).
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 {{hulink|Béta-receptor-blokkolók}} hívja a <tt>Drugbox</tt> 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 (<tt>kezi.txt</tt>), melynek alakja azonos a gépi eredményfájléval. Az értelmezésben annyi különbség van, hogy a <tt>kezi.txt</tt> képletet nem tartalmazó szócikkeit törölni kell a gép által megtaláltak közül.
A lapokat egyetlen [[Szerkesztő:Gyimbot/okepl|shell szkript]] állítja elő a fenti két C-program segítségével. Az összegképlet-listába bedolgozza az elemgyakoriságot egy második oszlopba. Az elemekre szűkített táblázatoknál a <tt>wtabl</tt> inputja a <tt>hufo.txt</tt> elemre szűrt változata. Az elemek listáját és a generálandó file-ok nevét a <tt>wiki.txt</tt> tartalmazza.
 
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 lapok a wiki alkönyvtárban keletkeznek, a szócikk nevével azonos filenévvel.
 
A feladat tehát két lista összefésülése, melyet az <tt>olista</tt> 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ő.
=== A lapok feltöltése a magyar Wikipédiára ===
A műveletet a wiki-terminológia nem feltöltésnek, hanem <tt>edit</tt>-nek nevezi.
 
* Bemenő fájl: <tt>kezi.txt</tt>, <tt>kembot.kepl</tt>.
A feltöltő [[Szerkesztő:Gyimbot/robot|shell szkript]] a wiki alkönytár teljes tartalmát feltölti a Szerkesztő:Gyimbot alkönyvtáraiba, a filenévvel azonos szócikk névre.
* Eredményfájl: <tt>hufo.kepl</tt>.
 
A futási idő néhány másodperc erős diszkhasználattal. Hálózatot nem, processzort minimálisan használ.
{{anchor|uzemszunet}} A feltöltő shell-script alábbi sora az API változása miatt nem működk:
<syntaxhighlight lang="bash">
$WGET --load-cookies $KUKI -O $FILE --post-file $MUNKA \
"$URL/api.php?action=edit&bot&format=$FORMAT&title=$CIM&recreate&token=$TOKEN"
</syntaxhighlight>
 
=== Az összegképlet lapok előállítása ===
A <tt>$FILE</tt>-be visszaadott érték korábban:
Az összegképletek fent leírt alakú listájából wiki-lapokat állít elő egy külön könyvtárba. A gyakori elemekről külön lap készül, melynek minden vegyülete tartalmazza az elemet.
<pre>
Array
(
[edit] => Array
(
[result] => Success
[pageid] => 345
[title] => Sablon:Berilliumvegyületek
[nochange] =>
)
 
* Bemenő fájl: <tt>welem.txt</tt>, <tt>wiki.txt</tt>, <tt>hufo.ali</tt>, <tt>hufo.kepl</tt>.
)
* Eredményfájlok a huwiki alkönyvtárban.
</pre>
 
A script neve <tt>okepl</tt>, mely a <tt>wtabl</tt> és <tt>wossz</tt> nevű (majdnem azonos) C-programot hívja. Az erőforrásigény elhanyagolható.
A változás után:
<pre>
Array
(
[warnings] => Array
(
[txt] => Array
(
[*] => format=txt has been deprecated. Please use format=json instead.
)
 
=== Statisztika ===
)
Lekérdezi a szócikkek létrehozási és módosítási idejét. Évenkénti/havonkénti statisztikát csinál.
 
=== A lapok feltöltése ===
[servedby] => mw1207
Egyelőre tesztüzem van: kézzel.
[error] => Array
(
[code] => mustposttoken
[info] => The 'token' parameter must be POSTed
)
 
)
</pre>
=== Teendők ===
* {{pipa}} {{sl|DISPLAYTITLE}} a vegyületek nevében
* {{pipa}} helyközök a vegyületek nevében
* {{pipa}} a fenti két névformázás a hiányzó összegképleteknél is
* {{pipa}} botstring wget-ben
* {{sl|kisbetűscím}}: 250 darab. Ebből kémia:
** Alfa-propiolakton 11611631
** Α-ketoglutársav 12382187
 
== Újraparszolás ==
894

szerkesztés