HTML

Precognox

precognox_logo_190.jpg

A blog készítői a Precognox Kft. keretein belül fejlesztenek intelligens, nyelvészeti alapokra épülő keresési, szövegbányászati és big data megoldásokat.

Ha a blogon olvasható tartalmak kapcsán, vagy témáink alapján úgy gondolod megoldhatjuk problémáidat, lépj velünk kapcsolatba a keresovilag@precognox.com címen.

Meetup ajánló

Blog figyelése (RSS)

 Add hozzá az RSS olvasódhoz

Ha levélben szeretnél értesülni az új cikkekről:

opendata.hu

opendatahu45.jpg

Az opendata.hu egy ingyenes és nyilvános magyar adatkatalógus. Az oldalt önkéntesek és civil szervezetek hozták létre azzal a céllal, hogy megteremtsék az első magyar nyílt adatokat, adatbázisokat gyűjtő weblapot. Az oldalra szabadon feltölthetőek, rendszerezhetőek szerzői jogvédelem alatt nem álló, nyilvános, illetve közérdekű adatok.

Az opendata.hu oldalt a Magyar OpenData Alapítvány/Egyesület hivatalos megalakulásáig - lelkes önkéntesek segítségével a
K-Monitor Közhasznú Egyesület (K-Monitor) működteti, az üzemeltetést a Precognox végzi.

A blog tartalmai CC licenc alá tartoznak

Creative Commons License
Kereső Világ by Precognox Kft. is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
Based on a work at http://kereses.blog.hu/.
Permissions beyond the scope of this license may be available at http://precognox.com/.

A Kereső Világ blogon közölt tartalmak a Precognox Kft. tulajdonát képezik. A tartalom újraközléséhez, amennyiben nem kereskedelmi céllal történik, külön engedély nem szükséges, ha linkeled az eredeti tartalmat és feltünteted a tulajdonos nevét is (valahogy így: Ez az írás a Precognox Kft. Kereső Világ blogján jelent meg). Minden más esetben fordulj hozzánk, a zoltan.varju(kukac)precognox.com címre írt levéllel.

Creative Commons License

Nevezd meg! - Ne add el! - Ne változtasd!

 

Twitter dialektológia

2014.08.15. 07:52 Szerző: zoltanvarju Címkék: nyelvészet nyelvtechnológia Twitter

A legtöbb dialektológiai kutatás sajnos nagyon kevés adatközlővel készült/készül, de szerencsére napjainkban a technológiának hála akár 50 millió (!) beszélőtől is lehet adatokat beszerezni, ahogyan Bruno Gonçalves David Sánchez Crowdsourcing Dialect Characterization through Twitter című tanulmányukban arról beszámoltak.

2014-08-10 20.30.21.png

A kutatók az elmúlt két esztendő spanyol nyelvű, geolokációs meta-adatokkal ellátott tweetjeit elemezte. Az adatok földrajzi eloszlását mutatja be a fenti ábra. A kutatók elgondolása szerint a közösségi média nyelvhasználata közel áll a mindennapi beszélt nyelvhez, ezért alkalmas lehet a dialektusok tanulmányozására is (bővebben l. Milyen is az internet nyelve c. korábbi posztunkat).

2014-08-10 20.31.21.png

A kutatás egyik részében a hagyományos kutatásokat felhasználva a szókincsbeli eltéréseket vizsgálták. Majd következett a gépi tanulás bevetése.

2014-08-10 20.34.23.png

Ötvenmillió tweet csak egy nagyon, de nagyon nagy dokumentum mátrixba fér bele, aminek sok-sok dimenziója lesz, ezért főkomponens-elemzéssel szépen leredukálták azt. Ezután jöhetett a klasszifikáció legegyszerűbb módszere, a k-NN. Ennek eredménye két szuper-dialektus lett, az egyik a nagyvárosokra jellemző szóhasználat, a másik pedig a vidékiek spanyolja - mindez kontinensektől függetlenül!

2014-08-10 20.37.00.png

A vidéki spanyolt tovább vizsgálva pedig a klasszikus dialektológia által leírt főbb nyelvjárások képe rajzolódik ki, miképp a fenti ábra is mutatja.

 

A "Big Data" lassan olyan területeket is elér, ahol úgy gondolnánk nem sok keresnivalója akad. Kíváncsian várjuk a következő érdekes bevetését!

A Kereső Világ a precognox_logo_190.jpg Precognox szakmai blogja A Precognox intelligens, nyelvészeti alapokra építő keresési, szövegbányászati és big data megoldások fejlesztője.

