diff --git a/examen_final.md b/examen_final.md index 01a85e8..9a15617 100644 --- a/examen_final.md +++ b/examen_final.md @@ -14,6 +14,17 @@ fontsize: 12pt Objectif: obtenir de l'information utile et la structurer. +Usages: + +- Compréhension de textes +- Systèmes questions-réponses +- Traductions automatiques + +Approches: + +- À base de règles +- Par apprentissage + ## Types d'information: - Quasi structurée: texte préformaté, par exemple un bulletin météo @@ -55,19 +66,320 @@ Enjeux: ambiguité du type des entités. Peuvent appartenir à plusieurs catégo #### Apprentissage automatique: -- Étiquetage -- Nécessite des exemples +Encodage IOB mot par mot: +- **B**eginning (premier jeton de l'entité) +- **I**nside (autres jetons de l'entité) +- **O**utside (ne fait pas partie d'une entité nommée) +Chaque étiquette a une position et un type, pour un total de $2n+1$ étiquettes possibles. +Étiquetage séquentiel: + +- MEMM/CRF (généralisation de Viterbi) +- bi-LSTM (réseau de neurones récurrent et bidirectionnel) +- HMM (Modèle de Markov caché) +- SVM (Modèle discriminant) + +Extraction des attributs des mots: + +- identité, plongement, POS du mot et des voisins +- Étiquette syntaxique du mot, du groupe de mot et des mots voisins +- Mot présent dans un index géographique +- Contient un préfixe ou un suffixe +- Tout en majuscules +- Forme du mot et des voisins +- Forme du mot court et des voisins +- Présente de trait ou de tiret + +Portée d'un classificateur MEMM: + +![Diagramme MEMM pour NER](memm-ner.png) #### Base de règles +Caractéristiques: + - Largement utilisé en pratique - Fort niveau de précision +Composantes: + +- Listes d'entités +- Patrons ou expressions régulière pour reconnaitre des entités potentielles +- Patrons pour reconnaitre les environnements où des entités peuvent se trouver + +Approche hybride: + +1. Identifier les attributs: + - Règles pour repérer les entités non-ambigues + - Comparer des sous-chaines avec des entités connues + - Listes de noms d'entités spécifiques +2. Classificateur de séquence ## Détection et classification de relations -## Détection et classification d'évènements +Objectif: capturer les relations sémantiques du domaine d'application, populer une base de données + +Formes des relations: + +ENTITÉ - RELATION - ENTITÉ + +Types de relations: + +- PERSON-SOCIAL + - Family + - Business + - Lasting personal +- PHYSICAL + - Near + - Located +- GENERAL AFFILIATION + - Citizen + - Resident + - Ethnicity + - Religion + - Org-Location-Origin +- PART-WHOLE + - Subsidiary + - Geographical +- ORG AFFILIATION + - Founder + - Ownership + - Membership + - Sports affiliation + - Employment + - Student-Alumni + - Investor +- ARTIFACT + - User + - Owner + - Inventor + - Manufacturer + +### Exemple + +| Domain | D = {a, b, c, d, e, f , g, h, i} | +|----------------------------------------------------------|--------------------------------------------| +| United, UAL, American Airlines, AMR | a, b, c, d | +| Tim Wagner | e | +| Chicago, Dallas, Denver, and San Francisco | f , g, h, i | + + +| Classes | | +|----------------------------------------------------------|--------------------------------------------| +| United, UAL, American, and AMR are organizations | Org = {a, b, c, d} | +| Tim Wagner is a person | Pers = {e} | +| Chicago, Dallas, Denver, and San Francisco are places | Loc = { f , g, h, i} | + + +| Relations | | +|----------------------------------------------------------|--------------------------------------------| +| United is a unit of UAL | PartOf = {ha, bi, hc, di} | +| American is a unit of AMR | | +| Tim Wagner works for American Airlines | OrgAff = {hc, ei} | +| United serves Chicago, Dallas, Denver, and San Francisco | Serves = {ha, f i, ha, gi, ha, hi, ha, ii} | + +### Ressources + +- Wikipedia + - Infobox +- DBPedia + - Représentation structurée de données provenant de Wikipedia +- Freebase + - Personnes, lieux et objets +- Wordnet + - Différentes relations sémantiques + +### Approches possibles + +- Règles écrites à la main + - Forte précision + - Faible rappel + - Utiles pour un domaine spécifique, demande du temps pour la création des règles +- Apprentissage supervisé + - Corpus d'entraînement étiqueté avec des entités et des relations + - Classificateur pour chaque paire d'entités: + - Vérifier si reliées (modèle 1, exemples positifs et négatifs), + - Puis classifier la relation (modèle 2) + - Régression logistique, Naïve Bayes, SVM + - Attributs: + - Prémisse (headword) + - Mots précédant M1 + - Mots suivant M2 + - Mots entre M1 et M2 + - Type d'entité de M1 + - Type d'entité de M2 + - Concaténation des types + - Analyse syntaxique des constituants + - Analyse par morceaux (chunk) des constituants + - Analyse des dépendances syntaxiques +- Apprentissage semi-supervisé + - Classifier une relation sans corpus étiqueté + - Bootstrapping (répéter plusieurs fois): + - Quelques exemples + - Extraire les paires d'entités de ces exemples + - On les recherche dams un corpus ou sur le web + - On apprend des patrons qui généralisent le contexte + - On recherche ces patrons et on conserve ceux qui donnent plusieurs résultats + - Semantic drift + - Exemples erronés + - Niveau de confiance: + + $$ + Conf(p) = \frac{hits_p}{finds_p} log(finds_p) + $$ + + - Niveau de confiance d'un exemple: + + $$ + Conf(t) = 1-\prod_{p \in P}(1-Conf(p)) + $$ + +- Supervision distante + - Utiliser une ressource avec un grand nombre d'exemples de qualité (DBPedia, Freebase, WordNet) + - Trouver des phrases avec les entités de cette ressource + - Extraire des exemples d'entraînement + - Classificateur supervisé (avec les mêmes types d'attributs que l'approche supervisée) + - Exemples négatifs: paires d'entités tirés au hasard qui n'apparaissent pas dans les relations + - Avantages: mêmes que ceux des approches précédentes + - Désavantage: Peu de relations pour de nouveaux domaines +- Apprentissage non supervisé + - Patrons syntaxiques pour les relations: + ``` + V | VP | VW*P + V = verb particle? adv? + W = (noun|adj|adv|pron|det) + P = (prep|particle|inf. marker) + ``` + - Segmenter les textes en phrases + - Pour chaque phrase: + - Faire un POS tagging et une analyse syntaxique + - Trouver la plus longue séquence qui satisfait un patron à partir d'un verbe + - Trouver les groupes nominaux à gauche et à droite + - Déterminer un niveau de confiance en fonction de la fréquence des relations + - Avantage: pas besoin de connaître les relations + - Désavantage: On doit les convertir en relations sémantiques pour les stocker. Les relations sont basées sur des verbes, on va manquer les autres types de relations. + +## Autres extractions + +### Extraction d'expressions temporelles + +- Similaire à l'extraction d'entitées nommées +- Doivent être normalisées. Peuvent être absolues, relatives ou sous la forme de durées. + +### Détection et classification d'évènements + +- Repérage des verbes d'actions, d'état ou de communication +- Classificateurs de séquences +- Tri chronologique des évènements, en utilisant aussi l'extraction d'expressions temporelles + +# Systèmes questions-réponses + +Types de questions: + +- Factuelles (Qui, où) ? +- Complexes (Que pense, Comment) ? + +![Système QA factuel](systeme-qa-factuel.png) + +## Approche avec un corpus de texte + +- Réponses dans des documents +- Recherche d'information (moteur de recherche et indexation) + +### Traitement des questions + +- Détection du type de réponse +- Formulation de requête pour le moteur de recherche d'information +- Information à extraire de la question: + - Type de réponse + - Focus + - Type de question + - Mots-clés pour la requête + +### Extraction des termes de requête + +- Termes de requête: pour repérer des passages. +Exclure: + - le mot-question, + - les mots-outils et + - les verbes fréquents +- Taille du corpus: une seule réponse, formulation différente +- Expansion de requête: + - variantes morphologiques (mots de la même famille) + - synonymes (provenant d'un thesaurus) +- Reformulation: + - Forme affirmative, avec règles de réécriture (phrase ou le mot manquant est la réponse) + - Ex: + ``` + wh-word did A verb B -> A verb +ed B + Where is A -> A is located in + ``` +### Détection du type d'entité de la réponse + +- Permet de limiter les passages pertinents et se concentrer sur les bonnes phrases. +- **Limitations**: les types d'entités détectés par les logiciels NER sont limités +- Taxonomie de réponse à deux niveaux: Li&Roth + - 6 grandes classes + - 50 sous-classes + +Deux approches: + +- Règles manuelles (expressions régulières) +- Classification automatique: + - Annotation des données d'entraînement + - Classification avec ces attributs + - Mots de la question + - POS + - Entités nommées + - Mot principal (headword), du premier groupe nominal après le mot question + +### Traitement de passages + +- Résultat de la recherche: liste de documents priorisés selon leur similarité +- Problèmes: + - Les documents ne sont pas les meilleures unités + - Les documents en haut de la liste ne contiennent pas nécessairement la réponse +- Solution: + - Découper les extraits des documents (segmantation) + - Section, paragraphe, phrase + - Fenêtre de mots + - Filtrer les extraits qui ne semblent pas contenir de réponse + - Réordonner ces extraits (avec des attributs) + - \# d'entités nommées du bon type + - \# de mots clés de la requête + - Plus longue séquence de mots de la question + - Rang du document d'où le passage provient + - Proximité des mots-clés de la requête + - Nombre de N-grammes en commun + - Sur le web, utiliser les "snippets" + +### Extraction de réponses + +- Span labeling: identifier la portion du texte qui constitue la réponse + - Approche: NER, retourner la chaîne du bon type + - Si la réponse n'est pas une entité nommée, on utilise des règles. Ces règles peuvent être apprises (comme pour l'extraction de relations, par exemple) +- Si plusieurs réponses: on propose les différentes réponses ou on utilise un classificateur + - Type de la réponse + - Correspondance à un patron + - Distance du mot-clé + - Mot observé pour la première fois + - Apposition (nombre de mots entre le mot-question et la réponse, avec un maximum de 3 mots et une virgule) + - Position des ponctuations + - Séquence de mots de la question +- Mean reciprocal rank + +$$ +MRR = \frac{1}{N}\sum_{i=1}^N \frac{1}{rank_i} +$$ + +## Approche avec des données structurées + +- Base de connaissances (entités et relations, dbPedia, Freebase, WordNet). Extraction d'information +- Ex: Siri, Wolfram Alpha + +# Modèles statistiques de traduction automatique + + diff --git a/memm-ner.drawio b/memm-ner.drawio new file mode 100644 index 0000000..da6f933 --- /dev/null +++ b/memm-ner.drawio @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/memm-ner.png b/memm-ner.png new file mode 100644 index 0000000..7b610b3 Binary files /dev/null and b/memm-ner.png differ diff --git a/portail/references_portail.odt b/portail/references_portail.odt new file mode 100644 index 0000000..faa8e41 Binary files /dev/null and b/portail/references_portail.odt differ diff --git a/systeme-qa-factuel.drawio b/systeme-qa-factuel.drawio new file mode 100644 index 0000000..b6fddcf --- /dev/null +++ b/systeme-qa-factuel.drawio @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/systeme-qa-factuel.png b/systeme-qa-factuel.png new file mode 100644 index 0000000..5f1592d Binary files /dev/null and b/systeme-qa-factuel.png differ