„Szerkesztő:Gyimbot” változatai közötti eltérés
Nincs szerkesztési összefoglaló |
|||
6. sor: | 6. sor: | ||
== Összegképlet robot == |
== Ö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: |
Az összegképletek összegyűjtésekor a bot az alábbi szócikkekbe ír: |
||
{| border="1" |
{| border="1" |
||
50. sor: | 48. sor: | ||
A botot [[Szerkesztő:Gyimhu|Gyimhu]] üzemelteti. |
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, . |
|||
=== |
=== Az összegképletek leké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> |
<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> |
</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 == |
== Újraparszolás == |
A lap 2018. április 9., 21:46-kori változata
Két botom van:
- A Dal infobox paramétereinek összegyűjtése és tárolása a Modul:Kották metaadatai lapon. A bot forrása és amd64-es binárisa elérhető debian repositoryból (wikikotta csomag).
- A kémiai lapok összegképleteinek összegyűjtése. A bot átdolgozása most[1] folyik.
A kémiai bot elsődleges feladata a magyar Wikipédia kémiai lapjairól összegyűjteni az összegképleteket. A másik alkalmazása lapok újraparszolása.
Összegképlet robot
Az összegképletek összegyűjtésekor a bot az alábbi szócikkekbe ír:
A botot 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 kemiabot csomagban. Az alábbi rövid leírásnál több technikai részlet található a man lapokon.
Az összegképletes lapok összegyűjtése
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
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ó
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 Sablon:Hulink 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
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.
- Bemenő fájl: welem.txt, wiki.txt, hufo.ali, hufo.kepl.
- Eredményfájlok a huwiki alkönyvtárban.
A script neve okepl, mely a wtabl és wossz nevű (majdnem azonos) C-programot hívja. Az erőforrásigény elhanyagolható.
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
Egyelőre tesztüzem van: kézzel.
Újraparszolás
A wiki a szócikk mentésekor hozza létre a szócikk hivatkozásait. Ha a szócikk által hívott sablonok változnak, a hivatkozások ezt nem követik. Erre szolgál a reparse. A filelist.txt-ből veszi az újraparszolandó lapok listáját. Lekérdezi és változtatás nélkül visszatölti őket.
A laptörténetben ebből semmi nem látható, de a hívott sablonok hivatkozásai megváltoznak.