Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previa | ||
|
ai:nlp_with_nltk [2011/09/26 07:59] alfred |
ai:nlp_with_nltk [2020/05/09 09:25] (actual) |
||
|---|---|---|---|
| Línea 97: | Línea 97: | ||
| cfd['news']['could'] # Objeto FreqDist de la palabra 'could' en 'news' | cfd['news']['could'] # Objeto FreqDist de la palabra 'could' en 'news' | ||
| </code> | </code> | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| Línea 105: | Línea 110: | ||
| === Tokenizar === | === Tokenizar === | ||
| * ''nltk.word_tokenize(s)'', separa el texto en distintos tokens a partir de espacios en blanco, saltos de línea... | * ''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 === | === Limpieza === | ||
| * ''nltk.clean_html(s)'', substrae el texto de un string en formato HTML. | * ''nltk.clean_html(s)'', substrae el texto de un string en formato HTML. | ||
| + | |||
| === Segmentar === | === Segmentar === | ||
| + | |||
| === Lematizar === | === 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 === | === 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 === | === Esquema básico === | ||
| Línea 207: | 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 útiles ==== | ||
| ^ regex ^ Explicación ^ | ^ regex ^ Explicación ^ | ||
| - | | r'[aeiou]{2,}' | Palabras con dos vocales seguidas | | + | | ''[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"//. | | ||