Bonjour à tous,
dans le cadre d'un projet j'ai besoin d'un module pour stocker et analyser des données phonétiques transcrites, par exemple avec l'alphabet phonétique international. Mon code commence à devenir (vaguement) utilisable : je le publie donc sous une licence GLPv3 : Phoseg est un module pour Python3 que vous trouverez à cette adresse.
J'ai essayé de coller à certains principes facilitant le travail en communauté ainsi que l'écriture de code lisible : tests unitaires, code et commentaires écrits en anglais, surveillance de la qualité du code par pylint, documentation fournie.
Concrètement, je cherche d'autres personnes susceptibles d'utiliser ou d'améliorer mon module. Si vous êtes un spécialiste de la phonétique, j'ai aussi de nombreuses questions à vous poser… De façon générale, n'hésitez pas à faire remonter vos remarques, je n'attends que ça, surtout si elles sont négatives !
Concrètement, Phoseg est un module Python qui se pilote avec la classe PhoSegObject :
from phoseg import PhoSegObject
Il s'agit d'abord de créer un objet PhoSegObject, par exemple avec des données de type IPA :
# Rōma = [ɾoːma] en latin
obj = PhoSegObject( ipa = "ɾoːma" )
Ces données phonétiques sont alors analysées et syllabisées automatiquement. La fonction de syllabation peut être celle de Phoseg ou une autre, que l'utilisateur fournira.
Si l'on veut imposer une syllabation particulière, on utilisera un format maison, le format SIPA :
obj = PhoSegObject( sipa = "(ɾ,oː,)(m,a,)" )
On peut aussi utiliser les noms décrivant les sons, séparés par un point-virgule :
# [a] "open front unrounded vowel"
# [ĭ] "overshort close front unrounded vowel"
# [r̥] "voiceless alveolar trill"
# [t] "voiceless alveolar plosive"
sounds = ["open front unrounded vowel",
"prenasalized overshort close front unrounded vowel",
"voiceless alveolar trill",
"voiceless alveolar plosive",
]
obj = PhoSegObject(soundsnames = ";".join(sounds) )
Une fois l'objet initialisé, il peut alors nous donner les informations attendues :
# structure (1)
# ici, on vérifie que [ɾoːma] a une consonne, une voyelle, ce qu'on veut, une voyelle :
print( obj.cv_struct_identical_to(['c','v', '*', 'v']) )
# structure (2)
# ici on vérifie que la deuxième voyelle de [ɾoːma] est longue :
print( obj.cv_struct_identical_to(['*','vː', '*', '*']) )
# syllabes et phonèmes :
print( obj.number_of_phonemes() ) # =4 : [ɾoːma] possède 4 phonèmes.
print( len(obj) ) # =2 : [ɾoːma] possède 2 syllabes.
# syllabe ouverte, syllabe lourde :
# "une princesse turque" : [yn pʀɛ᷉sɛs tyʀk]
myobj = PhoSegObject( sipa = "(,y,n)(pʁ,ε̃,)(s,ɛ,s)(t,y,ʁk)" )
print( myobj[0].is_open() ) # False : (,y,n) est une syllabe fermée.
print( myobj[0].is_heavy() ) # True : (,y,n) est une syllabe lourde.
Voilà : il reste encore beaucoup de travail mais j'espère intéresser quelques curieux !
Aller plus loin
- Phoseg (230 clics)
- article Wikipedia sur l'alphabet phonétique international (60 clics)
# Android ?
Posté par ®om (site web personnel) . Évalué à 3.
Intéressant.
Par contre, je n'ai pas bien compris le rapport avec Android (premier mot du titre).
blog.rom1v.com
[^] # Re: Android ?
Posté par Xavier Faure (site web personnel) . Évalué à 3.
Bonjour ®om,
je suis l'auteur de l'article et j'ai dû commettre une erreur en proposant cette dépêche… C'est la première fois que j'en propose une. A moins que le responsable ne soit un des modérateurs ? Phoseg n'a bien sûr pas grand chose à voir avec Android.
Trust the Python !
[^] # Re: Android ?
Posté par Benoît Sibaud (site web personnel) . Évalué à 4.
Corrigé, merci.
# archive corrompue
Posté par Xavier Faure (site web personnel) . Évalué à 1.
Je viens de me rendre compte que l'archive est corrompue : celle présente sur le serveur est normale, c'est lors du téléchargement par l'utilisateur qu'un problème survient. J'ai ouvert un fil de discussions là pour trouver une solution.
Trust the Python !
[^] # Re: archive corrompue
Posté par Xavier Faure (site web personnel) . Évalué à 1.
En fait, l'archive est bonne : c'est de mon côté qu'il y a un problème, quand je télécharge l'archive avec un navigateur.
Trust the Python !
# Intégration dans Gramps?
Posté par airome . Évalué à 3. Dernière modification le 14 décembre 2012 à 15:07.
Intéressant !
Il y a quelques années, j'avais regardé pour générer l'équivalent de l'ensemble "Dragon Naturally didact© de Mysoft® + winfamily + Visual Dbase© d’Imprise® + Excel2000© de Microsoft® + Biodem" via Gramps.
source => Deux logiciels : Sygap et Analypop
=> http://histoiremesure.revues.org/docannexe/image/132/img-3.png
Il y avait bien Orca, GnoneVoiceControl, perlbox, etc … mais rien en python pouvant s'intégrer aux éditeurs (notes, individus, relations, événements, etc …) et l'API de Gramps.
[^] # Re: Intégration dans Gramps?
Posté par Xavier Faure (site web personnel) . Évalué à 2.
Peut-être est-ce la fatigue mais je ne vois rien dans Phoseg pouvant avoir un lien avec ta remarque. Est-ce que je me trompe ?
Trust the Python !
[^] # Re: Intégration dans Gramps?
Posté par airome . Évalué à 2.
Gramps utilise un module 'soundex' appelé par certains utilitaires. Mais les saisies, transcriptions des données se font à la main.
Une saisie "phonétique" est sûrement possible, mais l'analyse et la correspondance de ces sons nécessitent un module spécifique qui pour l'instant ne se limite qu'au classique "soundex" de base.
On peut imaginer un module plus avancé avec "phonex" et séquences via 'Phoseg', pour les noms de famille, une saisie phonétique des données, une meilleure précision lors des recherches, non ?
[^] # Re: Intégration dans Gramps?
Posté par Xavier Faure (site web personnel) . Évalué à 3.
Toutes mes excuses, ta remarque était au contraire très intéressante. A lui seul Phoseg n'apporterait pas grand chose à Soundex mais tu as raison sur le fond : on peut imaginer qu'autour de Phoseg soit ajouté du code pour automatiser la conversion des noms propres vers une transcription phonétique. D'ailleurs Phoseg fait lui-même partie d'un projet plus vaste qui permettrait une telle automatisation - en fait, cet autre projet vise justement à établir des liens entre la transcription orthographique et leur transcription phonétique. S'il y a des intéressés…
Trust the Python !
[^] # Re: Intégration dans Gramps?
Posté par psychoslave__ (site web personnel) . Évalué à 3.
C’est quoi le projet plus vaste, on peut avoir des détails ? ^
[^] # Re: Intégration dans Gramps?
Posté par Xavier Faure (site web personnel) . Évalué à 3.
Dans un premier temps, Phoseg me permet d'enrichir un projet que je présenterai vers février, lié à un formateur de dictionnaire (un outil s'assurant qu'un dictionnaire est cohérent) ainsi qu'à un dictionnaire utilisant cet outil (dictionnaire grec ancien -> français).
Dans un second temps, et sans savoir quand je pourrai présenter ces projets, Phoseg est associé à une "liseuse" de textes (anciens, pourquoi pas modernes) permettant de lire facilement des textes en consultant aisément la traduction et des notes lexicales et sémantiques. Phoseg est enfin lié à dernier projet me permettant d'analyser automatiquement des textes et d'en établir la construction en vue de la traduction.
Voilà, j'ai tout dit, …
Trust the Python !
[^] # Re: Intégration dans Gramps?
Posté par psychoslave__ (site web personnel) . Évalué à 5.
Tout cela semble fort intéressant, mais pourquoi tant de mystère plutôt qu’un dépôt, un wiki, un site, une liste de diffusion ? Release soon, release often :)
[^] # Re: Intégration dans Gramps?
Posté par Xavier Faure (site web personnel) . Évalué à 3.
Merci pour ces encouragements : j'ai vu tant de projets décevoir les attentes en n'étant jamais aboutis que j'adopte la politique inverse - j'attends d'avoir quelque chose de sérieux avant d'en parler sérieusement. Pour ceux qui connaissent, ma devise pourrait être pauca sed matura… Ceci dit, ce que tu me dis me fait réfléchir. Disons qu'en février j'y verrai plus clair car je sortirai un autre de mes projets (le formateur de dictionnaire, puis le dictionnaire grec ancien->français). Je demanderai conseil à la communauté à ce moment-là.
Trust the Python !
# Intéressant :)
Posté par Kytrix . Évalué à 3.
J'ai pas tout compris le but du projet et du module (je dirais effectuer de la sythèse vocale ?)
D'ailleurs les moteurs TTS utilisent des dictionnaires phonétiques ? Sur wikipedia ils ont l'air de dire que oui (pour la synthèse vocale en générale) or quand j'écoute mon téléphone (android) je trouve ça toujours aussi moche.
[^] # Re: Intéressant :)
Posté par Xavier Faure (site web personnel) . Évalué à 4. Dernière modification le 14 décembre 2012 à 15:31.
J'aurais dû être plus explicite : malgré le tag que je n'arrive pas à enlever, Phoseg n'a pas vocation à faire passer du texte à la parole; ce module utilise des données phonétiques déjà transcrites (voix -> texte transcrivant la voix) pour les analyser. Par contre, Phoseg fait partie d'un projet plus vaste qui lui, vise à établir un lien entre le texte écrit "normalement" et sa transcription phonétique.
Trust the Python !
# Possibilité d’utiliser sur le wiktionnaire ?
Posté par psychoslave__ (site web personnel) . Évalué à 5.
Justement en ce moment sur le wiktionnaire on parle syllabation automatisée de l'espéranto, le fil de discussion pourrait peut-être t’intéressé, voir test scripts pourraient servir au wiktionnaire, ne serait-ce que pour récupérer les algos. Sur les wiki wikimedia, c’est du php si on fait une extension, du javascript si on fait un « gadget », ou l’infâme langage de template (bientôt remplacé par lua), donc nul python en vu.
[^] # Re: Possibilité d’utiliser sur le wiktionnaire ?
Posté par Xavier Faure (site web personnel) . Évalué à 3.
Passionnant ! La syllabation de l'esperanto est justement l'un des tests unitaires que j'ai prévus pour Phoseg. Merci pour le lien. Si tu penses que "mes scripts pourraient servir", n'hésite pas à m'en parler, car grosso modo le plus gros du travail est fait.
Trust the Python !
[^] # Re: Possibilité d’utiliser sur le wiktionnaire ?
Posté par Xavier Faure (site web personnel) . Évalué à 2. Dernière modification le 16 décembre 2012 à 12:11.
Comme prévu, j'ai ajouté "à titre d'exercice" la syllabation de l'esperanto. Mais il s'agit d'une langue que je ne connais pas et je n'ai pas trouvé de description précise des règles présidant au découpage syllabique : je peux donc complètement me tromper. Si tu en sais plus que moi, je suis preneur !
par exemple :
"familio" -> fa.mi.lˈi.o / (f,a,)(m,i,)(l,ˈi,)(,o,)
Trust the Python !
[^] # Re: Possibilité d’utiliser sur le wiktionnaire ?
Posté par BAud (site web personnel) . Évalué à 4.
Pour aller encore plus loin, tu peux travailler avec la communauté autour de apertium qui avait ajouté un dictionnaire breton - français il y a quelques temps : ils sont particulièrement efficaces et réactifs et foisonnant d'idées. Initialement basé sur le catalan, ils n'hésitent pas à ajouter le galicien ou autres langages d'Asturie voire plus loin dans la celtitude ;-)
Tu peux aussi suivre les tags brezhoneg et taln (en évitant dans un premier temps Zino…) pour trouver des sujets complémentaires, outre synthèse vocale.
[^] # Re: Possibilité d’utiliser sur le wiktionnaire ?
Posté par Xavier Faure (site web personnel) . Évalué à 2.
C'est en effet en m'associant à de tels projets que Phoseg deviendra vraiment utile. Pour le moment je préfère attendre que mon module arrive à une maturité suffisante… ou d'être contacté. Merci de ces détails !
Trust the Python !
# On est pas le 20 Mars, mais bon...
Posté par Florian.J . Évalué à 1.
Projet intéressant, par contre concernant l'article, serait il possible d'avoir une préférence pour les liens Wikipédia en Français, je pense que ça serait plus accessible pour la majorité d'entre nous (à commencer par moi !).
Ou au moins préciser quand un lien pointe vers le wiki anglophone, si tout est mélangé, ça donne vraiment l'impression que le Français est une option…
En ce qui concerne le projet, je m'interroge sur les applications pratiques.
Par exemple si l'on tape une lettre en trop ou en moins, on a vite fait de changer la phonétique d'un mot, et donc son analyse, peut être serait il utile avant analyse phonétique de vérifier la validité d'un mot par un dictionnaire (mais je suppose que ça va poser problème avec les noms propres…).
Je sais pas si je suis clair mais si, après une faute grossière (ça arrive), j'ai sur le texte un truc genre "acent" au lieu d'"accent", le résultat devrait être totalement différent, donc la traduction également.
Tandis qu'utiliser un dictionnaire comme celui ci: http://packages.debian.org/wheezy/wfrench pourrait permettre de repérer les mots pouvant poser problème.
Voilou, c'est juste une idée comme ça, je sais pas si c'est utile au projet à terme et même si c'est le cas, peut être que l'auteur y a pensé, mais en tout cas c'est pas précisé.
[^] # Re: On est pas le 20 Mars, mais bon...
Posté par Xavier Faure (site web personnel) . Évalué à 2.
Merci pour tes remarques sur les références au wikipedia anglais, j'en tiendrai compte pour mon prochain journal. Pour le reste, Phoseg ne vise pas à corriger la frappe des mots - le dictionnaire dont tu donnes le lien serait un outil bien plus intéressant - mais à lire et à analyser une transcription phonétique, et non orthographique.
A titre d'exemple, je travaille sur un programme permettant de produire les différentes formes d'un mot (conjugaison, déclinaison); j'ai besoin que le programme fasse le lien entre la trace écrite et une trace phonétique qu'il doit reconstituer : c'est ce lien que Phoseg permet d'établir. Par exemple, si tu veux expliquer au programme que le mot grec (ancien) ánthropos peut devenir anthrópou, il ne s'agit pas que de modifier la finale (-os -> -ou) mais tu dois aussi expliquer comment se déplace l'accent tonique; pour cela, il faut analyser la longueur de certaines voyelles et découper le mot en syllabes accentuées ou non.
J'espère avoir été plus clair : merci encore pour tes remarques.
Trust the Python !
# Commentaire supprimé
Posté par sandra0045 . Évalué à -3. Dernière modification le 18 décembre 2012 à 13:20.
Ce commentaire a été supprimé par l’équipe de modération.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.