python - tutorial - ¿Hay clases en NLTK para normalizar y canonizar texto?
pip3 install nltk python (3)
Puede que sea un poco tarde, pero esto puede ser útil. Estas son las palabras clave para algunos idiomas (inglés, francés, alemán, finlandés, húngaro, turco, ruso, checo, griego, árabe, chino, japonés, coreano, catalán, polaco, hebreo, noruego, sueco, italiano, portugués y español) ): https://pypi.python.org/pypi/many-stop-words
La cantidad predominante de documentación y ejemplos de NLTK está dedicada a la lematización y la derivación, pero es muy escasa en cuestiones de normalización como:
- convertir todas las letras a mayúsculas o minúsculas
- quitando puntuacion
- convertir números en palabras
- Eliminando marcas de acento y otros signos diacríticos.
- expandiendo las abreviaturas
- Eliminar palabras clave o palabras "demasiado comunes"
- canonicalización del texto (tumor = tumor, es = es)
Por favor, apúntame dónde en NLTK para cavar. Cualquier equivalente de NLTK (JAVA o cualquier otro) para los propósitos antes mencionados son bienvenidos. Gracias.
UPD . He escrito una biblioteca de python de normalización de texto para los propósitos de texto a voz https://github.com/soshial/text-normalization . Puede que te quede bien a ti también.
Sugiero usar stopwords.words () para eliminar las palabras de parada. Admite los siguientes idiomas: danés, holandés, inglés, francés, alemán, italiano, noruego, portugués, ruso, español, sueco.
También en la especificación NLTK muchas (sub-) tareas se resuelven usando methods puramente python.
a) convertir todas las letras a mayúsculas o minúsculas
text=''aiUOd''
print text.lower()
>> ''aiuod''
print text.upper()
>> ''AIUOD''
b) quitando puntuacion
text=''She? Hm, why not!''
puncts=''.?!''
for sym in puncts:
text= text.replace(sym,'' '')
print text
>> ''She Hm why not ''
c) convertir números en palabras
En este caso, no sería tan fácil escribir un poco de línea, pero hay muchas soluciones ya existentes, si lo busca en Google. Fragmentos de código , libraries , etc.
d) Eliminación de marcas de acento y otros signos diacríticos.
busque el punto b) , simplemente cree la lista con signos diacríticos como puntos
e) abreviaturas en expansión
Crear un diccionario con las abreviaturas:
text=''USA and GB are ...''
abbrevs={''USA'':''United States'',''GB'':''Great Britain''}
for abbrev in abbrevs:
text= text.replace(abbrev,abbrevs[abbrev])
print text
>> ''United States and Great Britain are ...''
f) Eliminar palabras clave o palabras "demasiado comunes"
Crea una lista con palabras clave:
text=''Mary had a little lamb''
temp_corpus=text.split('' '')
stops=[''a'',''the'',''had'']
corpus=[token for token in temp_corpus if token not in stops]
print corpus
>> [''Mary'', ''little'', ''lamb'']
g) canonicalización del texto (tumor = tumor, es = lo es)
para tumor-> uso de tumores regex .
Por último, pero no menos importante, tenga en cuenta que todos los ejemplos anteriores generalmente necesitan calibración en los textos reales, los escribí como la dirección a seguir.