version pre exam partiel avant antidote
This commit is contained in:
parent
69b5713a95
commit
89de4f257f
7 changed files with 207 additions and 4 deletions
|
@ -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)}$
|
||||
|
|
1
index_inverse.drawio
Normal file
1
index_inverse.drawio
Normal file
|
@ -0,0 +1 @@
|
|||
<mxfile host="www.draw.io" modified="2019-10-21T15:36:35.328Z" agent="Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0" etag="kAAV1GwFrcm3S5YsXYS9" version="12.1.3" type="device" pages="1"><diagram name="Page-1" id="bd83a815-5ea8-2e97-e5ec-87c9f400f2fa">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=</diagram></mxfile>
|
BIN
index_inverse.png
Normal file
BIN
index_inverse.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 10 KiB |
1
lucene.drawio
Normal file
1
lucene.drawio
Normal file
|
@ -0,0 +1 @@
|
|||
<mxfile host="www.draw.io" modified="2019-10-22T04:25:25.735Z" agent="Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0" etag="DchZb66yJ9pAhXoDybW6" version="12.1.3" type="device" pages="1"><diagram id="wjR39zvCAK-OV4iVEDj-" name="Page-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</diagram></mxfile>
|
BIN
lucene.png
Normal file
BIN
lucene.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 22 KiB |
1
recherche_info.drawio
Normal file
1
recherche_info.drawio
Normal file
|
@ -0,0 +1 @@
|
|||
<mxfile host="www.draw.io" modified="2019-10-21T15:16:14.240Z" agent="Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0" etag="9-3OykCRAavg-E-BfynW" version="12.1.3" type="device" pages="1"><diagram id="cbQOHBFk_CRoLQWR-aYk" name="Page-1">5VnbcpswEP0aHtvhYuP4MbHjtjNppxN3pu2jAgqoESwRwpd+fVcggrk4JZ3Y2OmTpV1dzzm7ErLhzKLNB0GS8DP4lBu26W8MZ27YtjUyL/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==</diagram></mxfile>
|
BIN
recherche_info.png
Normal file
BIN
recherche_info.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 21 KiB |
Loading…
Reference in a new issue