From 0005bb3bdbb137d3c3511d407fe5bdc6fb66e5b8 Mon Sep 17 00:00:00 2001 From: dymik739 Date: Sat, 6 Apr 2024 18:14:53 +0300 Subject: [PATCH] troll-spelling-corrector: improve word detection accuracy by using a predefined dictionary --- modules/troll-spelling-corrector/index.py | 33 +++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/modules/troll-spelling-corrector/index.py b/modules/troll-spelling-corrector/index.py index 71d309d..7536c20 100644 --- a/modules/troll-spelling-corrector/index.py +++ b/modules/troll-spelling-corrector/index.py @@ -1,3 +1,32 @@ +import re + +all_possible_match_strings = [ + "силка", "силки", + "силки", "силок", + "силці", "силкам", + "силку", "силки", + "силкою", "силками", + "силко", "силки", + + "лінк", "лінка", "лінки", + "лінку", "лінки", "лінок", + "лінці", "лінці", "лінкам", + "лінк", "лінку", "лінки", + "лінком", "лінкою", "лінками", + "лінку", "лінці", "лінках", + "лінке", "лінко", "лінки" +] + +unique_match_strings = set(all_possible_match_strings) + +regex_matchers = [re.compile(fr"\b{i}\b") for i in unique_match_strings] + def process(message, path): - if "силк" in message.text.lower() or "лінк" in message.text.lower(): - return "*посилання 🌚", None + lowercase_message = message.text.lower() + + for m in regex_matchers: + result = m.match(lowercase_message) + if result: + return "*посилання 🌚", None + else: + return "", None