Пример #1
0
 def get_texts(self):
     with file_read(self.input) as f:
         f.readline(
         )  # La première ligne qui contient les noms des colonnes
         for i, raw_line in enumerate(f):
             try:
                 document = utils.Document(raw_line)
             except Exception:
                 raise ValueError("La ligne n°%d n'est pas au bon format" %
                                  (i + 1))
             yield document.get_tokens(self.stopwords)
Пример #2
0
if (os.path.isfile(bow_file)):
    raise IOError("Le corpus existe déjà sous forme matricielle", bow_file)

# Les stopwords qui doivent être ignorés lors de la tokenization
if args.stopwords:
    with open(args.stopwords) as f:
        stopwords = [line.rstrip() for line in f]
else:
    stopwords = []

corpus = hc.HabeasCorpus(corpus_file, stopwords)

# Suppression des mots pas assez/trop fréquents
corpus.dictionary.filter_extremes(no_below=5, no_above=0.5)

# Enregistrement du dictionnaire de mots
corpus.dictionary.save_as_text(wordids_file)

# Enregistrement du corpus au format bag-of-words
corpora.mmcorpus.MmCorpus.serialize(bow_file, corpus, progress_cnt=1000)

# Création d'un fichier qui à la ligne n°i affiche l'id du document corpus[i]
with open(corpus_file) as f:
    o = open(docid_file, 'w')
    f.readline()
    for raw_line in f:
        doc = utils.Document(raw_line)
        o.write(doc.id + '\t' + doc.title + '\n')
    o.close()
Пример #3
0
    # Chargement du modèle
    try:
        tfidfmodel = models.tfidfmodel.TfidfModel.load(tfidfmodel_path)
    except Exception:
        raise IOError(
            """Impossible de charger le fichier %s. Avez-vous bien appliqué le script tfidf ?"""
            % (tfidfmodel_path))

    f = open(corpus_etranger)
    o = open(args.translate_file, 'w')

    for i, l in enumerate(f):

        # Pour chaque document, on récupère la traduction supposée et le score de proximité
        doc = utils.Document(l)
        trad, score = find_translation(doc.text, args.corpus_fr, index, dico,
                                       corpus, tfidfmodel)

        # Si le score est supérieur à 0.4, la traduction a de très fortes chances d'être la bonne
        if score >= 0.4:
            o.write(str(doc.id) + '\t' + str(trad) + '\n')

        # Si le score est compris entre 0.35 et 0.4, la traduction supposée est peut-être inexacte
        elif score >= 0.35 and score < 0.4:
            o.write(str(doc.id) + '\t' + str(trad) + '?\n')

        # En dessous de 0.35, le texte ne possède probablement pas de traduction dans le
        # corpus de référence
        else:
            o.write(str(doc.id) + '\t?\n')
Пример #4
0
else:
    stopwords = []

stopwords.extend(nltk.corpus.stopwords.words('french'))
stopwords = set([utils.textimport(x) for x in stopwords])

with open(args.corpus_file) as f:
    tokens = []

    for i, raw_document in enumerate(f):
        if i > 3000:
            # on cherche les bigrammes sur 3000 documents
            break

        print "Lecture document %d" % (i)
        doc = utils.Document(raw_document)
        doc.remove_text('\\\\n')
        doc.remove_text('\\r')
        text_tokens = [t for t in doc.get_text_tokens() if t not in stopwords]
        tokens.extend(text_tokens)

    bigram_measures = nltk.collocations.BigramAssocMeasures()
    finder = nltk.collocations.BigramCollocationFinder.from_words(tokens)

    finder.apply_freq_filter(
        5
    )  # supprime les bigrammes qui apparaissent moins de 5 fois dans le corpus

    bigrams = set(finder.above_score(bigram_measures.pmi, 5))

    print "Bigrammes trouvés"