Pavouk - rumunština

14
Pavouk - rumunština Martin Popel

description

Pavouk - rumunština. Martin Popel. Naučení frekvenční charakteristiky jazyka Čištění dokumentů Vlastní pavouk Wikipedia Rumunština. Naučení frekvencí. Je-li málo dat, lze - PowerPoint PPT Presentation

Transcript of Pavouk - rumunština

Page 1: Pavouk - rumunština

Pavouk - rumunština

Martin Popel

Page 2: Pavouk - rumunština

• Naučení frekvenční charakteristiky jazyka

• Čištění dokumentů

• Vlastní pavouk

• Wikipedia

• Rumunština

Page 3: Pavouk - rumunština

Naučení frekvencí

Je-li málo dat, lze1. Neutralizovat vliv opakujících se slov

První výskyt slova:$xgram{$_}++; $xgramu++;

Další výskyty téhož slova:$xgram{$_} += $c; $xgramu += $c;

2. Sehnat více dat• Učit se frekvence na několikrát• Najít zdroj bez jiných jazyků

Page 4: Pavouk - rumunština

Naučení frekvencí

• Ukládat i absolutní četnosti – možnost budovat frekvenční slovník postupně

• Odříznout „chvost“ (např. rel. frek. < 0.001) a přepočítat frekvence, aby sčítaly do 1.

• Ukládat i častá slova (ale zvolit práh např. nad 100 výskytů)

Úprava zadání• Sekce se slovy oddělena prázdným řádkem

[[ostatní]] 0.346934068377748 2012568de 0.0427298005002577 247876…

Page 5: Pavouk - rumunština

Rozpoznání jazyka

• Spočítat vzdálenost (<0,1>) zvlášť prounigramy, bigramy a trigramy a zprůměrovat.

• Spočítat kolik procent slov z určovaného odstavce je pokryto slovníkem.

• Z těchto dvou vzdáleností vážený průměr (např. pokrytí * 3 + x-gram-vzdálenost / 4)

• Odstranit ze slovníku anglická slova?

• Co čísla?

Page 6: Pavouk - rumunština

Čištění dokumentuObecné otázky

• Odstranit krátké odstavce (< 70 znaků)?

• Každý odstavec jen jednou?

• Partial match ??? (např. hashovat pomocí crc obě poloviny odstavce zvlášť)

„modified by user xy at 22:27“

Page 7: Pavouk - rumunština

Čištění dokumentuJiné jazyky

• Seznam „nepřátelských“ jazyků a jejich nejčastějších slov (the, of, with,…)

• Vymazat odstavce obsahující tato slova.

• Pro některá využití korpusu nepřijatelné.

• Může se hodit pro vytvoření textu, ze kterého se určí frekvence (slovníku).

Page 8: Pavouk - rumunština

Čištění dokumentůPevná mezera

use HTML::Entities;

my $odst="Za v&nbsp;se píše pevná mezera.";

print "$odst\n";

decode_entities($odst);

print "$odst\n";

my $ods_slov = ($odst=~s/\s+/ /g) + 1;

print "$ods_slov slov: $odst\n"; #6 slov

Page 9: Pavouk - rumunština

Vlastní pavoukURL

my $url = URI->new('http://aBc.De:80/f/../g/h.html?p1=x&p2=y#frag')->canonical;

$url->scheme eq ‘http’;

$url->host eq ‘abc.de’;

$url->fragment eq ‘frag’;

$url->path eq ‘/f/../g/h.html’;

$url->opaque eq ‘//abc.de/f/../g/h.html?p1=x&p2=y’;

Postup:

return if lc($adresa) =~ m!$prefiltr_neg!o); #obrázky atd.

my $url1 = URI->new_abs($adresa, $dok_base)->canonical;

my $url = $url1->scheme.':'.$url1->opaque; #bez fragmentu

return if exists $nalezene_adresy{$url};

return if ($url !~ m!$filtr_poz!o);

$nalezene_adresy{$url} = 1;

push @dok_odkazy, $url;

Page 10: Pavouk - rumunština

Vlastní pavouk

• Dokument i nalezené odkazy si ukládat zvlášť

• Přidat do korpusu (a odkazy do fronty) až, je-li dokument „kvalitní“.Určí se např. z počtu „kvalitních“ odstavců, případně i počtu odstavců duplicitních, krátkých či cizojazyčných.

• Paralelní stahování z více serverů…

Page 11: Pavouk - rumunština

Wikipedia

• http://download.wikipedia.org/http://static.wikipedia.org/downloads/November_2006/ro/

archiv (7z) 67 M, rozbalené 2 GB, vyčištěný korpus 40 MB(5,8 MW, 50 000 dokumentů, cca 5 minut čištění)

• pavouk.pl –f wiki/ro/d > korpus_wiki_ro_d• Stránky uživatelů, obrázků, kategorií,… mají v názvu „~“

(Discuţie_Utilizator~Dbacosit_b709.html)• Obsah článku lze v html poznat podle komentářů:

…<div id="contentSub"></div><!-- start content --><p><b>Daca</b> este un paloş curb, armă caracteristică…<!-- end content -->

• Dále odstranit: pahýly (stub), tabulky,…

Page 12: Pavouk - rumunština

Wikipedia$parser->handler(comment => \&comment_hook, 'text') if $wiki;

sub comment_hook($) {

my $text = shift;

$wiki_content = 1 if $text eq '<!-- start content -->';

$wiki_content = 0 if $text eq '<!-- end content -->';

}

sub text_hook($) {

if ($dok_zanoreni{'body'} and !$dok_zanoreni{'script'} and $wiki_content and (!$wiki || !$dok_zanoreni{'table'})) {

$odstavec .= shift;

}

}

Page 13: Pavouk - rumunština

Rumunština

Wiki

eiarntulocsdmpă,• ă 0.0212• ş 0.0094• ţ 0.0088• î 0.0086• â 0.0042• Î 0.0010

Web

aietrnulcsodmp,• ă 0.0023• ţ 0.0012• ş 0.0008• î 0.0008• â 0.0004• Î 0.00005

Page 14: Pavouk - rumunština

Rumunština

• „k“ a „y“ jen v cizích slovech (ale hidrant)

• Nejčastější plnovýznamová slova:este (je), fost (byl), sunt (jsem/jsou), era (býval), fiind (jedná [se o]), are (má), anul (rok),mare (velký), două (dvě), parte (část, strana), poate (může), multe (hodně), judeţul (župa)

• război 6917, pace 594

moarte 1924, naşterea 622