[PITCH] STOKIYOU: Algoritmo simples de identificação de frases tristes ou depressivas
Estou há algum tempo estudando data science e machine learning e decidi me aprofundar em PLN ( Processamento de linguagem natural ) usando a lib NLTK . Para melhorar a fixação do conteúdo resolvi construir um projeto simples de inicio que pretendo evoluir para algo maior .
STOKIYOU
STOKIYOU são as iniciais da frase em inglês Stop killing yourself que significa em tradução literal Pare de se matar. A idéia do projeto a princípio é identificar frases do user que podem indicar sintomas de depressão , ansiedade, tristeza e por aí vai e enviar um alerta para o próprio com uma mensagem de autoajuda dependendo do contexto da frase.
Meu objetivo final com ele é desenvolver uma extensão que interaja com plataformas de pesquisas como: Google e Firefox e/ou até mesmo com publicações de redes sociais como: Instagram e Twitter .
O CÓDIGO
O script para a interpretação de frases é bem simples e acredito que até mesmo rudimentar.
Primeiro criamos uma função que recebe phrase_en
como parâmetro . phrase_en
é uma frase que recebemos primeiramente em português e traduzimos para o inglês .
def interpret_context(self, phrase_en):
phrase = self.translate_phrase(phrase_en)
Após isso, nós invocamos a função SentimentIntensityAnalyzer()
e verificamos a polaridade da frase , ou seja, vemos se ela é positiva, negativa ou nula, este último quer dizer que a frase não apresenta nem algo bom ou ruim
sid = SentimentIntensityAnalyzer()
polarity = sid.polarity_scores(phrase)
A função só apresenta algum resultado, no caso True
se ela for negativa, já que não precisamos enviar nenhum alerta de ajuda se ela for positiva ou nula .
Caso queríamos saber a diferença de um para o outro é só verificar se a frase é igual ou menor que -0.05
= negativa ou maior ou igual a 0.05
= positiva , o que tiver no meio dos dois representa um valor nulo .
A tokenização ao meu ver será necessário no futuro quando fizer algo mais aprofundado , então decidi manter mesmo que não represente nada .
if polarity['compound'] <= -0.05:
tokenize = sent_tokenize(phrase)
token = word_tokenize(phrase)
return True
Ajuda
Quem gostou do projeto e/ou quiser ajudar, é só abrir uma issue ou fazer uma solicitação de pull request. Desde já agradeço por ter lido até aqui.