如何处理字符之间有空格的单词?

时间:2017-09-20 09:29:46

标签: python regex nltk nltk-trainer nltk-book

我在 Dari语言中使用nltk.word_tokenize。问题是我们在一个单词之间有空格 例如,"زنده گی"这个词意味着生命。和相同的;我们还有很多其他的话。所有以字符"ه"结尾的单词都必须为其提供空格,否则,可以将其组合为"زندهگی"

任何人都可以帮助我使用[tag:regex]或任何其他方式不应该标记单词的一部分以"ه"结尾的单词,之后会有"گ "个字符

1 个答案:

答案 0 :(得分:1)

要在波斯语中解决此问题,我们有一个字符,称为零宽度非连接符(或波斯语或半空格或半空格的نیم‌فاصله),它具有两个符号代码。一种是标准的,另一种不是标准的,但被广泛使用:

  1. \ u200C:http://en.wikipedia.org/wiki/Zero-width_non-joiner
  2. \ u200F:从右到左的标记(http://unicode-table.com/en/#200F

据我所知,达里语与波斯语非常相似。因此,首先您应该将زنده گی改成زنده‌گی之类的所有单词,并将所有错误的空格转换为半个空格,然后您可以简单地使用此正则表达式来匹配句子的所有单词:

[\u0600-\u06FF\uFB8A\u067E\u0686\u06AF\u200C\u200F]+

Online demo(测试字符串中的黑色项目符号是regex101无法识别的半个空格,但是如果您查看匹配信息部分并看到Match 5,您会发现这是正确的)

要将大文本的错误空格转换为一半空格,可以使用Microsoft单词调用virastyar的附加组件,它是免费的开放源代码。您可以安装它并优化您的整个文本。但是,请考虑为波斯人而不是达里人创建此附加组件。例如,在波斯语中,我们将زنده‌گی写为زندگی,它无法为您更正此单词。但是像می شود这样的其他词很容易更正并转换为می‌شود。您也可以将自定义单词添加到数据库中。