goober/modules/sentenceprocessing.py
2025-07-23 15:47:29 +02:00

73 lines
2.1 KiB
Python

import re
from modules.globalvars import *
from modules.volta.main import _
import spacy
from spacy.tokens import Doc
from spacytextblob.spacytextblob import SpacyTextBlob
import logging
logger = logging.getLogger("goober")
def check_resources():
try:
nlp = spacy.load("en_core_web_sm")
except OSError:
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")
logger.info((_('spacy_initialized')))
check_resources()
nlp = spacy.load("en_core_web_sm")
nlp.add_pipe("spacytextblob")
Doc.set_extension("polarity", getter=lambda doc: doc._.blob.polarity)
def is_positive(sentence):
doc = nlp(sentence)
sentiment_score = doc._.polarity # from spacytextblob
debug_message = f"{(_('sentence_positivity'))} {sentiment_score}{RESET}"
logger.debug(debug_message)
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
async def send_message(ctx, message=None, embed=None, file=None, edit=False, message_reference=None):
try:
if edit and message_reference:
await message_reference.edit(content=message, embed=embed)
return message_reference
send_kwargs = {}
if message:
send_kwargs['content'] = message
if embed:
send_kwargs['embed'] = embed
if file:
send_kwargs['file'] = file
if hasattr(ctx, "respond"):
return await ctx.respond(**send_kwargs, ephemeral=False)
else:
return await ctx.send(**send_kwargs)
except Exception as e:
await ctx.send(f"{RED}{(_('edit_fail'))} {e}{RESET}")
def preprocess_message(message):
message = message
doc = nlp(message)
tokens = [token.text for token in doc if token.is_alpha or token.is_digit]
return " ".join(tokens)
def improve_sentence_coherence(sentence):
return ""
def rephrase_for_coherence(sentence):
coherent_sentence = sentence
return coherent_sentence