• No se han encontrado resultados

Solución para determinar la relevancia de un texto por medio del nivel de subjetividad en textos digitales

N/A
N/A
Protected

Academic year: 2022

Share "Solución para determinar la relevancia de un texto por medio del nivel de subjetividad en textos digitales"

Copied!
80
0
0

Texto completo

(1)

Solución para determinar la relevancia de un texto por medio del nivel de subjetividad en textos digitales

Item Type info:eu-repo/semantics/bachelorThesis

Authors Pajuelo Huayta, Luis Enrique; Gómez Mandujano, Juan Carlos Publisher Universidad Peruana de Ciencias Aplicadas (UPC)

Rights info:eu-repo/semantics/openAccess; Attribution- NonCommercial-ShareAlike 4.0 International Download date 29/07/2021 05:02:00

Item License http://creativecommons.org/licenses/by-nc-sa/4.0/

Link to Item http://hdl.handle.net/10757/628045

(2)

1

UNIVERSIDAD PERUANA DE CLIENCIAS APLICADAS FACULTAD DE INGENIERÍA

PROGRAMA ACADEMICO DE INGENIERIA DE SISTEMAS DE INFORMACION

SOLUCIÓN PARA DETERMINAR LA RELEVANCIA DE UN TEXTO POR MEDIO DEL NIVEL DE SUBJETIVIDAD EN

TEXTOS DIGITALES TESIS

Para optar el título profesional de Ingeniero de Sistemas de Información

Autores

Luis Enrique Pajuelo Huayta (0000-0003-4523-6853) Juan Carlos Gómez Mandujano (0000-0002-7268-1824)

Asesor

Villalta Riega, Rosario (0000-0002-9546-7927)

Lima, 27 Setiembre 2019

(3)

2

RESUMEN

En la actualidad el internet es el medio más utilizado, el cual alberga una gran cantidad de información textual sobre diversos temas; sin embargo, dicha información, en la gran mayoría de casos no es regulada por criterios de calidad de información, ya que cualquier usuario puede publicar y editar el contenido, lo cual se genera la necesidad de encontrar procedimientos automatizados que puedan filtrar los contenidos de los textos en la web.

El objetivo principal del proyecto es implementar una solución que permita identificar el grado la subjetividad de un texto en base a un diccionario de datos, esto se podrá debido a la implementación de procesos que ayuden a determinar la subjetividad de textos.

El software desarrollado en el proyecto es basado en software de licencia abierta que permite analizar y almacenar un conjunto de palabras según la ponderación de frecuencia de la subjetividad estimada por cada distribución creando así un diccionario. Para esto, todas las palabras son transformadas a su forma base sin importar su variación morfológica a través del uso de técnicas de procesamiento de lenguaje natural.

Como resultado del proyecto se realizó la implementación de una solución software el cual realiza la obtención del grado de subjetividad. Dicho software procesa la información y es almacenado para luego ser mostrado por medio de reportes. El resultado de la solución software fue validado para verificar la efectividad de este. El resultado mostró un porcentaje de efectividad satisfactoria.

Palabras clave: TFIDF, subjetividad, objetividad, análisis, textos, lematizar

(4)

3

ABSTRACT

In the present time, the internet is one of the most used media worldwide, and it has a lot of textual information about different topics; But that information, in many cases is not regulated by any information quality criteria. This is caused because any person can publish or edit the content of its. This generates the necessity of find automated procedures to filter the contents of the texts on the web.

The main objective of the project is to implement a solution that allows identifying the degree of subjectivity of a text based on a data dictionary, this may be due to the implementation of processes that help define the subjectivity of texts.

The developed software in the project is based on open source software that allows to analyze and store a set of words according to the frequency weighting of the subjectivity estimated by each distribution thus creating a dictionary. For this, all words are transformed to their base form regardless of their morphological variation through the use of natural language processing techniques.

As a result of the project, the implementation of a software solution gives a result, which obtains the degree of subjectivity. This software processes the information. After that is stored and then be shown through reports. The result of the software solution was validated to verify its effectiveness. The result showed a satisfactory effectiveness percentage.

Keywords: TFIDF, subjectivity, objectivity, analysis, texts, lemmatize

(5)

4

Índice

1. Capítulo 1: Definición del Proyecto ... 11

1.1. Tema ... 12

1.2. Título ... 12

1.3. Objetivos ... 12

1.3.1. Objetivo General... 12

1.3.2. Objetivos Específicos ... 12

1.4. Indicadores de Logro de Objetivos ... 12

2. Capítulo 2: Logro de los Student Outcomes ... 14

2.1. Outcomes ABET ... 15

2.1.1. Outcome A ... 15

2.1.2. Outcome B ... 15

2.1.3. Outcome C ... 15

2.1.4. Outcome D ... 16

2.1.5. Outcome E ... 16

2.1.6. Outcome F ... 16

2.1.7. Outcome G ... 17

2.1.8. Outcome H ... 17

2.1.9. Outcome I ... 17

2.1.10. Outcome J ... 18

2.1.11. Outcome K ... 18

2.1.12. Outcome J (CAC) ... 18

3. Capítulo 3: Estado del Arte ... 19

3.1. Procesamiento de Lenguaje Natural (PLN) ... 20

3.1.1. Definición ... 20

3.1.2. Arquitectura de Lenguaje Natural ... 21

3.1.3. Arquitectura de un Procesamiento de Lenguaje Natural ... 21

3.1.4. Dificultades en los Procedimientos de Lenguaje Natural ... 22

3.2. Clasificación Automática de textos ... 23

3.2.1. Definición ... 23

3.2.2. Características ... 23

3.2.3. Tipos de Clasificadores ... 24

3.3. Cloud Computing Services (AWS) ... 25

3.3.1. Definición ... 25

3.3.2. Características ... 25

(6)

5

3.3.3. Formas de Servicio ... 26

3.4. Motor de Base de datos (ElasticSearch) ... 27

3.4.1. Definición ... 27

3.4.2. Características ... 27

3.4.3. Fortalezas ... 28

3.4.4. Debilidades ... 29

3.5. TF-IDF ... 30

3.5.1. Definición ... 30

3.5.2. TF ... 30

3.5.3. IDF ... 31

3.5.4. Fórmula TF-IDF ... 31

3.6. Herramientas destacadas ... 32

4. Capítulo 4: Marco Teórico ... 33

4.1. Herramientas a utilizar ... 34

4.1.1. Amazon AWS: ... 34

4.1.2. ElasticSearch ... 34

4.1.3. Python ... 35

4.1.4. Lemmatizador y Tokenizador (Nltk) ... 36

4.1.5. Ubuntu ... 36

5. Capítulo 5: Desarrollo de Solución del Proyecto ... 38

5.1. Análisis Solución del Proyecto ... 39

5.1.1. Identificación del Problema ... 39

5.1.2. Oportunidad de Negocio ... 39

5.1.3. Propuesta de Solución del Problema ... 39

5.1.4. Alcance del Proyecto ... 39

5.2. Diseño del Solución de Proyecto ... 40

5.2.1. Arquitectura del software ... 40

5.2.2. Diagrama de Flujo ... 40

5.3. Interfaces ... 44

5.4. Implementación del Software ... 50

5.4.1. Captación de Textos de Entrada ... 50

5.4.1.1. Captación de información de artículos de The New York Times ... 50

5.4.2. Captación de información de Comentarios de Amazon Web Store ... 50

5.5. Almacenamiento en la Base de Datos ... 51

5.5.1. Subida masiva por métodos REST ... 51

5.5.2. Carga de textos Subjetivos ... 52

5.6. Procesamiento de Datos (Creación del Diccionario) ... 53

(7)

6

5.6.1. Procesamiento de Palabras (Tokenización y Lematización) ... 53

