Mentions légales du service

Skip to content
Snippets Groups Projects
Commit 8782fc34 authored by Clémence Laurent's avatar Clémence Laurent
Browse files

debug perl regex listes + ajouts pour gérer différents cas d'effets de listes...

debug perl regex listes + ajouts pour gérer différents cas d'effets de listes + modifs réperctutées en python
parent e2b49433
No related branches found
No related tags found
No related merge requests found
......@@ -63,6 +63,7 @@ sub altok_split_sentences {
$s =~ s/&lt; *br *(?:\/ *)?&gt;/<\/s><s type=\"br\">/g;
if ($lang =~ /^(ja|zh|tw)(_|$)/) {
$s =~ s/([①-⑫●※*■◆→⇒◇◎★☆〇·•])/<l\/>$1/g;
$s =~ s/(?<![1-91-9〇零一二三四五六七八九○十百千萬億兆万亿])( +)(○ +)(?![1-91-9〇零一二三四五六七八九○十百千萬億兆万亿])/$1<l\/>$2/g;
......@@ -92,6 +93,7 @@ sub altok_split_sentences {
$s =~ s/([^ ])( +)<l\/>/$1<\/s>$2<s type=\"li\">/g;
$s =~ s/<l\/>//g;
#TODO check, j'ai ajouté un espace entre <s et type="br,li" pour bien detokeniser ensuite
$s =~ s/<s type="br"><\/s>( *)<s type="li">/$1<s type="br,li">/g;
......@@ -141,18 +143,29 @@ sub altok_split_sentences {
}
}
}
if (/( - .*){8,}/) { # à partir de 8 (choisi au plus juste), on va considérer qu'on est face à une liste
if ($s =~ /( - .*?){8,}/) { # à partir de 8 (choisi au plus juste), on va considérer qu'on est face à une liste
#ajout d'un espace en plus entre s et type
$s =~ s/ - /<\/s> <s type=\"li\">- /g;
}
$s =~ s/<s>( *)<\/s>/$1/g;
$s =~ s/<s[^<>]*>$//;
$s =~ s/^<\/s>//;
$s =~ /^ ([^ ])/ || die "ERROR [enqiTokeniser]: Internal error on '$s'";
$s =~ /([^ ]) $/ || die "ERROR [enqiTokeniser]: Internal error on '$s'";
$s =~ s/^ ([^ ])/ <s>$1/ unless $s =~ /^ +<s/;
$s =~ s/([^ ]) $/$1<\/s> / unless $s =~ /<\/s> +$/;
#ajouts pour gérer quand on a détecté des listes mais que les nombres sont séparés du tiret + gérer après quand on a des br seuls
$s =~ s/<s>(\d+)<\/s> <s type="li">-/<s type="li">$1 -/g;
$s =~ s/<s type="((?:br,)?li)">(\d+)<\/s> <s type="li">-/<s type="$1">$2 -/g;
$s =~ s/<s type="br">\s*<\/s>\s*<s type="li">-/<s type="br,li">-/g;
$s =~ s/<s type="br">\s*<\/s>\s*<s type="(?:br,)?li">/<s type="br,li">/g;
if ($noxml) {
$s =~ s/<\/s> *<s[^>]*>/\n/gs;
$s =~ s/^ *<s[^>]*> *//gs;
......
......@@ -3,6 +3,8 @@
import regex as re
#import sys
rom1_10 = re.compile(r"(?:III?|I?V|VIII?|VI|I?X|I)")
rom2_10 = re.compile(r"(?:III?|I?V|VIII?|VI|I?X)")
rom10_maxrom = re.compile(r"(?:(?:M+(?:C?D)?)?(?:X{1,4}|X?L|LX{1,4}|X?C{1,4}))")
......@@ -139,7 +141,6 @@ def altok_split_sentences(s, lang, weak_sbound = 0, less_lists = 0, noxml = 0, a
#QUESTION ici erreur ça devrait être reference group 1 plutôt que 2 comme en perl ? OU c'est parce que c'est le groupe 2 de la première substitution dans le if du dessus ?
s = re.sub(r" \.( )", r" \.</s>\1<s>", s) # cas des langues sans majuscules..
if re.search(r"( - .*){8,}", s): # à partir de 8 (choisi au plus juste), on va considérer qu'on est face à une liste
#ajout d'un espace en plus entre s et type
s = re.sub(r" - ", r'</s> <s type="li">- ', s)
......@@ -158,6 +159,12 @@ def altok_split_sentences(s, lang, weak_sbound = 0, less_lists = 0, noxml = 0, a
s = re.sub(r"^ ([^ ])", r" <s>\1", s)
if not re.search(r"</s> +$", s):
s = re.sub(r"([^ ]) $", r"\1</s> ", s)
#ajouts pour gérer quand on a détecté des listes mais que les nombres sont séparés du tiret + gérer après quand on a des br seuls
s = re.sub(r'<s>(\d+)<\/s> <s type="li">-', r'<s type="li">\1 -', s)
s = re.sub(r'<s type="((?:br,)?li)">(\d+)<\/s> <s type="li">-', r'<s type="\1">\2 -', s)
s = re.sub(r'<s type="br">\s*<\/s>\s*<s type="li">-', r'<s type="br,li">-', s)
s = re.sub(r'<s type="br">\s*<\/s>\s*<s type="(?:br,)?li">', r'<s type="br,li">', s)
if noxml:
s = re.sub(r"</s> *<s[^>]*>", r"\n", s, flags = re.DOTALL)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment