检测阿拉伯语令牌中的重复字符

时间:2014-04-25 09:29:10

标签: java arabic

请说明,我需要你的帮助:

如何检测标记中的重复字符,例如:

如果我有这句话: كييييفنستطيعالتوااصلمعالطلاب?

我想要一个java代码,检测包含重复字符的每个单词,然后删除它们(重复的字符)并更新单词。

所以,我们的句子应该是: كيفنستطيعالتواصلمعالطلاب?

注意单词“كيييييي”包含重复的字符“ي”,应该更新为“كيف”,“التوااصل”变为“التواصل”。

我帮助你。

2 个答案:

答案 0 :(得分:1)

一个选项(请考虑我对阿拉伯语的知识是不存在的)是用空格分隔符拆分字符串,然后使用charAt方法检查每个拆分字符串以查找字符重复,或使用unicode字符值检查字符重复的每个拆分字符串您要检查的特定字符。

答案 1 :(得分:1)

Lolina,循环没有多大帮助。你听说过正则表达吗? Java使用它们和Perl和Python一样多的其他语言。我熟悉Python,但正则表达式几乎在所有语言中都有类似的功能。

现在你需要阅读Java中的正则表达式,特别是读取分别匹配0或更多和1个或更多字符的元字符*和+。

首先尝试编译简单的正则表达式,然后向它们添加额外的东西,以便它们执行您实际想要执行的操作。

最后,正则表达式在开始时有点令人困惑,但它们值得一试。请记住,斯坦福阿拉伯语POS标签使用正则表达式来执行类似于您尝试的操作。

我对Java并不熟悉,但在Python中,我会按如下方式进行:

>>> import re
>>> p = re.compile('ي+') # The + sign means match at least more than one occurrence of ي 
>>> p.sub('ي', 'كييييييييف نتواصل مع الطلاب')
'كيف نتواصل مع الطلاب'

通常在阿拉伯语中,我们重复输入以下三个字母:ا,ي和و。这些是阿拉伯语的元音。您可以为ي编译正则表达式并将其剥离。然后为ا创建另一个,为و再编译一个。

我希望这会对你有所帮助!