5.6.2. Aplicación de las Distribuciones (TF-IDF y variantes)... 55

5.6.3. Obtención de Diccionario de Palabras Subjetivas y Objetivas... 56

5.7. Definición de Grado de Subjetividad ... 56

5.7.1. Obtención de Grado de Subjetividad de un Texto con el TFIDF ... 56

5.7.2. Obtención de Grado de Subjetividad de un Texto con otras distribuciones 60 6. Capítulo 6: Resultados del Proyecto ... 69

6.1. Ejecución de Pruebas con Textos que estén fuera del diccionario de datos. ... 70

6.2. Análisis de la prueba realizada ... 71

6.2.1. Conclusión de resultados de análisis ... 71

7. Capítulo 7: Roles y responsabilidades ... 74

7.1. Organigrama del Proyecto ... 75

Conclusiones ... 76

Recomendaciones ... 76

Glosario ... 77

Bibliografía ... 79

(8)

7

Índice de Figuras

Ilustración 1: Formular de frecuencias de termino ... 30

Ilustración 2: Frecuencia inversa del documento ... 31

Ilustración 3: Peso TF-IDF para un término en un documento. ... 31

Ilustración 4: Imagen del logo de Amazon Web Services... 34

Ilustración 5: Imagen del logo del ElasticSearch. ... 34

Ilustración 6: Imagen del logo del Python. ... 35

Ilustración 7: Imagen del logo del Ubuntu. ... 36

Ilustración 8: Arquitectura del software ... 40

Ilustración 9: Diagrama del proceso principal ... 40

Ilustración 10: Flujo Generar Reporte de Opiniones ... 41

Ilustración 11: Flujo Generar Diccionario de Opiniones... 43

Ilustración 12: Menú principal de la aplicación APPFILTER ... 44

Ilustración 13: Generación de diccionario de textos objetivos ... 45

Ilustración 14: Conexión de la base de datos ... 45

Ilustración 15: Aviso de finalización del proceso ... 46

Ilustración 16: Importar textos a analizar ... 46

Ilustración 17: Aviso de finalización de los textos analizados ... 47

Ilustración 18: Reporte 1 - Comparación de datos de indicadores ... 47

Ilustración 19: Reporte 2 – Calidad de comentarios subjetivos actual vs histórico ... 48

Ilustración 20: Reporte 3 – Frecuencia promedio diaria de comentarios ... 48

Ilustración 21: Reporte 4 – Cantidad de comentarios objetivos actual vs histórico ... 49

Ilustración 22: "Código que almacena en arrays los datos de los artículos de The New York Times" ... 50

Ilustración 23: "Código que almacena en arrays los datos de los artículos de Amazon" 51 Ilustración 24: "Código que almacena de forma masiva los datos en el ElasticSearch" 51 Ilustración 25: "Imagen que muestra todos los artículos objetivos que se encuentran en el ElasticSearch" ... 52

Ilustración 26: "Código que almacena de forma masiva los datos en el ElasticSearch" 52 Ilustración 27: "Imagen que muestra todos los comentarios subjetivos que se encuentran en el ElasticSearch" ... 53

(9)

8 Ilustración 28: "Código que extrae 500 ítems objetivos y subjetivos de la base de datos”

... 54

Ilustración 29: "Código que calcula la lematización de las palabras de la muestra" ... 54

Ilustración 30: "Código que muestra el vocabulario total y las veces que se repite" ... 55

Ilustración 31: "Código que calcula el TF-IDF para todos los textos" ... 55

Ilustración 32: "Código que calcula el Tfchi2 para todos los textos" ... 56

Ilustración 33: "Imagen de la muestra con la que se calcula el TF-IDF" ... 56

Ilustración 34: "Imagen que muestra la ubicación de los NPY y la extracción de estos" ... 57

Ilustración 35: "Código que calcula la lematizacion de las palabras de la muestra" ... 57

Ilustración 36"Código que muestra el vocabulario de la muestra" ... 57

Ilustración 37: "Código que transforma los datos de la lista en un array para que puedan ser mostrados" ... 57

Ilustración 38: "Imagen que muestra la estimación realizada por medio de la diferencia" ... 59

Ilustración 39: "Código que suma las estimaciones y calcula" ... 59

Ilustración 40: “Imagen que muestra la fórmula del TF-IG” ... 60

Ilustración 41: “Imagen que muestra la fórmula del TF-RF” ... 61

Ilustración 42: "Imagen que muestra la fórmula del chi-cuadrado" ... 63

Ilustración 43: "Imagen que muestra la fórmula del TF-GR" ... 66

(10)

9

Índice de Tablas

Tabla 1“Top 20 de palabras subjetivas más importantes del vocabulario TF-IDF” ... 61 Tabla 2:“Top 20 de palabras objetivas más importantes del vocabulario TF-IDF” ... 61 Tabla 3: “Top 20 de palabras subjetivas más importantes del vocabulario TF-RF” ... 62 Tabla 4: "Top 20 de palabras subjetivas más importantes del vocabulario TF-CHI2" .. 64 Tabla 5: “Top 20 de palabras objetivas más importantes del vocabulario TF-CHI2” ... 65 Tabla 6: “Top 20 de palabras subjetivas más importantes del vocabulario TF-GR” ... 67 Tabla 7: “Top 20 de palabras objetivas más importantes del vocabulario TF-GR” ... 68 Tabla 8: "Tabla de pruebas TFIDF, TFIG, TFRFTFCHI2, TFGR para un diccionario de 200, 1000, 2000 y 3000 una muestra de 498” ... 70 Tabla 9: "Tabla de pruebas TFIDF, TFIG, TFRFTFCHI2, TFGR para un diccionario de 200, 1000, 2000 y 3000, y una muestra de 998 textos ... 71 Tabla 10: "Tabla de Efectividad de las distribuciones TF-IDF, TFIG, TFRF, TFCHI2, TFGR para muestras de 500 y 1000” ... 72 Tabla 11: "Porcentaje de efectividad con muestras de 498 textos" ... 72 Tabla 12: "Porcentaje de efectividad con muestras de 998 textos" ... 73

(11)

10

INTRODUCCIÓN

El proyecto tiene como objetivo principal la implementación de una solución de software que permita identificar el grado de subjetividad de un texto en base a un diccionario de datos. El software desarrollado en el proyecto es basado en software de licencia abierta que permite analizar y almacenar un conjunto de palabras según la ponderación de frecuencia de la subjetividad estimada por cada distribución creando así un diccionario.

Para esto, todas las palabras son transformadas a su forma base sin importar su variación morfológica a través del uso de técnicas de procesamiento de lenguaje natural. Como resultado del proyecto se realizó la implementación de una solución software el cual realiza la obtención del grado de subjetividad.

El presente documento se divide en 7 capítulos:

El primer capítulo se describe la definición del proyecto en el cual se definen el objetivo general, los objetivos específicos y los indicadores de logro de objetivos.

El segundo capítulo se describe los logros a cumplir según lo realizado en el proyecto en base a los outcomes de ABET.

En el tercer capítulo se realiza una investigación de trabajos previos donde se consideran y explican las definiciones y conceptos necesarios para la solución de software.

En el cuarto capítulo se describe las herramientas a utilizar para el diseño e implementación de la solución de software.

En el quinto capítulo se describe el desarrollo el cual consta de las fases del proyecto las cuales son Análisis, Diseño e Implementación.

En el sexto capítulo se describe las pruebas realizadas para obtener los resultados del proyecto.

En el séptimo capítulo se describe los roles y responsabilidades definidas en el proyecto.

(12)

11

1. Capítulo 1: Definición del Proyecto

El primer capítulo se describe la definición del proyecto en el cual se definen el objetivo general, los objetivos específicos y los indicadores de logro de objetivos.

(13)

12

1.1. Tema

El presente proyecto se enfoca en poder determinar el nivel de subjetividad de textos digitales por medio de una solución tecnológica.

1.2. Título

Solución para determinar la relevancia de un texto por medio del nivel de subjetividad en textos digitales

1.3. Objetivos

1.3.1. Objetivo General

Implementar una solución que permita identificar con eficiencia el grado de subjetividad de un texto en base a un diccionario de datos.

1.3.2. Objetivos Específicos

• OE1: Analizar métodos que ayuden a cuantificar la subjetividad de un texto.

• OE2: Diseñar una solución tecnológica basado en métodos estadísticos para la estimación del grado de subjetividad de textos.

• OE3: Validar las pruebas de clasificación de textos por medio del nivel de subjetividad obtenido de un conjunto de datos de palabras.

• OE4: Proponer métricas de la efectividad de la solución desarrollada para la clasificación de textos objetivos y subjetivos.

1.4. Indicadores de Logro de Objetivos

● OE1: Analizar métodos que ayuden a cuantificar la subjetividad de un texto.

o IN1: Generar informe sobre los diversos métodos que existen para cuantificar la subjetividad de un texto.

● OE2: Diseñar una solución tecnológica basado en métodos estadísticos para la estimación del grado de subjetividad de textos.

o IN2: Generar un software que pueda reconocer las palabras subjetivas.

● OE3: Ejecutar pruebas de clasificación de textos por medio del nivel de subjetividad obtenido de un conjunto de datos de palabras.

o IN3: Tener 4 diccionarios de 200, 1000, 2000 y 3000 palabras.

(14)

13

● OE4: Establecer la efectividad de la solución desarrollada para la B objetivos y subjetivos.

o IN4: Éxito de 75% de efectividad en identificación de subjetividad manual de una muestra aleatoria de los métodos.

(15)

14

2. Capítulo 2: Logro de los Student Outcomes

El segundo capítulo se describe los logros a cumplir según lo realizado en el proyecto en base a los outcomes de ABET.

(16)

15 2.1. Outcomes ABET

2.1.1. Outcome A

Aplica conocimientos de matemática, ciencias, computación e ingeniería.

El sustento de cumplimiento del outcome se fundamenta a través de los siguientes conceptos utilizados:

- Método de Frecuencia de Termino (TF-IDF): Para la definición de grado de subjetividad se utilizaron métodos los cuales definían la frecuencia de término dentro de un conjunto de textos por métodos basados en fórmulas estadísticas.

- Programación orientada a objetos: Para la implementación del software se desarrolló en base al lenguaje python el cual se basa en el paradigma de programación orientada a objetos.

2.1.2. Outcome B

Diseña y conduce experimentos en base al análisis e interpretación de datos.

El sustento de cumplimiento del outcome se fundamenta en las pruebas dinámicas experimentales basadas en técnicas de caja negra, Dichas pruebas se realizaron con 2 conjuntos de datos anteriormente seleccionados, los cuales eran de una característica opuestas. Los resultados de las pruebas nos hicieron validar satisfactoriamente el grado de efectividad esperado de nuestra solución de software.

2.1.3. Outcome C

Diseña sistemas, componentes o procesos para encontrar soluciones en la atención de necesidades teniendo en cuenta restricciones económicas, sociales, políticas, éticas, de salud y seguridad y otras propias del entorno empresarial.

(17)

16 El sustento de cumplimiento del outcome se fundamenta en el análisis realizado sobre alguno de los riesgos relacionados al manejo de datos sensibles para el cliente, ya que esta información procesada en nuestra solución de software podría ser de carácter privado, es por lo cual surgió la necesidad de realizar un análisis de riesgo para salvaguardar dicha información potencialmente sensible.

2.1.4. Outcome D

Participa en equipos multidisciplinarios desarrollando sus tareas con profesionales de diferentes especialidades o dominios de aplicación.

El sustento de cumplimiento del outcome se fundamenta en la parte de investigación y desarrollo del proyecto realizado. Debido al aporte en base a las reuniones de orientación de docentes experimentados en análisis de datos y análisis de lenguaje. Este aporte nos sirvió como base para la etapa de diseño e implementación de nuestro proyecto.

2.1.5. Outcome E

Identifica, formula y resuelve problemas de ingeniería.

El sustento de cumplimiento del outcome se fundamenta en el valor que da nuestra propuesta de tesis, ya que este realiza un análisis de datos textuales a gran escala.

Esto es un problema real que se encuentra actualmente en Internet a lo cual nuestro proyecto propone una solución.

2.1.6. Outcome F

Propone soluciones a problemas de ingeniería con responsabilidad profesional y ética.

El sustento de cumplimiento del outcome se basa en el análisis de riesgo realizado para el desarrollo de la solución del proyecto, ya que la información utilizada al no saber si esta tiene un carácter de información sensible o no para el cliente, se

(18)

17 optó a considerar un análisis de riesgos, el cual identificó los riesgos potenciales que podrían originarse en la utilización de la solución de software.

2.1.7. Outcome G

Comunica ideas o resultados de manera oral o escrita con claridad y efectividad.

El sustento de cumplimiento del outcome se basa en las presentaciones de avance de desarrollo del proyecto que se ha tenido con nuestro asesor del proyecto y además las reuniones con docentes experimentados sobre los temas involucrados del proyecto realizado.

2.1.8. Outcome H

Identifica el impacto de las soluciones en sistemas de información en el contexto global, económico y del entorno de la sociedad.

El sustento de cumplimiento del outcome se basa en que nuestra solución de software haría un aporte al impacto económico, ya que el proyecto se basa en el análisis de datos de conjunto de textos que podrían ser utilizados como información para la captación de nuevos clientes. El resultado dado por nuestra solución generaría reportes que serían de utilidad para un análisis de mercado.

2.1.9. Outcome I

Reconoce la necesidad de mantener sus conocimientos actualizados.

El sustento de cumplimiento del outcome se basa en que para la realización de la solución de software utiliza concepto de procesamiento del lenguaje natural, la cual es un campo relacionado a las ciencias de la computación y la lingüística.

Además, se utilizaron métodos de frecuencia de términos, los cuales son conceptos relacionados a la estadística.

(19)

18 2.1.10. Outcome J

Analiza hechos del mundo contemporáneo identificando el impacto en el desempeño profesional del ingeniero de sistemas de información.

El sustento de cumplimiento del outcome se basa en la satisfacción de la necesidad que propone cumplir nuestro proyecto. Es por lo cual nuestra solución se basa en la creación de un software que pueda cumplir con la necesidad actual que existe de analizar gran cantidad de información textual en internet y realizar análisis de datos de estos, los cuales podrían ser utilizados para la clasificación según el criterio de subjetividad que tengan.

2.1.11. Outcome K

Utiliza técnicas y herramientas de última generación en el desarrollo de sistemas de información.

El sustento de cumplimiento del outcome se basa en que para la realización de la solución de software se utilizaron de conceptos de procesamiento de lenguaje natural y conceptos de métodos de frecuencia de términos.

Las herramientas utilizadas para la realización de la solución de software fueron:

Amazon Web Services, ElasticSearch, Phyton, NLTK y Ubuntu.

2.1.12. Outcome J (CAC)

Comprende y brinda soporte para el uso, entrega y gestión de sistemas de información dentro de un entorno de sistemas de información.

El sustento de cumplimiento del outcome se fundamenta en la elección del proveedor del servicio cloud, AWS, ya que este nos garantiza la seguridad y soporte de los datos almacenados en este servicio. Asimismo, la solución de software implementada fue constantemente supervisada por nuestro asesor de proyecto a lo largo del su desarrollo para garantizar el funcionamiento y calidad de este.

(20)

19

3. Capítulo 3: Estado del Arte

En el tercer capítulo se realiza una investigación de trabajos previos donde se consideran y explican las definiciones y conceptos necesarios para la solución software.

(21)

20 Para realizar el estado de arte sobre temas de Procesamiento de Lenguaje Natural (PLN) y ponderación de clasificación de textos, Cloud computing Services y Base de datos, se utilizaron los siguientes recursos y fuentes:

• Science Direct

• Dialnet

• Universidad de la Rioja

• Web of Science

• Doc Player

• Springer

• Citec

• Scielo

Las palabras claves usadas fueron:

• Procesamiento de lenguaje natural

• TF-IDF

3.1. Procesamiento de Lenguaje Natural (PLN) 3.1.1. Definición

El PLN consiste en la correcta comunicación entre la persona y el computador por medio del lenguaje natural, y como este último logra entender y procesar la información para la creación de programas o modelos que faciliten la comprensión de los procesos relacionados con el lenguaje1. Asimismo, el PLN es una rama temprana de la inteligencia artificial que, desde hace décadas, inicios de los cuarenta, ha desempeñado tareas muy importantes a lo largo del tiempo y creciendo a la par de los cambios tecnológicos. Iniciando en esos años como simples traductores automáticos y llegando a hoy en día a poder extraer, recuperar y clasificar información2.

1 Mg. Augusto Cortez Vásquez1,2, Mg. Hugo Vega Huerta1,2, Lic. Jaime Pariona Quispe1. (Julio - Diciembre 2009). Procesamiento de lenguaje natural. Revista de Ingeniería de Sistemas e Informática, 6, 48. 2 El procesamiento del lenguaje natural, tecnología en transición. Jaime Carbonell. Congreso de la Lengua Española, Sevilla, 1992

(22)

21 3.1.2. Arquitectura de Lenguaje Natural

Podemos observar distintos niveles en la arquitectura del lenguaje natural.

• Nivel Fonológico: Consiste en la forma como las palabras se relacionan con los sonidos que representan

• Nivel Morfológico: Consiste en la forma como se van a construir las palabras a partir de pequeñas unidades de significado conocidas como morfemas.

• Nivel Sintáctico: Se relaciona en cómo las palabras consiguen formar oraciones, determinando el papel que toma cada palabra en la oración y que sintagma es parte de otro sintagma.

• Nivel Semántico: Se relaciona con el significado individual de las palabras y la forma en que estos significados se unen para darle sentido a la oración, teniendo también relación con el significado determinado de la oración dependiendo del contexto.

• Nivel Pragmático: Está relacionado con la situación en la que se usa determinadas oraciones y de cómo el uso de estas en diferentes niveles afecta el significado de la siguiente oración.

3.1.3. Arquitectura de un Procesamiento de Lenguaje Natural

La arquitectura de un procesamiento de lenguaje natural nos enseña cómo es que la computadora interpreta y analiza las oraciones que le son otorgadas.

(23)

22 La explicación radica en cinco pasos resumidos a continuación.3

a) El usuario le expresa a la computadora que es lo que desea hacer.

b) La computadora analiza las oraciones proporcionadas, en el sentido morfológico y sintáctico, es decir, si las frases contienen palabras compuestas por morfemas y si la estructura de las oraciones es correcta. en esta etapa juegan un papel importante el analizador lexicográfico y el analizador sintáctico. El primero denominado scanner se encarga de identificar los componentes léxicos definidos a priori, el segundo denominado parser se encarga de verificar si se cumple un orden gramatical entre los elementos identificados por el scanner.

c) Analizar las oraciones semánticamente, es decir saber cuál es el significado de cada oración, y asignar el significado de estas a expresiones lógicas.

d) Una vez realizado el paso anterior, ahora podemos hacer el análisis pragmático de la instrucción, es decir una vez analizadas las oraciones, ahora se analizan todas juntas, tomando en cuenta la situación de cada oración, analizando las oraciones anteriores, una vez realizado este paso, la computadora ya sabe que es lo que va a hacer, es decir, ya tiene la expresión final.

e) Una vez obtenida la expresión final, el siguiente paso es la ejecución de esta, para obtener así el resultado y poder proporcionarle al usuario.

3.1.4. Dificultades en los Procedimientos de Lenguaje Natural

Existen dos características del Lenguaje Natural que afectan directamente al PLN, estas son la Variación y la ambigüedad lingüística. Cuando hablamos de la variación lingüística nos referimos a la posibilidad de utilizar diferentes palabras o expresiones para comunicar una misma idea. En cambio, la ambigüedad lingüística se produce cuando una palabra o frase permite más de una interpretación.4

3 Mg. Augusto Cortez Vásquez1,2, Mg. Hugo Vega Huerta1,2, Lic. Jaime Pariona Quispe1. (Julio - Diciembre 2009). Procesamiento de lenguaje natural. Revista de Ingeniería de Sistemas e Informática, 6, 48.

4 Mari Vallez y Rafael Pedraza-Jimenez. El Procesamiento del Lenguaje Natural en la Recuperación de Información Textual y áreas afines [en linea]. "Hipertext.net", núm. 5, 2007. <http://www.hipertext.net>

(24)

23 Ambos conceptos afectan de distintas maneras al proceso de recuperación de información, por un lado, la variación lingüística causa al silencio documental, fenómeno que consiste en la falta de información o documentación debido al cambio en los términos requeridos en los documentos. Por otro lado, la ambigüedad conduce al ruido documental, es decir, la inclusión de documentos poco relevantes que fueron tomados por incluir los términos requeridos pero que contenían un significado diferente. Ambas características citadas dificultan considerablemente el desarrollo de la automatización del tratamiento del lenguaje.

3.2. Clasificación Automática de textos 3.2.1. Definición

La clasificación de textos surge de la necesidad de clasificar documentos específicos de un tema, o de un conjunto de temas para así realizar la búsqueda de información necesaria de forma más fácil y eficiente.

La idea de la clasificación automática de textos surge en consecuencia de la gran cantidad de documentos disponibles, sobre todo en la red. Al tratarse de números muy grandes la clasificación manual se vuelve larga costosa y complicada esto lleva a que la búsqueda del desarrollo de la clasificación automática sea más notoria y avance cada día.

Según J. Cárdenas señala que la clasificación de textos como una rama de la inteligencia artificial y la inteligencia computacional que se basa en el desarrollo de algoritmos, aprender y reconocen patrones recurrentes basados en fuentes de textos previamente clasificados manualmente.

3.2.2. Características

La clasificación automática de textos es por lo general un proceso supervisado Esto significa que requiere de un conjunto de documentos previamente clasificados por expertos humanos que funcionan como entrenamiento para el

(25)

24 sistema. Así, un conjunto de documentos clasificado por un humano en cierta categoría sirve para que el clasificador automático genere una clasificación propia frente a un documento desconocido. El desempeño del clasificador automático dependerá de qué tan similar sea esta clasificación respecto a la humana, lo que se evalúa con matrices de confusión y otras métricas.5

Para lograr la clasificación automática de textos se utilizan técnicas de aprendizaje automático y técnicas de Procesamiento de lenguaje Natural (PLN)

Se utilizan las técnicas de machine learning para la extracción de Información, Clasificación Automática de Documentos, Agrupamiento Semántico y otras que ayudan para determinar un correcto análisis sintáctico y morfológico de los textos.

A partir del aprendizaje automático surgen los algoritmos necesarios para desarrollar el aprendizaje, estos algoritmos pueden clasificarse dependiendo de la cantidad de información para su entrenamiento.

3.2.3. Tipos de Clasificadores

a) Clasificación Supervisada: Lo que buscan los clasificadores supervisados es construir un patrón representativo para cada una de las categorías entrenadas y aplicar alguna función que permita estimar la similitud entre el documento a clasificar y cada uno de estos patrones. Aquellos patrones que presenten más similitudes con el documento indicará la o las categorías a las que pertenece.

