如何从 python 中的孟加拉语文本中删除外来词

How can I remove foreign word from Bengali text in python

我有一个文本数据文件,其中包含带有大量外来词的原始孟加拉文本数据 我想从孟加拉语原始文本中删除所有外来词。

输入:

দেশের রাজনীতি দিনকে দিন পচে যাচ্ছে। पैरेनकाइमा कोशिकाएं . what a shame. সুস্থ থাকা দায়।

输出:

দেশের রাজনীতি দিনকে দিন পচে যাচ্ছে। সুস্থ থাকা দায়।

任何建议或想法都会对我有很大帮助。

提前致谢。

问候

使用ord过滤掉“西方字符和标点符号”(抱歉没有更好的词),并使用re去除多个空格。

import re

a = "দেশের রাজনীতি দিনকে দিন পচে যাচ্ছে। पैरेनकाइमा कोशिकाएं . what a shame. সুস্থ থাকা দায়।"

a = "".join(i for i in a if ord(i) > ord('z') or ord(i)== 32)
re.sub(' +', ' ', a)

returns:

'দেশের রাজনীতি দিনকে দিন পচে যাচ্ছে। पैरेनकाइमा कोशिकाएं সুস্থ থাকা দায়।'

这是评论中提到的Christian Sloper。显然正确的 ord 范围是 2432 到 2559 所以这样的事情似乎有效:

import re

a = "দেশের রাজনীতি দিনকে দিন পচে যাচ্ছে। पैरेनकाइमा कोशिकाएं . what a shame. সুস্থ থাকা দায়।"

a = "".join(i for i in a if i in [".","।"] or 2432 <= ord(i) <= 2559 or ord(i)== 32)
re.sub(' +', ' ', a)

使用 resplit() 函数删除多个 whilespaces。

import re

a = "দেশের রাজনীতি দিনকে দিন পচে যাচ্ছে। पैरेनकाइमा कोशिकाएं . what a shame. সুস্থ থাকা দায়।"

a = "".join(i for i in a if i in ["।"] or 2432 <= ord(i) <= 2559 or ord(i)== 32)
a=" ".join(a.split())
print(a)

输出:

দেশের রাজনীতি দিনকে দিন পচে যাচ্ছে। সুস্থ থাকা দায়।