Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

 Kiss Miklós 2011. 01. 28. POFA I. Product Opinion Finder & Analyzer.

Hasonló előadás


Az előadások a következő témára: " Kiss Miklós 2011. 01. 28. POFA I. Product Opinion Finder & Analyzer."— Előadás másolata:

1  Kiss Miklós 2011. 01. 28. POFA I. Product Opinion Finder & Analyzer

2 Prototípus  Interneten fellelhető termékek jellemzőit prezentálja.  Egy meghatározott keresés eredmény-oldalaiból a felhasználó számára lényeges információkat releváns sorrendben jelenít meg.  Kvantitatív szövegelemzés segítségével.  Cél: olyan gyakorlatiasan használható termék legyen előállítható a prototípusból, amely az internetes vásárlások előtti (jellemzők) vagy vásárlás utáni (jellemző problémák) információgyűjtést jelentős mértékben megkönnyíti, gyorsítja. 2/32

3 Projekt célja  Öntanuló, nagy mennyiségű és eltérő forrásokból származó szövegek kvantitatív módszerekkel történő tartalomelemzésére alkalmas algoritmusváltozatok kutatása, modellezése és tervezése;  a létrehozott algoritmusok optimalizálása teljesítmény szempontjából (felkészítése nagy mennyiségű, egyidejű elemzésekre – performancia optimalizálás);  az algoritmusok tanulási folyamatának irányítására, az eredmények elemzésének prezentálására alkalmas felhasznáói felületek tervezése. 3/32

