我正在执行一个NLP任务,该任务需要使用称为Yoruba的语言的语料库。约鲁巴语是一种在字母表中带有变音符号的语言。如果我在python环境中读取了任何文本/语料库,则某些上级变音符号会移位/移位,尤其是对于字母ẹ和ọ:
对于顶部带有变音符号的字符they,他们会移位。也有:ẹ同样的事情也会发生。(ọ)
def readCorpus(directory="news_sites.txt"):
with open(directory, 'r',encoding="utf8", errors='replace') as doc:
data = doc.readlines()
return data
预期的结果是将变音符正确地放置在顶部(我很惊讶stackoverflow能够修复变音符)。
后来,已被替换的变音符号被视为标点符号,因此被删除(通过我的NLP处理功能),从而影响了整个任务。
我使用reg ex'cos删除了数字,某些字符串包含数字,但是使用了字符串库中的maketrans方法来删除标点符号。
import string
out = re.sub(r'[0-9\.]+', '', ins)
punct = str.maketrans({k: None for k in string.punctuation})
new_s = out.translate(punct)
注意:
dict
传递给之前str.maketrans
,您无需手动构建即可str.maketrans('', '', string.punctuation)
(第三个参数是要在翻译表中删除的字符)。还要注意,它仅处理ASCII标点符号,诸如智能引号(许多文字处理工具会自动替换ASCII单引号和双引号)之类的内容不包含在中string.punctuation
。