Skip to content

Commit

Permalink
Feat: Added more function to preprocessing service
Browse files Browse the repository at this point in the history
  • Loading branch information
SebastianCB-dev committed Nov 3, 2022
1 parent d46ede9 commit 7aba0bc
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 49 deletions.
57 changes: 11 additions & 46 deletions BECK/app.py
Original file line number Diff line number Diff line change
@@ -1,51 +1,16 @@
import json
from pprint import pprint
import numpy as np
from sklearn.metrics import euclidean_distances

from preprocessing_service import Preprocesamiento
from model_word2vec_service import ModelWord2Vec
import pandas as pd
import nltk
nltk.download('punkt')
from preprocessing_service import Preprocesamiento

# Leer información del archivo items.json y de comentarios test
comments_array = list(open('./comentarios_test.txt',
'r', encoding='utf-8').readlines())

# Leer información del archivo item_preprocess.json
beck_data_preprocessing = {}
try:
if open('./JSON/items_preprocessing.json', 'r'):
beck_data_preprocessing = json.loads(
open('./JSON/items_preprocessing.json', 'r', encoding='utf-8').read())
except Exception as e:
print(f'Error: {e}')


preprocesamiento = Preprocesamiento()
# Vector Space Embedding
w2v = ModelWord2Vec()
word1 = ["hoy", "querer", "morir"]
word2 = ["ser", "dia", "suicidar"]
w2v.add_corpus(word1)
w2v.add_corpus(word2)
# comment_test = preprocesamiento.preprocesamiento_con_ortografia(
# comments_array[0])
# array_item = []
# # Get Vector Beck
# item_string = 'Pensamiento o deseos suicidas'
# for key in beck_data_preprocessing[item_string].keys():
# array_item.append(beck_data_preprocessing[item_string][key]["data"])

# print(comment_test)
# i = 0
# for item in array_item:
# coseno = w2v.get_cosine_distance(item, comment_test)
# print(f'{item_string} - Item BECK {i} distancia coseno: ${coseno}')
# euclidian = w2v.get_euclidian_distance(["hoy", "me", "quiero", "morir"], ["no", "morir"])
# print(f'{item_string} - Item BECK {i} distancia euclidiana: ${euclidian}')
# i += 1
df = pd.read_csv('./comentarios_español_depresivos.csv', encoding='utf-8')
pp = Preprocesamiento()

comentarios = list(df['text'])
clases = list(df['class'])

# result = w2v.getVectorBeck(comment_test, beck_data_preprocessing)
# print(result)
print('-- Comentario antes --')
print(comentarios[0])
print('-- Comentario despúes --')
comentario_preprocesado = pp.preprocesamiento_sin_ortografia(comentarios[0])
print(comentario_preprocesado)
32 changes: 29 additions & 3 deletions BECK/preprocessing_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,12 +42,14 @@ def preprocesamiento_con_ortografia(self, texto):
"""

# Eliminar etiquetas y hashtags
texto = self.normalizar(texto)
texto = self.eliminar_etiquetados(texto)
texto = self.eliminar_emojis(texto)
texto = self.eliminacion_data_inutil(texto)
texto = self.correccion_ortografica(texto)
texto = self.stop_words(texto)
texto = self.lematizacion(texto)
texto = self.eliminar_duplicados(texto)
return texto


Expand All @@ -59,11 +61,13 @@ def preprocesamiento_sin_ortografia(self, texto):
:return: Texto procesado y limpiado
"""
# Eliminar etiquetas y hashtags
texto = self.normalizar(texto)
texto = self.eliminar_etiquetados(texto)
texto = self.eliminar_emojis(texto)
texto = self.eliminacion_data_inutil(texto)
texto = self.stop_words(texto)
texto = self.lematizacion(texto)
texto = self.eliminar_duplicados(texto)
return texto

def eliminar_etiquetados(self, texto):
Expand Down Expand Up @@ -99,9 +103,7 @@ def eliminacion_data_inutil(self, texto):
El listado de signos de puntuación se ha obtenido de: print(string.punctuation)
y re.escape(string.punctuation)
'''

# Se convierte todo el texto a minúsculas
nuevo_texto = texto.lower()
nuevo_texto = texto
# Eliminación de páginas web (palabras que empiezan por "http")
nuevo_texto = re.sub('http\S+', ' ', nuevo_texto)
# Eliminación de signos de puntuación
Expand Down Expand Up @@ -162,3 +164,27 @@ def correccion_ortografica(self, texto):
result += res + " "
result = result.strip()
return result

def normalizar(self, texto):
"""
1. Toma texto como entrada.
2. Convierte el texto a minusculas.
3. Reemplaza las letras con tildes por letras normales.
:param words: Texto a convertir
:return: Texto transformado
"""
texto = texto.lower()

texto = re.sub('á', 'a', texto)
texto = re.sub('é', 'e', texto)
texto = re.sub('í', 'i', texto)
texto = re.sub('ó', 'o', texto)
texto = re.sub('ú', 'u', texto)
texto = re.sub('ü', 'u', texto)
texto = re.sub('ñ', 'n', texto)

return texto

def eliminar_duplicados(self, lista):
return list(set(lista))

0 comments on commit 7aba0bc

Please sign in to comment.