#!/usr/bin/env python # coding: utf-8 # # Vocabulaire commun # Nous allons déterminer quel est le vocabulaire commun de deux textes différents. # Nous travaillerons sur un texte de Balzac ('balzac_petits-bourgeois.txt') et un texte de Zola ('zola_ventre-de-paris.txt') # ## Comptage # # Nous commencerons par lister les mots de chaque texte et compter les nombre d'occurence de chacun de ses mots # In[1]: from collections import Counter def text2counter(file_name): """ Read the given file, split each line, count the token frequency args: filen_name (str) return: collections.Counter """ cnt = Counter() try: with open(file_name, "r") as f: for line in f: line = line.rstrip() for token in line.split(" "): cnt[token] += 1 return cnt except IOError: print("Cannot open file {}".format(file_name)) return None # In[2]: cnt_file1 = text2counter("zola_ventre-de-paris.txt") cnt_file2 = text2counter("balzac_petits-bourgeois.txt") print("Nombre de types dans Zola : {}".format(len(cnt_file1.keys()))) print("Nombre de types dans Balzac : {}".format(len(cnt_file2.keys()))) # ## Intersection # # Nous allons nous appuyer sur le calcul ensembliste d'intersection pour déterminer le vocabulaire commun des deux textes # In[3]: set_file1 = set(cnt_file1.keys()) set_file2 = set(cnt_file2.keys()) common_words = set_file1.intersection(set_file2) print("Nombre de mots en commun : {}".format(len(common_words))) # ## Affichage du résultat # Pour chaque mot du vocabulaire commmun nous indiquerons quelle est le nombre d'occurrences dans chaque texte # In[ ]: