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')
Nous commencerons par lister les mots de chaque texte et compter les nombre d'occurence de chacun de ses mots
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
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())))
Nombre de types dans Zola : 18969 Nombre de types dans Balzac : 8719
Nous allons nous appuyer sur le calcul ensembliste d'intersection pour déterminer le vocabulaire commun des deux textes
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)))
Nombre de mots en commun : 3586
Pour chaque mot du vocabulaire commmun nous indiquerons quelle est le nombre d'occurrences dans chaque texte