{ "cells": [ { "cell_type": "markdown", "metadata": { "id": "buO2DONVfeI4" }, "source": [ "# SCC0633/SCC5908 - Processamento de Linguagem Natural\n", "> **Docente:** Thiago Alexandre Salgueiro Pardo \\\\\n", "> **Estagiário PAE:** Germano Antonio Zani Jorge\n", "\n", "\n", "# Integrantes do Grupo: GPTrouxas\n", "> André Guarnier De Mitri - 11395579 \\\\\n", "> Daniel Carvalho - 10685702 \\\\\n", "> Fernando - 11795342 \\\\\n", "> Lucas Henrique Sant'Anna - 10748521 \\\\\n", "> Magaly L Fujimoto - 4890582 \\\\\n" ] }, { "cell_type": "markdown", "metadata": { "id": "tsXdn_I2kLrO" }, "source": [ "# Abordagem SIMBÓLICA\n", "A arquitetura da solução simbólica envolve duas etapas principais: a primeira será uma abordagem simbólica, na qual serão utilizadas as frequências de palavras advindas de uma word cloud e a segunda etapa é usar uma ferramenta léxica chamada SentiWordNet.\n", "\n", "\n", "Nesta primeira etapa será realizado um pré-processamento para depois ser gerada uma word cloud para cada classe de sentimento, positiva ou negativa. As palavras mais frequentes irão compor um conjunto de palavras que serão utilizados para aplicar a regra para avaliação da nova frase.\n", "\n", "\n", "Na segunda etapa também será realizado um pré-processamento semelhante a etapa anterior, como a remoção das stopwords, apenas diferenciando que não será realizado a stemização (stemming). Os tokens serão obtidos e identificados com as tags para serem consultados no dicionário SentiWordNet. Utilizaremos o SentiWordNet como um vocabulário de palavras com sentimentos associados para comparação da abordagem anterior." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "![alt text](../imagens/Simbolico_WordCloud_Wordnet.png)" ] }, { "cell_type": "markdown", "metadata": { "id": "fbZz2CHZg-P6" }, "source": [ "\n", "## Pré Processamento\n", "1. Transformar todos os textos em lowercase \\\\\n", "2. Remoção das tags HTML \\\\\n", "3. Remoção das urls \\\\\n", "4. Remoção dos sinais de pontuação \\\\\n", "5. Remoção de emojis \\\\\n", "6. Remoção de stop words \\\\\n", "7. Stemização (Stemming) para a primeira etapa, geração do word cloud \\\\" ] }, { "cell_type": "markdown", "metadata": { "id": "kcxjowi2g2C5" }, "source": [ "# Importação de Bibliotecas" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "OmJ2yve_bLrL", "outputId": "db088050-910e-4fd6-fec6-354a71ca3498" }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "[nltk_data] Downloading package stopwords to\n", "[nltk_data] C:\\Users\\andre\\AppData\\Roaming\\nltk_data...\n", "[nltk_data] Package stopwords is already up-to-date!\n", "[nltk_data] Downloading package sentiwordnet to\n", "[nltk_data] C:\\Users\\andre\\AppData\\Roaming\\nltk_data...\n", "[nltk_data] Package sentiwordnet is already up-to-date!\n", "[nltk_data] Downloading package punkt to\n", "[nltk_data] C:\\Users\\andre\\AppData\\Roaming\\nltk_data...\n", "[nltk_data] Package punkt is already up-to-date!\n", "[nltk_data] Downloading package averaged_perceptron_tagger to\n", "[nltk_data] C:\\Users\\andre\\AppData\\Roaming\\nltk_data...\n", "[nltk_data] Package averaged_perceptron_tagger is already up-to-\n", "[nltk_data] date!\n", "[nltk_data] Downloading package wordnet to\n", "[nltk_data] C:\\Users\\andre\\AppData\\Roaming\\nltk_data...\n", "[nltk_data] Package wordnet is already up-to-date!\n" ] } ], "source": [ "import nltk\n", "nltk.download('stopwords')\n", "nltk.download('sentiwordnet')\n", "nltk.download('punkt')\n", "nltk.download('averaged_perceptron_tagger')\n", "nltk.download('wordnet')\n", "\n", "from nltk.corpus import stopwords\n", "from nltk.corpus import sentiwordnet as swn\n", "from nltk.tokenize import word_tokenize\n", "from nltk.corpus import stopwords\n", "from nltk.tokenize import word_tokenize\n", "from nltk.tokenize import sent_tokenize\n", "from wordcloud import WordCloud\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "import pandas as pd\n", "import zipfile\n", "import os\n", "from bs4 import BeautifulSoup\n" ] }, { "cell_type": "markdown", "metadata": { "id": "Am_-dVJHfDjv" }, "source": [ "# Baixando e Carregando os dados" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "C5tAw4xsbUqG", "outputId": "4ce41bfc-5fc3-4f36-b990-255fbc0bcf75" }, "outputs": [], "source": [ "import pandas as pd\n", "# !wget -O imdb.csv \"https://drive.google.com/uc?export=download&id=16HJTOZE7MluSPwRRluY9s2X4akGnZFAp\"\n" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 206 }, "id": "AL2SLRaobWdA", "outputId": "e0bde12b-3f4a-4266-e024-4dcc3c286b8f" }, "outputs": [ { "data": { "text/html": [ "
\n", " | review | \n", "sentiment | \n", "
---|---|---|
0 | \n", "One of the other reviewers has mentioned that ... | \n", "positive | \n", "
1 | \n", "A wonderful little production. <br /><br />The... | \n", "positive | \n", "
2 | \n", "I thought this was a wonderful way to spend ti... | \n", "positive | \n", "
3 | \n", "Basically there's a family where a little boy ... | \n", "negative | \n", "
4 | \n", "Petter Mattei's \"Love in the Time of Money\" is... | \n", "positive | \n", "