我如何在没有 nltk 的情况下清理 urdu 数据语料库 Python

How can i clean urdu data corpus Python without nltk

我有超过 10000 个乌尔都语单词的语料库。现在我想要的是清理我的数据。每当我使用正则表达式时,我的文本中都会出现一个特殊的 uni 编码数据,如“!؟ـ،”,它会给我错误,你的数据不是编码形式。 请为我提供一些帮助来清理我的数据。 谢谢

这是我的示例数据:

ظہیر

احمد

ماہرہ

خان

کی،

تصاویر،

نے

دائیں

اور

بائیں

والوں

کو

آسمانوں

پر

پہنچایا

،ہوا

ہے۔

دائیں؟

والے

我用你的样本找到了所有带有 ہر

的单词

请注意,我必须通过在正则表达式字符串和数据字符串前面使用 u 来告诉 python 我正在处理 utf-8 数据

import re
data = u"""
ظہیر

احمد

ماہرہ

خان

.....
"""
result = re.findall(u'[^\s\n]+[ہر][^\s\n]+',data,re.MULTILINE)
print(result)

输出是

['ظہیر', 'ماہرہ', 'تصاویر،', 'پہنچایا', '،ہوا']

另一个示例,删除除空格之外的所有 none 字母表,并确保只有一个空格分隔单词

result = re.sub(' +',' ',re.sub(u'[\W\s]',' ',data))
print(result)

输出是

 ظہیر احمد ماہرہ خان کی تصاویر نے دائیں اور بائیں والوں کو آسمانوں پر پہنچایا ہوا ہے دائیں والے 

你也可以使用分词器,

import nltk
result = nltk.tokenize.wordpunct_tokenize(data)
print(result)

输出将是

['ظہیر', 'احمد', 'ماہرہ'
 , 'خان', 'کی', '،', 'تصاویر'
 , '،', 'نے', 'دائیں', 'اور', 'بائیں', 'والوں'
 , 'کو', 'آسمانوں', 'پر', 'پہنچایا'
 , '،', 'ہوا', 'ہے', '۔', 'دائیں', '؟', 'والے']

编辑 ... 对于 Python 2.7,您必须在代码文件的开头指定编码,并告诉 re 正则表达式是 'unicode' 使用 re.UNICODE

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import re

data = u"""ظہیر

احمد

ماہرہ

خان

کی،

.....

"""


result = re.sub(ur'\s+',u' ',re.sub(ur'[\W\s]',ur' ',data,re.UNICODE),re.UNICODE)
print(result)

还要注意使用 ur'' 指定字符串是 unicode 正则表达式字符串