Szólj hozzá! • Kövess Facebookon • Iratkozz fel értesítőre

Jobb szentimentelemzés deep learning használatával

2014.08.12. 09:34 Szerző: zoltanvarju Címkék: nyelvtechnológia szentimentelemzés deep learning

A legtöbb mai szentimentelemző rendszer valahol a 80%-os pontosság környékén mozog manapság, ami nem rossz, de "van hely a javulásra". A Stanford Deeply Moving: Deep Learning for Sentiment Analysis projektje 85% felé viszi a pontosságot a deep learning bevetésével, érdemes egy kicsit közelebbről is megvizsgálni módszerüket.

2014-08-10 17.33.20.png

A jelenleg elérhető szentimentelemző megoldások vagy valamilyen klasszifikációs (általában bayesiánus) megoldást használnak, vagy pedig szótárakat vetnek be. Mindkét irányzat figyelmen kívül hagyja a nyelvtani szerkezetet. A szótári módszernél manapság egyre gyakrabban vetik be az ún. shiftereket, azaz a módosítók (pl. negáció) figyelését is, de ez ritkán lép túl a pár soros szóláncokon. Továbbra is komoly gondot jelent a szentiment tárgyának azonosítása, az irónia és a metaforák kezelése. Úgy tűnik, ezen problémák megoldásához a nyelvtani szerkezet, sőt a szemantika vizsgálata is elengedhetetlen.

 

A stanfordi kutatók abból indulnak ki, hogy a nyelv kompozícionális, azaz egy kijelentés jelentése függ tagjainak jelentésétől és az összetétel módjától. Ezért megoldásuk a mondatok szerkezeti szinten történő szentimentelemzésére épít. A Rotten Tomatoes mozi kritikákat tartalmazó adatbázisát dolgozták fel annotátorok segítségével. Az egyes mondatokat a Stanford CoreNLP-vel parsolták (szintaktikailag elemezték) és a Mechanical Turk-ön toborzott felhasználók segítségével az elemzési fák egyes elemeihez szentimentértékeket rendeltek. Érdekes, hogy a mondatrészek hosszának növekedésével csökken a neutrális elemek száma, illetve a szélsőséges (nagyon pozitív, nagyon negatív) értékek aránya minden hossz esetében viszonylag alacsony.

2014-08-10 17.29.09.png

A szentimentértékekkel annotált treebank (azaz a szintaktikailag elemzett és szentimentinformációval is felcímkézett mondatok halmaza) tréningadatul szolgált több gépi tanulási algoritmusnak. Az ún. recursive neural tensor network (egy, a neurális hálókból származtatott eljárás) lett a legjobb ezek közül, ami az ötfokú szentimentelemzési feladatokban 80, a pozitív-negatív besorlás során 85.4 százalékos pontosságú eredményeket produkált.

 

Az eredmények tükrében úgy tűnik, a nyelvtechnológiába is megérkezett a deep learning! A magyar deep learner szentimentelemzők hivatalos dala pedig ez lesz:

 

A Kereső Világ a precognox_logo_190.jpg Precognox szakmai blogja A Precognox intelligens, nyelvészeti alapokra építő keresési, szövegbányászati és big data megoldások fejlesztője.

Szólj hozzá! • Kövess Facebookon • Iratkozz fel értesítőre

Nyelvazonosítás

2014.08.11. 07:33 Szerző: zoltanvarju Címkék: nyelvtechnológia R Python nyelvazonosítás

A nyelvazonosítás problémája elsőre nem tűnik nehéznek. Az ember egyszerűen felismeri hogy különböző nyelveket hall vagy éppen olvas, még akkor is, ha nem ismeri ezen nyelveket. De mi a helyzet a gépekkel? Mivel politikai blogokat elemző projektünk során felmerült a magyar tartalmak azonosításának problémája alaposabban megvizsgáltuk az elérhető eszközöket az R és Python nyelvekben is.

 

A fenti számban tökéletesen el tudjuk különíteni a francia és a bambara nyelvet, de hogy miért, azt már nagyon nehezen tudjuk megmagyarázni. A nyelvre - legnagyobb sajnálatunkra - jellemző, hogy tudása ösztönösen, magától jön, ezért a nyelvtechnológus sokszor inkább valamilyen gyors megoldást keres és nem a nyelvtudást modellezi. A nyelvazonosítás során is így járnak el a modern eszközök, melyek a TextCat program köpönyegéből bújtak ki.

 

A TextCat elsők között szakított azzal, hogy bármilyen nyelvészeti információt próbáljon megtudni az elemzett szövegről. Ehelyett ún. n-gram karakter modellekkel dolgozott, azaz egy-egy nyelvből korpuszok segítségével előállították  az n hosszúságú karaktersorok eloszlását. A kapott nyelvmodellhez hasonlít a program minden inputot és megpróbálja megtalálni melyik eloszláshoz közelít.

 

textcat - a state-of-the-art algoritmus R-ben van implementálva

A textcat (így csupa kisbetűvel) a jelenleg elérhető legjobb nyelvazonosító könyvtár. A hagyományos karakter alapú nyelvmodellek készítését gondolták újra megalkotói, illetve a korral haladva jelentősen megnövelték a modell nagyságát is, s evvel igen nagy hatékonyságot értek el. A textcat mögötti elméleti megfontolásokról a készítők tanulmányából lehet többet is megtudni, mi itt csak azt emeljük ki, hogy viszonylag nehéz "megfektetni" az eszközt. Miképp az alábbi ábra is mutatja, külön nyelvtudományi vita tárgya lehetne hogy a szerb-horvát-bosnyák hármas keverése hibának tekinthető-e, vagy hogy a skandináv nyelvekkel mit kezdjünk. 

2014-08-10 18.31.07.png

A szerzők hierarchikusan klaszterezték hogy a modellek összevetése során miképp alakulnak a tippek, ebben látható hogy a valenciai és a katalán pl. nagyon hamar kerül egymás mellé. A tudománytalan nyelvrokonítási kísérletek híveinek pedig ajánlom a magyar-breton és magyar-baszk rokonság megfontolását, karakter n-gramokra alapozva lehet mellette érvelni!

2014-08-09 19.32.34.png

langid.py - a pythonisták válasza a nyelvazonosításra

 A langid.py alkotói a hagyományos megoldást választották, de nagy gondot fordítottak a tréningadatokra és arra, hogy sok nyelvet legyen képes felismerni eszközük.

2014-08-10 18.44.26_1.png

A kiértékelés során nagyon szép eredményeket ért el a langid.py Az, hogy 97 nyelvet képes felismerni, igazi, rögtön bevethető könyvtárrá teszi, amit minden pythonista tud használni, előzetes nyelvtechnológiai ismeretek nélkül is. Akit érdekel hogyan készült az eszköz, az mindenképpen olvassa el megalkotóinak tanulmányát!

 

Verdiktet nem mondunk. Mindkét eszköz nagyon jó - hogy ki melyiket használja, az ízlés és megszokás kérdése.

A Kereső Világ a precognox_logo_190.jpg Precognox szakmai blogja A Precognox intelligens, nyelvészeti alapokra építő keresési, szövegbányászati és big data megoldások fejlesztője.

2 komment • Kövess Facebookon • Iratkozz fel értesítőre

Magyar politikai blogszféra - általános jellemzők

2014.08.07. 08:00 Szerző: zoltanvarju Címkék: keresés politikai blogok tartalomelemzés hálózatelemzés

Előző posztunkban bemutattuk az adatok beszerzését és az egyszerűsített gráf főbb jellemzőit, ezért végre rátérhetünk a rendes, irányított gráfnak a bemutatására. A posztban a gráfok csomópontjait nem címkéztük, a felcímkézett gráfok nagyobb felbontásban megtalálhatók itt, az url-ek kódjait pedig ezen táblázat segítségével oldhatja fel a kedves olvasó.

directed_authority.png

Az irányított gráfnak 1002 csomópontja van, ezek között 3190 link található. Mivel gráfunk irányított, az A-ból B-be és a B-ből A-ba mutató kapcsolatok között különbséget teszünk. Fontos kiemelni, hogy jelen esetben a linkelés az oldalon található főszövegben történő hivatkozást jelent. A legrövidebb utak átlagos hossza 3.609506, a gráf átmérője pedig 7. A gráf ki- és befokszámainak eloszlását az alábbi ábrák szemléltetik.

directed_degree_frequency.png

directed_log_log_degree_dist.png

Gráfunk nem összekapcsolt, azaz nem érhető el egy adott pontból bármelyik másik pont. Az alábbi ábrán is láthatjuk, akadnak elszigetelt részei a gráfnak.

directed_hits.png

