I have a comma-spaced csv file similar to this:
ID,texto1,texto2,texto3
1,El niño juega, El hermano come mucho, El padre bebe y juega
2,El tío es feliz, Los hemanos Karamazov cantan y Gogol bebe, No me interesa
3, Sí, No, No lo sé
I am trying to create a little program in Python that applies punctuation to each phrase according to a series of characteristics. In the first version of the program we have defined a series of functions that first label the sentences and then assign points according to the characteristics of the sentence.
The code, for now, goes like this:
import nltk
import csv
from collections import Counter
with open("libro3.csv", "r") as csvfile:
reader = csv.DictReader(csvfile, delimiter = ",")
comentarios_1 =[]
comentarios_2 =[]
comentarios_3 = []
for row in reader:
comentarios_1.append(row["texto1"])
comentarios_2.append(row["texto2"])
comentarios_3.append(row["texto3"])
#Etiquetando
def etiquetar(lista):
etiquetado=[]
for item in lista:
etiquetas = nltk.pos_tag(item.split())
etiquetado.append(etiquetas)
return etiquetado
ejemplo_de_corpus_etiquetado_1 = (etiquetar(comentarios_1))
ejemplo_de_corpus_etiquetado_2 = (etiquetar(comentarios_2))
ejemplo_de_corpus_etiquetado_3 = (etiquetar(comentarios_3))
#Midiendo distancia
def long_comentarios(corpus):
long_lista = []
for comment in corpus:
long_lista.append(len(comment))
return long_lista
long_lista_1=long_comentarios(ejemplo_de_corpus_etiquetado_1)
long_lista_2=long_comentarios(ejemplo_de_corpus_etiquetado_2)
long_lista_3=long_comentarios(ejemplo_de_corpus_etiquetado_3)
#Puntuando distancia
def puntos_por_longitud(long_comentarios):
puntos_long = []
for item in long_comentarios:
if item <= 10:
puntos_long.append(0)
elif 10 < item <= 50:
puntos_long.append(1)
else:
puntos_long.append(2)
return puntos_long
puntos_long_1 = puntos_por_longitud(long_lista_1)
puntos_long_2 = puntos_por_longitud(long_lista_2)
puntos_long_3 = puntos_por_longitud(long_lista_3)
#Categorizando
def categorizacion_global(corpus):
tag_fd = nltk.FreqDist(tag for comment in corpus for (word, tag) in comment )
return tag_fd.most_common()
def categorizacion_individual(corpus):
return [nltk.FreqDist(tag for (word, tag) in comment).most_common()
for comment in corpus]
categories_individual_sentences_1 = categorizacion_individual(ejemplo_de_corpus_etiquetado_1)
categories_individual_sentences_2 = categorizacion_individual(ejemplo_de_corpus_etiquetado_2)
categories_individual_sentences_3 = categorizacion_individual(ejemplo_de_corpus_etiquetado_3)
#Puntuando complejidad
def puntos_por_complejidad(corpus):
return [2 if sum(c[1] for c in frase if c[0] in {'VBZ', 'VBG'}) >= 2 else 1
for frase in corpus]
puntos_comp_1 = puntos_por_complejidad(categories_individual_sentences_1)
puntos_comp_2 = puntos_por_complejidad(categories_individual_sentences_2)
puntos_comp_3 = puntos_por_complejidad(categories_individual_sentences_3)
The objective is to get a csv file that prints in ID order, sentences, the scores assigned by each function, the sum of points and an Apt (Yes or no). The csv would look like the following:
Comments are welcome to improve the program and write the data columns correctly.