4 Algoritmusok jellemzői  Nagytömegű (internetről származó) szövegek kvantitatív feldolgozása;  öntanuló jelleg kialakítása az algoritmusban a felhasználóval történő interaktív együttműködés alapján, jellemző szóösszetételek tárolása, források rangsorolása tartalmakra adott visszajelzések alapján;  performancia optimalizáció a nagy felhasználószám kiszolgálásához (az adatbázis struktúrájának, a lekérdező SQL-ek optimalizálása, a szövegelemzés jellemző eredményeinke adatbázis szinten való gyorsítótárazása, a prezentáló eszköz és a szerver oldali réteg kapcsolatának optimalizálása az adatforgalomnak megfelelően. 4/32

5 Prototípus elemei elemző algoritmusok  A kifejlesztésre kerülő algoritmusok egy megadott termék interneten fellelhető jellemzőinek, illetve a termékkel kapcsolatos egyéb információknak (vélemények, típushibák, használati tapasztalatok, probléma megoldások, vásárlási/szervíz tapasztalatok) különböző forrásokból származó szöveges megjelenési formáiból képes gyors, irányított elemzések végrehajtására. A kvantitatív módszerekre épülő elemzési logika és az adatbányászati jellegű mesterséges intelligencia segítségével olyan elemzési modellt implementálunk, mellyel minimalizáljuk a nyelvészeti jellegű elemzési módszertanokat. 5/32

6 Prototípus elemei Irányítási és prezentációs réteg I.  Az elemző algoritmusok egy bemenő szöveghalmazt dolgoznak fel. E szövegek szavaiból, kifejezéseiből statisztikai módszerek alkalmazásával címkefelhőt állítunk elő, amely segítségével a felhasználó finomíthatja az elemzést és befolyásolhatja a vizsgálat további eredményét. A felhasználó és a prototípus közötti webes technológiákon alapuló, irányításra és az elemzések (rész)eredményeinek megjelenítésére szolgál ez a réteg. Az elemzés irányának befolyásolása, terjedelmének szűkítése során felhasznált szavakat a prototípus eltárolja, és hozzárendeli az eredeti kereső kifejezéshez, valamint egy előre megadott – a felhasználó által kiválasztott – kategóriához. 6/32

7 Prototípus elemei Irányítási és prezentációs réteg II.  E szűkítés alapján a réteg a keresőmotor találati listája szövegeinek egy tartalmialg szűrt verzióját prezentálja, sőt az egyes elemek viszonylatában csak a releváns részleteket jeleníti meg. Ezeket a szövegrészleteket a felhasználó egyesével tovább értékelheti. A kategória és szó összerendeléseket, valamint a szövegértékelést a prototípus szintén rögzíti, s ez alapján az algoritmus a következő tartalom elemzési lépés során már felhasználó igényeihez közelebb álló tartalmat képes prezentálni, illetve egyre pontosabbá teszi a téma szerint értékelt források rangsorát. 7/32

8 Prototípus elemei fogalmi háló modell  Az algoritmusok és a felhasználó interakciója során a prototípus létrehoz egy fogalmi hálót statisztikai módszerekkel, amely révén, ha nem is válik teljesen szükségtelenné a nyelvi elemzés, de mindneképpen minimalizálódik a felhasználása a prototípusban, és egy kvázi nyelv független elemzési algoritmus állhat össze. 8/32

9 Műszaki újdonság  Nem webes tartalmak megtalálása, hanem kizárólag a megtalált szövegek továbbszűrése, elemzése, kategorizálása és megfelelő prezentációja, specifikusabb részcélok alapján, nagyban építve a felhasználói aktivitásra (szavak összefüggései) és visszajelzésekre (tartalom értékelése).  Internetes tartalmak (termékismertetők, kommentek, hírcsatornák, cikkek, fórumok, blogok stb.) tartalmi elemzése, szűrése és csoportosítása, prezentációja és ezzel kapcsolatos nyelv független részmegoldások keresése. 9/32

10 Eredmények  Input: 4 magyar oldalról (digitális fényképező, mobiltelefon, notebook) [crawler] Terméknevek Adatlapok Vélemények Kategóriák  2574 terméknév  2277 adatlap kategória  3551 kategória 10/32

11 Eredmények  ~103000 adatelem (termék, kategória, stb.)  ~400000 kapcsolat  ~700000 tulajdonság 11/32

12 Eredmények 12/32

13 Eredmények - lekérdezés  Felhasználói keresőkifejezés Cél: visszavezetni minél szűkebben termék(ek)re Egy termék részletezése vagy több termék összehasonlítása  Példa: „macbook”: 13/32 Query string: "macbook", language: hu Best matching entity names: macbook: 0.3333333333333333 "Apple MacBook Pro" 2483 macbook: 0.2 "Apple MacBook Air ( 13,3/1,86/2/120" 450 macbook: 0.16666666666666666 "Apple MacBook Pro 15 ( z0j5000cx/mg" 3854 macbook: 0.14285714285714285 "Apple MacBook Pro 15 notebook ( z0j4000cp/mg" 4562 macbook: 0.1111111111111111 "Apple MacBook Core 2 Duo 2.4GHz 2GB 250GB 13.3" 12408 macbook: 0.1 "Apple MacBook Pro Core 2 Duo 2.4GHz 2GB 250GB 15.4" 12359 Best matching category names: macbook: 0.5 "MacBook Pro " 2486 macbook: 0.2 "Apple Macbook Air 11 Z0JJ0004A/MG" 10250 Best found entities (category -> entity):

14 Eredmények - lekérdezés 14/32 Query string: "macbook pro dell d510", language: hu Best matching entity names: dell: 0.4437934027777778 "Dell Latitude D510" 3044 dell: 0.13480113636363636 "Dell Inspiron M5010 DIM501HMHA24M35GBC6LHR" 20965 d510: 0.4437934027777778 "Dell Latitude D510" 3044 macbook pro: 0.6375 "Apple MacBook Pro" 2483 macbook pro: 0.6225 "Apple MacBook Pro 15 MC371ZH-A" 19942 macbook pro: 0.6020833333333333 "Apple MacBook Pro 15 ( z0j5000cx/mg" 3854 [...] Best matching category names: dell: 0.125 "Dell Notebook" 188 dell: 0.10788690476190477 "Dell Vostro 1015 113309" 14478 dell: 0.08978174603174602 "Dell notebook, laptop, netbook" 296 dell: 0.06279761904761905 "Dell Inspiron N5010 Core i3-350M 2.26GHz 2GB 320GB 15.6" 14571 macbook pro: 0.5625 "Apple MacBook Pro 13.3 Core 2 Duo 2.4GHz 4GB 250GB" 12380 Best found entities (category -> entity): Dell notebook, laptop, netbook: 0.09625 "Dell Latitude E5510 ( i5-560M/4/320/GMA/W7" 294 Dell Notebook: 0.13480113636363636 "Dell Inspiron M5010 DIM501HMHA24M75GBC6LHB" 21164 Dell Notebook: 0.13236607142857143 "Dell Inspiron M5010 119530" 21158 Dell Notebook: 0.13125 "Dell Inspiron N5010 119979" 21026 Dell Notebook: 0.12284226190476191 "Dell Inspiron M5030 DIM503HMHA34I35ZBC6HB" 14468 [...]  Futásidő: ~1000 ms (~500 ms cache)

15 Eredmények – input oldal  Termék név: „Dell Latitude D510”  Kategóriák: „informatika, távközlés, internet, TV/Rádió” „Hardver, szoftver” „Komplett gép” „Notebook”  Adatlap  Vélemény: 15/24 "Minőségi Notebook A hordozható masina küllemét tekintve igényes, és a magabiztosság érzetét kelti használójában, legyen az akár, egy egyetemi hallgató, vagy egy komoly üzletember. Az 1600 MHZ-s processzor lehetőséget nyújt az irodában végezendő munkák elvégzéséhez. Összességében egy elég jól sikerült notebookról beszélhetünk.„

16 Felépítés - Feladatcsoportok  Adatgyűjtés Crawler, nyers input begyűjtése  Előfeldolgozás Nyers inputok tördelése, felesleges részek eltávolítása, későbbi feldolgozás előkészítése (index építés, alapvető kapcsolatok kialakítása)  Elemzés Szövegelemzés, rejtett/indirekt kapcsolatok felismerése, tanítás előkészítése  Lekérdezés Keresőkifejezés és szűrők alapján entitások és hozzájuk kapcsolódó vélemények megjelenítése Általános vélekedés számszerűsítése  Tanítás Felhasználói visszajelzések alapján a szövegelemek jelentésének tanulása  Karbantartás Automatikus adatbázis karbantartás 16/32

17 Felépítés – Input előállítása  Célok: csak és kizárólag az „értékes” részeit tartsuk meg az oldalnak Crawler automatikusan képes legyen begyűjteni ezeket Ne akarjuk letölteni a teljes internetet Lehetőleg csak jó minőségű adatok kerüljenek a rendszerbe 17/32  Mi megoldásunk: „restricted crawler”: csak az előre megadott URL-eken található oldalakat járja be domain függő szabályrendszer az oldalak szerkezetének leírására DOM fa alapján tördeljük az oldalt (javítás szükséges lehet) Reguláris kifejezésekkel rugalmas szabályok adhatók meg

18 Felépítés - szabályrendszer  seed: crawler induló URL-jei  accept: csak az ezekre (valamelyikre) illeszkedő URL-ek tartalmát elemzi (crawl szempontból is)  rule: tartalom típusa type: ENTITY, TEXT, FACTSHEET, BREADCRUMBS path: DOM fa útvonala (class és id attribútumok is megadhatók), reguláris kifejezés exclude: sikeres illesztésből kihagyja az erre illeszkedő részfákat  Nem szép, de jól működik 18/32 http://velemeny.com/kategoria/Mobiltelefon http://velemeny.com/kategoria/Fenykepezogep http://velemeny.com/kategoria/Notebook http://velemeny\.com/termek/(.*)/velemeny/.* http://velemeny\.com/kategoria/Mobiltelefon.* http://velemeny\.com/kategoria/Fenykepezogep.* http://velemeny\.com/kategoria/Notebook.* body>form#aspnetform>div#page>div\.yui-skin-sam velemenyolvasas>h1>a" exclude=""/> body>form#aspnetform>div#page>div\.yui-skin-sam velemenyolvasas>table>tr>td>div\.velemenyszoveg" exclude="(div.*|table.*|script|h3)"/> body>form#aspnetform>div#page>div\.yui-skin-sam velemenyolvasas>div>table>tr>td\.termekcontainer>table>tr>td\.padvaligntop elem vertline>table>tr" exclude=""/>

19 Felépítés - feldolgozás  Tokenekre bontás Termék nevek, kategóriák (itt minden jel fontos, minimális hibajavítás) Vélemények szövege (itt lehet is és kell is hibákat javítani) mindenki más stílussal ír (pl: írásjelek környéki szóköz) elírások, „divatos” alternatív szavak („naon”, „vok”), rövidítések írásjelek nélküli mondatok  Tokenek használata: Index építés, visszakeresés Hasonlóságok felismerése szövegekben  Token: szó, szókapcsolat (szótövek) smiley terméknév 19/32

20 Index építés  termék és kategória megnevezésből (exact) minden létező szókapcsolatot indexelünk „Dell Latitide D510”: „dell”, „latitude”, „d510” „dell latitude”, „latitude d510” „dell latitude d510”  véleményszöveg tokenelésénél (exact) minden token 1-szer szerepel az adatbázisban (tanulás alapelemei) szótövezett alakot is és eredeti alakot is indexeljük 20/32

21 Adattárolási célok 21/32 kategóriákentitások hozzászólásoktokenek nyelv Típus „fényképező”, „LCD TV”, stb. Kifejezés „tartós akku”, „éles kép”, stb. Kulcs-érték Memória 4GB, Képátló 22”, stb. NévAdatlap entitás  Szinte minden összefügg mindennel A kapcsolatok túlnyomó többsége n-n kapcsolat

22 Adattárolás – gráf szerkezet 22/32

23 Adattárolás - Tokenek  Szótő alapú egyezésvizsgálat  Előfordulások száma / dokumentumok száma TF/IDF számításhoz jó (mennyire meghatározó a token)  Tanítás értékei is itt lesznek tárolva Tájolás (pozitív/negatív jelentés) Hasznosság (információtartalom) 23/32

24 Adattárolás - Adatlapok  Kulcs-érték párok keresése Egy kulcshoz több érték tartozhat  Összefésülés Ha több adatlapot találunk ugyanahhoz a termékhez  Kereshetővé tétel  Tárolás: Explicit: JSON (gyors megjelenítés) Implicit: gráf csúcsok és kapcsolatok (gyors keresés) 24/32

25 Adatlap  explicit formában az értékek JSONArray-ban String-ek  Implicit formából kinyerhető: pl. processzorok listája 26/32 { "Súly":["2,36 kg”], "Videokártya típusa":["Intel Graphics Media Accelerator 900 /GMA900 ”], "Modell":["Latitude D510 ”], "Memória típusa":["DDR2 ”], "Videokártya memóriája":["128 MB”], "Méret(magasság x szélesség x mélység)":["338*273*35mm mm”], "Gyártó":["Dell ”], "Note/net":["Notebook ”], "Processzor típusa":["Intel Celeron-M 380 ”], "Felbontás (X x Y)":["1024x768 pixel”], "Tipikus memória méret":["0,5 GB”], "Kijelzõ mérete":["15 inch”], "Órejel":["1600 MHz”], "Akkumulátor":["53 Wh”], "Operációs rendszer":["Windows, linux ”], "Hangkártya típusa":["AC97 (Soft Audio) / ICH3 ”] } Intel Celeron 220 Intel Celeron 900 Intel Celeron C900 Intel Celeron Dual-Core P4500 Intel Celeron Dual-Core T3100 Intel Celeron M Intel Celeron P4600 Intel Celeron T3000 Intel Celeron T3300 Intel Celeron T3500 Intel Celeron U3400 Intel Celeron ULV 743 Intel Celeron-M 380 Intel Celeron-M Dual Core Intel Centrino Atom N270 Intel Centrino Duo T4400 Intel Centrino Duo T4500 Intel Centrino Solo SU2300 Intel Centrino T4400 Intel Core 2 Duo Intel Core 2 Duo P4600 Intel Core 2 Duo P7570 Intel Core 2 Duo SU7300 Intel Core 2 Duo T6500 Intel Core 2 Duo T6570...

26 Nehézségek  Karakterkódolási problémák Crawler-ben javítani kellett (crawler4j) DB: feltöltő és letöltő stream kódolása is UTF-8  Hibás HTML-ek JTidy szépen megoldja a feladatot Időnként más a DOM fa, mint amit a böngésző készít (dinamikus generálás?)  Feladatcsoportok közötti kommunikáció Részben függetlenek Egyelőre események mentén kommunikálnak 26/32

27 Nehézségek  Tördelés (2. modul) Kategória indexelés Ismerni kell a nyelvet (szótövezés, megfelelő index használata) Nyelvfelismerés csak a 6. modulban történne Különböző nyelvű adatlapokat nem szabad összefésülni Nyelvfelismerés itt nem megbízható 27/24  Megoldások: Oldalról kivágott hasznos szövegrészletekre előzetes nyelvfelismerést futtatunk (kategóriáknak, adatlapoknak jó) A domain-okhoz megadunk nyelvet is

28 Érdekességek  Adatlap „értelmezés” Tördelő megtalálja a DOM fa alapján a hasznos kódrészt HTML tag-ek és „:”-ok cseréje sortörésre Eredmény: soronként egy erősen összefüggő adatunk lesz (tábla cellái vagy kulcs:érték elemei külön-külön) A legelső elemet vesszük kulcsnak A többi elemet pedig értékeknek Meglepően pontos eredményeket ad 28/24 { "USB (db)": ["3"], "Optikai meghajtó": ["DVD-RW Lightscribe"], "Merevlemez kapacítása": ["320 GB"], "Kivitel": ["Laptop"], "Súly": ["2,49 kg"], "Videokártya típusa": ["Intel Graphics Media Accelerator 4500MHD"], "Memória mérete": ["3 GB"], "Kapcsolatok": ["Wi-Fi", "Bluetooth"], "Processzor órajele": ["2100 MHz"], "Processzor": ["Intel Centrino 2"], "Kijelzõ felbontása": ["1366x768"], "Csatlakozók": ["10/100mbps LAN, 56K modem, VGA monitor kimenet, Wireless LAN 802.11b/g (WiFi), USB 2.0 (3db), Express card kártyahely, HDMI csatlakozó, Bluetooth v2.1 + EDR"], "Processzor típusa": ["T6570"], "Kijelzõ mérete": ["15,6\""], "Kijelzõ típusa": ["TFT-LCD"], "Sebessége": ["5400rpm"], "Méret": ["37,18 x 24,96 x 2,75 mm"], "Hangkártya": ["Intel High Definition audio compliant audio chip"], "Akkumulátor": ["6 cellás"], "Operációs rendszer": ["Linux"] }

29 Érdekességek  Keresőkifejezés „értelmezése” Entitásokat (terméknév) akarunk találni Minden lehetséges (egy- vagy többszavas) kifejezést előállítunk Entitás-indexben megkeressük a találatokat Csoportosítjuk a kereső kifejezés „kulcsa” alapján a találatokat Súlyozás: hasonlóság (Levenhstein-távolság) szavanként, illesztett szövegrész hasonlósága egyben, többszavas egyezésre bónusz [0..1] intervallum; 1=(majdnem) pontos egyezés Kategória-indexben hasonló módszerrel keresünk Legjobb kategóriákba tartozó entitások neveit ismét illesztjük a keresőkifejezéshez Csopotrosítás miatt egyszerre több különböző entitást is fel tudunk ismerni 29/32 „nokia classic samsung galaxy mobiltelefon” Best matching entity names: nokia:0.5293650793650794 "Nokia 6700 Classic Gold Edition" nokia:0.5115079365079365 "Nokia 3720 Classic" nokia:0.4910401002506265 "Nokia 6303i Classic" samsung galaxy:0.5923809523809523 "Samsung Galaxy Tab P1000 16GB" classic:0.5293650793650794 "Nokia 6700 Classic Gold Edition" classic:0.5115079365079365 "Nokia 3720 Classic" classic:0.4910401002506265 "Nokia 6303i Classic" Best matching category names: nokia:0.5115079365079365 "Nokia 2730 Classic" nokia:0.4299593495934959 "Nokia Mobiltelefon" mobiltelefon:0.5126984126984127 "Samsung Mobiltelefon" mobiltelefon:0.4299593495934959 "Nokia Mobiltelefon" samsung:0.5126984126984127 "Samsung Mobiltelefon" samsung:0.5076190476190476 "Samsung I5700 Galaxy Spica" samsung:0.4976190476190476 "Samsung i9000 Galaxy S" classic:0.5115079365079365 "Nokia 2730 Classic" galaxy:0.5076190476190476 "Samsung I5700 Galaxy Spica" galaxy:0.4976190476190476 "Samsung i9000 Galaxy S" Nokia 3720 Classic Nokia 6303i Classic Nokia 6700 Classic Gold Edition Samsung Galaxy Tab P1000 16GB Nokia Mobiltelefon Samsung Mobiltelefon

30 Érdekességek  „Egybeírtszavak” / „kül ön írt sza vak” N-gramok használatával (nyelvfüggően) lenyomatot veszünk a kommentekből Számoljuk, hogy mekkora eséllyel előzi meg vagy követi whitespace az adott n-gramot 2-5 gramokat használunk a prototípusban 30/24 „Nagyon megvagyok el égedve a telefonommal!Szerintemn agyon szuper:)” 40%/10%: " Nagyon m eg vagyok elégedve a telefonommal! Szerintem nagyon szuper:)" 40%/30%: " Nagyon m eg vagyokelégedve a telefonommal! Szerintem nagyon szuper:)" 40%/50%: " Nagyon m eg vagyokelégedve a telefonommal! Szerintem nagyon szuper:)" 40%/70%: " Nagyon m eg vagyokelégedve a telefonommal! Szerintem nagyon szuper:)" 40%/90%: " Nagyon m eg vagyokelégedve a telefonommal! Szerintem nagyon szuper:)" 45%/10%: " Nagyon meg vagyok elégedve a telefonommal! Szerintem nagyon szuper:)" 45%/30%: " Nagyon meg vagyokelégedve a telefonommal! Szerintem nagyon szuper:)" 45%/50%: " Nagyon meg vagyokelégedve a telefonommal! Szerintem nagyon szuper:)" 45%/70%: " Nagyon meg vagyokelégedve a telefonommal! Szerintem nagyon szuper:)" 45%/90%: " Nagyon meg vagyokelégedve a telefonommal! Szerintem nagyon szuper:)" 50%/10%: " Nagyon meg vagyok elégedve a telefonommal! Szerintem nagyon szuper:)" 50%/30%: " Nagyon meg vagyokelégedve a telefonommal! Szerintem nagyon szuper:)" 50%/50%: " Nagyon meg vagyokelégedve a telefonommal! Szerintem nagyon szuper:)" 50%/70%: " Nagyon meg vagyokelégedve a telefonommal! Szerintem nagyon szuper:)" 50%/90%: " Nagyon meg vagyokelégedve a telefonommal! Szerintem nagyon szuper:)" 55%/10%: " Nagyon meg vagyok elégedve a telefonommal! Szerintemnagyon szuper:)" 55%/30%: " Nagyon meg vagyokelégedve a telefonommal! Szerintemnagyon szuper:)" 55%/50%: " Nagyon meg vagyokelégedve a telefonommal! Szerintemnagyon szuper:)" 55%/70%: " Nagyon meg vagyokelégedve atelefonommal! Szerintemnagyon szuper:)" 55%/90%: " Nagyon meg vagyokelégedve atelefonommal! Szerintemnagyon szuper:)" 60%/10%: " Nagyon meg vagyok elégedve a telefonommal!Szerintemnagyon szuper:)" 60%/30%: " Nagyon meg vagyokelégedve a telefonommal!Szerintemnagyon szuper:)" 60%/50%: " Nagyon meg vagyokelégedve a telefonommal!Szerintemnagyon szuper:)" 60%/70%: " Nagyon meg vagyokelégedve atelefonommal!Szerintemnagyonszuper:)" 60%/90%: " Nagyon meg vagyokelégedve atelefonommal!Szerintemnagyonszuper:)"

31 Köszönöm a figyelmet! 31/32


Letölteni ppt " Kiss Miklós 2011. 01. 28. POFA I. Product Opinion Finder & Analyzer."

Hasonló előadás


Google Hirdetések