簡體   English   中英

找到一個更好的正則表達式來標記法語單詞中的省略號

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

我有一句話:

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."

我下面的腳本返回起始偏移量、結束偏移量和單詞:

import re

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

我得到以下 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

...

我的 output 是我想要的,但我正在尋找比[\w'-]+|[.,?;;]更好的正則表達式來標記帶有撇號的單詞,例如:

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

but not :

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

有人有想法嗎? 謝謝。

您可以使用

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

請參閱正則表達式演示

詳情

  • \b[dlnmtsj]' - 一個單詞的開頭,然后是d (例如d'argent )、 l (例如l'huile )、 n (例如n'en )、 m (例如m'appelle )、 t (例如t'appelles ), s (例如s'appelle ) 或j (例如j'ai ) 后跟'
  • | - 或者
  • \w+(?:['-]\w+)* - 一個或多個單詞字符后跟'-然后是一個或多個單詞字符
  • | - 或者
  • [.,?;;] - . , , , ! , ? ; . 替換為[^\w\s]以匹配除單詞和空格字符之外的任何字符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM