Capítulo 2 Esquemas para detectar la polaridad de las opiniones basados en nuevos recursos
2.2 Nuevos recursos léxicos
2.2.1 Sentiwordnet 4.0
Como afirmábamos anteriormente el formato del SWN en algunos casos contiene más de una palabra por término, pero cuando se usa más de una palabra para identificar un término específico es porque dichas palabras son sinónimas, por lo que la solución a este problema sería sencillamente crear, a partir del término señalado, un término nuevo por cada una de las
palabras y otorgarles a cada uno la misma etiqueta y polaridad. En la
Figura 2.2 se muestra el resultado final de esta modificación para assimilatory assimilative assimilating.
49 Figura 2.2. Resultado de modificar un término con más de una palabra.
Como ya comentamos, la presencia de frases y palabras complejas complejiza el análisis y no aporta beneficios, por lo que es necesario eliminar la presencia de los signos _ y – entre los términos. Primeramente se extrajeron los términos simples que conformaban las palabras compuestas o frases y se eliminaron aquellos que constituían stopwords, es decir, se eliminaron los términos que no ofrecen ningún significado en el idioma Inglés. Seguidamente, se buscaron las posibles etiquetas de cada uno de los términos, mediante la función getPos() de la biblioteca RitaWordNet16, que dado un término como parámetro devuelve todas las posibles etiquetas que se ajustan al significado; creando así nuevos términos incluyendo los términos con sus respectivas etiquetas y con valores de polaridad positiva y negativa. La Figura 2.3 muestra cómo se realizó el proceso anterior para la frase wide_of_the_mark.
Figura 2.3 Proceso de eliminación de los signos _ y – para la frase wide_of_the_mark. Con este proceso se crearon muchos términos que ya estaban incluidos dentro del SWN 3.0 por lo que se hizo necesario eliminar términos repetidos teniendo en cuenta las etiquetas que los identifican ya sea como un adjetivo, sustantivo, verbo o adverbio. Por ejemplo, el término
ideal aparecía cinco veces en el SWN, dos como adjetivo y tres como sustantivo; y después de eliminar las repeticiones solamente quedaron dos apariciones, uno etiquetado como sustantivo y otro como adjetivo. Además de eliminar términos repetidos se excluyeron también aquellos términos que constituían nombres propios, pues estos no repercuten en la polaridad de la opinión.
50 De esta manera queda conformado el formato final de la nueva versión del SentiWordNet 3.0, con 9030 términos etiquetados como verbos, 53599 etiquetados como sustantivos, 18076 como adjetivos y 3637 etiquetados como adverbios, para un total de 84342 términos.
Otra de las deficiencias encontradas en la herramienta SWN es que la mayoría de los términos que lo conforman tienen como valor positivo y negativo cero, de un total 84342 términos 80795 tienen como polaridad positiva y negativa cero; este fenómeno limita considerablemente a este recurso en su objetivo fundamental, la clasificación de la polaridad de una opinión, pues al no tener suficientes términos puntuados correctamente no puede catalogar las opiniones de manera exacta.
En aras de darle solución al problema anterior se realizó una búsqueda de los términos positivos y negativos del SentiWordNet en las listas de palabras positivas y negativas de Bing Liu, con el propósito de sumar uno a los valores positivos en caso de que el término positivo del SentiWordNet coincidiera con una palabra de la lista de positivas presentadas por Liu & Hu, y lo mismo para el caso de un término negativo del SentiWordNet.
Hasta ahora solamente han sido otorgadas polaridad positiva o negativa a 5037 términos del SentiWordNet, faltando 95.4% de los términos por puntuar. Con el objetivo de aumentar los términos puntuados del SentiWordNet, definimos cuatro etapas, por las que transitó la asignación de polaridad de los términos. En cada una de estas etapas fue de suma importancia la base de datos léxica WordNet, otra herramienta clave en el campo de la minería de opinión. A continuación detallaremos cada una de las etapas definidas, analizando también los resultados obtenidos.
Primera etapa: Para comenzar esta etapa primeramente se separaron los términos sin puntuar y los términos puntuados del SWN. Teniendo como punto de partida los términos del SentiWordNet que no habían sido puntuados se utilizó la biblioteca RitaWordNet para obtener de cada uno de estos términos sus sinónimos mediante la función getAllSynonyms, con el objetivo de buscar si alguno de estos sinónimos ya poseía polaridad en el SentiWordNet y asignar esta misma al término señalado. En la Figura 2.4 se muestra el algoritmo creado para asignar la polaridad de cada término en esta primera etapa.
51 Figura 2.4 Algoritmo de asignación de polaridad para un término (Etapa 1).
Como resultado de la asignación de la polaridad en esta etapa se obtuvieron los valores que se muestran en la Tabla 2.4.
Tabla 2.4 Resultados obtenidos en la asignación de polaridad en la Etapa 1.
Total de términos del SentiWordNet con nuevo formato 84342
Términos puntuados en el SentiWordNet original 5037
Términos puntuados en la primera etapa 51027
Total de términos puntuados 56064
Como se puede observar en la Tabla 2.4, los términos puntuados aumentaron a 56064, por lo que solamente falta el 34.5% de los términos del SentiWordNet por asignarle valores de polaridad de un 95.4% que no tenían valores.
52 Antes de comenzar con la segunda etapa se separaron los términos que todavía no habían sido puntuados del resto, y los términos que fueron puntuados en la primera etapa se incluyeron en el listado de términos puntuados.
Segunda etapa: En la segunda etapa se aplicó un proceso similar a la primera, pero utilizando la función getAllAntonyms() de RitaWordNet, con el objetivo de buscar los antónimos de cada término y si alguno de estos antónimos ya poseía polaridad en el SentiWordNet, asignar la polaridad inversa al término señalado; es decir, como estamos analizando los antónimos, las puntuaciones fueron cambiadas: el valor positivo del antónimo será la polaridad negativa del término no puntuado y el valor negativo del antónimo será la polaridad positiva del término no puntuado. En la Figura 2.5 se muestra el algoritmo utilizado para asignar la polaridad de cada término en esta etapa.
53 Figura 2.6 Algoritmo de asignación de polaridad para un término (Etapa 3).
Los resultados de esta etapa se muestran en la Tabla 2.5Tabla 2.5. Resultados obtenidos en la asignación de polaridad en la Etapa 2., donde se puede observar que aumentó la cantidad de términos puntuados en 5678 términos, lo que significa que ya han sido puntuado el 73.2% de los términos del SentiWordNet.
Tabla 2.5. Resultados obtenidos en la asignación de polaridad en la Etapa 2.
Total de términos del SentiWordNet con nuevo formato 84342
Términos puntuados en el SentiWordNet original 5037
Términos puntuados en la primera etapa 51027
Términos puntuados en la segunda etapa 5678
54 Antes de comenzar con la tercera etapa se separaron los términos que todavía no habían sido puntuados, y los términos que fueron puntuados en la segunda etapa, se incluyeron en el listado de términos puntuados.
Tercera etapa: En esta etapa se utilizaron los términos que hasta el momento ya habían sido puntuados; y a cada uno de ellos se le aplicó la función getAllSynonyms() de RitaWordNet con el objetivo de buscar aquellos sinónimos que coincidieran con algún término no puntuado y así colocarle la polaridad del sinónimo coincidente al término no puntuado identificado. En la Figura 2.6 se muestra el algoritmo que se utilizó en esta etapa.
En la Tabla 2.6 se muestran los resultados obtenidos al transitar por la etapa 3. Es posible observar que se aumentó la cantidad de términos puntuados en 577.
Tabla 2.6 Resultados obtenidos en la asignación de polaridad en la Etapa 3.
Total de términos del SentiWordNet con nuevo formato 84342
Términos puntuados en el SentiWordNet original 5037
Términos puntuados en la primera etapa 51027
Términos puntuados en la segunda etapa 5678
Términos puntuados en la tercera etapa 5770
Total de términos puntuados 67512
Cuarta etapa: En esta etapa también se utilizaron los términos que hasta el momento ya habían sido puntuados. Se aplicó la función getAllAntonyms() de RitaWordNet con el propósito de buscar si algunos de los antónimos de los términos coinciden con algún término no puntuado y así colocarle la polaridad al término encontrado. En este caso como se están analizando los antónimos, las polaridades son alternadas como mismo se efectuó en la etapa 2. En la Figura 2.7 se observa el algoritmo utilizado en esta etapa.
En la Tabla 2.7 se muestran los resultados de las cuatro etapas. Es posible observar que finalizadas las cuatro etapas logramos aumentar la cantidad de términos con polaridad a 69051, faltando solamente 15991 términos por puntuar.
Tabla 2.7 Resultados obtenidos en la asignación de polaridad en la Etapa 4.
Total de términos del SentiWordNet con nuevo formato 84342
Términos puntuados en el SentiWordNet original 5037
Términos puntuados en la primera etapa 51027
Términos puntuados en la segunda etapa 5678
Términos puntuados en la tercera etapa 5770
Términos puntuados en la cuarta etapa 1539
55 Figura 2.7 Algoritmo de asignación de polaridad para un término (Etapa 4).
Como resultado de todas las etapas, incrementamos el número de términos con polaridad a 69051 representando el 81.9% de los términos que incluimos en la nueva versión del SentiWordNet 3.0 a la cual denominamos SentiWordNet 4.0.