2017-10-14 18 views
1

J'ai un corpus de plus de 10000 mots en urdu. Maintenant, ce que je veux, c'est nettoyer mes données. Il y a des données spéciales en code uni dans mon texte comme "!?", Chaque fois que j'utilise des expressions régulières, cela me donne l'erreur que vos données ne soient pas sous forme codée. Veuillez me fournir de l'aide pour nettoyer mes données. MerciComment puis-je nettoyer urdu corpus de données Python sans nltk

Voici mon échantillon de données:

ظہیر

احمد

ماہرہ

خان

کی،

تصاویر،

نے

دائیں

اور

بائیں

والوں

کو

آسمانوں

پر

پہنچایا

،ہوا

ہے۔

دائیں؟

والے

+0

Je recommande de fournir un échantillon des données relatives à votre – sgDysregulation

+0

J'ai ajouté mes données d'échantillon – smartF

Répondre

3

je votre échantillon pour trouver tous les mots avec ہ ou ر

Notez que je devais dire python que je traite UTF- 8 données en utilisant u en face de la chaîne de regex ainsi que la chaîne de données

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

احمد 

ماہرہ 

خان 

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

la sortie est

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

un autre exemple, supprime tous aucun alphabets sauf les espaces et fait en sorte que l'un des espaces sépare les mots

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

la sortie est

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

vous pouvez également utiliser mot tokanizer,

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

la sortie sera

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

Edit ... pour Python 2.7, vous devez spécifier l'encodage au début du fichier de code ainsi que dire re que le regex est « unicode » en utilisant 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) 

noter également l'utilisation de ur'' pour spécifier la chaîne est une chaîne regex unicode

+0

je le code 'import codecs ' importation re file1 = codecs.open ("foo1.txt", "r", encoding = "utf-8") pour ligne dans le fichier 1: résultat = re.sub ('+', '', re.sub ('\ W \ s \ d]', '', ligne)) impression (résultat) ' Mais cela ne fonctionnait toujours pas – smartF

+0

quelle version de python utilisez-vous et que erreur avez-vous eu. – sgDysregulation

+0

son python27. je n'ai obtenu aucun résultat d'erreur était rien. signifie vide – smartF