Az egyes csomópontok mérete itt a HITS algoritmus alapján számítottuk érték adja, ami tkp. azt jelenti hogy az élek mentén mennyire jelentős egy adott csomópont, milyen "továbbjutási lehetőségeket" biztosít. Látható, hogy ezek a hubok középen, nagyon sűrűen helyezkednek el, továbbá a gráf nagy része egy összefüggő egészet alkot, ez az "óriási összefüggő komponens", ami 997 csomópontot és 3188 élt foglal magában, legrövidebb utainak átlagos hossza 3.609511, átmérője pedig 7. A HITS algoritmussal súlyozott csomópontokat megjelenítő ábránk most így néz ki:

 directed_gc_hits.png

A forgalmas csomópontokat a magas be-fokszám jellemzi. Hasonló képet kapunk, ha a HITS továbbfejlesztett változatát a PageRank-et alkalmazzuk.

directed_gc_authorities.png

Látható, hogy a gráf legtöbb elemét a HITS és/vagy a PageRank algoritmus alapján magasra értékelt csomópontok kötik össze, ezek az ún artikulációs pontok, melyeket ha eltávolítunk a gráfból, akkor egy nagyon elszigetelt világot kapunk, amiben alig vannak kapcsolatok (865 csomópont között csupán 76 él!).

directed_community.png

Az artikulációs pontok megkeresését többek között arra szokták használni, hogy egy hálózat gyenge pontjait megtalálják, mivel ezek kiiktatásával megszakítható a legtöbb csomópont között az összeköttetés. Esetünkben ezek a pontok azok a források, amikre sokan hivatkoznak, úgy tűnik ezek az oldalak tematizálják a közbeszédet és miképp az alábbi ábra mutatja, egy összefüggő, rendesen összekapcsolt hálózatot alkotnak. 

directed_articulation.png

Az artikulációs pontok száma csupán 132 és 784 kapcsolat található közöttük. A legrövidebb utak hosszának átlaga 2.686464, a gráf átmérője pedig 5. Az artikulációs pontok listája megtalálható itt.

 

Természetesen az artikulációs pontok jelentős része ún tipikus "linktemető", azaz olyan oldal, amire szeretünk hivatkozni, pl a Wikipedia, Google, főbb híroldalak. Ezek egy jelentős része inkább mint hivatkozási pont szolgál a politikai blogok esetében, kérdés viszont hogy a többi oldal mint artikulációs pont tényleg felel-e az információ áramlásáért, képes-e hatni a hálózatban megjelentő topikokra. Ennek megválaszolásához a tartalomelemzést fogjuk segítségül hívni!

A Kereső Világ a precognox_logo_190.jpg Precognox szakmai blogja A Precognox intelligens, nyelvészeti alapokra építő keresési, szövegbányászati és big data megoldások fejlesztője.

Szólj hozzá! • Kövess Facebookon • Iratkozz fel értesítőre

Magyar politikai blogszféra - adatok

2014.08.03. 17:59 Szerző: zoltanvarju Címkék: politikai blogok hálózatelemzés igraph R Python Precognox Precognox Labs

Az utóbbi hetekben szorgosan készülünk a magyar politikai blogok elemzésére. Elkészült egy kis crawler, ami begyűjtötte nekünk az adatokat, majd rávetettük magunkat gráfokra és a rengeteg szövegre, tekintsük ezt tesztüzemnek, amiről be is számolunk kedves olvasóinknak.

fruchterman_reingold.png

Az adatok begyűjtése

Crawler-ünk Toby Segaran Programming Collective Intelligence c. könyvének negyedik fejezete alapján készült Pythonban. Mivel a kötet már hét éves és azóta történt egy-két dolog a Python nyelvvel és a használt SQLite adatbázissal is, kénytelenek voltunk leporolni egy kicsit a kódot, ill saját igényeinek megfelelően módosítottunk is rajta. Pl. nem egy egész oldalt szedünk le, hanem csak a tartalmilag releváns részt (vizsgálódásunk ebben tér el leginkább a "hagyományos" webes tanulmányoktól, minket ugyanis csak az érdekel mire hivatkoznak a bloggerek és a politikai témákban érintett egyéb szerzők, az egész oldalt nem vizsgáljuk) és elmentjük a linkek szövegkörnyezetét is (hogy később megvizsgáljuk milyen ezen hivatkozások polaritása, emóciója, stb).

sql_schema.jpg

Egy ötven, magyar politikai blogot tartalmazó ún. seed lista alapján indult el crawlerünk és hármas mélységben gyűjtött be minden linkelt oldalt. A gyűjtés eredménye 10785 oldal, melyek között 155182 link található.

 

Az adtok előkészítése

