Guida Rapida all'Estrazione di Corpora Specialistici dalla Rete LA PROCEDURA ------------ 1) Scegli seeds/keywords iniziali 2) Forma n-tuple da seeds 3) Cerca n-tuple su Google e scarica lista di urls 4) Costruisci corpus specialistico scaricando in formato testo pagine corrispondenti a urls Procedura eseguita con programmi in BootCaT toolkit e command-line utilities. Documentazione di programmi BootCaT: nome_del_programma -h | more SCELTA DEI SEEDS ---------------- Input in file con un seed per riga: cane Fido igiene alimentare guinzaglio razze Set piu' mirato puo' migliorare qualita' di risultati, ma a scapito di quantita'. Si puo' usare pico per creare/editare la lista direttamente sulla riga di comando. COSTRUZIONE DI N-TUPLE ---------------------- build_random_tuples.pl -n3 -l10 seeds > tuples -n dimensione di tupla (default: 3). -l numero di tuple (default: 10). Valori massimi di opzioni sono limitati da divieto di stampare tuple uguali o permutazioni di tuple gia' stampate (permutazioni: a, b, c / b, a, c / a, c, b / ecc.) Costruzione random: ripetendo processo, si costruiscono tuple diverse. Tuple piu' lunghe possono portare a risultati di qualita' piu' alta, ma a scapito di quantita'. Se un seed e' composto da piu' di una parola, build_random_tuples.pl inserisce virgolette attorno a seed, se non ci sono gia'. Ovvero, build_random_tuples.pl tratta sia igiene alimentare che "igiene alimentare" come "igiene alimentare" Il programma a volte lancia warnings sulla "deep recursion" che possono venire ignorati. RICERCA SU GOOGLE ----------------- collect_urls_from_google.pl -k YOUR_GOOGLE_KEY -l Language -c 10 tuples > url_list -k la tua chiave di google -l la lingua: German, Spanish, Italian, English... (default: nessuna restrizione su lingua) -c il numero di pagine massimo da scaricare per ciascuna tupla, con probabile trade-off qualita'/quantita' (default: 10 pagine) Lista di lingue supportate: collect_urls_from_google -n | more Output: CURRENT_QUERY seed3 seed12 seed4 http://www.blah.net/blah.htm http://www.bluhnet.com/bluh.htm ... CURRENT_QUERY seed7 seed3 seed10 http://www.blah.net/blah.htm http://www.blih.org/umpa.htm ... Da notare: - si puo' ripulire lista a mano da pagine chiaramente irrilevanti - se per una query non sono state trovate pagine, il programma stampa la riga: NO_RESULTS_FOUND - i risultati possono contenere doppioni: prima di cominciare a scaricare, conviene fare sort e uniq - in generale, conviene sempre dare un'occhiata ai risultati, per esempio usando more (o, se si vuole fare dell'editing manuale, usando pico) Per avere un'idea della proporzione di doppioni: grep -v CURRENT_QUERY url_list | grep -v NO_RESULTS_FOUND | wc 100 100 4839 grep -v CURRENT_QUERY url_list | grep -v NO_RESULTS_FOUND | sort | uniq | wc 96 96 4655 Ripetiamo il processo di ripulitura, ma questa volta salviamo l'output in un file: grep -v CURRENT_QUERY url_list | grep -v NO_RESULTS_FOUND | sort | uniq > cleaned_url_list SCARICAMENTO PAGINE/COSTRUZIONE CORPUS -------------------------------------- print_pages_from_url_list.pl cleaned_url_list > corpus.txt Se lista e' lunga, questo richiedera' un po' di tempo -- controllare crescita corpus in altra finestra (e.g., con wc e more). Ispezionare corpus con wc e more: sembra ragionevole? (Non limitarsi ad ispezionare prime pagine: input list era in ordine alfabetico, e dunque pagine da stesso dominio sono limitrofe). Estrarre anche files word e pdf, usando stessa input list (MOLTO SPERIMENTALE): convert_doc_to_text.pl cleaned_url_list > corpus.doc.txt convert_pdf_to_text.pl cleaned_url_list > corpus.pdf.txt (PARENTESI ANCORA PIU' SPERIMENTALE: Cercare SOLO files pdf (aggiungendo la stringa filetype:pdf a ciascuna tupla usata come query): sed 's/$/ filetype:pdf/' tuples > tuples.for.pdf collect_urls_from_google.pl -k YOUR_GOOGLE_KEY -l Language -c 10 tuples.for.pdf > url_list.for.pdf grep -v CURRENT_QUERY url_list.for.pdf | grep -v NO_RESULTS_FOUND | sort | uniq > cleaned_url_list.for.pdf convert_pdf_to_text.pl cleaned_url_list.for.pdf > corpus.pdf.txt FINE PARENTESI) Mettere insieme i dati: cat corpus.txt corpus.doc.txt corpus.pdf.txt > corpus.expanded.txt