import re
import pandas as pd
import numpy as np
from nltk.corpus import stopwords
stopwords_sp = stopwords.words('spanish')
from sklearn.feature_extraction.text import CountVectorizer
dialogos.csv
usando pandas
df = pd.read_csv('dialogos.csv')
df # Datos en bruto
Locución | |
---|---|
0 | Francamente no |
1 | Lo del canadiense. Por favor, como que vosotro... |
2 | Tienes razón. A lo mejor así te liberas de tu ... |
3 | Pues, tú sabrás |
4 | Para mí que fue Krieger |
... | ... |
954 | Yo qué sé, digo yo qué será |
955 | Lo han entendido mal. Las joyas que venden en ... |
956 | Oooo... Me llamo Vivian |
957 | ¿De dónde? ¿Del coño de tu madre? |
958 | Ah, sí esto podría funcionar |
959 rows × 1 columns
def sentence(lista):
sent_str = ""
for i in lista:
sent_str += str(i) + " "
sent_str = sent_str[:-1]
return sent_str
def remove_stopwords(word_list):
processed_word_list = []
for word in word_list:
word = word.lower() # minúscula
if word not in stopwords_sp:
processed_word_list.append(word)
return processed_word_list
df['pre-proc'] = [re.sub(r'[\W\d_]+',' ', str(frase)) for frase in df['Locución']]
df['pre-procesado'] = ""
for i,frase in enumerate(df['pre-proc']):
token = frase.split()
sinvacias = remove_stopwords(token)
df['pre-procesado'][i] = sentence(sinvacias)
newdf = df[['Locución','pre-procesado']]
newdf
Locución | pre-procesado | |
---|---|---|
0 | Francamente no | francamente |
1 | Lo del canadiense. Por favor, como que vosotro... | canadiense favor tiraríais allí si pudies... |
2 | Tienes razón. A lo mejor así te liberas de tu ... | razón mejor así liberas energía nagativa |
3 | Pues, tú sabrás | pues sabrás |
4 | Para mí que fue Krieger | krieger |
... | ... | ... |
954 | Yo qué sé, digo yo qué será | sé digo |
955 | Lo han entendido mal. Las joyas que venden en ... | entendido mal joyas venden canales siquie... |
956 | Oooo... Me llamo Vivian | oooo llamo vivian |
957 | ¿De dónde? ¿Del coño de tu madre? | dónde coño madre |
958 | Ah, sí esto podría funcionar | ah podría funcionar |
959 rows × 2 columns
sklearn
)# BoW usando la columna pre-procesada
count_vect = CountVectorizer()
bow = count_vect.fit_transform(newdf['pre-procesado'].values)
len(count_vect.vocabulary_)
2115
En casos en los que queremos conocer cuál es el tema principal de un texto, por ejemplo en un texto de quejas de servicio al cliente, al tener las palabras que más frecuencia tienen podemos tener un acercamiento a lo que los clientes mencionan mas en sus quejas.
Cuando se requiere un contexto, por ejemplo al hacer análisis de sentimientos, se requiere entrenar un modelo usando diferentes grupos de palabras ya que la posición de las palabras puede afectar el significado, así que su uso puede ser más útil que la bolsa de palabras para describir el texto.
"This dataset contains all utterances of two episodes of South Park (Latin American voices) and two episodes of Archer (Spanish voices)" https://www.kaggle.com/mikahama/the-best-sarcasm-annotated-dataset-in-spanish