Para instalar o programa apenas é necessário fazer:
git clone https://github.com/SLP25/SPLN-TP1.git
cd sentimentAnalizis
pip3 install .
pip3 install spln-sentiment-analysis
O programa disponibiliza de 3 comandos
-
sentAnalize-calibrate Define que a polaridade do ficheiro fornecido é equivalente a 0 calibrando assim o programa.
-
sentAnalize-init Reconstroi os datasets do programa, para caso tenham sido feitas alterações a estes.
-
sentAnalize Funcionalidade principal do programa para a analisar a polaridade de um texto divido em cálculo de média e obter polaridades individuais.
Flags globais
Flag | Parâmetros | Descrição | Se não includo |
---|---|---|---|
-f |
Path caminho |
Usar o conteudo do ficheiro | Ler do standard input |
-n |
- | Retorna os valores calibrado | - |
-c |
- | Imprimir número de palavras consideradas para o cálculo | - |
--help |
- | Imprimir ajuda sobre o programa | - |
Flags para distinção de polaridade (incompatíveis entre si)
Flag | Parâmetros | Descrição | Se não includo |
---|---|---|---|
-d |
- | Calcular separadamente polaridades positivas e negativas | - |
-i |
String <+|-> |
Filtrar apenas as palavras com polaridade total positiva ou negativa respetivamente | - |
Flag para cálculo de polaridade média (incompatível com display de lista)
Flag | Parâmetros | Descrição | Se não includo |
---|---|---|---|
-a |
- | Calcular polaridade média | - |
Flags de display de lista (incompatíveis com cálculo de polaridade média)
Flag | Parâmetros | Descrição | Se não includo |
---|---|---|---|
-s |
String <inc|dec|alp> |
Ordenar palavras por polaridade total incremental, decremental ou alfabeticamente respetivamente | Ordenar palavras por ordem decrescente |
-m |
- | Mostrar valor médio de modificadores/negadores aplicados as palavras | - |
-l |
Int <n> |
Mostra apenas as <n> primeiras palavras | - |
- Usar emojis
- Limitar palavras
- Calcular polaridade media
- Calcular polaridade media individual para +/-
- Ordenação
- Calibração
- Mostrar número de palavras consideradas
- Total de polaridade de um palavra
- Valor de modificadores
O programa começa por dividir o input em frases, e as frases em palavras (e emojis). Cada frase é procurada numa Trie pré-computada para a traduzir numa série de Tokens. Cada Token representa uma palavra ou expressão, e é baseado em vários datasets.
Existem 2 tipos de Token. Bases, que possuem um certo valor emocional, e Modifiers, que modificam o valor das Bases ao seu redor. Esta modificação é feita com base numa máscara. O programa utiliza uma máscara fixa e igual para todos os modificadores (o grupo escolheu os valores 0.7 | 1 0.8), no entanto a possibilidade de utilizar uma máscara apropriada para cada modificador está em aberto como trabalho futuro.
A interação dos Tokens de cada frase é calculada, resultando numa longa lista de tokens Base modificados. A partir desta lista, o programa executa as operações explicadas pelas flags do programa para obter o output. A lista pode ser opcionalmente normalizada, filtrada, ordenada, cortada, e/ou acumulada como uma média.
Como forma de testar este programa foi pedido a várias pessoas para submeterem textos exemplos para este programa.
Estes exemplos podem ser observados no ficheiro exemplos.md
Estes valores foram obtidos após o programa ter cido calibrado usando o livro Harry Potter e a Pedra Filosofal .
O programa usa informação de 3 datasets distintos: