简体   繁体   English

找到一个更好的正则表达式来标记法语单词中的省略号

[英]Find a finer regex to tokenize elisions in French words

I have one sentence:我有一句话:

sentence1 = "Vincennes Confirmation des privilèges de la villed'Aire au bailliage d'Amiens Mai 1498 Aire-sur-la-Lys, Pas-de-Calais, arrondissement de Saint-Omer."

my script below returns the start offset, end offset and word:我下面的脚本返回起始偏移量、结束偏移量和单词:

import re

for element in re.finditer(r"[\w'-]+|[.,!?;]", sentence1):
        start = element.start()
        end = element.end()
        value = sentence1[start:end]
        print(start, end, value)

I get the following output:我得到以下 output:

0 9 Vincennes
10 22 Confirmation
23 26 des
27 37 privilèges
38 40 de
41 43 la
44 55 villed'Aire
56 58 au
59 68 bailliage
69 77 d'Amiens
78 81 Mai
82 86 1498
87 102 Aire-sur-la-Lys
102 103 ,
104 117 Pas-de-Calais
117 118 ,
119 133 arrondissement
134 136 de
137 147 Saint-Omer

...

My output is the one I want but I'm looking for a better regex than [\w'-]+|[.,?;;] to tokenize words with apostrophes as exemple:我的 output 是我想要的,但我正在寻找比[\w'-]+|[.,?;;]更好的正则表达式来标记带有撇号的单词,例如:

d'Amiens => ["d'", "Amiens"]
d'Abrimcourt =>> ["d'", "Abrimcourt"]
...

but not :

villed'Aire => ["villed'Aire"]
...

Anyone have an idea?有人有想法吗? thanks.谢谢。

You can use您可以使用

\b[dlnmtsj]'|\w+(?:['-]\w+)*|[.,!?;]
\b[dlnmtsj]'|\w+(?:['-]\w+)*|[^\w\s]

See the regex demo .请参阅正则表达式演示

Details :详情

  • \b[dlnmtsj]' - start of a word and then d (eg d'argent ), l (eg l'huile ), n (eg n'en ), m (eg m'appelle ), t (eg t'appelles ), s (eg s'appelle ) or j (eg j'ai ) followed with ' \b[dlnmtsj]' - 一个单词的开头,然后是d (例如d'argent )、 l (例如l'huile )、 n (例如n'en )、 m (例如m'appelle )、 t (例如t'appelles ), s (例如s'appelle ) 或j (例如j'ai ) 后跟'
  • | - or - 或者
  • \w+(?:['-]\w+)* - one or more word chars followed with ' or - and then one or more word chars \w+(?:['-]\w+)* - 一个或多个单词字符后跟'-然后是一个或多个单词字符
  • | - or - 或者
  • [.,?;;] - . [.,?;;] - . , , , ! , , , ! , ? , ? or ;; . . Replace with [^\w\s] to match any char other than a word and whitespace char.替换为[^\w\s]以匹配除单词和空格字符之外的任何字符。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM