OK
AJAX error!

Les forumsGrammalecteLocutions pour le lexicographe

Locutions pour le lexicographe

Dans la langue française nous avons de nombreuses locutions.

Ma question (sans doute très bête) c'est comment penses-tu qu'il est le mieux pour qu'elles puissent être reconnues par le lexicographe (à la place du "mot à mot" actuel) ?

Faut-il un "dictionnaire" avec toutes les locutions et donc les chercher dans le texte et puis ensuite faire une moulinette pour complété avec le tokeniseur ?

Pour être claire j'aimerais que pour "il se fait opéré à cœur ouvert" qu'a la place de :

il:[mot grammatical] pronom personnel sujet, 3ᵉ pers., masculin singulier
se:[mot grammatical] pronom personnel objet, 3ᵉ pers., épicène singulier pluriel
fait:
•  nom, masculin singulier
•  verbe (3ᵉ gr.), présent, 3ᵉ p. sg., [faire]
•  verbe (3ᵉ gr.), participe passé, adjectif, masculin singulier [faire]
opéré:
•  nom, masculin singulier
•  verbe (1ᵉʳ gr.), participe passé, adjectif, présent interr. 1ʳᵉ p. sg., masculin singulier [opérer]
à:[mot grammatical] préposition, préposition verbale
cœur: nom, masculin singulier
ouvert: verbe (3ᵉ gr.), participe passé, adjectif, masculin singulier [ouvrir]



qu'il me donne

il:[mot grammatical] pronom personnel sujet, 3ᵉ pers., masculin singulier
se:[mot grammatical] pronom personnel objet, 3ᵉ pers., épicène singulier pluriel
fait:
•  nom, masculin singulier
•  verbe (3ᵉ gr.), présent, 3ᵉ p. sg., [faire]
•  verbe (3ᵉ gr.), participe passé, adjectif, masculin singulier [faire]
opéré:
•  nom, masculin singulier
•  verbe (1ᵉʳ gr.), participe passé, adjectif, présent interr. 1ʳᵉ p. sg., masculin singulier [opérer]
à cœur ouvert: locution adverbale



L'idéal serait même de filtrer en plus les formes des différents mots dont on est sûr qu'il ne sont pas... Mais ça me parait déjà bien plus compliqué ;)

Déjà si on pourrais avoir comme ça, ça serait vraiment super :)

il:[mot grammatical] pronom personnel sujet, 3ᵉ pers., masculin singulier
se:[mot grammatical] pronom personnel objet, 3ᵉ pers., épicène singulier pluriel
fait:
•  verbe (3ᵉ gr.), présent, 3ᵉ p. sg., [faire]
•  verbe (3ᵉ gr.), participe passé, adjectif, masculin singulier [faire]
opéré: verbe (1ᵉʳ gr.), participe passé, adjectif, présent interr. 1ʳᵉ p. sg., masculin singulier [opérer]
à cœur ouvert: locution adverbale

le 28 octobre 2017 à 12:40
Pour les locutions, à mon avis, le mieux, c’est :
— en dresser la liste,
— compiler cette liste comme un dictionnaire indexable (à la façon du dictionnaire orthographique) (un graphe),
— à chaque token envoyé par le tokeniseur, amorcer une recherche dans le graphe et voir si on peut le parcourir avec les tokens suivants,
— si on arrive un bout du graphe, alors c’est une locution.

Pour le graphe, tu peux peut-être simplement le créer avec une structure comme suit : pastebin.com…

L'idéal serait même de filtrer en plus les formes des différents mots dont on est sûr qu'il ne sont pas... Mais ça me parait déjà bien plus compliqué ;)


Quand je m’occuperai à nouveau du correcteur interne, des choses pourront être faites à ce sujet. Mais patience.
le 28 octobre 2017 à 14:47
J’ai préparé une liste des locutions et un script pour les “compiler”. C’est fait à l’arrache.
C’est un début. code.grammalecte.net…

Pour recompiler cette liste, il faut faire :
make.py fr -js -ba
le 28 octobre 2017 à 15:22
D'accord sinon perso j'ai différentes listes de locutions classées en :
* Locution nominale
* Locution adjectivale
* Locution adverbiale
* Locution conjonctive
* Locution prépositionnelle
Il y aura du tri à faire... Mais je pense qu'elles sont quand même relativement bonnes.

Penses-tu qu'il faut les séparer (donc 5 "dicos") ce qui permettra de préciser le type de locution et pour les nominales pouvoir déterminer éventuellement le genre ?

Je vais voir ce que je peux en tirer. Je te tiendrais au courant dès que j'aurais quelque chose de fonctionnel.

Note : Par contre je travaillerais sur une version javascript vu que mes connaissances en python sont limitées.
le 28 octobre 2017 à 16:14
Oui. On peut décomposer par nature grammaticale, mais j’aimerais qu’on mette tout dans le même fichier.
le 28 octobre 2017 à 16:38
Voilà. J’ai créé un fichier unique avec les mêmes étiquettes grammaticales normalisées.
Il suffit de compléter les données du fichier “gc_lang/fr/data/locutions.txt” puis de compiler pour avoir une structure de données exploitables.
Si un dictionnaire de la structure contient la clé “:”, ça veut dire que c’est un node final et cette clé contient la nature grammaticale de la locution.
le 29 octobre 2017 à 07:01
À mon avis, pour le lexicographe, il suffit de se contenter d’ajouter les infos, pas forcément de les remplacer.

Par exemple, si le lexicographe trouve « à visage découvert », on laisse l’analyse de chaque mot, puis on ajoute :
> à visage découvert : locution adverbiale.
le 29 octobre 2017 à 07:05
J'ai ouvert une nouvelle branche !
Cette nuit j'avais fait un code qui fonctionne mais c'est peut être pas super optimisé ;)
Mes listes en fait sont pas si bonnes que ce que je pensais... j'ai quand même créé un fichier locutions.txt avec.
j'avais fait autrement pour gérer les différents type de locutions.

A voir si oui ou non j'utilise une bonne méthode !
le 29 octobre 2017 à 12:25
Petite note :
pour évité les différentes forme du genre

afin que
afin qu’


dans le fichier locutions.txt je ne met sans les élisions et avec la vérification dans le graphe je transforme les forme élidé en remplaçant par un 'e'.

ça peut faire bizard vu que donc dans le fichier locutions.txt ç la place de "à l’instar de" il y a "à le instar de" qui a lui seul permet de trouver "à l’instar de" "à l’instar d'"
le 29 octobre 2017 à 12:36
Je vais regarder ça.
le 29 octobre 2017 à 12:57
Je n’ai pas eu le temps de regarder en détail ton code, mais déjà plusieurs remarques :

Remarques mineures
— Ne change pas le style du code (je mets un espace après le nom des fonctions quand je les déclare, et je n’en mets pas quand je les appelle).
— Pour les noms des branches, évite de mettre des majuscules, s’il te plaît.
— Essaye de suivre ce que je fais sur les noms de variable.

Je reconnais que c’est pas évident, je devrais peut-être pondre un texte sur le style du code… :)


Remarque importante
Le jeu de données que tu as introduit est bourré d’erreurs, et surtout ne possède aucune cohérence. Ce n’est pas utilisable en l’état.

Quand tu changes les données, ne recompile pas celles-ci à chaque fois. Ça ne sert à rien. En recompilant, tu ajoutes à chaque fois plus de 700 Ko dans le dépôt, avec les locutions. Il n’est vraiment utile de recompiler les données qu’avant la publication d’une nouvelle version ou si tu changes la structure des données.

Idéalement, il aurait fallu épurer les données avant de les commiter dans le dépôt. Bon, tant pis, c’est trop tard.

Évite aussi de commiter les modifications de données en même que les modifications de code, s’il te plaît, sauf si c’est utile bien sûr.

J’en dirai plus demain sur les données. Là, je suis trop fatigué.
le 29 octobre 2017 à 19:56
Je prend note de tes remarques.

Pour les données je suis partie de liste que j'avais et plus je les examine et moins je les trouvais pertinentes.

Sinon j'ai fait une nouvelle liste a partir de wiktionary, si tu veux je te l'envoie par email afin que tu puisses regarder si c'est plus exploitable. Par contre elle est encore plus grosses (931ko)... Par email ça évitera de faire d'important commit si ça ne conviens pas.

Donc à quel email je dois l'envoyer ?

PS : ne t’inquiète pas c'est pas presser la review, tu regarde quand tu as le temps.
le 30 octobre 2017 à 00:01
Avec les locutions de Wiktionary le fichier locutions généré est le suivant : touslesmots.com…
Vu qu'il y a une liste des locutions latine j'ai ajouté un TAG /L qui l'indique.
le 30 octobre 2017 à 11:05
Bon, j’ai revu le code, simplifié certaines choses, et fait en sorte qu’on puisse mettre des graphies élidées dans la liste des locutions.
On peut écrire « à l’aveuglette » au lieu de « à le aveuglette ».

Cela dit, je suis revenu à un échantillon très réduit de locutions, tant que les tests ne sont pas finis, tant qu’on n’a pas une liste de locutions correctes (l’incomplétude n’est pas un problème, mais les erreurs et l’inadéquation le sont).

La première liste est inacceptable (trop d’incohérences et d’erreurs). La seconde semble nettement meilleure, mais elle est tellement longue que c’est difficile d’en juger. Elle contient trop de choses inutiles et douteuses pour ce qu’on veut en faire, me semble-t-il. Créer des listes de milliers ou de dizaines de milliers d’entrées en vrac et sans contrôle engendre toujours beaucoup de bruit,et il faut prendre la peine de vérifier les entrées.

Ce qui ne pose en général aucun souci : les locutions adverbiales essentiellement et les locutions prépositives.

Pour l’instant, les locutions verbales ne tiennent pas comptent des conjugaisons, les locutions nominales sous la forme <nom>+<adjectif> sont susceptibles d’être mal identifiées et ne tiennent pas compte des pluriels.
Sans compter que si on présente les chose telles quelles, on omet la nature grammaticale de chaque mot inclus dans une locution.
le 30 octobre 2017 à 15:55
* J'ai mis à jour le fichier du lien en laissant les formes élidées. Donc peut toujours servir pour des tests "grandeur nature".

* La seconde est basée sur des liste qu'il y a sur Wiktionary, après je dois pouvoir assez facilement ajouter des informations dedans avec les info de chaque page correspondant à chacune des locutions de cette liste, donc je dois pouvoir compléter avec les formes masculine, féminine, plurielle ... et ajouter les tags correspondant à chaque locution.

Pour les locutions verbales, c'est beaucoup plus compliqué pour avoir toutes les formes conjuguées.

C'est sûr que dans la liste il y a des aberrations comme il y a des mots seul donc je peux genre facilement filtrer avec un nombre de mot min et max pour chaque locution. Pour filtrer je peux aussi tester sur chaque expression, faire une recherche google et s'il y a moins de X résultat ne pas la mettre dans la liste.

* Pour le problème qu'on ignore la forme de chaque mot dans les locutions, je pensais à une option générale qui permettrait soit d'avoir le lexicographe avec ou sans les locutions !

Autre : Comme option générale (qui n'a rien à voir avec le lexicographe) qui peut aussi être intéressant, c'est pour la délimitation des paragraphes avoir le choix entre "\n" et "\n\n" se qui permettra des retours de ligne sans changement de paragraphe ou non.
le 30 octobre 2017 à 16:51
J’ai compilé les données pour voir. Ça donne des fichiers de 1355 Ko. C’est moins que ce que je craignais. La limite de taille des fichiers pour Mozilla est de 4 Mo.

* La seconde est basée sur des liste qu'il y a sur Wiktionary, après je dois pouvoir assez facilement ajouter des informations dedans avec les info de chaque page correspondant à chacune des locutions de cette liste, donc je dois pouvoir compléter avec les formes masculine, féminine, plurielle ... et ajouter les tags correspondant à chaque locution.


Je pense qu’il faudra gérer ça au moment de l’analyse plutôt que grossir la structure du fichier (mais ce n’est pas urgent).

Pour les locutions verbales, c'est beaucoup plus compliqué pour avoir toutes les formes conjuguées.


Pas la peine de mettre ça dans la structure de données. On peut récupérer le lemme de chaque mot avec le dictionnaire si on veut.

C'est sûr que dans la liste il y a des aberrations comme il y a des mots seul donc je peux genre facilement filtrer avec un nombre de mot min et max pour chaque locution. Pour filtrer je peux aussi tester sur chaque expression, faire une recherche google et s'il y a moins de X résultat ne pas la mettre dans la liste.


Le nombre minimum de tokens c’est deux. Pour le maximum, je ne sais pas.
Le problème, c’est qu’il restera des choses dont on se passe fort bien, comme « y avoir » ou « y aller ».

* Pour le problème qu'on ignore la forme de chaque mot dans les locutions, je pensais à une option générale qui permettrait soit d'avoir le lexicographe avec ou sans les locutions !


Je préfèrerais qu’on mette une locution dans une boîte avec l’analyse de la locution.

Autre : Comme option générale (qui n'a rien à voir avec le lexicographe) qui peut aussi être intéressant, c'est la délimitation des paragraphes. Avoir le choix entre "\n" et "\n\n", ce qui permettra des retours de ligne sans changement de paragraphe ou non.


Je ne comprend pas ce que tu veux dire.
le 30 octobre 2017 à 18:09
Exemple pour le point qui n'a rien à voir directement avec le lexicographe :

Nous discutions à bâtons rompus, avançant à l’aveuglette.
Ça avance à vue d’œil.

Elle chante à contrecœur.


Actuellement quand on lance l’analyse ça donne 3 paragraphes en gros une pour chaque ligne (en ignorant la "ligne vide") et donc l'option que je pense qui pourrais être pas mal c'est que ça donne 2 paragraphes et en fait c'est donc la "ligne vide" qui indique le changement de paragraphe.

L'idée

Je préfèrerais qu’on mette une locution dans une boîte avec l’analyse de la locution.

est bonne sinon ça peut être encore plus simple donc pour les locutions simplement ajouter un élément dans le lexicographe ou c'est un tableau avec l’analyse normale des mots

let oTokenLocution = {
'nEnd': aTokenTempList[aTokenTempList.length-1].nEnd,
'nStart': aTokenTempList[0].nStart,
'sType': "LOC",
'sValue': sWord.replace('’ ','’').trim(),
'aMots': [(lstToken des mots)]
};


Et que donc visuellement l'extension ajoute une zone avec la décomposition. ça donnerait en gros :

...
discutions: verbe (1ᵉʳ gr.), imparfait, subjonctif présent, 1ʳᵉ p. pl., [discuter]
à bâtons rompus: locution adverbiale [x]
---------------------------------------------------------------------------------------
à:[mot grammatical] préposition, préposition verbale
bâtons:
•  nom, masculin pluriel
•  verbe (1ᵉʳ gr.), présent, 1ʳᵉ p. pl., [bâter]
•  verbe (1ᵉʳ gr.), impératif, 1ʳᵉ p. pl., [bâter]
rompus:
•  nom, masculin pluriel
•  verbe (3ᵉ gr.), participe passé, adjectif, masculin pluriel [rompre]
---------------------------------------------------------------------------------------
,:virgule
...


le [x] c'est éventuellement pour afficher masqué la zone explication


Pour les locutions nominales le problème essentiel c'est que certaines ne s'emploient par exemple qu'au féminin et donc si on tire les infos grâce à sa composition, on risque d'ajouter des erreurs possibles et je pense que ça sera moins performant que si on ajoute les différentes formes dans le fichier. Je vais essayer en récupérant au maximum d'info ce que ça donnera, le travail le plus long sera fait par l'ordi. lol.

Après je pense que de toutes les manières à la fin il y aura un travail de nettoyage manuel (ou semi-manuel) à faire.

Juste pour info dans le fichier actuel locutions.txt
Locution 41901 dont 205 avec le drapeau Latin
Nb lettres :2 Nb Locutions : 8
Nb lettres :3 Nb Locutions : 19069
Nb lettres :4 Nb Locutions : 15344
Nb lettres :5 Nb Locutions : 4609
Nb lettres :6 Nb Locutions : 1566
Nb lettres :7 Nb Locutions : 752
Nb lettres :8 Nb Locutions : 301 =Je pense que celles d'après on pourrait les supprimés
Nb lettres :9 Nb Locutions : 148
Nb lettres :10 Nb Locutions : 58
Nb lettres :11 Nb Locutions : 18
Nb lettres :12 Nb Locutions : 15
Nb lettres :13 Nb Locutions : 8
Nb lettres :14 Nb Locutions : 1
Nb lettres :17 Nb Locutions : 1
Nb lettres :18 Nb Locutions : 1
Nb lettres :19 Nb Locutions : 2
le 30 octobre 2017 à 18:56

la "ligne vide" qui indique le changement de paragraphe


OK, je ne vois pas l’intérêt pour le lexicographe, attendu qu’une ligne crée déjà des blocs d’analyse chargés, mais si c’est une option, ça me va.

visuellement l'extension ajoute une zone avec la décomposition.


C’est bien comme ça que je voyais la chose. J’ai implémenté ça.

Pour les locutions nominales le problème essentiel c'est que certaines ne s'emploient par exemple qu'au féminin et donc si on tire les infos grâce à sa composition, on risque d'ajouter des erreurs possibles et je pense que ça sera moins performant que si on ajoute les différentes formes dans le fichier. Je vais essayer en récupérant au maximum d'info ce que ça donnera, le travail le plus long sera fait par l'ordi. lol.


Effectivement, on ne peut pas toucher au genre, mais il faudra gérer le pluriel.

Après je pense que de toutes les manières à la fin il y aura un travail de nettoyage manuel (ou semi-manuel) à faire.


Oui.
le 30 octobre 2017 à 22:09
J'ai fait la moulinette pour ajouté les informations supplémentaires aux locutions et fait de l'uniformisation.

Version qui ajoute les informations au fichier original.
touslesmots.com…

Cette version ajoute les différentes forme masculine, féminine...
touslesmots.com…

Dans chancun de ses fichiers zip il y a 3 fichiers :
locutions.txt : fichier sans les informations supplémentaires (commun au deux zip)
locutions-sup.txt : fichier avec toutes les informations ajoutées
locutions-supnb.txt : pareil que locutions-sup.txt mais qui vire les locutions avec plus de 6 mots

Sats de la version la plus grosse locutions-all.zip locutions-sup.txt :
Nb lettres :2 Nb Locutions : 30246
Nb lettres :3 Nb Locutions : 18495
Nb lettres :4 Nb Locutions : 5039
Nb lettres :5 Nb Locutions : 1554
Nb lettres :6 Nb Locutions : 681
Nb lettres :7 Nb Locutions : 243
Nb lettres :8 Nb Locutions : 117
Nb lettres :9 Nb Locutions : 38
Nb lettres :10 Nb Locutions : 15
Nb lettres :11 Nb Locutions : 11
Nb lettres :12 Nb Locutions : 5
Nb lettres :13 Nb Locutions : 1
Nb lettres :16 Nb Locutions : 1
Nb lettres :17 Nb Locutions : 2
le fichier data généré fait : 1976ko
le 31 octobre 2017 à 14:30
Pour l’instant, on va faire sans les variantes.

Je vois parfois le tag <:Ṽn> ou <:Ṽi>. C’est quoi ?
Il faudrait ajouter l’étiquette <:s> pour les locutions nominales au singulier. Évitons les étiquettes implicites.
Vu le peu de nombre de locutions au-dessus de 6 mots, inutile de supprimer automatiquement. On pourra le faire soi-même si besoin.
La pertinence m’intéresse bien plus que la courtesse des locutions.

Sinon, ça a l’air pas mal.

Cela dit, je vais changer les étiquettes. Les tags bizarres comme <:Ŵ> ou <:Ŕ> servaient dans le dictionnaire pour désigner des éléments appartenant à des locutions, pas les locutions elles-mêmes.

L’étiquette pour les locutions, c’est <:L>. Pour distinguer les types de locutions, on va créer les étiquettes <:LN>, <:LW>, <:LR>, etc. qui sont plus digestes. :)
le 31 octobre 2017 à 17:25
Tu me fais la liste des étiquettes comme tu les souhaites et je les appliquerai à la place.

Pour les :Ṽ... j'ai essayé d'appliquer comme pour les verbes (je m'y suis peut-être mal pris) donc le :
:Ṽn Locution verbale transitif indirect
:Ṽi Locution verbale intransitif
:Ṽt Locution verbale transitif direct
:Ṽp Locution verbale pronominal
:Ṽt Locution verbale impersonnel
le 31 octobre 2017 à 18:03
OK, ce que tu as fait pour les verbes est bien. Ça ne colle pas exactement à la nomenclature du dictionnaire, mais qu’importe, de toute façon il n’est pas possible de faire comme dans le dictionnaire (c’est trop complexe).

La liste des étiquettes pour les locutions est simple. Il s’agit de <:L> suivi de la lettre correspondant à la nature grammaticale d’un mot, comme décrit dans le fichier French.tagset.text.

Donc :
:LN - locution nominale
:LA - locution adjectivale
:LV - locution verbale
:LW - locution adverbiale
:LR - locution prépositive
:LO - locution pronominale
:LC - locution conjonctive
:LJ - locution interjective
le 31 octobre 2017 à 18:33
Les deux fichiers avec les informations supplémentaires et le nouvel étiquetage :
touslesmots.com…

Je pense qu'on arrive à la fin de ce qui peut être fait par script.

Je ne l'avais pas vu le :L dans le fichier tagset :s
le 31 octobre 2017 à 19:33
Bon, la liste est tellement longue… Quel bordel. Il y a vraiment à boire et à manger là-dedans. C’est toujours un problème quand on dresse des listes par script.

J’ai séparé en deux listes : une vérifiée, une non vérifiée.

Et pour l’instant, même la première n’est pas vraiment encore vérifiée. Je me suis contenté de corriger et virer quelques éléments.

Il faut procéder par étape. D’abord, les locutions adverbiales. C’est plus simple.

Le problème, c’est que certaines locutions n’en sont pas dans bien des contextes. Par exemple : “on ne peut plus” n’est pas une locution adverbiale dans la majeure partie des cas. C’est vrai pour d’autres locutions, comme “s’entend”, “pour commencer”.

Il faut que j’y réfléchisse encore.
le 01 novembre 2017 à 10:38
J’oubliais : verse ton script dans le dossier /misc du dépôt, s’il te plaît.
le 01 novembre 2017 à 10:58
OK, je sais comment on va faire. On va créer une étiquette <*> qui signifiera que ce n’est une locution que dans certains cas. Et, pour ces cas-là, on présentera les choses normalement, et on signalera qu’il s’agit potentiellement d’une locution après coup.
le 01 novembre 2017 à 11:10
Il y a peut-être une étape qu'on peut faire par script c'est de vérifier si chaque mot de la locution est reconnu par le dictionnaire de Grammalecte.
Sinon si on trouve d'autres listes de "source fiable", c'est de filtrer avec les deux sources. Pour ça c'est pas évident de trouver des listes fiables en français...

Si tu veux, je peux te générer différents fichiers par type de locutions. Je ne sais pas si tu as vu mais il y a aussi des "abréviations" et "sigle" genre "E. S. E." "O. N. O." ... je les ai laissés, mais je pense qu'elles n'ont pas leur place ici.

T’as dû voir dans le code j'ai ajouté une fonction spécifique pour obtenir les informations des locutions, ça fait gagner en performance, vu que ça cherche dans un moins grand Map et de pouvoir mettre les informations au féminin ;)

Le travail le plus difficile est pour les locutions nominales et verbales, c'est là où je trouve qu'il y a le plus de "fausse locution".

Je trouve que déjà le résultat que ça donne actuellement est déjà pas mal, ça permet déjà de mieux comprendre comment les phrases sont composées.
le 01 novembre 2017 à 11:29
OK pour mettre mon script. Par contre c'est un script en php (et oui, je l'ai fait avec le langage que j'ai le plus l'habitude).

Je te préviens d'avance c’était pas prévu qu'il soit public, donc c'est un peu codé à l'arrache.

Sinon j'avais fait un script (bot) où j'avais extrait les données de chaque locution sur une version de Wiktionary (local) dans un fichier json. Donc je te fournis aussi ce fichier JSON et tous les fichiers data.
le 01 novembre 2017 à 11:36

IllusionPerdu :
Il y a peut-être une étape qu'on peut faire par script c'est de vérifier si chaque mot de la locution est reconnu par le dictionnaire de Grammalecte.


En effet.

Sinon si on trouve d'autres listes de "source fiable", c'est de filtrer avec les deux sources.


Pas nécessaire. Wiktionnaire est assez fiable.

Si tu veux, je peux te générer différents fichiers par type de locutions.


Pas nécessaire.

Je ne sais pas si tu as vu mais il y a aussi des "abréviations" et "sigle" genre "E. S. E." "O. N. O." ... je les ai laissés, mais je pense qu'elles n'ont pas leur place ici.


Oui, on peut les virer.

Le travail le plus difficile est pour les locutions nominales et verbales, c'est là où je trouve qu'il y a le plus de "fausse locution".


Oui, d’accord.

OK pour mettre mon script. Par contre c'est un script en php (et oui, je l'ai fait avec le langage que j'ai le plus l'habitude).
Je te préviens d'avance c’était pas prévu qu'il soit public, donc c'est un peu codé à l'arrache.


Sans importance. Ce qu’il y a dans /misc est souvent codé à l’arrache.
le 01 novembre 2017 à 12:02
Voilà c'est ajouté, j'ai ajusté le script pour qu'il soit autonome et j'en ai profité pour ajouté la non prise en compte des abréviations et sigles (qui contienne un ".") + un petit fix de bug du au changement de type de tag.
le 01 novembre 2017 à 13:04
J'ai vu que tu as modifié ma fonction _formatTagsLoc()
le problème avec la nouvelle version c'est qu'elle prend pas en compte le cas par exemple

fumer comme des sapeurs :LV:p
fumer comme un sapeur :LV:s
gagner à la main :LVit
quelle mouche le pique :LVi:m:s
...

le 01 novembre 2017 à 13:21
Argh, il ne fallait mettre que le script, pas les fichiers générés.
N’ajoute plus rien, il faut que je réinitialise le dépôt.

J'ai vu que tu as modifié ma fonction _formatTagsLoc()
le problème avec la nouvelle version c'est qu'elle prend pas en compte le cas par exemple


OK, je vais voir ça.
le 01 novembre 2017 à 13:31
Les fichiers joints avec le script sont ceux pour son fonctionnement :
dans ./data : les fichiers contenant les listes brutes
dans ./datatag :
* un fichier qui liste uniquement les locutions latines permet d'ajouter le flag latin
* le fichier json c'est le résultat du "parser" des pages de Wiktionary, donc ne garder au maximum que des données utiles et ne pas avoir besoin de serveur Wiktionary.

Excuse-moi du travail supplémentaire que je te donne :s
le 01 novembre 2017 à 14:00
OK, je vois le malentendu. En fait, ce qui m’intéresse, c’est le script qui parse Wiktionary. Mais juste le script. :)

Excuse-moi du travail supplémentaire que je te donne :s


Pas grave. Ça arrive. Le seul gros défaut que je trouve à Fossil, c’est de n’avoir aucune procédure pour accepter les patchs. Ça éviterait ce genre de problèmes. Apparemment, ce n’est pas au programme.

J'ai vu que tu as modifié ma fonction _formatTagsLoc()
le problème avec la nouvelle version c'est qu'elle prend pas en compte le cas par exemple


Mon patch est correct, je pense, mais tu as déniché un bug : aucune locution n’est reconnue si elle est suivie des deux-points. Ça devait être là avant.
le 01 novembre 2017 à 14:49
Finalement, je n’ai pas voulu réinitialiser le dépôt. Je vais faire autrement. Ne touche pas à la branche <Lexicographe_dead>.
Edit : Nettoyage terminé. Du coup, j’ai pu tester l’outil de purge de Fossil. :)
le 01 novembre 2017 à 14:59
Pour pas que je fasse de bétises tu as donc enlevé le commit avec le script et il n'y est plus c'est bien ça ?
Est ce que je doit taper une commande spéciale avant de faire des modifs / comit ?
Pour le script je fait un zip que je met sur le serveur ou je filait les liste généré (j'y est fait des modifs car il donnais des indications en double) ?

Note : le deuxième gros défaut que je trouve perso a Fossil c'est leur gestion de ticket pour quelqu'un qui veux signaler un bug c'est pas pratique du tout pour les novices.
le 01 novembre 2017 à 15:14

IllusionPerdu :
Pour pas que je fasse de bétises tu as donc enlevé le commit avec le script et il n'y est plus c'est bien ça ?


J’ai déplacé le dernier commit dans une nouvelle branche <Lexicographe_dead>.
Puis j’ai supprimé tous les artéfacts du commit. (Un artéfact est une version de fichier.)

Est ce que je doit taper une commande spéciale avant de faire des modifs / commit ?


fossil sync (met à jour ton dépôt)
fossil update (met à jour les fichiers du check-out)

Pour le script je fait un zip que je met sur le serveur où je filais les listes générées (j'y ai fait des modifs car il donnait des indications en double) ?


Si tu veux.

Note : le deuxième gros défaut que je trouve perso a Fossil c'est leur gestion de ticket pour quelqu'un qui veux signaler un bug c'est pas pratique du tout pour les novices.


Ouais, on a vu mieux… Mais quel bugtracker est bien pensé pour les novices ? Pas légion.
Je trouve ça suffisant. L’UI est un peu étrange.
le 01 novembre 2017 à 15:25
Script pour parser (petite explication dans le readme.txt)
touslesmots.com…

Script pour généré le tout :
touslesmots.com…
le 01 novembre 2017 à 15:54
Sinon question / suggestion, vu que le lexicographe.js fait partie du cœur est ce que ça ne serait pas plus logique que le getInfoForToken et donc aussi le getListOfTokensReduc ajoute les informations au token d'origine ?
Je m'explique : le tokeniseur renvoie oToken du type

{
'nStart': int,
'nEnd': int,
'sType': string,
'sValue': string
}


Donc je trouve que ça serait mieux que la def de l'infoForToken soit avec cette définition :

{
'nStart': int,
'nEnd': int,
'sType': string,
'sValue': string,
'aLabel': [list],
'aSubToken': [list] (si nécéssaire)

}



Et sinon peut être "gérer" les mots composés comme les locutions (les différentes définitions en sous-liste)
(ps: je n'ai jamais fait attention comment ça les gérait)

Qu'en penses-tu ?
le 01 novembre 2017 à 19:14
Petit bug trouvé

Nous-discutions-à bâtons abat-feuille rompus, avançant à l’aveuglette. puis-je ?


le Nous-discutions-à est vert mais après les : il n'y a rien pareil pour le puis-je
Apparemment la condition retourne vrai pour ces deux cas :

} else if (this.oDict.isValidToken(oToken.sValue)) {
...
}

le 01 novembre 2017 à 22:52

Donc je trouve que ça serait mieux que la def de l'infoForToken soit avec cette définition :


Pourquoi ajouter des données de positionnement ici ? Les informations renvoyées sont censées être des informations lisibles. Pourquoi envoyer des données sans intérêt ?

Et sinon peut être "gérer" les mots composés comme les locutions (les différentes définitions en sous-liste)


Non, les mots composés ont une nature précise qu’il ne sert à rien de décomposer attendu que cette décomposition ne servirait qu’à brouiller l’utilisateur. Ce ne peut-être utile que pour les mots non reconnus par le dictionnaire.
le 02 novembre 2017 à 07:59

Petit bug trouvé


C’est un gros bug, et qui est là depuis très très longtemps apparemment. Personne n’avait rien signalé. Corrigé.

this.oDict.isValidToken(oToken.sValue)


C’est normal. Si un mot composé n’est pas reconnu, mais que chaque élément du mot composé est reconnu, alors le token est considéré comme valide.
C’est ce qui venait après qui n’était pas correct.
le 02 novembre 2017 à 08:38

Pourquoi ajouter des données de positionnement ici ? Les informations renvoyées sont censées être des informations lisibles. Pourquoi envoyer des données sans intérêt ?


C'est un fichier du cœur de grammalecte donc d'après ma vision une sorte de librairie.
Actuellement vu le fonctionnement de la web-extension le positionnement ne sert à rien, MAIS si nous voulions que la web-extension (ou application utilisant) réagisse comme le correcteur grammatical (que les explications soient avec une "infobulle" intégrée au texte), on aurait besoin de ce positionnement et on pourrait donc directement l'exploiter facilement.

---

Pour le bug, je ne savais pas trop comment tu voulais le gérer, c'était pour ça que je ne faisais que de le signaler.

* Pour le "Nous-discutions-à" ne devrait-il pas être signalé comme une faute par le correcteur ou donné au moins une indication? Dans le lexicographe pourquoi ne pas donner les informations sur chaque mot ?

* Pour le "puis-je", c'est pas clair l'information donnée par le lexicographe, c'est dans ce cas que je pense qu'il faut l'afficher comme les locutions

puis-je:
• [mot grammatical] adverbe, conjonction de coordination
•  verbe (3ᵉ gr.), présent, 1ʳᵉ p. sg., [pouvoir]
• -je: pronom personnel sujet, 1ʳᵉ pers. sing.


deviendrait

puis-je:
puis:
• [mot grammatical] adverbe, conjonction de coordination
•  verbe (3ᵉ gr.), présent, 1ʳᵉ p. sg., [pouvoir]
-je:
•  pronom personnel sujet, 1ʳᵉ pers. sing.



---

D'après mon expérience de développeur web les bugs sont souvent signalés très très longtemps après car bien souvent les utilisateurs se disent quelqu'un l’a déjà signalé ou pense que le développeur le sait déjà ;) et ça qu'il y ait 10 personnes ou 100 000 personnes qui l'a vu ;) il faut vraiment que ça les gêne pour qu'ils le signalent.
le 02 novembre 2017 à 10:26
Je me demandais si ça ne serait pas plus simple pour générer les mots composés d'ajouter au tokeniseur une règle pour les détecter ?

ça permettrait la gestion plus simple dans le lexicographe (par contre il y a surement des répercussions ailleurs ou il faudrait aussi adapter) mais je pense que même ailleurs ça simplifiera!

ça permettra de pouvoir faire une suggestion avec le correcteur orthographique aux mots erronés dans le mot composé!
le 02 novembre 2017 à 10:56

Actuellement vu le fonctionnement de la web-extension le positionnement ne sert à rien, MAIS si nous voulions que la web-extension (ou application utilisant) réagisse comme le correcteur grammatical (que les explications soient avec une "infobulle" intégrée au texte), on aurait besoin de ce positionnement et on pourrait donc directement l'exploiter facilement.


— Le lexicographe a pour unique but d’informer l’utilisateur, et rien d’autre. Le correcteur grammatical ne s’en servira jamais.
— C’est une erreur conceptuelle d’avoir voulu gérer la détection des locutions dans le lexicographe. Il aurait fallu faire ça dans une sorte de surtokeniseur. Mais j’ai laissé pisser, parce que pour l’instant ça ne dérange pas.

* Pour le "Nous-discutions-à" ne devrait-il pas être signalé comme une faute par le correcteur ou donné au moins une indication? Dans le lexicographe pourquoi ne pas donner les informations sur chaque mot ?


Ça ne peut pas être signalé comme une faute, parce que le lexicographe n’a pas pour but de détecter les fautes, et que ça peut être volontaire. Certains ont des lubies et sont en mode On-peut-écrire-avec-des-tirets-partout. C’est volontaire, pas une erreur.

* Pour le "puis-je", c'est pas clair l'information donnée par le lexicographe, c'est dans ce cas que je pense qu'il faut l'afficher comme les locutions


Oui, je suis déjà en train de corriger ça.

Quant à ta volonté de vouloir transformer le tokeniseur, le correcteur orthographique, c’est plus compliqué que tu le supposes. Et pour l’instant, j’ai assez à faire pour ne pas vouloir une transformation qui va impacter tout le reste.

Par ailleurs, il faut finir ce qui a été commencé avant de passer à autre chose. Et pour l’instant, la gestion des locutions n’est pas achevée. Il y a 50 000+ locutions à vérifier. Laisser ça en l’état n’est pas acceptable. Il faudra le faire. Je n’intégrerai pas ça tant que les gros défauts ne seront pas corrigés.

En ce moment, je m’occupe de ce qu’il y a à faire pour le lexicographe, mais j’ai d’autres choses à gérer. Je vais bientôt revoir l’ensemble de la modularisation de Grammalecte, et je ne peux pas passer un temps infini sur le lexicographe.

Note : Par pitié, fais attention à ton orthographe et à ta grammaire, qui sont vraiment déplorables. Les correcteurs orthographique et grammatical ne sont pas capables de détecter toutes tes erreurs, loin de là, mais si tu pouvais au moins corriger celles-là, ce serait vraiment bien. Ensuite, revoir la distinction <infinitif/participe passé>, <a/à>, <ça/sa>, ça améliorerait beaucoup les choses.
le 02 novembre 2017 à 11:39
Pour la vérification des locutions en cherchant d'autre liste je suis tombé sur
www.cnrtl.fr…

avec l'avantage c'est qu'ils mettent en téléchargement leur base en format xml
www.cnrtl.fr…

Donc je pensais faire une moulinette avec la liste actuelle et celle-ci afin qu'au final il n'y ait que celle présente dans les deux listes et vérifié au passage leur type. Penses-tu que ça vaut le coup ?

— C’est une erreur conceptuelle d’avoir voulu gérer la détection des locutions dans le lexicographe. Il aurait fallu faire ça dans une sorte de surtokeniseur. Mais j’ai laissé pisser, parce que pour l’instant ça ne dérange pas.


Tu aurais dû me le dire directement que je m'y prenais mal dès le début. Autant bien le faire directement pour éviter de devoir revoir par la suite.

Note: Pourrais-tu mettre sur le forum une liste qui donnerait plus ou moins un ordre de se que tu prévois de faire ?
le 02 novembre 2017 à 12:38
Oui, il peut être intéressant de comparer avec la liste du CNRTL. C’est une source fiable.

Tu aurais dû me le dire directement que je m'y prenais mal dès le début. Autant bien le faire directement pour éviter de devoir revoir par la suite.


Tant que ça ne concernait que le lexicographe, ça ne dérangeait pas. Et au risque de me répéter, pour moi, le principal problème, ce n’est pas le code, c’est la fiabilité des données récupérées. Modifier le code, c’est relativement rapide. Dresser une liste de données complète et fiable, c’est beaucoup plus long, de très loin, et même plus complexe qu’il n’y paraît, car la catégorisation grammaticale n’est pas nécessairement celle qu’il nous faut. Pour le lexicographe, qui n’a qu’un rôle informatif, l’approximation, c’est moins dérangeant que pour le correcteur. Enfin, même avec des comparaisons de listes, une vérification manuelle est indispensable.

Par ailleurs, si on devait faire autrement pour la surtokenisation, il faut aussi revoir la structure de données. Pour l’instant, ce qui a été fait, c’est un outil simple et rapide, mais encore peu adapté aux situations plus complexes. Ce n’est pas dérangeant en soi. Ça sert de premier jet, de test.

Si j’ai laissé faire tel quel, c’est aussi parce que maintenant que la WebExtension est à peu près finalisée. Je vais revoir de fond en comble :
— le processus de build,
— la modularisation de Grammalecte,
— le moteur grammatical : la tokenisation, la désambiguïsation, le processeur de texte, le contrôle.

Autrement dit, je vais bientôt procéder à un grand chambardement, en essayant de ne rien casser. Voilà pourquoi, te laisser faire un truc juste pour le lexicographe ne me posait pas de problème : le changement était mineur et n’allait pas déranger mes plans (encore en cours de conception, je ne sais pas encore exactement comment je vais procéder sur certains points).

En fait, je ne veux pas qu’on touche trop au cœur pour l’instant, justement parce que je vais m’y attaquer bientôt et que ce n’est pas le moment de perturber mes projets.

En revanche, il y a des domaines que je ne prévois pas de toucher et qu’il serait intéressant de travailler. Ce sont les questions d’interface. LT dispose déjà de certains outils et ce serait intéressant de voir si on peut récupérer/intégrer ça à notre interface :
— un plugin pour Google Doc : github.com…
— un plugin pour Tiny MCE : github.com…

Il y a même un plugin pour Word (mais je ne suis pas sûr que ce soit très intéressant) : github.com…

Sur la WebExtension, il serait aussi bien d’avoir une interface (optionnelle) comme celle de Ginger ou Grammarly, qui se superpose à la zone de texte dans laquelle tape l’utilisateur.

Pour l’instant, je vais encore peaufiner un peu la WebExtension et certains détails, réfléchir à mes plans à long terme, préparer le terrain, puis je vais engager les grands travaux.
le 03 novembre 2017 à 09:02
J’ai réorganisé les locutions et j’ai fait pas mal de contrôles.
Il y a beaucoup de locutions adverbiales qui étaient étiquetées pronominales et réciproquement.
le 04 novembre 2017 à 08:33
Est-ce qu'il y a quelque chose que je peux faire pour aider ? Les contrôles que tu as faits sont que des contrôles manuels ou as-tu fait un script avec des règles ?



PS: Désolé de mon silence d'hier mais j'ai rattrapé le retard que j'avais pris dans mon travail ;)
le 04 novembre 2017 à 10:05
Je vais pouvoir m'attaquer à un filtre des listes, je propose que :
Si un des mots n'est pas reconnu par Grammalecte on enlève la locution
Si une locution est dans la liste wiktionary et cnrtl et que les tag correspond on ajoute un symbole au début du tag (lequel? comme tu fais pour les incertitudes)
Si une locution est dans la liste wiktionary et cnrtl et que les tag ne correspond pas que fait-on (on extrait dans une liste a part ? ajout d'une marque ? )???

Pour les locutions incertaines est ce que ça serait pas plus simple de faire une liste des locutions ou c'est le build qui ajoute le tag, je pense que ça serait plus facilement maintenable et que ça éviterait qu'a la moindre locution marqué incertaine ça fasse trop de données ajouté au dépôt.
le 04 novembre 2017 à 11:04

Les contrôles que tu as faits sont que des contrôles manuels ou as-tu fait un script avec des règles ?


Non, je contrôle manuellement, parce que l’étiquetage dont on a besoin n’est pas nécessairement celui retenu par les dictionnaires.

Si un des mots n'est pas reconnu par Grammalecte on enlève la locution


Non, j’ai changé d’avis. Je préfère faire ça manuellement, attendu que certaines locutions sont à garder bien qu’il y ait des erreurs orthographiques dessus.

Pour le contrôle de l’existant avec la liste du CNRTL, je préfère que tu fasses une liste des divergences.
Prends la liste originelle de Wiktionary, celle du CNRTL et fais quatre colonnes, s’il te plaît :
Locution | tags Wiktionary | tags CNRTL | signe indiquant une divergence ou une correspondance

Pour les locutions incertaines est ce que ça serait pas plus simple de faire une liste des locutions ou c'est le build qui ajoute le tag, je pense que ça serait plus facilement maintenable et que ça éviterait qu'a la moindre locution marqué incertaine ça fasse trop de données ajouté au dépôt.


Je ne comprends pas ce que tu veux dire, mais à terme tout doit être contrôlé. Donc plus d’ajouts automatiques par build. Simplement des comparaisons.
le 04 novembre 2017 à 11:22
Voici le résultat de la comparaison :
touslesmots.com…

#locution | locution(ref) | tagWiki | tagCnrtl | compare
les colonnes sont séparés par des tabulations

"locution(ref)" c'est la locution dont les différents dérivés viennent : si une orthographe particulière pour le pluriel il y aura l'orthographe au singulier.

"compare" peut prendre les valeurs suivantes :
= c'est identique dans les deux liste
- n'existe que dans Wiktionary
+ n'existe que dans CNRTL
@ le tag du CNRTL se retrouve dans le tag de Wiktionary
# le tag du Wiktionary se retrouve dans le tag de CNRTL
* aucune correspondance de tag

J'espère que ça te convient (oui j'ai mis un peu plus d'information que demander ;) )
le 04 novembre 2017 à 15:00
Je viens de mettre à jour la liste de comparaison car j'avais oublié de mettre les locutions uniquement en minuscule.

Pour info :
= : 818
- : 57016
+ : 1093
@ : 433
# : 3
* : 75
le 04 novembre 2017 à 15:37
Merci, c’est super. Je vais regarder ça.
le 04 novembre 2017 à 15:58
Par contre je viens juste de penser : la liste de comparaison ne prend pas en compte si une locution dans le CNRTL est présente dans le Wiktionary et qu'il y a plusieurs "orthographe" de comparer les tags de chaque forme : ça ne marque que la correspondance exacte de la locution.

Ah oui, j'avais oublié de préciser quand (locution(ref) != '' et #locution = locution(ref) ) ça permet de retrouver l'orthographe de référence. Et bien sûr quand il n'y a pas de locution(ref) c'est qu'il n'y a qu'une forme reconnue.
le 04 novembre 2017 à 16:36

Notification par e-mail    0