180 likes | 272 Views
Computación con el lenguaje 4 Día 25, 17 mar 14. Cultura computacional en español SPAN 4350 Harry Howard Tulane University. Organizaci ón del curso. Las grabaciones y las presentaciones están disponibles en: http://www.tulane.edu/~howard/SPAN-NLP/
E N D
Computación con el lenguaje 4Día 25, 17 mar 14 Cultura computacional en español SPAN 4350 Harry Howard Tulane University
Organización del curso • Las grabaciones y las presentaciones están disponibles en:http://www.tulane.edu/~howard/SPAN-NLP/ • La versión en inglés del tema es http://www.tulane.edu/~howard/CompCultES/control.html • Las notas están en el Gradebook de Blackboard. SPAN 4350 - Harry Howard - Tulane University
Repaso SPAN 4350 - Harry Howard - Tulane University
Convertir texto en Text >>> import funciones >>> texto = funciones.cargaTexto() >>> len(texto) 14879 >>> importnltk >>> fromnltk.textimportText >>> T = Text(texto) >>> len(T) 14879 >>> SPAN 4350 - Harry Howard - Tulane University
Funciones para las distribuciones de frecuencia de NLTK SPAN 4350 - Harry Howard - Tulane University
http://nltk.org/book/ch01.html, NLPP 1.3 La computación con el lenguaje: La estadística SPAN 4350 - Harry Howard - Tulane University
Palabras vacías (stopwords) • Las palabras cortas suelen esconder la frecuencia de las palabras que nos interesan de un texto. • NLTK dispone de listas de estas palabras en varios idiomas. • Están en la carpeta 'stopwords' en la carpeta 'corpora'. SPAN 4350 - Harry Howard - Tulane University
Hay dos formas de acceder a ellas >>> import nltk # La forma directa >>> temp = nltk.corpus.stopwords.words('spanish') # La forma indirecta >>> from nltk.corpus import stopwords >>> temp = stopwords.words('spanish') # El resultado es el mismo para las dos: >>> vacias[:50] ['de', 'la', 'que', 'el', 'en', 'y', 'a', 'los', 'del', 'se', 'las', 'por', 'un', 'para', 'con', 'no', 'una', 'su', 'al', 'lo', 'como', 'm\xc3\xa1s', 'pero', 'sus', 'le', 'ya', 'o', 'este', 's\xc3\xad', 'porque', 'esta', 'entre', 'cuando', 'muy', 'sin', 'sobre', 'tambi\xc3\xa9n', 'me', 'hasta', 'hay', 'donde', 'quien', 'desde', 'todo', 'nos', 'durante', 'todos', 'uno', 'les', 'ni'] >>> len(temp) 313 # Convertir a Unicode >>> vacias = [p.decode('utf8') for p in temp] >>> vacias[:50] [u'de', u'la', u'que', u'el', u'en', u'y', u'a', u'los', u'del', u'se', u'las', u'por', u'un', u'para', u'con', u'no', u'una', u'su', u'al', u'lo', u'como', u'm\xe1s', u'pero', u'sus', u'le', u'ya', u'o', u'este', u's\xed', u'porque', u'esta', u'entre', u'cuando', u'muy', u'sin', u'sobre', u'tambi\xe9n', u'me', u'hasta', u'hay', u'donde', u'quien', u'desde', u'todo', u'nos', u'durante', u'todos', u'uno', u'les', u'ni'] SPAN 4350 - Harry Howard - Tulane University
NLPP 2.2 Distribución de frecuencia condicionada SPAN 4350 - Harry Howard - Tulane University
Distribución de frecuencia condicionada • Una distribución de frecuencia condicionada es una colección de distribuciones de frecuencia, cada una para una condición diferente. • La condición suele ser la categoría del texto. • La Figura 2.4 muestra un fragmento de una distribución de frecuencia condicionada que tiene sólo dos condiciones, una para un texto de prensa y otra para un texto de novela románica. SPAN 4350 - Harry Howard - Tulane University
Figura 2.4 • Contar palabras que aparecen en una colección de textos (una distribución de frecuencia condicionada). SPAN 4350 - Harry Howard - Tulane University
Emparejamiento de evento (muestra) y condición • Una distribución de frecuencia cuenta eventos observables • Para nosotros, un evento es la aparición de una palabra en un texto. • O sea, vamos a tomar una muestra (sample) de un texto. • Una distribución de frecuencia condicionada empareja un evento con una condición. • O sea, una muestra con una condición. • En lugar de procesar una secuencia de palabras, lo que se procesa es una secuencia de pares de palabra (muestra) y condición. SPAN 4350 - Harry Howard - Tulane University
Un corpus con categorías • El Corpus de Brown tiene 15 categorías: >>> from nltk.corpus import brown >>> brown.categories() ['adventure', 'belles_lettres', 'editorial', 'fiction', 'government', 'hobbies','humor', 'learned', 'lore', 'mystery', 'news', 'religion', 'reviews', 'romance','science_fiction'] >>> brown.words(categories='news') ['The', 'Fulton', 'County', 'Grand', 'Jury', 'said', ...] SPAN 4350 - Harry Howard - Tulane University
Muestra de emparejamiento • Los tokens de cada categoría están emparejados con la categoría, de esta forma: [( 'news', 'The' ), ('news', 'Fulton' ), ('news' , 'County' ), ...] • O sea, cada par tiene la forma (condición, muestra). • Si procesáramos el Corpus de Brown por género, habría 15 condiciones (una por género) y 1.161.192 muestras (una por palabra). SPAN 4350 - Harry Howard - Tulane University
Como procesar por condición • Se crea una lista de dos géneros, para simplificar: >>> gen = ['news', 'romance'] • Se crea una lista de pares (género, palabra): >>> genero_palabra = [(g, p) • … revisando cada género: for g in gen • … revisando cada palabra del género: for p in brown.words(categories=g)] • Se crea la distribución: >>> from nltk.probability import ConditionalFreqDist >>> dfc = nltk.ConditionalFreqDist(genero_palabra) SPAN 4350 - Harry Howard - Tulane University
Lo anterior sin comentarios >>> gen = ['news', 'romance'] >>> genero_palabra = [(g, p) for g in gen for p in brown.words(categories=g)] >>> fromnltk.probabilityimportConditionalFreqDist >>> dfc = nltk.ConditionalFreqDist(genero_palabra) SPAN 4350 - Harry Howard - Tulane University
Comprobar el resultado >>> len(genero_palabra) 170576 >>> genero_palabra[:4] [('news', 'The'), ('news', 'Fulton'), ('news', 'County'), ('news', 'Grand')] >>> genero_palabra[-4:] [('romance', 'afraid'), ('romance', 'not'), ('romance', "''"), ('romance', '.')] >>> dfc <ConditionalFreqDist with 2 conditions> >>> dfc.conditions() ['news', 'romance'] >>> dfc['news'] <FreqDist with 100554 outcomes> >>> dfc['romance'] <FreqDist with 70022 outcomes> >>> dfc['romance']['could'] 193 >>> list(dfc['romance']) [',', '.', 'the', 'and', 'to', 'a', 'of', '``', "''", 'was', 'with', 'you', 'for', 'at', 'He', 'on', 'him','said', '!' 'I', 'in', 'he', 'had','?', 'her', 'that', 'it', 'his', 'she', ...] SPAN 4350 - Harry Howard - Tulane University
P6 Análisis de textos con NLTK El próximo díaTráete el portátil a clase. SPAN 4350 - Harry Howard - Tulane University