misskey-microblogger/src/Dictionary/DictionaryParser.py
Victor Westerlund ac5b9f3955 Add random user generator (#1)
This PR adds scripts for generating random users, and generating random relationships between these users. This PR also refactors config file loading and writing into a class.

Reviewed-on: https://codeberg.org/vlw/misskey-microblogger/pulls/1
Co-authored-by: Victor Westerlund <victor.vesterlund@gmail.com>
Co-committed-by: Victor Westerlund <victor.vesterlund@gmail.com>
2024-11-14 10:02:03 +00:00

40 lines
No EOL
1.5 KiB
Python

import typing
from .Dictionary import Dictionary
from ..Enums import Dictionaries, NoteTones, NoteMoods, NoteTypes
class DictionaryParser(Dictionary):
def __init__(self, note: dict):
super().__init__()
# Split note text by spaces and coerce into a set
self.tokens = self._parse_tokens_from_note(note)
# Parse tokens from text in note
@staticmethod
def _parse_tokens_from_note(note: dict) -> set:
tokens = [token.lower() for token in note["text"].split(" ")]
return set(tokens)
def get_tone(self) -> NoteTones | None:
words = self.get_words(Dictionaries.CONTROL)["tone"]
if (self.tokens & set(words[NoteTones.INFORMAL.value])): return NoteTones.INFORMAL
elif (self.tokens & set(words[NoteTones.FORMAL.value])): return NoteTones.FORMAL
return None
def get_mood(self) -> NoteMoods | None:
words = self.get_words(Dictionaries.CONTROL)["mood"]
if (self.tokens & set(words[NoteMoods.FUNNY.value])): return NoteMoods.FUNNY
elif (self.tokens & set(words[NoteMoods.DECENT.value])): return NoteMoods.DECENT
elif (self.tokens & set(words[NoteMoods.ANNOYED.value])): return NoteMoods.ANNOYED
return None
def get_type(self) -> NoteTypes | None:
words = self.get_words(Dictionaries.CONTROL)["type"]
if (self.tokens & set(words[NoteTypes.QUESTION.value])): return NoteTypes.QUESTION
elif (self.tokens & set(words[NoteTypes.EXAGGERATED.value])): return NoteTypes.EXAGGERATED
elif (self.tokens & set(words[NoteTypes.STATEMENT.value])): return NoteTypes.STATEMENT
return None