El proceso para poder elaborar los patrones requiere de un conjunto de documentos anteriormente clasificados, este proceso es conocido como aprendizaje o entrenamiento.

b) Clasificación No Supervisada: Todos los documentos se clasifican en torno a su contenido, no existen categorías previas o cuadros de clasificación, por lo que no hay asistencia manual.

5 Sebastiani, Fabrizio, Machine learning in automated text categorization. ACM Computing Surveys, Vol.34 Nº.1, pp 1-47, 2002

(26)

25 c) Clasificación Semi supervisada: El aprendizaje semi-supervisado es un tipo de algoritmo de Machine Learning que hace uso de datos, tanto etiquetados como no etiquetados con anterioridad como datos de entrenamientos, por lo general una pequeña cantidad de números de datos etiquetados y una gran cantidad de datos no etiquetados. Este aprendizaje resulta una combinación entre la clasificación supervisada y la no supervisada.

3.3. Cloud Computing Services (AWS) 3.3.1. Definición

Se puede definir Cloud computing services como la capacidad/facultad de poder acceder a archivos, información, programas y servicios de terceros desde un navegador vía internet alojados por un proveedor y solo pagando por los equipos/computadoras y los servicios usados.

3.3.2. Características

a) El proveedor se encarga tanto de los servidores, software, almacenaje, redes y la electricidad que se requiere para estos servicios para que de esta manera los usuarios solo se tengan que conectar a la nube y no tengan la necesidad de hacer una gran inversión para contar con todos estos recursos, ni con el espacio para alojarlos o el costo de mantenerlos.

b) El costo por el que los usuarios pagan por los servicios es mucho menor que el que pagarían por el mantenimiento del equipamiento en las instalaciones.

c) Los usuarios pueden acceder a los servicios de la nube desde cualquier lugar a cualquier hora.

(27)

26 3.3.3.

Formas de Servicio

Las formas de servicio que ofrece hoy la computación en la nube pueden desglosarse en servicios gestionados, SaaS, servicios web, informática de utilidad y plataforma como servicio

a) Servicio Gestionado: Un servicio gestionado está dirigido a entregar una aplicación a una empresa, en lugar de clientes finales. Esta forma de servicio ha estado disponible durante una década. Existen muchos tipos de servicios gestionados proporcionados a través de Internet, incluido el escaneo de virus, Servicios de correo electrónico, servicios de filtrado de spam (Google / Postini, etc.), servicios de seguridad (SecureWorks, IBM, Verizon, etc.), servicios de gestión de escritorio (CenterBeam, Everdream, etc.)

b) SASS: Existen numerosos proveedores de SaaS (anteriormente conocido como servicio de aplicaciones proveedores). Ejecutan una sola aplicación en un centro de datos y entregan la funcionalidad a través de Internet a los usuarios. Los proveedores de SaaS empresariales incluyen salesforce.com (para la fuerza de ventas aplicaciones), Oracle / Siebel (aplicaciones CRM), Workday (para aplicaciones ERP), Citrix (aplicaciones de reunión), y muchos otros.

c) Servicios web: Los servicios web son similares a SaaS. Los proveedores de servicios web ofrecen APIs que los desarrolladores pueden utilizar en el desarrollo de aplicaciones. Ejemplos de APIs de servicios web incluyen Google Maps, procesamiento de nómina ADP, Servicio Postal de EE. UU., Bloomberg, tarjeta de crédito, servicios de procesamiento, etc.

d) Plataforma como servicio: Muchos desarrolladores han comenzado recientemente a ofrecer recursos informáticos, es decir, recursos virtuales, servidores y almacenamiento como utilidad de servicios informáticos. Estos incluyen pesos pesados tales como Amazon, Sun Microsystems, IBM y AT&T; y nuevos vendedores como Nirvanix,Hatsize, Joyent, Cloudworks, etc.

(28)

27

3.4. Motor de Base de datos (ElasticSearch) 3.4.1. Definición

ElasticSearch es un servidor de búsqueda basado en Lucene. Provee de un motor de búsqueda de texto completo, distribuido y con capacidad de dar servicio a múltiples clientes a través de una interfaz web RESTful y utilizando como entrada archivos JSON. Está desarrollado en Java y actualmente está publicado como código abierto bajo las condiciones de la licencia Apache.

3.4.2. Características

a) More Like This Query: La función destacada de ElasticSearch, la cual es imprescindible en el trabajo que venimos elaborando es la función More Like This Query. Esta función permite al usuario, realizar una búsqueda de similitud entre un conjunto de documentos. Para ello, la función More Like This Query selecciona un grupo de términos representativos del documento ingresado. Con este conjunto forma una consulta, la ejecuta y devuelve los resultados. El usuario es capaz de controlar los campos (fields) del documento sobre los que se desea realizar la búsqueda, el número mínimo de veces que debe aparecer un término para que se contabilice como similar (min_term_freq), así como el número máximo de resultados que se desea obtener (max_query_terms) (Herramienta de apoyo al diagnóstico basada en el análisis de historias clínicas, Facultad de Informática Universidad Complutense de Madrid)

b) Comunicación con el servidor: Elasticsearch es un servidor REST, por lo que la principal forma de comunicación con él es a través de su API REST.

La comunicación entre el servidor de Elasticsearch y un cliente es sencilla. En la mayoría de los casos, un cliente abre una conexión y envía una solicitud, que es un objeto JSON, y recibe una respuesta, que también es un objeto JSON. La simplicidad de este modo de comunicación no impone restricciones.

En el lenguaje de programación utilizado para implementar clientes o las

(29)

28 plataformas en las que operan; si un cliente puede enviar HTTP a petición, puede comunicarse con el servidor Elasticsearch. Además, hay bibliotecas para diferentes idiomas (por ejemplo, PyES para Python) que se encarga de algunos mecánicos, y puede proporcionar una mejor integración con el lenguaje.

c) Mapeo: El mapeo es similar a una definición de esquema en bases de datos SQL. Un mapeo es una parte crucial de cada índice en Elasticsearch, define todos los tipos de documentos dentro del índice y cómo el documento y sus campos se almacenan, analizan e indexan.

d) Cercano al tiempo real:

La búsqueda en Elasticsearch es casi en tiempo real. Significa que, aunque los documentos son indexados inmediatamente después se agregan correctamente a un índice, no aparecerán en los resultados de la búsqueda hasta que el índice se actualiza. El servidor de Elasticsearch no actualiza los índices después de cada actualización, en su lugar, utiliza un intervalo de tiempo fijo especificado (el valor predeterminado el valor es de 1 segundo) para realizar esta operación.

Dado que la actualización es costosa en términos de E / S de disco, podría afectar la velocidad de añadir nuevos documentos. Por lo tanto, si necesita realizar una gran cantidad de actualizaciones a la vez, es posible que desee aumentar temporalmente el valor predeterminado del intervalo de indexación (o incluso deshabilitar la actualización automática) y luego actualizar manualmente los índices después de que se completen las actualizaciones.

3.4.3. Fortalezas

Escabilidad:

Antes de que los investigadores puedan hacer algo con Elasticsearch, necesitan decidir dónde quieren sus datos a almacenar. Una base de datos relacional puede ser utilizada para esta; Sin embargo, todos los datos se almacenan normalmente en un solo base de datos. Como resultado, cuantos más datos almacenamos, más

(30)

29 servidor potente que necesitamos (escala vertical). El servidor puede ser empujados a sus límites muy rápidamente, y tendríamos que

Comience a fragmentar nuestra base de datos y coloque cada fragmento en servidores diferentes (escala horizontal).

Agilidad:

Los datos pueden ser ágiles en términos del número de actualizaciones o nuevos registros, en términos de cambio constante estructura de una pieza lógica de información o documento, o una combinación de ambos. Las bases de datos relacionales son buenas para cambiar / agregar datos siempre que la cantidad de los datos en una base de datos no son demasiado grandes. El tiempo necesario para realizar un mantenimiento de la base de datos (principalmente recalcular índices) aumenta con su tamaño. Elasticsearch puede manejar mejor los datos ágiles porque a) cada uno de los fragmentos está siendo indexados / actualizados independientemente, y b) los índices se actualizan constantemente con un intervalo de tiempo fijo, lo que significa que es poco probable que un fragmento haya acumulado una gran cantidad de datos no actualizados.

3.4.4. Debilidades

a) Seguridad:

Al tiempo que ofrece muchas funciones excelentes, Elasticsearch tiene un defecto importante: carece de funciones de seguridad tales como autenticación y control de acceso. Si un adversario sabe la URL del servidor, puede eliminar fácilmente todos los índices. y apagar el clúster. Por eso hay una necesidad de algún proxy y / o firewall que pueda proteger los datos.

b) Curva de aprendizaje:

El lenguaje de consulta hace que sea realmente fácil comenzar a escribir consultas simples. Sin embargo, la escritura de consultas se vuelve más complicada si involucra objetos anidados. Hay un tipo especial de consultas,

(31)

30 consultas anidadas, en Elasticsearch que deben ser utilizado cuando una de las condiciones del filtro es una condición en un campo de un objeto anidado. El uso de tales consultas requiere la comprensión de cómo se almacenan los documentos particulares

y analizado por Elasticsearch (es decir, el mapeo que está actualmente en uso).

3.5. TF-IDF

3.5.1. Definición

TF-IDF son las siglas en inglés de “Term frequency – Inverse document frequency” que en español es “Frecuencia de términos – Frecuencia inversa del documento”.

Es una fórmula mediante la cual podemos analizar cuál es la relevancia que tienen determinadas palabras en un texto o en un sitio web mediante la comparación de todos los documentos disponibles, esta fórmula es usada para calcular la densidad de las palabras claves en un texto. Al ser una fórmula lograda con el producto de TF x IDF, debemos aclarar cada uno de ellos.

3.5.2. TF

Proviene de la expresión Term Frequency, que determina la frecuencia de un término específico sea una palabra o un conjunto de palabras en un documento. el resultado de esto es comparado con el resto de términos del documento, ya que no solo depende de la cantidad de veces que se repite el término, sino también de la extensión del mismo. La fórmula que usa es la siguiente:

Ilustración 1: Formular de frecuencias de termino Fuente: ¿Qué es la fórmula TF*IDF? - Ryte Wiki (Sitio web)

(32)

31

3.5.3. IDF

El término IDF viene de su traducción al inglés “Inverse Document Frequency”

que quiere decir Frecuencia inversa del documento. Esta segunda etapa de la fórmula sirve para corregir la fórmula TF, esta es muy importante ya que incluye en el cálculo la frecuencia de documento de términos específicos: compara el número de todos los documentos que contienen el término, y para finalizar, el mismo logaritmo se encarga de comprimir los resultados.6

La fórmula que utiliza es la siguiente:

Ilustración 2: Frecuencia inversa del documento Fuente: ¿Qué es la fórmula TF*IDF? - Ryte Wiki (Sitio web)

3.5.4. Fórmula TF-IDF

La ponderación de un término dependiendo del documento se da por la multiplicación del término de frecuencia (TF) por la frecuencia inverso de documento (IDF). A continuación, se muestra dicha fórmula explicada

Ilustración 3: Peso TF-IDF para un término en un documento.

Fuente: Técnicas avanzadas de recuperación de información7

6 Ryte Wiki.. TF*IDF. -, de Ryte Wiki Sitio web: https://es.ryte.com/wiki/TF*IDF

7 Técnicas avanzadas de recuperación de información. Sitio web

(33)

32

3.5.5. Herramientas destacadas

Existen herramientas para calcular el TF-IDF, estas herramientas analizan un sitio web y nos otorgan una lista de palabras relacionadas con el tema o las palabras claves. Las más populares que debemos considerar son:

a) Website Auditor de Link Assistant b) RYTE que antes era OnPage.org c) Seolyze

d) Xovi

(34)

33

4. Capítulo 4: Marco Teórico

En el cuarto capítulo se describe las herramientas a utilizarse para el diseño e implementación de la solución de software.

(35)

34

4.1. Herramientas a utilizar 4.1.1. Amazon AWS:

Ilustración 4: Imagen del logo de Amazon Web Services.

Fuente: Amazon web services

Utilizamos Amazon Web Services que es un conjunto de servicios Cloud ofrecidas por Amazon.com, siendo considerada como pionera en este campo y compitiendo directamente con los más importantes servicios en computación como Microsoft Azure y Google Cloud Platform.

Fue lanzada en el 2006, donde ofrecía sus servicios online en distintas plataformas web. Tenemos que conocer que estos servicios no llegan a la mano de los usuarios finales, sino que son los desarrolladores los que lo adquieren para poder desarrollar sus aplicaciones.

4.1.2. ElasticSearch

Ilustración 5: Imagen del logo del ElasticSearch.

Fuente: ElasticSearch

(36)

35 Es un servidor de búsqueda basado en el motor de búsqueda de Lucene. Este es una potente herramienta que permite la indexación de datos para posteriormente poder hacer búsquedas y consultas sobre ellos, obteniendo los resultados de una forma rápida.

ElasticSearch está desarrollado en Java y está publicado como código abierto bajo las condiciones de la licencia Apache.

ElasticSearch actúa como repositorio de información, almacenando los documentos que indexa. Esto permite reemplazar almacenes de documentos como MongoDB o Raven DB por ElasticSearch.

Los documentos que se encuentran almacenados en ElasticSearch están en formato JSON que son estructuras de datos más similares a las entidades que se manejan a nivel de negocio. Esto vuelve más sencillo y provoca un desarrollo más eficiente ya que el propio documento contiene todos los elementos de la entidad de negocio sin necesitar enviar consultas complicadas sobre una base de datos para obtenerlos y poderlos procesar más adelante.

4.1.3. Python

Ilustración 6: Imagen del logo del Python.

Fuente: Python

Es uno de los lenguajes de programación más conocidos de los últimos tiempos.

Funciona en los sistemas operativos Windows, MacOS e incluso Linux. No es el lenguaje de programación más rápido, ni el más potente, pero sí uno de los más sencillos de programar y de entender, y es por eso que frecuentemente se usa para enseñar a programar a niños.

(37)

36 Una de las distribuciones más usadas de Python, la cual es gratis, se llama Anaconda. Se encuentra disponible solo en inglés, sin embargo, ofrece una multitud de utilidades que nos facilitan el trabajo

4.1.4. Lemmatizador y Tokenizador (Nltk)

El NLTK es un conjunto de bibliotecas y programas que ayuda al procesamiento del lenguaje natural. Asimismo, es la plataforma líder en la creación de programas Python que trabaja con datos del lenguaje humano.

Entre sus características se encuentran su facilidad de uso, por tal se dice que está orientado a brindar apoyo a la enseñanza y en la investigación del PLN y sus relacionados.

El Natural Language ToolKit también cuenta con ciertos requisitos; su facilidad de uso tiene como objetivo el aprendizaje de los sistemas NLP de los estudiantes y por tal mientras más tiempo se use aprendiendo el NLTK menos útil este resultará.

Otro requisito es la consistencia, toolkit necesita usar una consistente estructura de datos e interfaces. A su vez la correcta documentación y la simplicidad son requisitos importantes.

4.1.5. Ubuntu

Ilustración 7: Imagen del logo del Ubuntu.

Fuente: Ubuntu

