From 89de4f257f8929e509f3ea984d0bfd909137deec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Pelletier?= Date: Tue, 22 Oct 2019 00:55:57 -0400 Subject: [PATCH] version pre exam partiel avant antidote --- examen_partiel.md | 208 +++++++++++++++++++++++++++++++++++++++++- index_inverse.drawio | 1 + index_inverse.png | Bin 0 -> 10466 bytes lucene.drawio | 1 + lucene.png | Bin 0 -> 22422 bytes recherche_info.drawio | 1 + recherche_info.png | Bin 0 -> 21626 bytes 7 files changed, 207 insertions(+), 4 deletions(-) create mode 100644 index_inverse.drawio create mode 100644 index_inverse.png create mode 100644 lucene.drawio create mode 100644 lucene.png create mode 100644 recherche_info.drawio create mode 100644 recherche_info.png diff --git a/examen_partiel.md b/examen_partiel.md index 4bedb3f..1db61c5 100644 --- a/examen_partiel.md +++ b/examen_partiel.md @@ -693,8 +693,16 @@ $$ $$ - Mesure F1: $$ -2\left(\frac{\text{precision}\times\text{rappel}}{\text{precision}+\text{rappel}}\right) +F1 = 2\left(\frac{\text{precision}\times\text{rappel}}{\text{precision}+\text{rappel}}\right) $$ +- Mesure F: +$$ +F_{\alpha} = \frac{1}{\alpha P^{-1}+(1-\alpha) R^{-1}} +$$ + +- Si $\alpha < 0.5$, la précision est plus importante +- Si $\alpha > 0.5$, le rappel est plus important +- F1: $\alpha = 0.5$ ## Validation croisée @@ -962,7 +970,7 @@ Problème: Les mots ont souvent plus d'une étiquette, il faut alors déterminer - Probabilité de transition $A=\lbrace a_{ij} \rbrace$: modélise la séquence d'étiquettes - Probabilité d'émission $B=\lbrace b_i(k) \rbrace$: associe les mots aux étiquettes -![](hmm.png) +![Hidden Markov Model](hmm.png) Quelle est la meilleure séquence d'étiquettes qui correspond à la séquence d'observations ? @@ -1288,10 +1296,202 @@ C'est un problème d'étiquetage # Recherche d'information +**Recherche d'information**: +- Matériel (documents) +- Non-structuré +- Besoin d'information +- Grandes collections -# Wordnet +![Schéma général](recherche_info.png) +- Plusieurs modèles: + - Booléen + - Vectorial + - Probabiliste + - Latent semantic indexing + +## Recherche booléenne +- Expressions booléennes +- Retourne tous les documents qui satisfont l'expression +- Rencontré dans les bibliothèques (fonction de recherche avancée) +- Éviter d'utiliser des expressions régulières: + - Lent pour de grandes collections + - Orienté sur la ligne + - Négation n'est pas triviale + - Pas d'opérateur de proximité +- Construction d'une matrice terme-document +- Enjeux: + - Avec beaucoup de mots et de documents: matrice très large et très creuse + - N'enregistrer que les 1 +- Index inversé: + - Pour chaque terme, on garde une liste chaînée de tous les documents qui contiennent ce terme + - Structure de données: dictionnaire, trié par ordre alphabétique +- Avantages: + - Peut traiter toutes les requêtes booléennes + - Résultats précis: le document satisfait ou non +- Inconvénients: + - Il manque parfois un terme dans les longues requêtes + - Variantes morphologiques + - Texte d'ancrage + - Résultats sans ordre particulier + - Tous les résultats ont la même importance -# Premier travail pratique +![Index inversé](index_inverse.png) + +### Construire l'index inversé + +1. Prétraiter les documents + - Tokenisation + - Normalisation +2. Générer les postings (terme, identifiant document) +3. Trier les postings +4. Créer les listes et les compteurs de documents +5. Créer les structures de données (dictionnaire et listes) + +### Étapes de la requête + +- Recherche naïve: intersection des listes $O(N^2)$ +- Listes triées: avancer dans les listes en ordre croissant + +## Recherche vectorielle + +### Représentation + +Documents et requêtes: vecteurs de poids à N dimensions: + +- Poids: importance du terme $T_i$ dans le document $D_j$ +- Un terme fréquent dans un document est important +- Un terme fréquent dans plusieurs documents n'est pas important (stop words ou sujet général) +- Types de poids: + - Binaires (0 ou 1) + - Fréquence des termes (sans aucune modification) + - TF-IDF + - Poids TF-IDF: cette mesure présente plusieurs alternatives + - Information mutuelle +- Similarité entre les vecteurs +- Matrice de comptes (CountVectorizer dans scikit-learn). + +### TF-IDF + +$$ +w_{ik} = {tf}_{ik} \log(\frac{N}{n_k}) +$$ + +- $T_k$: Terme $k$ dans le document $D_i$ +- $tf_{ik}$: Fréquence de $T_k$ dans $D_i$ +- $N$: Nombre total de documents dans la collection $C$ +- $n_k$: Nombre de documents dans $C$ qui contiennent $T_k$ +- $idf_k$: Fréquence inverse de $T_k$ dans C + +### Similarité + +- Angle entre les vecteurs: produit scalaire ou cosinus. +- Certains vecteurs sont plus longs que d'autres, ce qui leur donne une importance relative. +- Il faut normaliser les vecteurs (leur donner une longueur de 1) + +$$ +\begin{aligned} +cos(\vec{q},\vec{d}) &= \frac{\vec{q} \cdot \vec{d}}{|\vec{q}||\vec{d}|} \\ +&= \frac{\sum_{i=1}^{|V|} q_{i}d_{i}}{\sqrt{\sum_{i=1}^{|V|} q_{i}^2}\sqrt{\sum_{i=1}^{|V|} d_{i}^2}} +\end{aligned} +$$ + +On peut alors retourner les documents qui ont le plus grand cosinus. +Mais on peut faire mieux en utilisant l'index inversé. + +$$ +\text{score}_d = \frac{\sum_{t} wf_{t,d}w_{t,q}}{|d|} +$$ + +Mesure de l'efficacité: + +- Précision: + +$$ +\frac{\text{pertinent et retenus}}{\text{retenus}} +$$ + +- Rappel: + +$$ +\frac{\text{pertinent et retenus}}{\text{pertinents}} +$$ + +- Mesure F +- Mean average precision: on calcule la précision pour chaque document retourné, cumulativement, pour plusieurs requêtes, et on fait la moyenne ensuite. +- Précision à 5, à 10 ... +- Mean reciprocal rank: inverse du rang du document le plus pertinent +$$ +\text{MRR} = \frac{1}{|Q|} \sum_{i=1}^{|Q|}\frac{1}{\text{rank}_i} +$$ +- Discounted cumulative gain: Tient compte du rang des documents pertinents +$$ +\text{DCG}_p=rel_1 + \sum_{i=2}^p \frac{rel_i}{\log_2{i}} +$$ + +## Lucene + +![Lucene: Indexation et recherche](lucene.png) + +# Sémantique lexicale + +- Raisonnement: idées similaires avec des mots différents (thesaurus) +- Utilisation: détection de plagiat, système question-réponses, résumé de textes +- Approches possibles: + - Taxonomie et thesaurus + - Approche distributionnelle +- Relations entre les mots (lemmes) + - Un lemme peut avoir plusieurs sens + - **Sens**: Représentation d'un aspect de la signification d'un mot + +## Relations + +Les mots et leurs sens peuvent être reliés par différentes relations: + +- Homonymie: forme commune (phonologie, orthographique ou les deux), mais sens différents + - Homophones + - Homographes + - Les deux + - Problèmes en NLP: + - Synthèse vocale (même orthographe mais phonologie différente) + - Recherche d'information (même mot, sens différents) + - Traduction automatique + - Reconnaissance vocale (même phonologie, orthographe différente) +- Polysémie: Un mot a plusieurs sens +- Synonymie: Peuvent être remplacés l’un pour l’autre +- Antonymie: s’opposent sur un aspect + - Binaire (adjectif) + - Échelle de valeurs (mesure) + - Réversibilité (action/verbes) +- Hyperonymie: plus général, regroupement +- Hyponymie: plus spécifique, sous-classe (inverse d'hyperonymie) +- Holonymie: compose le tout d'une partie (inverse de méronymie) +- Méronymie: une partie d'un tout + +## Wordnet + +Collection de sens de mots, regroupés sous la forme de *synsets*, des quasi-synonymes + +Il y a 4 types de synsets: + +- Nom +- Verbe +- Adjectif +- Adverbe + +Ils forment un graphe sémantique. Ils forment aussi une hiérarchie de concepts + +### SentiWordNet + +- Extension de WordNet pour l'analyse de sentiments et le forage d'opinions. Annotation de positivité, négativité ou neutralité. + +## Mesure de la similarité + +- Synonymie (simple) +- En pratique, on utilise la hierarchie de concepts (noms et verbes). +- On calcule la proximité par les chemins + - $pathlen(c_1,c_2)$: 1+ nombre de liens + - $sim_path(c_1,c_2) = \frac{1}{pathlen(c_1,c_2)}$ + - $wordsim(w_1,w_2) = max_{c_1 \in senses(w_1),c_2 \in senses(w_2)}$ diff --git a/index_inverse.drawio b/index_inverse.drawio new file mode 100644 index 0000000..f9af98d --- /dev/null +++ b/index_inverse.drawio @@ -0,0 +1 @@ +5ZpLc9sgEIB/jY71SEJ+9BjbadJHZtLm0PRIJSJRI+FByI/++iILLMnrpG6TGGaSS8QCC/r2wdrYQ7N8cyXwMrvhCWFe6CcbD829MAwif6L+1ZJtI5mMR40gFTTRg1rBHf1NtNDX0oompOwNlJwzSZd9YcyLgsSyJ8NC8HV/2ANn/VWXOCVAcBdjZqSDYSv/ThOZaXkwet92XBOaZnrxSajf8CeOF6ngVaFX9EL0sPtrunNsdOlXLTOc8HVHhC49NBOcy+Yp38wIq+kacGae3JrdemiayZypRqAed90fHpkcnDJZvZwghewu95i+xWbBbwpx/enbxeerj3n8Nb+ZvwuiRs0Ks0qvMhWVrEqw+I4TqXX5avF1RiW5W+K47l0rzzq2txURkmwOjNduN9gjVM5JeE6k2KohesJEw9NuOdTNdcfChm/WMS7SMqzdKt0rbtGoB03nH0hFIUBCEuWJusmFzHjKC8wuW+m0D60d84XzpUb1i0i51WGFK8n7IBUssb3X83eNH3VD+bxuzjfdzvlWt5q91ht8Gr96H16JmDzlIjq+JBYpkU8MDIfHDSoIw5Ku+js5Zh899ZZTtce9I4TjvicEZkNGRbMxPevAyvtt/L/hzXKdEPHCEVMkpgldqce0fpxhUmJhOtRCnT7XYinwrQcTeqvBNDoxmNDomcH0LPuYbXZ8fobZshIFxc55s/WjIRgDWvDwPjelEw7Q6KyQJgASPFHPDQmFjkF6DyBF9iGN3IJkbNYNN/vxFvmOUQoAJeQApcgxSiEMuKF9So7l7hDBiBvDEu7cmIaOZe8QfpgOxvbz99C1/A0/UNlPTKd8RjovJViCu1cv2acES2/7AXdYMNmnBGtvBw453zVKsPge2acUOUbJKO5mbwcwuZa+ESy/h2PrmA4rJvuYYP0dGJlDJZN9TrACHwwG1jmNXMvhyMWq6ZRvLM9LCVZNDnw3AIpL65iOlE0OVpfWMcG6KfDtuxOoL21zimBJACCRIrmofxShWjHDZUnjl7nCIhsq740O9dyZpVrtpLrxGtdeOmz+eu3VXKVAm3ZsNjxiMyN75lXzQZ7eqzUamvcEN81AT4AOFPkHil75yjqCp+CRK+s5jSXlRYGpICdeXKtolH2HLKXgCzLjjAslKXihRk4fKGMHIsxoWtRerXyHKPm0jm0aY3ahO3KaJLtr3mOZoZ87XiA5BKAQPik3hK+WG+CJfMRit7yUtEjLt2at6GzWUs3291xNOLY/m0OXfwA= \ No newline at end of file diff --git a/index_inverse.png b/index_inverse.png new file mode 100644 index 0000000000000000000000000000000000000000..5176860034003b38928335bf97df004849d2427e GIT binary patch literal 10466 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 literal 0 HcmV?d00001 diff --git a/lucene.drawio b/lucene.drawio new file mode 100644 index 0000000..508c255 --- /dev/null +++ b/lucene.drawio @@ -0,0 +1 @@ +5VrZUtswFP2aPNKxrTjLI0mg7Qyd0tIZ4Kkj24qtolhGVkjM11eK5VUmdWlAKfCCdLWfe3QXOQMwX20/MphEX2iAyMCxgu0ALAaOYw+tifgnJVkumYxHuSBkOFCdKsEVfkRKaCnpGgcobXTklBKOk6bQp3GMfN6QQcboptltSUlz1QSGSBNc+ZDo0msc8EidwhlX8k8Ih1Gxsj2a5i0rWHRWJ0kjGNBNTQTOBmDOKOV5abWdIyLBK3DJx50/0VpujKGY9xnghV7089w79bwgvk9u2M2tdX8CQD7NAyRrdWK1W54VEDC6jgMkZ7EGYLaJMEdXCfRl60YoXcgiviKiZouimg4xjrZPbtQujy94g+gKcZaJLmoAUIApxoACwE2F/6iQRXXsp0oIlc7DcuoKFlFQyPwNSs7xo9QTpJKOBwepuLE1TFAg7pKqUsYjGtIYkrNKOmuiVvW5oDRRWP1CnGfKMMA1p00kBVosu1Hjd5VbWfngFtXFtt64yFQt36vc4H78xXnomvlo38GVWYIsRHxPv3G3PhkikOOH5j4Orx2NwQvqr1fysKaZPGwyeagz2e5ksvVSTO667SMilp0F+EEUQ1k8x0i4EiUXy9SajCM6aiLq6ohOOgAFL2Y+3xieU8N4Dt8YnvbIMKDuGwO0NI2mALVtDZL3EQuMe8YCE6OxwNSsdiqF3Db0cTTasYcm1VMEOzVz9ANtucxeGQxlyJZq+uOyQwNuhlL8CL1dBwljQrEcKHq7s4G7EBJIcBgLgS9mREwIpAnCIvU9VQ0rHAQ73RPoITKD/l24Y8GcEsp264Ll7m+fEVOJudrJoMw/6vrbw9InTd6J9cEBRfraWzFquksJRjWX2/JHLbNIl8sUcU2v5Z6er+pxH8dzKm5ZlgoNHafvKZ1NgZ7dM4AfvZj30bPz9+F9Jj3t2xM363XM20Tj/GcB/PaaYWmFTLMZtGNT42wunhrfnbee9mSz45qk81Sj8wIz4fComruutzSCiSz6GcFCPezPjPZyPV54paD0wl/XXMyCDkd912lSvyMr62S+/XLUf69phA16ct9spGrrLztn20REnimmsaY6PUZNOaN3qAgnYyrZPFtiQlqi/pFq13VqEuIAF6XlIsDQ1S7K+DWzbQeYuCaHpPu/srg7rNfemcYtDeTXS406fHTvGM6zzZmvYV/XbdZ86Q+p39aIZZeQpUcQirYTK9Dxje91Q1FgxB8fkJhOX2ICq1s1r/QCpBNzlyNdIcj86Aio2c6SzFPTmRi1tbYxW+u4/4WtdfRvLDtKf0cwOAJCt3Mf84QuNlB/BRasdKziu73+CGzaCgz7frp/BmiiWv1UKg/Qqh+cgbPf \ No newline at end of file diff --git a/lucene.png b/lucene.png new file mode 100644 index 0000000000000000000000000000000000000000..17ff5de8e8755202f3f2ed0ebc20607cf315f6cf GIT binary patch literal 22422 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/BHWbaF5WLiFoZAMF83qgxL9ptqo6mtGfNpWmsoAbhkSd3oQRxTT9ZsRAhY15vdA6/PmpCAtgxLj/C29TvzZah3YU8q+0fKgrCc2XKnhSciZWO9kzQkPqx3TM614cwEgCxK0WZGuQKvxKXot9jjfVqYoLHs0yFOH9ebEcDiIUzt+XzBoy/f3ll6mFRuyx1THwHQVRAyhABiwq8r65WALPapGtbEWtXmBiBBo4XGX1TKrWaTZBLQFMqIa28xp5po717KdUEmPPrcBrQmiAiofKbd+AlxlCqFiEqxxX6CciLZqr4OojUTPLWrYMWCRvYlKBfjrgjP9EyG7XJc7pXPVlgMVPGWPmbGzDEuLyUt3TjbTosWVSipRBUROMI55RAIEmHDhAqGK6ei6ftaOa7WIZN0mZAc3jVGbxdHKyok3TzPUhtV3cEeaemXsa+r6yqQrDI6wp0gcs1D8eB2EHHW8rd7yt8dUv52H/nPwcsi3H/6Qu37ut/fFX1X8HZz94oSH/2jxC8OJvFzV/S4p6KnQyp63EfRC4g9ySBWtx+aLy0ReYKfpogKKVy9tF7n5/iJ2xo+c4/PXNZuT1lPhpR11/H4hmTdTNYnIOvRELJGuMT2x27lpxrs/biszjd68KK21bVXDIfJOWT5SZ9w+IRcbF56ZyGSpBIEHUT2J3APd848m097ytcyu5k5jn6nLf02c7cHkfo+ZKkyndil4wRkarYAvNUnXcbxpEv3B/igHyVNJJ3hv0raqXQGcSpFVpMjJ3ls7L6DNABGUGQdQBwEHugMOKjXjhhilSvuGecNE+EsiLHqIYj5+4eCmHmEX2pHxHyf78vI9WB4BY4sp6F2s83RtIMi+2AUtbPFkkWME8FkIfo3TMZ4XA+YDjJGxyTDbj+Z3HZds02m8IvfcJy4pnli1DgdqSzKkz1eCPAsVahhKqOpymrVo9b/QlBXIjsuQe3HGUSQ0/yk+Y+IsA5HBFar/61y386/f871Hw== \ No newline at end of file diff --git a/recherche_info.png b/recherche_info.png new file mode 100644 index 0000000000000000000000000000000000000000..ffc88a26f6db24b09acf9e7e97cce796a1c50f9d GIT binary patch literal 21626 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ⅅuU`L+2efKP?&SVz0%}a5ql}3b4KDHIrgVo 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 literal 0 HcmV?d00001