Herramientas de usuario

Herramientas del sitio


ai:nlp_with_nltk

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
ai:nlp_with_nltk [2011/09/25 10:32]
alfred
ai:nlp_with_nltk [2020/05/09 09:25] (actual)
Línea 63: Línea 63:
  
  
-==== Tratar strings (texto raw) ==== +
-  * ''​nltk.word_tokenize(s)'',​ separa el texto en distintos tokens a partir de espacios en blanco, saltos de línea... +
-  * ''​nltk.clean_html(s)'',​ substrae el texto de un string en formato HTML.+
  
  
Línea 100: Línea 98:
 </​code>​ </​code>​
  
-==== Notas ==== + 
-=== Esquema ​del trato con strings ​===+ 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 +==== Preproceso del texto ==== 
 +=== Tokenizar === 
 +  * ''​nltk.word_tokenize(s)'',​ separa el texto en distintos tokens a partir de espacios en blanco, saltos de línea... 
 +  * Podemos tokenizar a partir ​del método ''​re.split(regex,​ text)''​. Con expresiones regulares como ''​r'​\s+'''​ (para espacios en blanco, tabulaciones,​ saltos de línea...), ''​r'​\W+'''​ (para tokens que no contengan puntuación)... 
 +  * ''​nltk.regexp_tokenize(regex,​ s)''​ nos permite tokenizar un texto a partir de una expresión regular. 
 + 
 +=== Limpieza === 
 +  * ''​nltk.clean_html(s)'',​ substrae el texto de un string en formato HTML. 
 + 
 +=== Segmentar === 
 + 
 +=== Lematizar === 
 +NLTK permite lematizar a partir del lematizador de WordNet, este elimina los afijos si la palabra resultante está en el diccionario. 
 +<code python>​ 
 +wnl = nltk.WordNetLemmatizer() 
 +[wnl.lemmatize(t) for t in tokens] 
 +</​code>​ 
 + 
 +=== Stemizar === 
 +NLTK provee de dos stemmers, el de Porter (''​nltk.PorterStemmer''​) y el de Lancaster (''​nltk.LancasterStemmer''​),​ un ejemplo de uso sería: 
 +<code python>​ 
 +porter = nltk.PorterStemmer() 
 +[porter.stem(t) for t in tokens] 
 +</​code>​ 
 + 
 +=== Esquema básico ​===
 <code python> <code python>
 from urllib import urlopen from urllib import urlopen
Línea 108: Línea 139:
 html = urlopen(url).read() html = urlopen(url).read()
 raw = nltk.clean_html(html) #​ 1. Conseguimos el texto raw = nltk.clean_html(html) #​ 1. Conseguimos el texto
-tokens = nltk.wordpunct_tokenize(raw) #​ 2. Lo toquenizamos+tokens = nltk.wordpunct_tokenize(raw) #​ 2. Lo tokenizamos
 text = nltk.Text(tokens) #​ 3. Lo convertimos a objeto Text text = nltk.Text(tokens) #​ 3. Lo convertimos a objeto Text
 words = [w.lower() for w in text] # 4. Lo normalizamos words = [w.lower() for w in text] # 4. Lo normalizamos
 vocab = sorted(set(words)) #​ 5. Lo tratamos (p.ej. extracción de vocabulario) vocab = sorted(set(words)) #​ 5. Lo tratamos (p.ej. extracción de vocabulario)
 </​code>​ </​code>​
 +
 +
  
 ===== Categorizar y taggear palabras ===== ===== Categorizar y taggear palabras =====
Línea 122: Línea 155:
  
 ===== Notas ===== ===== Notas =====
 +
  
  
Línea 194: Línea 228:
 path = nltk.data.find('​corpora/​unicode_samples/​polish-lat2.txt'​) #​ Devuelve la ruta de polish-lat2.txt path = nltk.data.find('​corpora/​unicode_samples/​polish-lat2.txt'​) #​ Devuelve la ruta de polish-lat2.txt
 </​code>​ </​code>​
 +
 +
 +
 +
 +
 +
 +==== Regex útiles ====
 +^ regex ^ Explicación ^
 +| ''​[aeiou]{2,​}''​ | Palabras con dos vocales seguidas |
 +| ''​^(.*)(ing|ly|ed|ious|ies|ive|es|s|ment)$''​ | Estemiza palabras en inglés, devolviendo el estema y el sufijo |
 +| ''<​.*><​.*><​bro>''​ | Tres palabras seguidas donde la última sea //"​bro"//​ |
 +| ''<​a>​(<​.*>​)<​man>''​ | Los adjetivos que se le agregan a //"a man"//​. |
ai/nlp_with_nltk.1316946748.txt.gz · Última modificación: 2020/05/09 09:24 (editor externo)