Upgrade to Pro — share decks privately, control downloads, hide ads and more …

SemWiktionary

 SemWiktionary

Java API to locally access data from Wiktionary, a collaboratively-edited, free dictionary. Specific target is the French Wiktionary.
End of studies project at Polytech'Nice-Sophia engineering school.
https://github.com/MattiSG/SemWiktionary

Matti Schneider

March 09, 2012
Tweet

More Decks by Matti Schneider

Other Decks in Programming

Transcript

  1. SEMWIKTIONARY
    Accès sémantique au Wiktionnaire
    API | Fabien Brossier & Dong Thinh & Matti Schneider
    Preuve de concept | Steven Sancho
    Encadrants | Michel Gautero & Carine Fédèle
    1
    Polytech’Nice-Sophia
    9 mars 2012

    View Slide

  2. SEMWIKTIONARY
    dictionnaire
    libre & collaboratif
    même format que Wikipédia
    2
    Le Wiktionary est un dictionnaire opéré par la Wikimedia Foundation, l’association
    responsable de Wikipédia. Chaque mot fait l’objet d’un article, d’une page sur le site.

    View Slide

  3. SEMWIKTIONARY
    3
    Chaque mot contient des données linéaires, telles que prononciation ou langue…
    …mais également des relations sémantiques entre les mots, classiques comme la synonymie
    et l’antonimie, mais également plus avancées, telles que la méronymie, l’holonymie…

    View Slide

  4. SEMWIKTIONARY
    données linéaires
    3
    Chaque mot contient des données linéaires, telles que prononciation ou langue…
    …mais également des relations sémantiques entre les mots, classiques comme la synonymie
    et l’antonimie, mais également plus avancées, telles que la méronymie, l’holonymie…

    View Slide

  5. SEMWIKTIONARY
    données linéaires
    relations sémantiques
    antonymie, synonymie…
    3
    Chaque mot contient des données linéaires, telles que prononciation ou langue…
    …mais également des relations sémantiques entre les mots, classiques comme la synonymie
    et l’antonimie, mais également plus avancées, telles que la méronymie, l’holonymie…

    View Slide

  6. SEMWIK
    TIONARY
    4

    View Slide

  7. SEMWIK
    TIONARY
    1. Contraintes
    4

    View Slide

  8. SEMWIK
    TIONARY
    1. Contraintes
    2. Vision
    4

    View Slide

  9. SEMWIK
    TIONARY
    1. Contraintes
    2. Vision
    3. Implémentation
    4

    View Slide

  10. SEMWIK
    TIONARY
    1. Contraintes
    2. Vision
    3. Implémentation
    4. Gestion du projet
    4

    View Slide

  11. CONTRAINTES
    5

    View Slide

  12. TECHNOLOGIES
    6
    On nous a demandé d’utiliser une base de données NoSQL plutôt que les technologies du
    web sémantique.
    NoSQL : Not Only SQL.
    Neo4j nous a été suggéré par notre encadrant et, après analyse des différentes possibilités, il
    s’agissait effectivement de la solution la plus pertinente (NoSQL + Java + format de données
    adapté aux graphes).

    View Slide

  13. TECHNOLOGIES
    Java
    6
    On nous a demandé d’utiliser une base de données NoSQL plutôt que les technologies du
    web sémantique.
    NoSQL : Not Only SQL.
    Neo4j nous a été suggéré par notre encadrant et, après analyse des différentes possibilités, il
    s’agissait effectivement de la solution la plus pertinente (NoSQL + Java + format de données
    adapté aux graphes).

    View Slide

  14. TECHNOLOGIES
    Java
    base de données NoSQL
    6
    On nous a demandé d’utiliser une base de données NoSQL plutôt que les technologies du
    web sémantique.
    NoSQL : Not Only SQL.
    Neo4j nous a été suggéré par notre encadrant et, après analyse des différentes possibilités, il
    s’agissait effectivement de la solution la plus pertinente (NoSQL + Java + format de données
    adapté aux graphes).

    View Slide

  15. TECHNOLOGIES
    Java
    base de données NoSQL
    orientée graphe
    6
    On nous a demandé d’utiliser une base de données NoSQL plutôt que les technologies du
    web sémantique.
    NoSQL : Not Only SQL.
    Neo4j nous a été suggéré par notre encadrant et, après analyse des différentes possibilités, il
    s’agissait effectivement de la solution la plus pertinente (NoSQL + Java + format de données
    adapté aux graphes).

    View Slide

  16. TECHNOLOGIES
    Java
    base de données NoSQL
    orientée graphe
    Neo4j
    6
    On nous a demandé d’utiliser une base de données NoSQL plutôt que les technologies du
    web sémantique.
    NoSQL : Not Only SQL.
    Neo4j nous a été suggéré par notre encadrant et, après analyse des différentes possibilités, il
    s’agissait effectivement de la solution la plus pertinente (NoSQL + Java + format de données
    adapté aux graphes).

    View Slide

  17. SOURCE DE DONNÉES
    7
    Wiktionnaire français => descriptions françaises, mais de mots internationaux
    Fichier de novembre 2011 :
    - 58 324 698 lignes
    - 2 124 047 mots

    View Slide

  18. SOURCE DE DONNÉES
    Wiktionary français
    7
    Wiktionnaire français => descriptions françaises, mais de mots internationaux
    Fichier de novembre 2011 :
    - 58 324 698 lignes
    - 2 124 047 mots

    View Slide

  19. SOURCE DE DONNÉES
    Wiktionary français
    descriptions en français
    7
    Wiktionnaire français => descriptions françaises, mais de mots internationaux
    Fichier de novembre 2011 :
    - 58 324 698 lignes
    - 2 124 047 mots

    View Slide

  20. SOURCE DE DONNÉES
    Wiktionary français
    descriptions en français
    dump XML
    généré tous les mois
    1,8 Go ; 58+ millions de lignes
    2 000 000+ mots
    < m e d i a w i k i x m l n s = " h t t p : / /
    www.mediawiki.org/xml/export-0.5/"
    xmlns:xsi="http://www.w3.org/2001/
    X M L S c h e m a - i n s t a n c e "
    xsi:sc hemaLocation="http://
    www.mediawiki.org/xml/export-0.5/
    http://www.mediawiki.org/xml/
    export-0.5.xsd" version="0.5" xml:lang="fr">

    Wiktionnaire
    http://fr.wiktionary.org/wiki/
    Wiktionnaire:Page_d%E2%80%99accueil
    MediaWiki 1.18wmf1
    case-sensitive

    Média
    Spécial

    Discussion
    Utilisateur

    View Slide

  21. OBJECTIFS
    8

    View Slide

  22. OBJECTIFS
    données
    8

    View Slide

  23. OBJECTIFS
    données
    nature
    8
    nom

    View Slide

  24. OBJECTIFS
    données
    nature
    définitions
    8
    déf
    nom

    View Slide

  25. OBJECTIFS
    données
    nature
    définitions
    le plus de relations possible
    8
    déf
    nom

    View Slide

  26. OBJECTIFS
    données
    nature
    définitions
    le plus de relations possible
    performance
    8

    View Slide

  27. OBJECTIFS
    données
    nature
    définitions
    le plus de relations possible
    performance
    requête : 5 minutes
    8

    View Slide

  28. OBJECTIFS
    données
    nature
    définitions
    le plus de relations possible
    performance
    requête : 5 minutes
    initialisation données : 24h
    8

    View Slide

  29. VISION
    9

    View Slide

  30. THESAURUS OPENOFFICE
    traitement de texte libre
    retrouver un terme à partir d’une idée
    intégré à OpenOffice
    …dictionnaire des synonymes
    objectif : faciliter la recherche
    10
    Prenons pour commencer un des sens qu’offre le Wiktionnaire à ce terme. Il est dit qu’il s’agit
    d’un vocabulaire normalisé sur la base de termes génériques et de termes spécifiques à un
    domaine. On peut également le définir de la manière suivante : un thésaurus est d'abord un
    ouvrage pratique. C'est un dictionnaire d’analogies généralisé qui permet de trouver un mot
    juste à partir d'une idée.

    View Slide

  31. MOYENS
    utiliser toutes les relations sémantiques
    présentées de manière contextuelle
    stockées dans un fichier de données
    11
    - menu contextuel
    - bulles informatives
    Exemple : WikiSaurus

    View Slide

  32. EXEMPLE
    regroupements sur un terme
    construit par récursivité sur
    les synonymes
    un type de relation par ligne
    12
    But : retrouver les idées associées au terme entré

    View Slide

  33. PROJETS CLIENTS
    13
    SemPol : permettre la recherche de thèmes dans les programmes des candidats à l’élection
    présidentielle en utilisant le vocabulaire apparenté à la requête de l’utilisateur.

    View Slide

  34. PROJETS CLIENTS
    thésaurus pour OpenOffice
    13
    SemPol : permettre la recherche de thèmes dans les programmes des candidats à l’élection
    présidentielle en utilisant le vocabulaire apparenté à la requête de l’utilisateur.

    View Slide

  35. PROJETS CLIENTS
    thésaurus pour OpenOffice
    SemPol
    mini-projet Web Sémantique
    augmentation des programmes
    politiques
    13
    SemPol : permettre la recherche de thèmes dans les programmes des candidats à l’élection
    présidentielle en utilisant le vocabulaire apparenté à la requête de l’utilisateur.

    View Slide

  36. IMPLÉMENTATION
    14

    View Slide

  37. xmlns="http://
    www.mediawiki.org/xml/
    export-0.5/"
    xmlns:xsi="http://www.w3.org/2001/
    XMLSchema-instance"
    xsi:schemaLocation="http://
    www.mediawiki.org/xml/export-0.5/
    http://www.mediawiki.org/xml/
    export-0.5.xsd" version="0.5"
    xml:lang="fr">

    Wiktionnaire
    sitename>
    http://fr.wiktionary.org/
    Dumpfile XML Neo4j
    FLOT
    API SemWiktionary
    Parsing Désérialisation
    15

    View Slide

  38. xmlns="http://
    www.mediawiki.org/xml/
    export-0.5/"
    xmlns:xsi="http://www.w3.org/2001/
    XMLSchema-instance"
    xsi:schemaLocation="http://
    www.mediawiki.org/xml/export-0.5/
    http://www.mediawiki.org/xml/
    export-0.5.xsd" version="0.5"
    xml:lang="fr">

    Wiktionnaire
    sitename>
    http://fr.wiktionary.org/
    Dumpfile XML Neo4j
    FLOT
    API SemWiktionary
    Parsing Désérialisation
    16

    View Slide

  39. ANALYSEUR
    17
    La source analysée par le parser était le dumpfile Wiktionary.
    Nous avons recherché des analyseurs existant.
    Malheureusement, ils étaient soit spécialisés pour Wikipédia, comme par exemple Xwiki ou
    WikiModel, soit ils ne faisaient que transformer le formatage Mediawiki en HTML, ce qui
    n’était pas utile pour nous.

    View Slide

  40. ANALYSEUR
    analyse du dumpfile
    17
    < m e d i a w i k i x m l n s = " h t t p : / /
    www.mediawiki.org/xml/export-0.5/"
    xmlns:xsi="http://www.w3.org/2001/
    X M L S c h e m a - i n s t a n c e "
    xsi:sc hemaLocation="http://
    www.mediawiki.org/xml/export-0.5/
    http://www.mediawiki.org/xml/
    export-0.5.xsd" version="0.5" xml:lang="fr">

    Wiktionnaire
    http://fr.wiktionary.org/wiki/
    Wiktionnaire:Page_d%E2%80%99accueil
    MediaWiki 1.18wmf1
    case-sensitive

    Média
    Spécial

    Discussion
    Utilisateur

    View Slide

  41. ANALYSEUR
    analyse du dumpfile
    analyseurs existant
    17
    < m e d i a w i k i x m l n s = " h t t p : / /
    www.mediawiki.org/xml/export-0.5/"
    xmlns:xsi="http://www.w3.org/2001/
    X M L S c h e m a - i n s t a n c e "
    xsi:sc hemaLocation="http://
    www.mediawiki.org/xml/export-0.5/
    http://www.mediawiki.org/xml/
    export-0.5.xsd" version="0.5" xml:lang="fr">

    Wiktionnaire
    http://fr.wiktionary.org/wiki/
    Wiktionnaire:Page_d%E2%80%99accueil
    MediaWiki 1.18wmf1
    case-sensitive

    Média
    Spécial

    Discussion
    Utilisateur

    View Slide

  42. ANALYSEUR
    analyse du dumpfile
    analyseurs existant
    …spécialisés Wikipédia
    ou formatage textuel seul
    17
    < m e d i a w i k i x m l n s = " h t t p : / /
    www.mediawiki.org/xml/export-0.5/"
    xmlns:xsi="http://www.w3.org/2001/
    X M L S c h e m a - i n s t a n c e "
    xsi:sc hemaLocation="http://
    www.mediawiki.org/xml/export-0.5/
    http://www.mediawiki.org/xml/
    export-0.5.xsd" version="0.5" xml:lang="fr">

    Wiktionnaire
    http://fr.wiktionary.org/wiki/
    Wiktionnaire:Page_d%E2%80%99accueil
    MediaWiki 1.18wmf1
    case-sensitive

    Média
    Spécial

    Discussion
    Utilisateur

    View Slide

  43. ANALYSEUR
    analyse du dumpfile
    analyseurs existant
    …spécialisés Wikipédia
    ou formatage textuel seul
    JFlex
    17
    < m e d i a w i k i x m l n s = " h t t p : / /
    www.mediawiki.org/xml/export-0.5/"
    xmlns:xsi="http://www.w3.org/2001/
    X M L S c h e m a - i n s t a n c e "
    xsi:sc hemaLocation="http://
    www.mediawiki.org/xml/export-0.5/
    http://www.mediawiki.org/xml/
    export-0.5.xsd" version="0.5" xml:lang="fr">

    Wiktionnaire
    http://fr.wiktionary.org/wiki/
    Wiktionnaire:Page_d%E2%80%99accueil
    MediaWiki 1.18wmf1
    case-sensitive

    Média
    Spécial

    Discussion
    Utilisateur

    View Slide

  44. ANALYSEUR
    analyse du dumpfile
    analyseurs existant
    …spécialisés Wikipédia
    ou formatage textuel seul
    JFlex
    lexer pour Java
    syntaxe Lex / Bison
    17
    < m e d i a w i k i x m l n s = " h t t p : / /
    www.mediawiki.org/xml/export-0.5/"
    xmlns:xsi="http://www.w3.org/2001/
    X M L S c h e m a - i n s t a n c e "
    xsi:sc hemaLocation="http://
    www.mediawiki.org/xml/export-0.5/
    http://www.mediawiki.org/xml/
    export-0.5.xsd" version="0.5" xml:lang="fr">

    Wiktionnaire
    http://fr.wiktionary.org/wiki/
    Wiktionnaire:Page_d%E2%80%99accueil
    MediaWiki 1.18wmf1
    case-sensitive

    Média
    Spécial

    Discussion
    Utilisateur

    View Slide

  45. COMPILATION
    18
    Normalement, le processus de compilation s’effectue en trois phases :
    Phase lexicale : transformation de groupes de caractères en jetons.
    Phase syntaxique : vérification de la validité des groupes de jetons.
    Phase sémantique : actions en fonction des groupes de jetons valides.
    Mais ici, la grammaire est ambigu. Par exemple, on ne peut pas distinguer le gras de

    View Slide

  46. Sémantique
    Syntaxique
    COMPILATION
    3 phases d’analyse
    18
    Lexical
    Normalement, le processus de compilation s’effectue en trois phases :
    Phase lexicale : transformation de groupes de caractères en jetons.
    Phase syntaxique : vérification de la validité des groupes de jetons.
    Phase sémantique : actions en fonction des groupes de jetons valides.
    Mais ici, la grammaire est ambigu. Par exemple, on ne peut pas distinguer le gras de

    View Slide

  47. Sémantique
    Syntaxique
    COMPILATION
    3 phases d’analyse
    grammaire ambiguë
    18
    Lexical
    ’’’
    ’’’
    ’’’
    ?
    Normalement, le processus de compilation s’effectue en trois phases :
    Phase lexicale : transformation de groupes de caractères en jetons.
    Phase syntaxique : vérification de la validité des groupes de jetons.
    Phase sémantique : actions en fonction des groupes de jetons valides.
    Mais ici, la grammaire est ambigu. Par exemple, on ne peut pas distinguer le gras de

    View Slide

  48. Sémantique
    Syntaxique
    COMPILATION
    3 phases d’analyse
    grammaire ambiguë
    rédaction par des
    internautes
    18
    Lexical
    ’’’
    ’’’
    ’’’
    ?
    #
    Normalement, le processus de compilation s’effectue en trois phases :
    Phase lexicale : transformation de groupes de caractères en jetons.
    Phase syntaxique : vérification de la validité des groupes de jetons.
    Phase sémantique : actions en fonction des groupes de jetons valides.
    Mais ici, la grammaire est ambigu. Par exemple, on ne peut pas distinguer le gras de

    View Slide

  49. Sémantique
    Syntaxique
    COMPILATION
    3 phases d’analyse
    grammaire ambiguë
    rédaction par des
    internautes
    18
    Lexical
    ’’’
    ’’’
    ’’’
    ?
    *
    :
    #
    -
    Normalement, le processus de compilation s’effectue en trois phases :
    Phase lexicale : transformation de groupes de caractères en jetons.
    Phase syntaxique : vérification de la validité des groupes de jetons.
    Phase sémantique : actions en fonction des groupes de jetons valides.
    Mais ici, la grammaire est ambigu. Par exemple, on ne peut pas distinguer le gras de

    View Slide

  50. Sémantique
    Syntaxique
    COMPILATION
    3 phases d’analyse
    grammaire ambiguë
    rédaction par des
    internautes
    parser officiel multi-passes
    performance ?
    18
    Lexical
    ’’’
    ’’’
    ’’’
    ?
    *
    :
    #
    -
    Normalement, le processus de compilation s’effectue en trois phases :
    Phase lexicale : transformation de groupes de caractères en jetons.
    Phase syntaxique : vérification de la validité des groupes de jetons.
    Phase sémantique : actions en fonction des groupes de jetons valides.
    Mais ici, la grammaire est ambigu. Par exemple, on ne peut pas distinguer le gras de

    View Slide

  51. Sémantique
    Syntaxique
    COMPILATION
    3 phases d’analyse
    grammaire ambiguë
    rédaction par des
    internautes
    parser officiel multi-passes
    performance ?
    une seule passe !
    18
    Lexical
    ’’’
    ’’’
    ’’’
    ?
    *
    :
    #
    -
    Normalement, le processus de compilation s’effectue en trois phases :
    Phase lexicale : transformation de groupes de caractères en jetons.
    Phase syntaxique : vérification de la validité des groupes de jetons.
    Phase sémantique : actions en fonction des groupes de jetons valides.
    Mais ici, la grammaire est ambigu. Par exemple, on ne peut pas distinguer le gras de

    View Slide

  52. CONCEPTION
    19
    “à la volée” : actions faites au moment de la reconnaissance d’un caractère
    Pour écrire le parser, nous avons utilisé les spécifications MediaWiki pour les parties lexicales
    et syntaxiques.
    Pour la partie sémantique, nous avons lu la documentation du Wiktionnaire.

    View Slide

  53. CONCEPTION
    traitement à la volée XML
    PAGE
    TITLE MEDIAWIKI
    LANG
    H2
    NATURE



    [^<:]+"<"
    [^<:]+
    .
    == {{=
    fr=
    {{-
    verb|nom|…
    -("|"[a-z]+
    .
    GLYPH [^-]+
    == {{-
    -}
    DB store, no data
    .
    .
    conv=
    .
    .

    19
    “à la volée” : actions faites au moment de la reconnaissance d’un caractère
    Pour écrire le parser, nous avons utilisé les spécifications MediaWiki pour les parties lexicales
    et syntaxiques.
    Pour la partie sémantique, nous avons lu la documentation du Wiktionnaire.

    View Slide

  54. CONCEPTION
    traitement à la volée
    lexique & syntaxique :
    spécifications Mediawiki
    XML
    PAGE
    TITLE MEDIAWIKI
    LANG
    H2
    NATURE



    [^<:]+"<"
    [^<:]+
    .
    == {{=
    fr=
    {{-
    verb|nom|…
    -("|"[a-z]+
    .
    GLYPH [^-]+
    == {{-
    -}
    DB store, no data
    .
    .
    conv=
    .
    .

    19
    “à la volée” : actions faites au moment de la reconnaissance d’un caractère
    Pour écrire le parser, nous avons utilisé les spécifications MediaWiki pour les parties lexicales
    et syntaxiques.
    Pour la partie sémantique, nous avons lu la documentation du Wiktionnaire.

    View Slide

  55. CONCEPTION
    traitement à la volée
    lexique & syntaxique :
    spécifications Mediawiki
    sémantique :
    conventions Wiktionnaire
    XML
    PAGE
    TITLE MEDIAWIKI
    LANG
    H2
    NATURE



    [^<:]+"<"
    [^<:]+
    .
    == {{=
    fr=
    {{-
    verb|nom|…
    -("|"[a-z]+
    .
    GLYPH [^-]+
    == {{-
    -}
    DB store, no data
    .
    .
    conv=
    .
    .

    19
    “à la volée” : actions faites au moment de la reconnaissance d’un caractère
    Pour écrire le parser, nous avons utilisé les spécifications MediaWiki pour les parties lexicales
    et syntaxiques.
    Pour la partie sémantique, nous avons lu la documentation du Wiktionnaire.

    View Slide

  56. CONCEPTION
    traitement à la volée
    lexique & syntaxique :
    spécifications Mediawiki
    sémantique :
    conventions Wiktionnaire
    heuristiques de résilience
    listes mal formées,
    délimiteurs mal placés…
    XML
    PAGE
    TITLE MEDIAWIKI
    LANG
    H2
    NATURE



    [^<:]+"<"
    [^<:]+
    .
    == {{=
    fr=
    {{-
    verb|nom|…
    -("|"[a-z]+
    .
    GLYPH [^-]+
    == {{-
    -}
    DB store, no data
    .
    .
    conv=
    .
    .

    19
    “à la volée” : actions faites au moment de la reconnaissance d’un caractère
    Pour écrire le parser, nous avons utilisé les spécifications MediaWiki pour les parties lexicales
    et syntaxiques.
    Pour la partie sémantique, nous avons lu la documentation du Wiktionnaire.

    View Slide

  57. PERFORMANCES
    20
    Notre parser prenait plus que la limite de 24h.
    Nous avons donc cherché le point limitant pour améliorer les performances.
    Statistiques système : analyse des ressources utilisées par le parser.
    Le processeur n’était utilisé qu’à 40%, RAM stable, mais disque dur très sollicité.

    View Slide

  58. PERFORMANCES
    > 24 h
    20
    Notre parser prenait plus que la limite de 24h.
    Nous avons donc cherché le point limitant pour améliorer les performances.
    Statistiques système : analyse des ressources utilisées par le parser.
    Le processeur n’était utilisé qu’à 40%, RAM stable, mais disque dur très sollicité.

    View Slide

  59. PERFORMANCES
    > 24 h
    recherche point limitant
    20
    Notre parser prenait plus que la limite de 24h.
    Nous avons donc cherché le point limitant pour améliorer les performances.
    Statistiques système : analyse des ressources utilisées par le parser.
    Le processeur n’était utilisé qu’à 40%, RAM stable, mais disque dur très sollicité.

    View Slide

  60. PERFORMANCES
    > 24 h
    recherche point limitant
    statistiques système
    disque dur
    20
    Notre parser prenait plus que la limite de 24h.
    Nous avons donc cherché le point limitant pour améliorer les performances.
    Statistiques système : analyse des ressources utilisées par le parser.
    Le processeur n’était utilisé qu’à 40%, RAM stable, mais disque dur très sollicité.

    View Slide

  61. PERFORMANCES
    > 24 h
    recherche point limitant
    statistiques système
    disque dur
    profiler
    base de données
    20
    Notre parser prenait plus que la limite de 24h.
    Nous avons donc cherché le point limitant pour améliorer les performances.
    Statistiques système : analyse des ressources utilisées par le parser.
    Le processeur n’était utilisé qu’à 40%, RAM stable, mais disque dur très sollicité.

    View Slide

  62. PERFORMANCES
    > 24 h
    recherche point limitant
    statistiques système
    disque dur
    profiler
    base de données
    revue de code
    optimisation des transactions
    20
    Notre parser prenait plus que la limite de 24h.
    Nous avons donc cherché le point limitant pour améliorer les performances.
    Statistiques système : analyse des ressources utilisées par le parser.
    Le processeur n’était utilisé qu’à 40%, RAM stable, mais disque dur très sollicité.

    View Slide

  63. PERFORMANCES
    20
    30 minutes
    2 129 608 mots
    Notre parser prenait plus que la limite de 24h.
    Nous avons donc cherché le point limitant pour améliorer les performances.
    Statistiques système : analyse des ressources utilisées par le parser.
    Le processeur n’était utilisé qu’à 40%, RAM stable, mais disque dur très sollicité.

    View Slide

  64. xmlns="http://
    www.mediawiki.org/xml/
    export-0.5/"
    xmlns:xsi="http://www.w3.org/2001/
    XMLSchema-instance"
    xsi:schemaLocation="http://
    www.mediawiki.org/xml/export-0.5/
    http://www.mediawiki.org/xml/
    export-0.5.xsd" version="0.5"
    xml:lang="fr">

    Wiktionnaire
    sitename>
    http://fr.wiktionary.org/
    Dumpfile XML Neo4j
    FLOT
    API SemWiktionary
    Parsing Désérialisation
    21
    Passer la parole à Fabien.

    View Slide

  65. xmlns="http://
    www.mediawiki.org/xml/
    export-0.5/"
    xmlns:xsi="http://www.w3.org/2001/
    XMLSchema-instance"
    xsi:schemaLocation="http://
    www.mediawiki.org/xml/export-0.5/
    http://www.mediawiki.org/xml/
    export-0.5.xsd" version="0.5"
    xml:lang="fr">

    Wiktionnaire
    sitename>
    http://fr.wiktionary.org/
    Dumpfile XML Neo4j
    FLOT
    API SemWiktionary
    Parsing Désérialisation
    22

    View Slide

  66. NEO4J
    23

    View Slide

  67. NEO4J
    “orientée graphes”
    23

    View Slide

  68. NEO4J
    “orientée graphes”
    …un simple graphe !
    23

    View Slide

  69. NEO4J
    “orientée graphes”
    …un simple graphe !
    transactions
    23

    View Slide

  70. NEO4J
    “orientée graphes”
    …un simple graphe !
    transactions
    indexation
    nœuds spécifiques + Lucene
    23

    View Slide

  71. MODÉLISATION
    24
    Propriétés simples : écriture phonétique…
    Propriétés multiples : définitions…

    View Slide

  72. MODÉLISATION
    mots
    24
    Propriétés simples : écriture phonétique…
    Propriétés multiples : définitions…

    View Slide

  73. MODÉLISATION
    mots
    nœuds
    24
    Propriétés simples : écriture phonétique…
    Propriétés multiples : définitions…

    View Slide

  74. /ʦ!.ʣø/

    MODÉLISATION
    mots
    nœuds
    propriétés simples
    24
    Propriétés simples : écriture phonétique…
    Propriétés multiples : définitions…

    View Slide

  75. /ʦ!.ʣø/

    MODÉLISATION
    mots
    nœuds
    propriétés simples
    liens sémantiques : arcs
    synonyme antonyme
    24
    Propriétés simples : écriture phonétique…
    Propriétés multiples : définitions…

    View Slide

  76. /ʦ!.ʣø/

    MODÉLISATION
    mots
    nœuds
    propriétés simples
    liens sémantiques : arcs
    propriétés multiples
    définitions…
    déf
    déf déf
    synonyme antonyme
    24
    Propriétés simples : écriture phonétique…
    Propriétés multiples : définitions…

    View Slide

  77. MODÉLISATION
    25
    Nature lexicale : verbe, nom commun, adjectif…

    View Slide

  78. adj
    nom
    nom
    MODÉLISATION
    types partagés
    nature lexicale, genre…
    25
    Nature lexicale : verbe, nom commun, adjectif…

    View Slide

  79. adj
    nom
    nom
    MODÉLISATION
    types partagés
    nature lexicale, genre…
    propriété simple
    …mais commune
    25
    Nature lexicale : verbe, nom commun, adjectif…

    View Slide

  80. adj
    nom
    nom
    MODÉLISATION
    types partagés
    nature lexicale, genre…
    propriété simple
    …mais commune
    un nœud par type,
    relations de typage
    type
    type
    type
    25
    Nature lexicale : verbe, nom commun, adjectif…

    View Slide

  81. xmlns="http://
    www.mediawiki.org/xml/
    export-0.5/"
    xmlns:xsi="http://www.w3.org/2001/
    XMLSchema-instance"
    xsi:schemaLocation="http://
    www.mediawiki.org/xml/export-0.5/
    http://www.mediawiki.org/xml/
    export-0.5.xsd" version="0.5"
    xml:lang="fr">

    Wiktionnaire
    sitename>
    http://fr.wiktionary.org/
    Dumpfile XML Neo4j
    FLOT
    API SemWiktionary
    Parsing Désérialisation
    26

    View Slide

  82. xmlns="http://
    www.mediawiki.org/xml/
    export-0.5/"
    xmlns:xsi="http://www.w3.org/2001/
    XMLSchema-instance"
    xsi:schemaLocation="http://
    www.mediawiki.org/xml/export-0.5/
    http://www.mediawiki.org/xml/
    export-0.5.xsd" version="0.5"
    xml:lang="fr">

    Wiktionnaire
    sitename>
    http://fr.wiktionary.org/
    Dumpfile XML Neo4j
    FLOT
    API SemWiktionary
    Parsing Désérialisation
    27

    View Slide

  83. MODÈLE OBJET
    28

    View Slide

  84. MODÈLE OBJET
    découplage
    28

    View Slide

  85. MODÈLE OBJET
    découplage
    API Read-only (Ro)
    Definition Word
    Lexical
    Category
    28

    View Slide

  86. MODÈLE OBJET
    découplage
    API Read-only (Ro)
    API CRUD
    Definition Word
    Lexical
    Category
    Mutable
    Word
    Mutable
    Lexical
    Category
    28

    View Slide

  87. MODÈLE OBJET
    découplage
    API Read-only (Ro)
    API CRUD
    abstraction
    Object-Graph Mapping
    réflexivité avancée
    Node
    Mapped
    Object
    Definition Word
    Lexical
    Category
    Mutable
    Word
    Mutable
    Lexical
    Category
    28

    View Slide

  88. API
    29

    View Slide

  89. API
    Recherche dans la base
    Word hello = Word.find("bonjour");
    29

    View Slide

  90. API
    Recherche dans la base
    Word hello = Word.find("bonjour");
    Accès aux relations
    for (Word synonym : hello.getSynonyms())
    println("Synonyme : " + synonym);
    29

    View Slide

  91. API
    Recherche dans la base
    Word hello = Word.find("bonjour");
    Accès aux relations
    for (Word synonym : hello.getSynonyms())
    println("Synonyme : " + synonym);
    Modification
    MutableWord hi = MutableWord.obtain("salut");
    hi.addSynonym(hello);
    29

    View Slide

  92. 30
    API
    Recherche dans la base
    Word hello = Word.find("bonjour");
    Accès aux relations
    for (Word synonym : hello.getSynonyms())
    println("Synonyme : " + synonym);
    Modification
    MutableWord hi = MutableWord.obtain("salut");
    hi.addSynonym(hello);
    Demo

    View Slide

  93. DISTRIBUTION
    31

    View Slide

  94. DISTRIBUTION
    bibliothèque JAR
    31

    View Slide

  95. DISTRIBUTION
    bibliothèque JAR
    base de données préremplie
    75 Mo à télécharger
    31

    View Slide

  96. DISTRIBUTION
    bibliothèque JAR
    base de données préremplie
    75 Mo à télécharger
    choix d’utilisation
    Ro / CRUD
    31

    View Slide

  97. DISTRIBUTION
    bibliothèque JAR
    base de données préremplie
    75 Mo à télécharger
    choix d’utilisation
    Ro / CRUD
    31

    View Slide

  98. GESTION DU PROJET
    32

    View Slide

  99. RÉPARTITION
    33

    View Slide

  100. RÉPARTITION
    cœur : API
    gestion agile
    3 personnes
    33

    View Slide

  101. RÉPARTITION
    cœur : API
    gestion agile
    3 personnes
    preuve de concept
    en parallèle
    simuler retours utilisateurs
    33

    View Slide

  102. MÉTHODOLOGIE
    objectifs :
    livraison & qualité
    34

    View Slide

  103. MÉTHODOLOGIE
    objectifs :
    livraison & qualité
    méthodes & outils agiles
    34

    View Slide

  104. MÉTHODOLOGIE
    objectifs :
    livraison & qualité
    méthodes & outils agiles
    Scrum
    34

    View Slide

  105. MÉTHODOLOGIE
    objectifs :
    livraison & qualité
    méthodes & outils agiles
    Scrum
    Planning poker
    34

    View Slide

  106. MÉTHODOLOGIE
    objectifs :
    livraison & qualité
    méthodes & outils agiles
    Scrum
    Planning poker
    valuation client
    34

    View Slide

  107. MÉTHODOLOGIE
    objectifs :
    livraison & qualité
    méthodes & outils agiles
    Scrum
    Planning poker
    valuation client
    Kanban
    34

    View Slide

  108. GÉNIE LOGICIEL
    35

    View Slide

  109. GÉNIE LOGICIEL
    Git
    35

    View Slide

  110. GÉNIE LOGICIEL
    Git
    Ant
    automatisation des tâches
    35
    • jflex
    • compile
    • junit
    • parse
    • doc
    • package
    • erase_db
    • clean

    View Slide

  111. GÉNIE LOGICIEL
    Git
    Ant
    automatisation des tâches
    JUnit
    tests unitaires
    prévention des régressions
    35
    • 43 types de tests
    • 35 mots
    représentatifs

    View Slide

  112. GÉNIE LOGICIEL
    Git
    Ant
    automatisation des tâches
    JUnit
    tests unitaires
    prévention des régressions
    GitHub Flow
    une branche nommée par fonctionnalité
    branche master toujours déployable
    35
    • 487 commits
    • 18 pull requests

    View Slide

  113. AMÉLIORATIONS
    36

    View Slide

  114. AMÉLIORATIONS
    ajout de relations
    36

    View Slide

  115. AMÉLIORATIONS
    ajout de relations
    compatibilité Windows
    problèmes d’encodage
    36

    View Slide

  116. CONCLUSION
    10 types de données sur 23
    37
    ✓ définitions
    ✓ nature
    ✓ synonymes
    ✓ antonymes
    ✓ troponymes
    ✓ hyperonymes
    ✓ hyponymes
    ✓ méronymes
    ✓ holonymes
    ✓ vocabulaire
    apparenté
    ✓ définitions
    ✓ nature
    ✓ synonymes
    ✓ antonymes
    ✓ troponymes
    ✓ hyperonymes
    ✓ hyponymes
    ✓ méronymes
    ✓ holonymes
    ✓ vocabulaire
    apparenté

    View Slide

  117. CONCLUSION
    10 types de données sur 23
    75% de la valeur client
    37

    View Slide

  118. CONCLUSION
    10 types de données sur 23
    75% de la valeur client
    performances excellentes
    accès quasi-immédiat
    37

    View Slide

  119. CONCLUSION
    10 types de données sur 23
    75% de la valeur client
    performances excellentes
    accès quasi-immédiat
    API extrêmement simple
    37

    View Slide

  120. CONCLUSION
    10 types de données sur 23
    75% de la valeur client
    performances excellentes
    accès quasi-immédiat
    API extrêmement simple
    bonne documentation
    37

    View Slide

  121. CONCLUSION
    10 types de données sur 23
    75% de la valeur client
    performances excellentes
    accès quasi-immédiat
    API extrêmement simple
    bonne documentation
    usage
    37

    View Slide

  122. CONCLUSION
    10 types de données sur 23
    75% de la valeur client
    performances excellentes
    accès quasi-immédiat
    API extrêmement simple
    bonne documentation
    usage
    processus
    37

    View Slide

  123. MERCI !
    DES QUESTIONS ?
    Auteurs
    Fabien Brossier
    Dong Thinh
    Matti Schneider
    Steven Sancho
    Encadrants
    Michel Gautero
    Carine Fédèle
    Remerciements
    Christophe Desclaux
    Images & logos
    Wiktionary © Wikimedia
    Foundation
    Neo4j © Neo4j
    OpenOffice - Public domain
    GitHub © GitHub
    Ant © Apache
    Windows © Microsoft
    Loupe CC-BY
    The Noun Project
    All other icons © Apple
    Photos CC-BY Matti
    38

    View Slide