You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过编程正确拆分带停顿标记的阿拉伯语文本

解决阿拉伯字符串拆分时停顿标记与单词分离的问题

问题描述

拆分阿拉伯字符串时,使用普通空格拆分(split(" "))会将停顿标记ۛ与前面的单词强制分离,即便标记和单词之间无空格也会出现该问题。例如:

  • 原字符串:"ذَٰلِكَ ٱلْكِتَـٰبُ لَا رَيْبَ ۛ فِيهِ ۛ هُدًى لِّلْمُتَّقِينَ"
  • split(" ")执行结果:['ذَٰلِكَ', 'ٱلْكِتَـٰبُ', 'لَا', 'رَيْبَ', 'ۛ', 'فِيهِ', 'ۛ', 'هُدًى', 'لِّلْمُتَّقِينَ']
  • 期望结果:['ذَٰلِكَ', 'ٱلْكِتَـٰبُ', 'لَا', 'رَيْبَ ۛ', 'فِيهِ ۛ', 'هُدًى', 'لِّلْمُتَّقِينَ']

解决方案

使用正则表达式的负向零宽断言拆分字符串,仅在停顿标记ۛ之外的空格处执行拆分,从而保留标记与前置单词的绑定关系。

以Python为例,代码实现如下:

import re

arabic_str = "ذَٰلِكَ ٱلْكِتَـٰبُ لَا رَيْبَ ۛ فِيهِ ۛ هُدًى لِّلْمُتَّقِينَ"
# 匹配"前面不是ۛ的空格"作为拆分点
split_result = re.split(r'(?<!ۛ) ', arabic_str)
print(split_result)

执行后输出符合预期的结果:

['ذَٰلِكَ', 'ٱلْكِتَـٰبُ', 'لَا', 'رَيْبَ ۛ', 'فِيهِ ۛ', 'هُدًى', 'لِّلْمُتَّقِينَ']

原理说明

正则表达式(?<!ۛ) 中的(?<!ۛ)是负向零宽后行断言,它会判断当前空格的前置字符是否为ۛ:

  • 若前置字符是ۛ,则跳过该空格,不进行拆分;
  • 若前置字符不是ۛ,则将该空格作为拆分分隔符。

通过这种方式,既能保留رَيْبَ ۛ、فِيهِ ۛ这类组合的完整性,又能正常拆分其他位置的空格。

内容的提问来源于stack exchange,提问作者Tarikul Islam Tuhin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 09:05:55