IIC2613 / Syllabus

Repositorio oficial Inteligencia Artificial 2020-2
7 stars 1 forks source link

Tarea 3: P1 etiquetas #66

Open andresplass opened 4 years ago

andresplass commented 4 years ago

Hola entendí como hacer la partición con sklearn.model_selection.train_test_split pero no me quedó claro como ponerle etiqueta a los csv. Lo hago antes de juntarlos?

Deberia quedar de la forma tipo [["noticia falsa", False], ["noticia falsa", False], ["noticia verdadera", True], ...] algo de este estilo antes de trabajarlo? No entendí bien eso de la etiqueta O simplemente junto ambos csv y hago la partición??

Muchas gracias!

furcelay commented 4 years ago

Hola!

No soy ayudante pero creo que como hacerlo queda más a tu criterio, lo que yo haría es cargar ambos .csv como arrays o DataFrames y añadirle una nueva columna con las etiquetas.

andresplass commented 4 years ago

Pero en bag of words, solo acepta una lista de listas de una dimensión, no sé si acepte una lista de listas de largo 2 (de la forma [texto, verdadero/falso] por eso tenia la duda

Juan-AAS commented 4 years ago

Hola! Para agregar el label debes juntar ambos dataset en un pandas dataframe (o como te guste trabajar, personalmente encuentro que es más ordenado trabajar con pandas) y asignar una columna 'label' donde colocas 1 a las falsas y 0 a las verdaderas (o viceversa)

Para usar BoW no necesitas utilizar la etiqueta del texto, solo el texto.

Saludos :)

andresplass commented 4 years ago

Yaa muchas gracias, una duda al abrir el csv en python, como todo sale en una gran linea de texto, no tengo como separar las columnas ya sea por coma o punto coma ya que el texto incluye hartos de éstos, y me lo separa en mas de 4 columnas, habrá una manera de separarlo que no sea con un split(", o ;")

furcelay commented 4 years ago

yo te recomiendo cargar directamente el csv a pandas (pd), no leerlo al estilo python, para eso usas:

pd.read_csv('archivo.csv')
Juan-AAS commented 4 years ago

Gracias por responder Felipe! Ahora... Andrés, tu pregunta es para si quieres que Dataframe tenga columnas por palabra? (cosa no recomendable) o quieres crear una lista de tokens de la forma: 'text = ['word1', 'word2', 'word3', ..., 'wordN']? si lo que quieres es esta última puedes hacer un text.split(sep=' ')

andresplass commented 4 years ago

Es que si no me equivoco lo que se pide es hacer text = [['word1', 0], ['word2', 1], ..., ['wordN', 1]] cierto? Con 1 u 0 Fake o True, luego de ésto comenzar a trabajar las siguientes preguntas. pd @furcelay gracias me funcionó con pandas :)

Juan-AAS commented 4 years ago

No, el label es por texto, no por palabra. Ahora, lo que se pide (sugiere) es que a cada texto, que corresponde a cada fila en del pandas dataframe, le asignes el label. Para BoW necestias tener lo siguiente: corpus = [text1, text2, ...., textN]

El label lo tendrás que utilizar al momento de entrenarl el modelo de clasificación (SVM o RF).

andresplass commented 4 years ago

Ya perfecto muchas gracias :)