Académique Documents
Professionnel Documents
Culture Documents
U : 2021-22
Département Informatique LSI2 Enseignant : S. Belaid
I. Google Colab :
Google Colab ou Colaboratory est un service cloud, offert par Google (gratuit), basé sur
Jupyter Notebook et destiné à la formation et à la recherche dans l’apprentissage automatique.
Cette plateforme permet de faire du traitement de données directement dans le cloud et
d’entraîner des modèles de Machine Learning. Sans avoir besoin d’installer quoi que ce soit sur
votre ordinateur à l’exception d’un navigateur.
2
LSI2 / TP’s Techniques d’indexation et recherche multimédias AU. 2021-22
Exercice :
Voici quelques documents textuels.
A: Le loup est dans la bergerie.
B: Les moutons sont dans la bergerie.
C: Un loup a mangé un mouton, les autres loups sont restés dans la bergerie.
D: Il y a trois moutons dans le pré, et un mouton dans la gueule du loup.
Prenons le vocabulaire suivant : {« loup », « mouton », « bergerie », « pré », « gueule »}.
1. Donnez, pour chaque document, le tf de chaque terme.
2. Donnez les idf des termes (ne pas prendre le logarithme, pour simplifier).
3. En déduire la matrice d’incidence montrant l’idf pour chaque terme, le nombre de termes
pour chaque document, et le tf pour chaque cellule.
Solution
// *Installation des packages et libraries *
!pip install spacy
!python -m spacy download fr_core_news_sm
import spacy
import fr_core_news_sm
nlp=fr_core_news_sm.load()
// Creation des documents
A = "Le loup est dans la bergerie"
B = "Les moutons sont dans la bergerie"
C = "Un loup a mangé un mouton et les autres loups sont restés dans la bergerie"
D = "il y a trois moutons dans le pré, et un mouton dans la gueule du loup"
// TOKENISATION
def token(doc):
d = nlp(doc)
return [X.text for X in d]
A = token(A)
B = token(B)
C = token(C)
D = token(D)
print(A)
print(B)
print(C)
print(D)
// Normalisation textuelle ( ponctuation et casse)
A=[word.lower() for word in A if word.isalpha() ]
B=[word.lower() for word in B if word.isalpha()]
C=[word.lower() for word in C if word.isalpha()]
3
LSI2 / TP’s Techniques d’indexation et recherche multimédias AU. 2021-22
A = enlever_stopwords(A)
B = enlever_stopwords(B)
C = enlever_stopwords(C)
D = enlever_stopwords(D)
print(A)
print(B)
print(C)
print(D)
//STEMMATION
from nltk.stem.snowball import SnowballStemmer
stemmer = SnowballStemmer(language='french')
def return_stem(sentence):
return [stemmer.stem(X) for X in sentence]
A = return_stem(A)
B = return_stem(B)
C = return_stem(C)
D = return_stem(D)
print(A)
print(B)
print(C)
print(D)
//Term frequency d'un mot donné (TF)
from collections import Counter
def term_frequency(document, mot):
stemmot = stemmer.stem(mot)
word_freq = Counter(document)
for word,freq in word_freq.items():
if(word == stemmot):
print('Occurence: ',freq)
def tf(mot):
4
LSI2 / TP’s Techniques d’indexation et recherche multimédias AU. 2021-22
print('mot :',mot)
print('-------------------------')
print('Document A')
term_frequency(A,mot)
print('-------------------------')
print('Document B')
term_frequency(B,mot)
print('-------------------------')
print('Document C')
term_frequency(C,mot)
print('-------------------------')
print('Document D')
term_frequency(D,mot)
//Quelques exemples:
tf('loup')
tf('bergerie')
tf('mouton')
//IDF d'un mot donné
import math
documents =[]
documents.append(A)
documents.append(B)
documents.append(C)
documents.append(D)
def idf(mot):
stemmot = stemmer.stem(mot)
common_list=[]
i =0
for document in documents:
common_list.append(Counter(document))
for common in common_list:
for word,freq in common.items():
if(word == stemmot):
i= i+1
if i == 0:
return "mot n'existe pas dans le corpus"
else:
return math.log(len(documents)/i)
//Quelques exemple:
idf('pré')
idf('loup')
//Matrice d’incidence
import pandas as pd
numOfWordsA = dict.fromkeys(words, 0)
for word in A:
numOfWordsA[word] += 1
numOfWordsB = dict.fromkeys(words, 0)
5
LSI2 / TP’s Techniques d’indexation et recherche multimédias AU. 2021-22
for word in B:
numOfWordsB[word] += 1
numOfWordsC = dict.fromkeys(words, 0)
for word in C:
numOfWordsC[word] += 1
numOfWordsD = dict.fromkeys(words, 0)
for word in D:
numOfWordsD[word] += 1
tfA = matrice(numOfWordsA, A)
tfB = matrice(numOfWordsB, B)
tfC = matrice(numOfWordsC, C)
tfD = matrice(numOfWordsD, D)
tfglobal = pd.DataFrame([tfA, tfB,tfC, tfD ],index=['A','B','C','D'])
tfglobal