Softvérové knižnice a systémy Vyhľadávanie informácií Michal Laclavík
Vyhľadávanie informáciíBratislava, 3. november Tools - Nástroje IR tools Nutch + Hadoop IR API Lucene získavanie informácií Sťahovač: Nutch textové operácie: lucene, GATE Indexovanie: lucene spracovanie odkazov: Nutch Báza dokumentov: Konvertery, kompresia, kódovanie –JavaMail –Tika: PDFBox, POI, TextMining –zip Vyhľadávanie formulácia dopytu a operácie na dopyte: Solr spracovanie dopytu: Solr vrátenie výsledku na používateľské rozhranie: Solr spätná väzba od používateľa: ? Extrakcia GATE Ontea Regexy
Vyhľadávanie informáciíBratislava, 3. november Tools IR libraries & engines –Lucene –Egothor Lucene –Nutch –Sorl –Porty
Vyhľadávanie informáciíBratislava, 3. november Lucene Indexing IndexWriter Directory –FSDirectory, RAMDirectory, MMapDirectory Analyzer Document –Collection of fields Field –Keyword, UnIndexed, UnStored, Text doc = new Document(); doc.add(new StringField("ctg", value, Field.Store.YES)); doc.add(new TextField(fieldName, value2, Field.Store.NO)); doc.add(new VecTextField("title", data, Field.Store.YES)); writer.addDocument(doc); Directory dir = FSDirectory.open(new File(indexPath)); Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_43); IndexWriterConfig iwc = new IndexWriterConfig(Version.LUCENE_43, analyzer); iwc.setOpenMode(OpenMode.CREATE); IndexWriter writer = new IndexWriter(dir, iwc);
Vyhľadávanie informáciíBratislava, 3. november Lucene Indexing 2 Indexing Dates Boosting –Field.setBoost Indexing Numbers –Adding zeros, Analyzers Sorting –Not tokenized, Field Keyword Directory –FSDirectory, RAMDirectory Term vector –Field.Unstored(“subject”,subject,true);
Vyhľadávanie informáciíBratislava, 3. november Lucene Searching IndexSearcher Term Query –Boolean, Phrase, Prefix, Range, Fuzzy (levenstein) TermQuery Hits queryL = new BooleanQuery(); Query name = new TermQuery(new Term("name_exact", query)); Query alias = new TermQuery(new Term("alias_exact", query)); Query wiki = new TermQuery(new Term("wikipedia_exact", query)); name.setBoost(0.40f); alias.setBoost(0.30f); wiki.setBoost(0.30f); ((BooleanQuery) queryL).add(name, Occur.SHOULD); ((BooleanQuery) queryL).add(alias, Occur.SHOULD); ((BooleanQuery) queryL).add(wiki, Occur.SHOULD); directory = FSDirectory.open(new File(index)); reader = DirectoryReader.open(directory); searcher = new IndexSearcher(reader);
Vyhľadávanie informáciíBratislava, 3. november Lucene Searching 2 Query q = QueryParser.parse(“search”, “field”, new SimpleAnalyzer()); –+pubdate:[ TO ] Java AND (Jakarta OR Apache) –Query.toString() Scoring –Similarity, DefaultSimilarity Sorting –By field, by multiple MultiFieldQueryParser Filtering fields = new String[] {"name", "alias", "text", "wikipedia"}; boosts.put("name", 0.40f); boosts.put("alias", 0.30f); boosts.put("text", 0.20f); boosts.put("wikipedia", 0.10f); MultiFieldQueryParser parser = new MultiFieldQueryParser( Version.LUCENE_43, fields, analyzer, boosts); queryL = parser.parse(query); TopDocs results = s.search(queryL, topK); ScoreDoc[] hits = results.scoreDocs;
Vyhľadávanie informáciíBratislava, 3. november Lucene Searching 3 Custom Sort Method –Distance search
Vyhľadávanie informáciíBratislava, 3. november Lucene Analysis XY&Z Corporation – WitespaceAnalyzer –[XY&Z] [Corporation] [–] SimpleAnalyzer – kills numbers –[XY] [Z] [corporation] [xyz] [example] [com] StopAnalyzer –[XY] [Z] [corporation] [xyz] [example] [com] StandardAnalyzer –[XY&Z] [corporation]
Vyhľadávanie informáciíBratislava, 3. november Lucene Analysis 2 Indexing Querying –Query parse, QueryTerm not Analyzed Results –Tokens, position type –Terms, position TokenStream, Tokenizer, TokenFilter
Vyhľadávanie informáciíBratislava, 3. november Lucene Analysis 3 Synonyms, aliases –Same position (phrase query) UTF-8 –Kodovania, znaky HTML –Content-type Nutch analysis
Vyhľadávanie informáciíBratislava, 3. november SandBox Development tools –Lucli CLI –Luke – toolbox SnowBall analyzer T9 indexing example
Vyhľadávanie informáciíBratislava, 3. november Lucene Doc format Apache Tika XML –SAX parser Xserces –Digester Apache Jakarta PDF –PDFBox.org –Buildin support HTML –JTidy.sf.net –NekoHTML Word –POI – jakarta project –TextMining.org RTF –Javax.swing.text.rtf
Vyhľadávanie informáciíBratislava, 3. november Lucene Ports CLucene dotLucene Plucene Perl Lupy Python PyLucene GCJ + SWIG
Vyhľadávanie informáciíBratislava, 3. november Nutch Build on lucene Fetcher Scalable to several billions Ranking Hadoop –Implementacia MapReduce Search and Indexing now integrated over Solr
Vyhľadávanie informáciíBratislava, 3. november Other Use cases JGuru SearchBlox Alias-i
Vyhľadávanie informáciíBratislava, 3. november Linux tools Catdoc –Xsl, doc –openoffice Pdftotext (XPDF) Encoding –enca
Vyhľadávanie informáciíBratislava, 3. november Ine kniznice QTag –POS tagging Stemming –Snowball –Porter –Tvaroslovnik, JULS SimMetrics –Podobnosti, levenstein, cosmiera GATE
Vyhľadávanie informáciíBratislava, 3. november Tutorial GATE Lucene –Lucene in Action, kódy, kniha
Other Tools Apache UIMA –text processing (information extraction OpenNLP –machine learning for text analysis i.e. information extraction MOSES –Machine learning language translation Vyhľadávanie informáciíBratislava, 3. november
Dostupné dátové zdroje v Slovenskom jazyku Korpus – Organizácie s dátovými zdrojmi v rôznych jazykoch použiteľné na automatický preklad – – – Voľne dostupné zdroje: – – Slovníky – – – Dáta – – – – Vyhľadávanie informáciíBratislava, 3. november