260 likes | 356 Views
Stanislav Kunt Tým kolem softwaru OBBB „Marcelova armáda“. Modul text miningu. Osnova. Účel text miningu, typické úlohy, modul pro OBBB 1. fáze řešení – rešerše a koncepce 2. fáze řešení – zahájení tvorby modulu pro OBBB Seznámení s prostředím Návrh datové struktury pro dokumenty
E N D
Stanislav Kunt Tým kolem softwaru OBBB „Marcelova armáda“ Modul text miningu
Osnova • Účel text miningu, typické úlohy, modul pro OBBB • 1. fáze řešení – rešerše a koncepce • 2. fáze řešení – zahájení tvorby modulu pro OBBB • Seznámení s prostředím • Návrh datové struktury pro dokumenty • Bloky Import Stringu, Import TXT a Document Viewer • Problematika získávání dokumentů + nástin programátorského řešení • Vize dalšího vývoje • Knihovny potřebné do budoucna
Účel text miningu • Text mining = dolování z textu • Podoblast data miningu • Cílem je identifikovat a analyzovat užitečné informace v textech • Vstupem je nestrukturovaný text, výstupem požadované strukturované informace zjištěné analýzou textu
Typické úlohy • Kategorizace – zařazení textu (dokumentu) do jedné nebo několika připravených skupin • Shlukování – dokumenty jsou tříděny do skupin podle vzájemných podobností • Shrnutí – automatické shrnutí dokumentu, vybere důležité pasáže • Extrakce informací – automatické získání požadovaných strukturovaných informací • Rozpoznání entit – „Václav Klaus“ = prezident • Analýza sentimentu – analýza citově zabarvených slov k odhadu autorova postoje k předmětu zprávy
Využití text miningu • Bezpečnost – analýza zpráv na internetu, kryptografie • Marketing – procházení webových stránek konkurence, analýza odpovědí z dotazníků (otázky s volnou odpovědí) • Komunikace – SPAM filtry, automatické třídění zpráv • Analýza záznamů a otevřených textů – reklamece, pojistné zprávy, vstupní pohovory • Určení autorství textu – přiřazení autora textu pomocí analýzy textů vytvořených známými autory • Biomedicína – analýza lékařských zpráv, hledání entit (známé názvy chorob, farmak apod.), prohledávání databází vědeckých článků, jejich vzájemné tematické provazování, odkazování na biomedicínské databáze
Modul text miningu pro OBBB • Výstupem by měl být: • Indexový soubor • Četnosti zastoupení slov (frekvenční analýza) • Statistické údaje o slovech v indexovém souboru (počet, četnosti zastoupení znaků, průměry, mediány délky, …) • Předpokládá se napojení na jiné moduly k vizualizaci a dalšímu zpracování (shluková analýza, klasifikace, histogramy)
1. Fáze řešení: Rešerše • V rámci rešerše byl vytvořen přehled 20 text miningových programů • Zjišťována byla podpora vstupních formátů, dostupné funkce pro analýzu, podporované výstupní formáty • Většina programů byla pod licencí freeware nebo open source
1. Fáze řešení: Rešerše • Web crawling (web-spider) – získání stromu odkazy provázaných webových stránek a odkazovaných souborů na základě vstupní stránky (seed). • Frekvenční analýza (seznam slov, frekvenční matice) – vytvoření seznamu slov ve zdroji (zdrojích => frekvenční matice) s jejich četností. • Frekvenčně-poziční analýza (distribuční analýza) – zobrazení závislosti relativní četnosti výskytu vybraného slova na pozici ve zdroji (v souboru). • Zobrazení slova s kontextem (cluster, concordance) – zobrazení vybraného slova společně s okolními slovy (v kontextu) až do nastavené šířky • Kolokační analýza –k vybranému slovu vytvoří seznam slov s jejich četnostmi, které se hledaným slovem vyskytují v kontextu. • Hledání častých slovních spojení– vyhledá a vypíše častá slovní spojení – tj. slova, která spolu ve zdroji často sousedí. • Lexikální analýza – každému slovu v textu přiřazuje syntaktické kategorie (mluvnické kategorie + další) • Porovnávání dvou textů – hledá rozdíly mezi dvěma texty, přidané, odebrané, přesunuté a změněné pasáže • Tagování textů – Vyhledávání termínů (entit) v textech a následné navázání odkazu na znalostní báze
1. Fáze řešení: Koncepce • Text mining jsem rozdělil do podproblémů: • Seznam zdrojů – Je třeba umožnit zadání, uchování nebo generování odkazů na texty, dokumenty, které následně vstupují do procesu TM • Import textu ze souborů různých formátů – Načítání textu z dokumentů Wodu, OpenOfficu, webových stránek, … • Normalizace textu – Převod na jednotné kódování, substituce znaků, ořezání interpunkce, … • Indexovací bloky a operace s indexy – Tvorba indexu, slučování a průnik indexů, filtrování indexu • Analýza indexu – Statistická analýza indexu, převod indexu na formát (tabulka) vhodný pro zpracování v jiných modulech, vyhledávání v indexu
1. Fáze řešení: Koncepce Sezam zdrojů Import textu a informací o dokumentu Indexování Analýza indexu Normalizace textu Jiné moduly
2. Fáze řešení: Seznámení • Seznámil jsem se s programovacím jazykem Java, prostředím NetBeans a způsobem tvorby nových bloků pro OBBB • Nainstaloval jsem potřebný software a začal tvořit
2. Fáze řešení: Návrh datových struktur • Datová struktura pro uchovávání dokumentů • Umístění a formát dokumentu • Textový obsah dokumentu • Strukturované informace o dokumentu a pokyny k dalšímu zpracování • Dvojí podoba – třída a XML • Třída – vnitřní reprezentace, metody pro operace • XML – k předávání mezi bloky a ukládání
2. Fáze řešení: Návrh datových struktur <?xml version="1.0" ?> <Documents> <Document url="E:\OBBB_prezentace\babička.txt" type="text/plain"> <Parameters> <Parameter name="lastModified" source=„ResourceManager"> datum poslední změny </Parameter> </Parameters> <content> Textový obsah dokumentu </content> </Document> <Document url="E:\OBBB_prezentace\Saturnin.txt" type="text/plain"> <Parameters>…</Parameters><content>…</content> </Document> </Documents>
2. Fáze řešení: Tvorba bloků skupiny Import • Zajišťují načtení textu a doplňkových informací z dokumentu • Bloky pro import z TXT, DOC(X), ODT, PDF, HTML, RTF, … • Zatím jsem vytvořil blok pro Import Stringu a Import TXT
Blok Import String • Umožňuje zadání textu do prvku JTextArea • Bude umožňovat zadání parametrů • Výstupem je XML reprezentace dokumentu • Vstupem může být textový řetězec „String“
Blok Import TXT • Načítá text z formátu text/plain (přípona .TXT) • Cestu k souboru umožňuje zadat pomocí dialogu výběru souboru, přímým vepsáním a to buď ve formátu lokální cesty nebo URL • Pokud je zapojen vstup, načítá text pro dokumenty ze vstupu • Výstupem je XML reprezentace dokumentů
Blok Document viewer • Kontrolní blok • Umožňuje zobrazení načtených dokumentů v prostředí GUI • Má pouze vstup, na který se přivádí dokumenty v XML reprezentaci k zobrazení
Ukázka práce s bloky v prostředí OBBB • Načtení několika dokumentů formátu text/plain (TXT) a jejich kontrola v DocumentVieweru
Problematika získávání dokumentů a zvolené řešení • Při získávání textu z dokumentů je třeba: • Zjistit formát dokumentu • Podle přípony, podle MediaTypu (web), podle hlavičky, hlubší analýzou • Najít třídu pro zpracování tohoto formátu • Využít metody této třídy k načtení textu a doplňkových informací • Řešení: třída uchovávající informace o všech podporovaných formátech, odpovídajících příponách a odkazy na třídy zpracovávající jednotlivé formáty
Vize dalšího vývoje • Uvést koncepci do aktuálního stavu • Popsat hotové bloky na wiki, JavaDoc • Vytvořit blok pro uchovávání seznamu zdrojů (odkazů na dokumenty) • Začít řešit problematiku indexování • Bloky pro import dalších formátů • Bloky pro základní analýzy indexu • Další bloky podle koncepce …
Knihovny potřebné do budoucna • Knihovny pro import formátů - Apache Tika • sdružuje knihovny pro načítání různých formátů, všechny knihovny jsou sloučeny pod jedno rozhraní, k načtení textu z libovolného souboru stačí jedna metoda • Nevýhoda: velikost 25 MB, podporuje příliš mnoho formátů, pro získání větší volnosti v nastavení importu je nutné obejít základní třídu a využívat metody tříd pro jednotlivé formáty • Řešení: Využít / Ořezat / Jednotlivé knihovny ???
Knihovny potřebné do budoucna • Knihovny pro indexování • Je třeba rozmyslet, jaké informace budou v rámci indexu uchovávány (slovo, základní tvar, pozice vůči ostatním slovům, informace o dokumentu, …) • Udělat rešerši existujících řešení • Využít nějakou knihovnu / upravit existující knihovnu / naprogramovat něco vlastního ???