Az 10785 oldal egyedi url-t takar, ezeket top-level domain-re (tld) normalizálva az egyes doménekbe tartozó oldalak eloszlása azt mutatja, itt is érvényesül a webes topológiára jellemző hatványfüggvény eloszlás. A legtöbb oldalt tartalmazó tld-kről az alábbi ábra ad egy kis infót.

toplevel_stat.png

Az eredeti gráfunkat nem irányítottként elemezve a legrövidebb utak átlagos hossza 8.024154, a gráf átmérője pedig 31. Természetesen a gráf nem összefüggő.

 

Mivel a tld nem túl informatív (a blog.hu takarja például a számunkra legérdekesebb blogokat), az ún. pay-level domain-re (pld) normalizáltuk az url-eket. (Pl. blogunk a http://keres.blog.hu tld-je a blog.hu, a pld-je pedig a kereses.blog.hu) Az alábbi grafikon mutatja mely pld-kről származik a legtöbb url.

paylevel_stat.png

Az adatok begyűjtését és normalizálását Python-ban végeztük, majd az igraph által is olvasható gráf formátumra konvertáltuk azokat, hogy az általunk megszokott R környezet segítségével végezhessük elemzésünket. Az url-ek normalizálása után 1002 pld-ből és a közöttük lévő 1835 kapcsolatból álló gráfot kaptunk, ami nem összefüggő, a legrövidebb utak átlagos hossza 3.609506, átmérője pedig 7. A pld-k kódja megtalálható ebben a táblázatban.

 

A normalizált gráf főbb jellemzői

Jelen posztban a gráfot mint egy nem-irányított gráf jellemezzük, azaz nem teszünk különbséget az A-ból B-be és vissza mutató linkek között.

 

Az egyes oldalak fokszáma alacsony, a legtöbb egy és tíz közöttivel rendelkezik.

degree_frequency_1.png

Logaritmikus skálán talán jobban érzékelhető hogy a legtöbb oldal fokszáma alacsony.

log_log_degree_dist.png

A szomszédosság foka (azaz hogy hány másik oldalhoz kapcsolódik az adott oldal) és a fokszám log plotja is a szakirodalomban megszokott képet rajzolja ki.

avg_d_nhbs_vs_logvertexd.png

Topológia

A nem-irányított gráffal elsődleges célunk csupán az egyes vizualizációs lehetőségek kipróbálása volt, de ez is egy kis betekintést enged az adatok mögötti struktúrába. Az egyes képek nagyobb, a csomópontokhoz tartozó kódokat is megjelenítő változatai itt találhatók (a kódokat pedig a fentebb említett táblázat segítségével tudja feloldani).

 

A HITS algoritmus segítségével a "legforgalmasabb" csomópontokat tudjuk azonosítani egy gráfban, azaz azokat, melyek olyan élek mentén fekszenek, amik sok más csomópont felé nyújtanak elérést (amúgy ez a módszer a PageRank elődje!)

 

hits.png

A HITS-hez hasonló módszer az ún. edge betweenness segítségével próbáltuk meg klasszifikálni az egyes csomópontokat.

edge_betweenness.png

Majd a walktrap módszerrel is tettünk egy próbát.

walktrap.png

Kérdések, tanulságok

Habár a 10785 oldal soknak tűnik, sajnos nagyon kevés a magyar nyelvű tartalom rajtuk. Minden linket megvizsgálva azt találtuk, hogy csupán 3877 darab azonosítható úgy mint magyar. A linkek struktúrája azt mutatja, hogy nagyon hamar eljuthatunk külföldi oldalakhoz, ezért a crawler mélységét növelni nem célszerű (no meg arról nem is beszélve, hogy ezzel a linkek száma exponenciálisan nőne), marad tehát a seed lista bővítése.

 

Kapott gráfunkat már most is nagyon szeretjük, de a puszta deskriptív jellemzésénél többre vágyunk. Szeretnénk összekapcsolni a hálózatelemzést a tartalomelemzéssel. Eltér-e a nyelvezete a baloldali bloggernek a jobbosétól? Milyen témákkal/topikokkal foglalkoznak a blogok? Időben és térben hogyan jelennek meg az egyes topikok a blogokon? Nagy kérdések, könnyen lehet hogy megválaszolatlanok maradnak, de azon vagyunk hogy olvasóinknak beszámoljunk kalandozásainkról. Hamarosan foly.köv.!

A Kereső Világ a precognox_logo_190.jpg Precognox szakmai blogja A Precognox intelligens, nyelvészeti alapokra építő keresési, szövegbányászati és big data megoldások fejlesztője.

Szólj hozzá! • Kövess Facebookon • Iratkozz fel értesítőre