diff --git a/Exo.py b/Exo.py new file mode 100644 index 0000000..2f3f72a --- /dev/null +++ b/Exo.py @@ -0,0 +1,47 @@ +import pandas as pd +import matplotlib.pyplot as plt + +document_1 = "le chat mange la souris" +document_2 = "le chien regarde le canard" +document_3 = "le canard regarde le chat" + +corpus = (document_1, document_2, document_3) + +# construction du dictionnaire +vocabulary = [] +for d in corpus: + for w in d.split(" "): + if w not in vocabulary: + vocabulary.append(w) + +# calcul d'un histogramme simple sur le corpus + +# initialisation de l'histogramme +freq = dict() +for v in vocabulary: + freq[v] = 0 + +# comptage des occurrences +for d in corpus: + for w in d.split(" "): + freq[w] += 1 + +print(freq) +df = pd.DataFrame({'freq':freq.values()}, index=freq.keys()) +ax = df.plot.bar(rot=0) +plt.show() + +# calcul d'un histogramme par document +import numpy as np + +V = len(vocabulary) +D = len(corpus) + +tf_idf = np.zeros([D, V]) + +for i, d in enumerate(corpus): + for w in d.split(" "): + j = vocabulary.index(w) + tf_idf[i,j] += 1 + +print(tf_idf) \ No newline at end of file diff --git a/Word_embedding.docx b/Word_embedding.docx new file mode 100644 index 0000000..a949c40 Binary files /dev/null and b/Word_embedding.docx differ diff --git a/exercices.ipynb b/exercices.ipynb index 4c6f5a5..137e2b4 100644 --- a/exercices.ipynb +++ b/exercices.ipynb @@ -2,16 +2,16 @@ "cells": [ { "cell_type": "markdown", - "id": "0f3d617c", + "id": "d8ffd3a0", "metadata": {}, "source": [ "# TP Word Embedding\n", "\n", "## Bag of Words\n", - "Un sac de mots (ou *Bag of Words* en anglais, parfois abbrévié *BOW*) est un description d'un ensemble de mot sous forme d'un vecteur où l'ordre des mots ne rentre pas en compte.\n", + "Un sac de mots (ou *Bag of Words* en anglais, parfois abbrévié *BOW*) est une description d'un ensemble de mots sous forme d'un vecteur où l'ordre des mots ne rentre pas en compte.\n", "\n", "### Term Frequency\n", - "L'idée de Term Frequency est d'effectué un simple compte du nombre d'occurence (ou de la fréquence) du nombre de mots dans le corpus.\n", + "L'idée de Term Frequency est d'effectuer un simple compte du nombre d'occurence (ou de la fréquence) de mots dans le corpus.\n", "\n", "Soit un vocabulaire $V$ dans un corps $C$ contenant $D$ documents.\n", "Soit $w$ un mot dans un document $d \\in C$.\n", @@ -23,7 +23,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "id": "a1445527", "metadata": {}, "outputs": [], @@ -37,7 +37,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "id": "6c989264", "metadata": {}, "outputs": [ @@ -85,7 +85,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "id": "5fc408eb", "metadata": {}, "outputs": [ @@ -125,13 +125,13 @@ "* résoud uniquement le premier problème cité précedement\n", "* devrait être une implémentation en matrice creuse (*sparse matrix*) car va en pratique contenir beaucoup de zéros pour un vocabulaire grand\n", "\n", - "Heuresement des implémentations existantes comme dans `scikit learn` permettent de résoudre ces problèmes techniques." + "Heureusement des implémentations existantes comme dans `scikit learn` permettent de résoudre ces problèmes techniques." ] } ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "Python 3.9.4 64-bit", "language": "python", "name": "python3" }, @@ -145,7 +145,12 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.7" + "version": "3.9.4" + }, + "vscode": { + "interpreter": { + "hash": "2ef431f6525756fa8a44688585fa332ef3b2e5fcfe8fe75df35bbf7028a8b511" + } } }, "nbformat": 4, diff --git a/freq.png b/freq.png new file mode 100644 index 0000000..ebcbdf0 Binary files /dev/null and b/freq.png differ diff --git a/~$rd_embedding.docx b/~$rd_embedding.docx new file mode 100644 index 0000000..ca2453b Binary files /dev/null and b/~$rd_embedding.docx differ