In [16]:
# (C) 2016 ApprendimentoAutomatico.it by L. Toscano
# https://www.apprendimentoautomatico.it/apprendimentoautomatico-wpblog/come-generare-un-corpus-a-tema-in-italiano-da-wikipedia-pochi-secondi/
# https://wp.me/p7Mr5S-1oa

# source package: https://pypi.python.org/pypi/wikipedia/
# come installare: pip install wikipedia
import wikipedia
# altre import
import sys
import pickle
import datetime
In [39]:
### IMPOSTAZIONI ###
# configuro i seeds (in questo caso relativi a "machine learning" e argomenti correlati)
seeds=['apprendimento automatico',
      'intelligenza artificiale',
      'data mining',
      'deep learning',
      'reti neurali',
      'rappresentazione della conoscenza']

# nome del file in cui memorizzare la struttura dati contenente il corpus
basename = "./datasets/itwiki/corpus-ML"

# lingua delle pagine
lang='it'
In [18]:
# imposto l'accesso alle pagine italiane
wikipedia.set_lang(lang)
In [28]:
# ricerco su wikipedia e genero elenco della pagine suggerite
pages=[]
for seed in seeds:
    print "search for", seed
    pages.append(wikipedia.search(seed))
search for apprendimento automatico
search for intelligenza artificiale
search for data mining
search for deep learning
search for reti neurali
search for rappresentazione della conoscenza
In [34]:
# estraggo il contenuto delle pagine
corpus_raw=[]
for page in pages:
    for title in page:
        try:
            print "getting",title
            corpus_raw.append(wikipedia.page(title).content)
        except:
            # probabile pagina di disambiguazione.... no content... ignoro...
            print "ignoring", title
            # print "\terror: ", sys.exc_info()[0]         
getting  Apprendimento automatico
getting  Test set
getting  Classificazione statistica
getting  Bias
ignoring Bias
getting  Riconoscimento di pattern
getting  Dendrogramma
getting  Classificatore (matematica)
getting  Apprendimento supervisionato
getting  Scikit-learn
getting  Apprendimento non supervisionato
getting  Intelligenza artificiale
getting  A.I. - Intelligenza artificiale
getting  Lisp
getting  Bot
getting  Intelligenza artificiale nella fantascienza
getting  Grafo concettuale
getting  Intelligenza artificiale forte
getting  John McCarthy
getting  Test di Turing
getting  Psicologia cognitiva
getting  Data mining
getting  Emporis
getting  SAS (linguaggio di programmazione)
getting  Regole di associazione
getting  Albero di decisione
getting  Environment for DeveLoping KDD-Applications Supported by Index-Structures
getting  Analisi dei dati
getting  JDM
ignoring JDM
getting  Receiver operating characteristic
getting  Predictive Model Markup Language
getting  Apprendimento approfondito
getting  Google Traduttore
getting  Theano
getting  Andrew Ng
getting  Rete neurale convoluzionale
getting  Analisi del sentiment
getting  GeForce 900 series
getting  Burn (Mobb Deep)
getting  Ona Zee
getting  Infamy
getting  Rete neurale
getting  Neurofisiologia
getting  Rete neurale artificiale
getting  Funzione sigmoidea
getting  Scienza olistica
getting  Connessionismo
getting  Neuropsicologia
getting  Apprendimento approfondito
getting  Eduardo Caianiello
getting  Rete neurale feed-forward
getting  Rappresentazione della conoscenza
getting  SKOS
getting  Rete semantica
getting  Completezza (rappresentazione della conoscenza)
getting  Topic Maps
getting  Ragionatore automatico
getting  Linked data
getting  Metadati Amministrativi Gestionali
getting  Extensible Metadata Platform
getting  Thesaurus
In [35]:
len_corpus_raw=len(corpus_raw)
print len_corpus_raw
58
In [36]:
# completo la generazione del filename rendendolo più esplicativo
suffix = datetime.datetime.now().strftime("%m%d%y")
filename = "-".join([basename, str(len_corpus_raw), suffix])+".p"
In [37]:
# serializzo e salvo
pickle.dump( [seeds,titles,corpus_raw], open( filename, "wb" ) )
In [38]:
############ TEST ############
# deserializzo
C=pickle.load( open( filename, "rb" ) )

# minima introspezione del corpus
# visualizzo l'elenco dei seed utilizzati per recuperare i contenuti
for seed in C[0]: print seed

# memorizzo in variabile dedicata il corpus (è una lista di documenti)
C=C[2]
# visualizzo il numero di documenti nel corpus
print len(C)

# calcolo il numero complessivo di parole (separate da spazio) che compongono i documenti del corpus
print sum([len(document.split()) for document in C])
apprendimento automatico
intelligenza artificiale
data mining
deep learning
reti neurali
rappresentazione della conoscenza
58
37582