goober/modules/sentenceprocessing.py

74 lines
2.1 KiB
Python
Raw Permalink Normal View History

2025-06-21 11:22:08 +02:00
import re
from modules.globalvars import *
from modules.volta.main import _
import spacy
from spacy.tokens import Doc
from spacytextblob.spacytextblob import SpacyTextBlob
2025-07-07 17:17:44 +02:00
2025-07-09 15:05:06 +02:00
import logging
logger = logging.getLogger("goober")
def check_resources():
try:
nlp = spacy.load("en_core_web_sm")
except OSError:
2025-07-09 15:05:06 +02:00
logging.critical((_('spacy_model_not_found')))
spacy.cli.download("en_core_web_sm")
nlp = spacy.load("en_core_web_sm")
if "spacytextblob" not in nlp.pipe_names:
nlp.add_pipe("spacytextblob")
2025-07-09 15:05:06 +02:00
logger.info((_('spacy_initialized')))
check_resources()
2025-07-07 17:17:44 +02:00
nlp = spacy.load("en_core_web_sm")
nlp.add_pipe("spacytextblob")
Doc.set_extension("polarity", getter=lambda doc: doc._.blob.polarity)
2025-06-21 11:22:08 +02:00
def is_positive(sentence):
doc = nlp(sentence)
sentiment_score = doc._.polarity # from spacytextblob
2025-06-21 11:22:08 +02:00
2025-07-09 15:05:06 +02:00
debug_message = f"{(_('sentence_positivity'))} {sentiment_score}{RESET}"
logger.debug(debug_message)
2025-06-21 11:22:08 +02:00
2025-07-06 23:31:07 +02:00
return sentiment_score > 0.6 # had to raise the bar because it kept saying "death to jews" was fine and it kept reacting to them
2025-06-21 11:22:08 +02:00
async def send_message(ctx, message=None, embed=None, file=None, edit=False, message_reference=None):
2025-07-23 15:47:29 +02:00
try:
if edit and message_reference:
2025-06-21 11:22:08 +02:00
await message_reference.edit(content=message, embed=embed)
2025-07-23 15:47:29 +02:00
return message_reference
send_kwargs = {}
if message:
send_kwargs['content'] = message
if embed:
send_kwargs['embed'] = embed
if file:
send_kwargs['file'] = file
2025-06-21 11:22:08 +02:00
if hasattr(ctx, "respond"):
2025-07-23 15:47:29 +02:00
return await ctx.respond(**send_kwargs, ephemeral=False)
2025-06-21 11:22:08 +02:00
else:
2025-07-23 15:47:29 +02:00
return await ctx.send(**send_kwargs)
except Exception as e:
await ctx.send(f"{RED}{(_('edit_fail'))} {e}{RESET}")
2025-06-21 11:22:08 +02:00
def preprocess_message(message):
message = message
doc = nlp(message)
tokens = [token.text for token in doc if token.is_alpha or token.is_digit]
2025-06-21 11:22:08 +02:00
return " ".join(tokens)
2025-06-21 12:00:49 +02:00
def improve_sentence_coherence(sentence):
return ""
2025-06-21 12:00:49 +02:00
def rephrase_for_coherence(sentence):
coherent_sentence = sentence
return coherent_sentence