Ubuntu es un sistema operativo basado en GNU/Linux y que se distribuye como software libre, el cual incluye su propio entorno de escritorio denominado Unity.

(38)

37 Su nombre proviene de la ética homónima, en la que se habla de la existencia de uno mismo como cooperación de los demás.

Actualmente funciona en computadores de escritorio y servidores, en arquitecturas Intel, AMD y ARM. Está orientado al usuario promedio, con un enfoque claro en la facilidad de uso y en mejorar la experiencia del usuario.

Extraoficialmente, la comunidad de desarrolladores proporciona soporte para otras derivaciones de Ubuntu, con otros entornos gráficos, como Kubuntu, Xubuntu, Ubuntu MATE, Edubuntu, Ubuntu Studio, Mythbuntu, Ubuntu GNOME y fcLubuntu.

(39)

38

5. Capítulo 5: Desarrollo de Solución del Proyecto

En el quinto capítulo se describe el desarrollo el cual consta de las fases del proyecto las cuales son Análisis, Diseño e Implementación.

(40)

39

5.1. Análisis Solución del Proyecto 5.1.1. Identificación del Problema

Según el Gestor Web, Ricardo Fornas Carrasco uno de los inconvenientes que contiene el internet, es la falta de métodos fiables que filtren la información que existe en esta. Esta idea es apoyada por la Universidad de Georgetown en Washington DC, la cual indica que la mayoría de la información publicada en la web no es regulada por criterios de calidad ya que cualquier usuario puede publicar y modificar el contenido en internet. Es por ello que se genera la necesidad de encontrar procedimientos automatizados que puedan filtrar el contenido de textos en la web.

5.1.2. Oportunidad de Negocio

La necesidad de crear un proceso el cual pueda filtrar la información de textos generada por usuarios que navegan en páginas web basado en la relevancia, se basa en que actualmente no existe algún producto que evalúe la información textual en base a los criterios que el usuario le defina en el proceso de filtración.

5.1.3. Propuesta de Solución del Problema

La propuesta de solución se basa en el desarrollo de un software que procese un conjunto de textos en base a la subjetividad dada por un criterio preestablecido.

Esta nos servirá para identificar la relevancia de textos de manera automática y rápida.

5.1.4. Alcance del Proyecto

● Investigación solución de procesamiento de texto.

● Investigación sobre plataformas cloud.

● Identificación de los requerimientos del software.

● Definición las especificaciones del software.

● Definición las funcionalidades del software.

● Implementación del algoritmo de frecuencias de término.

● Implementación del analizador de textos.

● Ejecución de pruebas para análisis de subjetividad de textos.

(41)

40

5.2. Diseño del Solución de Proyecto 5.2.1. Arquitectura del software

Nuestra propuesta de implementación sostiene la siguiente definición de Arquitectura de software:

Ilustración 8: Arquitectura del software

5.2.2. Diagrama de Flujo

A continuación, se muestran los diagramas de flujo de las funcionalidades de la solución del software “AppFilter”.

Ilustración 9: Diagrama del proceso principal

(42)

41

N° Entrada Actividad Salida Descripción

- - Inicio

1

Necesidad de crear un diccionario o generar reportes de opiniones

¿Existe un Diccionario?

Necesidad de creación de

diccionario Se verifica si existe un diccionario para la clasificación de palabras Necesidad de un

reporte de opiniones 2

Necesidad de creación de diccionario

Generar Diccionario de palabras

Creación de diccionario de palabras

Se gestiona el diccionario de palabras y se

determina su respectiva ponderación.

3

Necesidad de un reporte de opiniones

Generar reporte de opiniones

Reporte de opiniones

Se gestiona el reporte de opiniones para el cálculo de la subjetividad por opinión.

Fin

Ilustración 10: Flujo Generar Reporte de Opiniones

N° Entrada Actividad Salida Descripción

- - Inicio

Necesidad de crear reporte de Opiniones

(43)

42 1

Necesidad de crear reporte de Opiniones

Identificar tipo de entrada

Archivo plano Se obtiene en base a la necesidad que tipo de entrada en el proceso Datos de la

BBDD 2 Datos de la

BBDD

Obtención de opiniones

Conjunto de textos

Se obtienen las opiniones del portal web

3 Archivo plano Obtención de Texto(s)

Conjunto de textos

Se obtiene los textos de un archivo plano 4

Conjunto de

textos Escoger Tipo de Entrada

Conjunto de Textos

Se obtiene los datos a procesar según el tipo de Entidad

Conjunto de textos

5 Conjunto de

Textos Normalizar palabras Palabras normalizadas

Se lematiza sintácticamente las palabras a su mínima expresión.

6 Palabras normalizadas

Establecer

ponderación de cada palabra

Ponderación de cada palabra establecida

Se establece la ponderación de las palabras de acuerdo al diccionario de palabras 7

Ponderación de cada palabra establecida

Calcular estimación de subjetividad por opinión

Estimación de subjetividad calculada

Se calcula la estimación de la subjetividad calculada por opinión

8

Estimación de subjetividad calculada

Tipo de archivo de Entrada

Estimación realizada.

En base al archivo de entrada se muestra la estimación realizada de manera diferente Estimación

realizada.

9 Estimación

realizada. Generar reporte

Reporte de opiniones generado

Se genera el reporte de opiniones indicando los resultados

10 Estimación

realizada. Generar mensaje Mensaje generado

Se muestra un mensaje indicando los resultados 11

Reporte de opiniones generado

Escoger tipo de resultados

Término del proceso

Se termina el proceso después de los resultados

(44)

43 Mensaje

generado Término del

proceso Fin

Ilustración 11: Flujo Generar Diccionario de Opiniones

N° Entrada Actividad Salida Descripción

- - Inicio

1

Necesidad de crear un diccionario de palabras

Obtención de opiniones clasificadas

Opiniones obtenidas

Se obtienen las opiniones clasificadas

2 Opiniones

obtenidas Normalizar palabras Palabras normalizadas

Se lematiza sintácticamente las palabras a su mínima expresión.

3 Palabras normalizadas

Determinar

ponderación según el TFIDF

Palabras ponderadas por el TFIDF

Se determina la ponderación de las palabras de acuerdo al TFIDF

(45)

44 4

Palabras ponderadas por el TFIDF

Generar diccionario de palabras

Diccionario de palabras

Se crea el diccionario de palabras

Diccionario

de palabras Fin

5.3. Interfaces

Las pantallas realizadas están basadas en los requerimientos de un cliente en particular, por lo cual estos reportes no están dentro del alcance del proyecto, sin embargo, es parte del desarrollo de este.

Ilustración 12: Menú principal de la aplicación APPFILTER

En la ilustración de la interfaz del menú principal se puede elegir las opciones de generación de diccionario, la configuración de la base de datos a la que se quiere acceder y la generación de reportes.

(46)

45

Ilustración 13: Generación de diccionario de textos objetivos

En la anterior ilustración se puede elegir los textos que se utilizaran para la generación del diccionario de palabras objetivas, en el caso que no se encuentre pre cargada en la aplicación se puede insertar desde el pc del usuario.

Ilustración 14: Conexión de la base de datos

(47)

46

Ilustración 15: Aviso de finalización del proceso

En la anterior ilustración se muestran los diccionarios existentes anteriormente generados y la opción de poder conectarse a una base de datos para realizar el proceso con información en tiempo real del cliente. Además, se muestra la notificación cuando el proceso ha sido ya terminado.

Ilustración 16: Importar textos a analizar

(48)

47

Ilustración 17: Aviso de finalización de los textos analizados

En la anterior ilustración se muestra el mismo proceso anterior, pero en esta se muestra la opción para archivos planos, la cual se puede escoger que textos se podrán analizar de un archivo plano y además muestra el resultado en una notificación indicando si los textos son objetivos o subjetivos.

Ilustración 18: Reporte 1 - Comparación de datos de indicadores

(49)

48

Ilustración 19: Reporte 2 – Calidad de comentarios subjetivos actual vs histórico

Ilustración 20: Reporte 3 – Frecuencia promedio diaria de comentarios

(50)

49

Ilustración 21: Reporte 4 – Cantidad de comentarios objetivos actual vs histórico

(51)

50

5.4. Implementación del Software

A continuación, se explicará una descripción de la implementación realizada, donde se explica la codificación principal sobre los procesos realizados para conseguir el grado de subjetividad en base a lo propuesto como solución.

5.4.1. Captación de Textos de Entrada

5.4.1.1. Captación de información de artículos de The New York Times

La captación se elabora en la plataforma Python y se realiza por medio del Api de The New York Times, estos datos son convertidos en formato Json, los cuales tienen tablas y atributos, pero el atributo que en verdad nos importa se llama

“lead_paragraph”, el cual contiene el mensaje del artículo que se desea cargar.

Estos párrafos son almacenados en un arreglo llamado mensaje, los cuales se obtienen recorriendo los datos que contiene el Json.

Ilustración 22: "Código que almacena en arrays los datos de los artículos de The New York Times"

5.4.2. Captación de información de Comentarios de Amazon Web Store

La captación de datos de textos subjetivos también se realiza en Python, pero no con Apis como en el caso de The New York Times, sino con una ruta la cual

(52)

51 contiene un Json con un gran número de comentarios de productos de Amazon.

En este caso el atributo que se tomara en cuenta se llama “reviewtext”, el cual contiene los comentarios de Amazon. Y de igual forma que en los textos de The New York Times, los párrafos son almacenados en un arreglo llamado datos_entrada, los cuales son se obtienen recorriendo los datos que contiene el Json.

Ilustración 23: "Código que almacena en arrays los datos de los artículos de Amazon"

5.5. Almacenamiento en la Base de Datos

5.5.1. Subida masiva por métodos REST

Una vez guardados los párrafos de los artículos en arrays, el siguiente paso es almacenarlo en el ElasticSearch, lo cual se realiza con el siguiente código:

Ilustración 24: "Código que almacena de forma masiva los datos en el ElasticSearch"

Los Datos almacenados que en ElasticSearch corresponden a los primeros 6000 artículos o noticias de abril del 2015. Y para poder corroborar que los datos fueron guardados satisfactoriamente, se consulta de la siguiente forma:

(53)

52 curl -X GET 'http://localhost:9200/bdarticulos/objetivos/_search'

Ilustración 25: "Imagen que muestra todos los artículos objetivos que se encuentran en el ElasticSearch"

5.5.2. Carga de textos Subjetivos

Una vez guardados los párrafos de los artículos en arrays, el siguiente paso es almacenarlo en el ElasticSearch, lo cual se realiza con el siguiente código:

Ilustración 26: "Código que almacena de forma masiva los datos en el ElasticSearch"

Los Datos almacenados en el ElasticSearch corresponden a los primeros 6000 comentarios de Amazon que se encontraban en el Json. Y para poder corroborar que los datos fueron guardados satisfactoriamente, se consulta de la siguiente forma:

curl -X GET 'http://localhost:9200/bdarticulos/subjetivos/_search'

(54)

53

Ilustración 27: "Imagen que muestra todos los comentarios subjetivos que se encuentran en el ElasticSearch"

5.6. Procesamiento de Datos (Creación del Diccionario)

5.6.1. Procesamiento de Palabras (Tokenización y Lematización)

Antes del cálculo del TF-IDF se necesita extraer los textos y comentarios de la base de datos del ElasticSearch, y estos tendrán diferentes cantidades de ítems (500, 1000, 2000 y 5000) los cuales servirán para pruebas futuras. Luego serán almacenados en un arreglo con dos dimensiones “d_antiguo” en el cual se encontrarán los textos objetivos y subjetivos.

(55)

54

Ilustración 28: "Código que extrae 500 ítems objetivos y subjetivos de la base de datos”

Seguido de extraer los textos objetivos y subjetivos en un arreglo bidimensional, se necesita calcular el lexema de las palabras dentro del arreglo, eso se realiza ya que existen muchas conjugaciones de los verbos en sus diferentes estados (pasado, presente y futuro), y en el caso que se omita dicho paso, el algoritmo contaría los verbos “be”, “is”, “was” como si fueran diferentes verbos, lo cual me calcularía erróneamente la contabilización y la repetición de palabras en un texto. El código para calcular la lematización es el siguiente:

Ilustración 29: "Código que calcula la lematización de las palabras de la muestra"

Una vez que tengo las palabras lematizadas, creo el vocabulario de todas las palabras que se encontraban en el texto, para luego ser contabilizados y mostrado en una matriz.

(56)

55

Ilustración 30: "Código que muestra el vocabulario total y las veces que se repite"

5.6.2. Aplicación de las Distribuciones (TF-IDF y variantes)

Una vez que tengo todas las palabras lematizadas y conociendo cuantas veces se repite en el texto, realizo el TF-IDF, el cual se obtiene con el siguiente código:

Ilustración 31: "Código que calcula el TF-IDF para todos los textos"

En el que caso que se quiera el resultado de alguna variante del TF-IDF, solo se necesita cambiar la variable distribución por Tfchi2, Tfig, Tfgr o Tfrf.

(57)

56

Ilustración 32: "Código que calcula el Tfchi2 para todos los textos"

5.6.3. Obtención de Diccionario de Palabras Subjetivas y Objetivas

Por último, se guardan las matrices generadas en formato (NPY), archivo de matriz NumPy, el cual almacenan información necesaria para la construcción de una matriz en cualquier computadora. Así mismo, NumPy es una biblioteca de lenguaje de programación de Python que proporciona soporte para arrays y matrices grandes. [12]

5.7. Definición de Grado de Subjetividad

5.7.1. Obtención de Grado de Subjetividad de un Texto con el TFIDF

Para las pruebas con datos externos se tomará como ejemplo un texto perteneciente a The New York Times, el cual es el siguiente.

Ilustración 33: "Imagen de la muestra con la que se calcula el TF-IDF"

Después de elegir la muestra que se pondrá a prueba si es objetiva o subjetiva, extraigo los datos (NPY) guardados anteriormente.

Referencias

Documento similar

En estos últimos años, he tenido el privilegio, durante varias prolongadas visitas al extranjero, de hacer investigaciones sobre el teatro, y muchas veces he tenido la ocasión

que hasta que llegue el tiempo en que su regia planta ; | pise el hispano suelo... que hasta que el

Para ello, trabajaremos con una colección de cartas redactadas desde allí, impresa en Évora en 1598 y otros documentos jesuitas: el Sumario de las cosas de Japón (1583),

Entre nosotros anda un escritor de cosas de filología, paisano de Costa, que no deja de tener ingenio y garbo; pero cuyas obras tienen de todo menos de ciencia, y aun

Sanz (Universidad Carlos III-IUNE): &#34;El papel de las fuentes de datos en los ranking nacionales de universidades&#34;.. Reuniones científicas 75 Los días 12 y 13 de noviembre

(Banco de España) Mancebo, Pascual (U. de Alicante) Marco, Mariluz (U. de València) Marhuenda, Francisco (U. de Alicante) Marhuenda, Joaquín (U. de Alicante) Marquerie,

o Si dispone en su establecimiento de alguna silla de ruedas Jazz S50 o 708D cuyo nº de serie figura en el anexo 1 de esta nota informativa, consulte la nota de aviso de la

 Tejidos de origen humano o sus derivados que sean inviables o hayan sido transformados en inviables con una función accesoria..  Células de origen humano o sus derivados que