HTML

Az élet kódjai

Csináld maga. Senki nem csinálja meg helyetted.

Friss topikok

Word2vec

2018.06.11. 00:23 Travis.CG

Nagy mennyiségű szöveg feldolgozásánál jelentkezhet az igény, hogy jó lenne a szavakat jelentés alapján csoportosítani. Erre az egyik módszer a Google által fejlesztett word2vec. Felületesen szólva az algoritmus nem csinál mást, mint a szavakat egy topológiai térképre helyezi. Ez azt jelenti, hogy az azonos jelentésű szavak közelebb kerülnek egymáshoz. Vagyis ha megnézzük, milyen szavak vannak a térképen a macska közelében, akkor megtalálhatjuk a cica szót. De ami még ennél is érdekesebb, hogy ebben a térképben vektorműveleteket végezetünk, ami további kapcsolatokat fed fel a szavak között. Mit is jelent ez? Ha a Németország - Berlin vektort rávetítjük Franciaországra, akkor Párizs fog kijönni!

Az algoritmust és a példakódokat bárki letöltheti és kipróbálhatja. Vannak példák a Wikipédiára és más nyilvános szöveg adatbázisokra, de én arra gondoltam, ki lehetne próbálni, mit tud az algoritmus, ha az összes elérhető tudományos publikációt beadom neki.

Először is letöltöttem az EuropeanPMC-ről az összes cikket XML formátumban. Egy saját fejelsztésű szkripttel kiszedtem a cikkek törzsét, azon belül eltávolítottam az összes XML tag-et, táblázatokat, magányosan álló számokat. Hevenyészett nyelvtani tudásomnak megfelelően az összes kötőszót, névelőt és hasonló, jelentéssel nem bíró nyelvtani elemet. Nem törekedtem tökéletes eredményre (nem is lett az), mindent szóközzé alakítottam.

Elég sok fájl volt, ezért a szuperszámítógépen futtattam a programot. Mivel a miniDOM-ot használtam, ami nem a legjobb megoldás nagy XML-ek kezelésére és elég lassú is, ezért optimalizáció helyett nagyobb erőforrást adtam csak alá. A végén már 80GB memória kellett a szkriptnek. Nem akartam túl sok időt bohóckodni vele. A végső korpuszt egybe gyúrtam, és egy 32 processzoros gépen elkészítettem az összes publikáció vektor reprezentációját.

Nyilván a feltárt kapcsolatok függenek a beadott korpusz tartalmától. A fent említett példák ezért biztosan jól működnek egy Wikipedia-szerű, általános információkat tartalmazó szövegben. Meglepő módon a publikációkból is kinyerhető ez az információ!

Először tumorok neveivel kísérleteztem, de csak más tumorok jöttek ki. Ha beírtam, hogy breast, rögtön kijött, hogy cancer és prostate. Nem rossz, nem rossz. Kíváncsiságból beírtam a főnököm vezeték nevét, mire az első 10 találatban ott volt, hogy kmplot. Ezen jót nevettem, de érthető is, mert az a legidézettebb cikke. Ezt követően elkapott a gépszíj és egy csomó csúnya szót is beírtam. Nagyon meglepődtem, amikor mindegyik találatot kapott. Ha nem említettem volna, az algoritmus alapértelmezetten az első 10 ezer leggyakoribb szót használja csak a térkép elkészítéséhez, és ebben benne van az angol káromkodás java része. Ennyit a tudományos nyelvhasználatról.

Még az én rég elfeledett programom, a mofext is reprezentálva van, motifscannerrel, fuznuccal esik egy kategóriába, ami igaz is, tényleg hasonló feladatot látnak el. A 24. helyen pedig a doopsearch jött fel. Le voltam nyűgözve.

Ezt követte a szókapcsolatok felderítése. Itt már jóval nehezebb volt a dolgom. Igazából az ok, ami miatt belekezdtem a projektbe, hogy szövegbányászattal lehet-e új géneket találni az egyes ráktípusokhoz. Olyan géneket, amelyek megvannak a publikációkban, de valahogy elkerülték mindenki figyelmét. A programnak három szót kell beadni, és a válasz egy analógia lesz. A bevezetőben bemutatott példa valami miatt nem működött, de a berlin germany paris hármasra megkaptam a france-t.

Sőt, a kutatók karrierjét is elég jól fel lehet térképezni a módszerrel. Például az altschul blastn loman hármasra a minion jön ki. (Nick Loman elég sok MinION-os cikket publikál. Altschul pedig a Blast fejlesztője.)

Ez után jött a kísérletezés. A retinoblastoma rb1 breast-re az esr1 jött ki első helyen. Brca1 csak a 8. volt. Arra számítottam, hogy előkelőbb helyet foglal el. A cancer tp53 metastasis kapcsolat a ctnnb1, pten, p53, kras találatokat kaptam. Igazából bármilyen kapcsolatra, amiben szerepelt a cancer, ezeket a géneket hozta fel.

Ilyen szempontból az eredeti célokat nem értem el, nem találtam új géneket. Igazából elég sok időt el lehetne játszani vele, mert a korpuszt is válatozhathanám. Például a különböző rák típusokat nem hagynám elveszni (breast_cancer). De nem hiszem, hogy egy projektet érdemes lenne rááldozni.

Szólj hozzá!

Címkék: machine learning

A bejegyzés trackback címe:

https://cybernetic.blog.hu/api/trackback/id/tr113896386

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása