plint

French poetry validator (local mirror of https://gitlab.com/a3nm/plint)
git clone https://a3nm.net/git/plint/
Log | Files | Refs | README

commit 50cb072be36b5be23e629cf662a70e7d7efd9d7d
parent 3d39d38bc2ac95c11493ace4f98a046075bf276c
Author: Antoine Amarilli <a3nm@a3nm.net>
Date:   Sun, 18 Aug 2019 14:25:59 +0200

move experiments to a3nm.net/git/plint_extra

Diffstat:
lexique_comparison/count_syllables_lexique.py | 25-------------------------
lexique_comparison/count_syllables_plint.py | 31-------------------------------
littre/.gitignore | 9---------
littre/additions_poesie | 14--------------
littre/additions_vers | 16----------------
littre/compare_plint.py | 28----------------------------
littre/littre_syll.sh | 55-------------------------------------------------------
littre/raw.tpl | 2--
8 files changed, 0 insertions(+), 180 deletions(-)

diff --git a/lexique_comparison/count_syllables_lexique.py b/lexique_comparison/count_syllables_lexique.py @@ -1,25 +0,0 @@ -#!/usr/bin/python3 - -# count the number of syllables of words according to lexique - -import sys - -vowels = "ae$E2@#u)9ioO(y" -consonants = "dpgmtRwszlbkZjknfvSNJx8" - -for l in sys.stdin.readlines(): - f = l.strip().split("\t") - nsyl = 0 - for a in f[1]: - if a in vowels: - nsyl += 1 - elif a in consonants: - pass - else: - print("unknown phoneme %s" % a, file=sys.stderr) - sys.exit(1) - # workaround bug in lexique - if f[1].endswith("@") and f[0] != "afin de": - nsyl -= 1 - print("%s\t%d" % (f[0], nsyl)) - diff --git a/lexique_comparison/count_syllables_plint.py b/lexique_comparison/count_syllables_plint.py @@ -1,31 +0,0 @@ -#!/usr/bin/python3 - -import os -import sys - -# modules are in the parent folder -import plint.pattern -from plint.rhyme import Rhyme -from plint.template import Template -from plint.verse import Verse - -sys.path.insert(1, os.path.join(sys.path[0], '..')) - -template = Template() -pattern = plint.pattern.Pattern("12") - -for l in sys.stdin.readlines(): - w = (l.strip().split("\t"))[0] - verse = Verse(w, template, pattern) - rhyme = Rhyme(verse.normalized, - pattern.constraint, template.mergers, template.options) - verse.phon = rhyme.phon - verse.annotate() - mx = 0 - mn = 0 - for c in verse.chunks: - if 'weights' in c.keys(): - mn += min(c['weights']) - mx += max(c['weights']) - print("%s\t%d\t%d" % (w, mn, mx)) - diff --git a/littre/.gitignore b/littre/.gitignore @@ -1,9 +0,0 @@ -conflicts -plint_num -plint_raw_nums -prons -prons_normal -prons_num -prons_poesie -prons_special -prons_vers diff --git a/littre/additions_poesie b/littre/additions_poesie @@ -1,14 +0,0 @@ -ACACIA%a-ka-sia ; de trois OU quatre syllabes en poésie -ADJURATION%dju-ra-sion ; en poésie, de quatre syllabes -APOSTAT%a-po-sta ; en poésie, de trois syllabes -DJURATION%dju-ra-sion ; en poésie, de quatre syllabes -AÉRIEN, ENNE%a-é-riin, riè-n' ; en poésie, de quatre syllabes -AFFECTION%a-fè-ksion ; de quatre syllabes en poésie -ALTÉRATION%al-té-ra-sion ; en poésie, de cinq syllabes -ALTIER, IÈRE%al-tié, tiê-r' ; en poésie, de deux syllabes -CAPTATION%ka-pta-sion ; en poésie, de quatre syllabes -COALITION%ko-a-li-sion ; en poésie, de cinq syllabes -CONDITION%kon-di-sion ; en poésie, de quatre syllabes -CONSCRIPTION%kon-skri-psion ; en poésie, de quatre syllabes -HARNAIS ou HARNOIS%har-nê ; en poésie, de deux syllabes -SANGLIER%san-gli-é ; de deux OU trois syllabes en poésie diff --git a/littre/additions_vers b/littre/additions_vers @@ -1,16 +0,0 @@ -ACADÉMICIEN%a-ka-dé-mi-siin ; de cinq OU six syllabes en vers -AVANT-HIER%a-van-tièr ; de trois syllabes en vers -BROC%bro ; de une syllabes en vers -DIABLE%dia-bl' ; de deux syllabes en vers -EXÉCUTION%è-gzé-ku-sion ; de cinq syllabes en vers -GUÈRE ou GUÈRES%ghê-r'. de une syllabe en vers -JUSQUE et JUSQUES%ju-sk'. de une syllabe en vers -MISSIONNAIRE%mi-sio-nê-r' ; en vers, de quatre syllabes -RÉFUSION%ré-fu-zion ; en vers, de quatre syllabes -RÉMUNÉRATION%ré-mu-né-ra-sion ; en vers, de six syllabes -SOUHAITABLE%souè-ta-bl' ; en vers, de trois syllabes -SOUHAITÉ, ÉE%souè-té, tée ; en vers, de trois syllabes -SOUHAITER%souè-té ; en vers, de trois syllabes -STOÏCIEN, IENNE%sto-i-siin, siè-n' ; en vers, de quatre syllabes -SUPPLICATION%su-pli-ka-sion ; en vers, de cinq syllabes -VIELLE%viè-l' ; en vers, de deux OU trois syllabes diff --git a/littre/compare_plint.py b/littre/compare_plint.py @@ -1,28 +0,0 @@ -#!/usr/bin/python3 - -"""compare file from littre and file from plint for disagreements""" - -import sys - -plint = open(sys.argv[1]) -littre = open(sys.argv[2]) - -while True: - l_plint = plint.readline() - if not l_plint: - break - l_littre = littre.readline() - w_plint, p_plint = l_plint.split('%') - w_littre, p_littre = l_littre.split('%') - p_littre = int(p_littre) - assert(w_plint == w_littre) - w = w_plint - if '-' in p_plint: - lo, hi = p_plint.split('-') - lo = int(lo) - hi = int(hi) - else: - lo = int(p_plint) - hi = lo - if not (lo <= p_littre <= hi): - print ("%s : %d vs %d-%d" % (w, p_littre, lo, hi)) diff --git a/littre/littre_syll.sh b/littre/littre_syll.sh @@ -1,55 +0,0 @@ -#!/bin/bash - -# extract prononciation from xmllittre -# https://bitbucket.org/Mytskine/xmlittre-data.git - -xmlstarlet sel -t -m "//entree" -v "@terme" -v "\"%\"" \ - -v "entete/prononciation" -n "$1"/*.xml > prons -cat prons | grep -E "(syllabes en poésie|en poésie,? de)" > prons_poesie -cat prons | grep -E "(en vers,? de|syllabes en vers)" > prons_vers -cat additions_poesie additions_vers prons_poesie prons_vers | - awk 'BEGIN {FS = "%";} !a[$1]++;' | - while read l; do - echo "$l" | cut -d '%' -f 1 | cut -d ' ' -f 1 | tr -d '\n' - echo -n '%' - echo "$l" | cut -d '%' -f 2- | tr ' ' '\n' | - sed ' - s/^une$/1/; - s/^deux$/2/; - s/^trois$/3/; - s/^quatre$/4/; - s/^cinq$/5/; - s/^cinç$/5/; - s/^six$/6/; - s/^sept$/7/; - s/^disylla.*$/2/; - s/^trisylla.*$/3/; - ' | grep '[0-9]' | head -1 - done > prons_special - -pv prons | - grep -v '%$' | - grep -v ' .*%' | - awk 'BEGIN {FS = "%";} !a[$1]++;' | - while read l; do - echo "$l" | cut -d '%' -f 1 | cut -d ' ' -f 1 | tr -d '\n' - echo -n '%' - echo "$l" | cut -d '%' -f 2- | sed 's/ *- */-/g' | cut -d ' ' -f 1 | tr -d ',' | - sed "s/-[^aâàeéêèiîoôuùûäëïöü-]*'//" | tr '-' '\n' | wc -l - done > prons_normal - -pv prons_special prons_normal | - awk 'BEGIN {FS = "%";} !a[$1]++;' | - tr -d ',' | sort | grep -v '^%' | sed 's/.*/\L&/' > prons_num - -pv prons_num | cut -d '%' -f1 | - ../plint.py raw.tpl 2>&1 | - grep 'total:' | cut -d ':' -f4 | - cut -d ')' -f1 > plint_raw_nums - -paste <(cat prons_num| cut -d'%' -f1) plint_raw_nums | - tr '\t' '%' | sed 's/ *% */%/' \ - > plint_num - -./compare_plint.py plint_num prons_num > conflicts - diff --git a/littre/raw.tpl b/littre/raw.tpl @@ -1,2 +0,0 @@ -! -12 A X