From 22ed5f6335b4d84bec3e238f2a68033c73d2b843 Mon Sep 17 00:00:00 2001 From: Untone Date: Sun, 29 Sep 2024 09:47:49 +0300 Subject: [PATCH] nosegm --- handlers/messages_routing.py | 27 +- nlp/segment_text.py | 17 - nlp/stop_words.txt | 1238 ++++++++++++++++++++++++++++++++++ nlp/stopwords_detector.py | 27 + requirements.txt | 1 - 5 files changed, 1280 insertions(+), 30 deletions(-) delete mode 100644 nlp/segment_text.py create mode 100644 nlp/stop_words.txt create mode 100644 nlp/stopwords_detector.py diff --git a/handlers/messages_routing.py b/handlers/messages_routing.py index 2738b35..e60a4a2 100644 --- a/handlers/messages_routing.py +++ b/handlers/messages_routing.py @@ -5,10 +5,11 @@ from state.scan import get_average_pattern from bot.api import telegram_api, download_file from bot.config import FEEDBACK_CHAT_ID from handlers.handle_private import handle_private -from nlp.segment_text import segment_text from nlp.toxicity_detector import detector from nlp.normalize import normalize from nlp.ocr import ocr_recognize +from nlp.stopwords_detector import check_stopwords + logger = logging.getLogger("handlers.messages_routing") @@ -110,20 +111,22 @@ async def messages_routing(msg, state): text += '\n' normalized_text = normalize(text) - segmented_text = segment_text(normalized_text) - toxic_score = detector(segmented_text) + toxic_score = detector(normalized_text) toxic_perc = math.floor(toxic_score * 100) - logger.info(f"\segmented_text: {segmented_text}\ntoxic: {toxic_perc}%") + logger.info(f"\text: {normalized_text}\ntoxic: {toxic_perc}%") - nospaces_text = text.replace(' ', '') - nospaces_normalized_text = normalize(nospaces_text) - nospaces_segmented_text = segment_text(nospaces_normalized_text) - nospaces_text_score = detector(nospaces_segmented_text) - nospaces_text_perc = math.floor(nospaces_text_score * 100) - logger.info(f"\nospaces_segmented_text: {nospaces_segmented_text}\nnospaces_toxic: {toxic_perc}%") + nospaces_text = text.replace(" ", "") + if nospaces_text != text: + nospaces_normalized_text = normalize(nospaces_text) + nospaces_text_score = detector(nospaces_normalized_text) + nospaces_text_perc = math.floor(nospaces_text_score * 100) + if check_stopwords(nospaces_normalized_text): + logger.info('stopword detected with no spaces, toxicity +40%') + nospaces_text_perc += 40 + logger.info(f"\nospaces_text: {nospaces_normalized_text}\nnospaces_toxic: {nospaces_text_perc}%") - if (nospaces_text != text and nospaces_text_score > toxic_score) or nospaces_text_perc > 95: - text_perc = nospaces_text_perc + if nospaces_text_score > toxic_score or nospaces_text_perc > 95: + text_perc = nospaces_text_perc await redis.set(f"toxic:{cid}", mid) await redis.set(f"toxic:{cid}:{uid}:{mid}", toxic_perc, ex=60 * 60 * 24 * 3) diff --git a/nlp/segment_text.py b/nlp/segment_text.py deleted file mode 100644 index 03d854f..0000000 --- a/nlp/segment_text.py +++ /dev/null @@ -1,17 +0,0 @@ -import spacy - -# Load the Russian language model -nlp = spacy.load("ru_core_news_md") - -def segment_text(text): - """ - Use SpaCy to segment text into words. - """ - # Process the text with SpaCy - doc = nlp(text) - - # Extract words from the processed document - segmented_text = ' '.join([token.text for token in doc if not token.is_space]) - - return segmented_text - diff --git a/nlp/stop_words.txt b/nlp/stop_words.txt new file mode 100644 index 0000000..f9d65c1 --- /dev/null +++ b/nlp/stop_words.txt @@ -0,0 +1,1238 @@ +беспезды +бздун +бздюх +блудилище +бля +бляд +блядво +блядеха +бляди +блядина +блядистка +блядище +блядки +блядование +блядовать +блядовитый +блядовозка +блядолиз +блядоход +блядский +блядство +блядствовать +блядун +блядь +блядюга +блядюра +блядюшка +блядюшник +блять +бордель +вафлист +вжопить +вжопиться +вздрачивание +вздрачивать +вздрачиваться +вздрочить +вздрочиться +вздрючивание +вздрючивать +вздрючить +взъебка +взъебнуть +взъебщик +вислозадая +вхуйнуть +вхуйнуться +вхуя +вхуякать +вхуякаться +вхуякивать +вхуякиваться +вхуякнуть +вхуякнуться +вхуяривание +вхуяривать +вхуяриваться +вхуярить +вхуяриться +вхуячивание +вхуячивать +вхуячиваться +вхуячить +вхуячиться +вхуяшивать +вхуяшиваться +вхуяшить +вхуяшиться +въебать +въебаться +въебашивать +въебашиваться +въебашить +въебашиться +въебенивать +въебениваться +въебенить +въебениться +выблядок +выеб +выебанный +выебат +выебать +выебаться +высераться +высрать +высраться +выссать +выссаться +выссереть +гавно +говнецо +говнистый +говниться +говно +говновоз +говнодав +говноеб +говноед +говномер +говномес +говносерка +говнюк +гомик +гомосек +гондон +гонорея +двужопник +дерьмо +дерьмовый +дерьмоед +дилдо +додрочить +додрочиться +доебать +доебаться +доебенивать +доебениваться +доебенить +доебениться +долбоеб +допиздить +допиздиться +допиздоболивать +допиздоболиваться +допиздоболиться +допиздовать +допиздоваться +допиздовывать +допиздовываться +допиздохать +допиздохаться +допиздохивать +допиздохиваться +допиздошивать +допиздошиваться +допиздошить +допиздошиться +допиздюкать +допиздюкаться +допиздюкивать +допиздюкиваться +допиздюливать +допиздюливаться +допиздюлить +допиздюлиться +допиздюривать +допиздюриваться +допиздюрить +допиздюриться +допиздюхать +допиздюхаться +допиздюхивать +допиздюхиваться +допиздякать +допиздякаться +допиздякивать +допиздякиваться +допиздяривать +допиздяриваться +допиздярить +допиздяриться +допиздяхать +допиздяхаться +допиздяхивать +допиздяхиваться +допиздячивать +допиздячиваться +допиздячить +допиздячиться +допиздяшивать +допиздяшиваться +допиздяшить +допиздяшиться +допизживать +дотрахать +дотрахаться +дохуйнуть +дохуякать +дохуякаться +дохуякивать +дохуякиваться +дохуяривать +дохуяриваться +дохуярить +дохуяриться +дохуячивать +дохуячиваться +дохуячить +дохуячиться +дрисня +дристать +дристун +дроченье +дрочилыцик +дрочить +дрочиться +дрочка +дрючить +дрючиться +дуроеб +ебало +ебальник +ебальные +ебальный +ебанатик +ебанашка +ебанутый +ебануть +ебануться +ебат +ебать +ебатьс +ебаться +ебитесь +ебло +еблом +еблысь +ебля +ебнуть +ебнуться +ебня +ебучий +жирнозадый +жопенци +жопища +жопник +жопоеб +жопой +жополиз +жополизание +жопоногий +жопочка +жопочник +жопство +забздеть +заблядовать +заблядоваться +задница +задрачивать +задрачиваться +задроченный +задрочить +задрочиться +задрючить +задрючиться +заебанный +заебательская +заебать +заебаться +заебашивать +заебашиваться +заебашить +заебашиться +заебенивать +заебениваться +заебенить +заебениться +заебла +залупа +залупаться +залупенить +залупень +залупистый +залупить +залупляться +залупу +запиздарить +запизденелый +запизденная +запиздить +запиздиться +запиздоболивать +запиздоболиваться +запиздоболить +запиздоболиться +запиздовать +запиздоваться +запиздовывать +запиздовываться +запиздохать +запиздошивать +запиздошиваться +запиздошить +запиздошиться +запиздюкать +запиздюкаться +запиздюкивать +запиздюкиваться +запиздюливать +запиздюливаться +запиздюлить +запиздюлиться +запиздюривать +запиздюриваться +запиздюрить +запиздюриться +запиздюхать +запиздюхаться +запиздюхивать +запиздюхиваться +запиздючивать +запиздючиваться +запиздючить +запиздючиться +засранный +засратый +засрать +засраться +зассать +затраханный +затрахать +затрахаться +затрахивать +затрахиваться +захуить +захуйнуть +захуйнуться +захуякать +захуякаться +захуякивать +захуякиваться +захуяривать +захуяриваться +захуярить +захуяриться +захуячивать +захуячиваться +захуячить +захуячиться +захуяшивать +захуяшиваться +захуяшить +захуяшиться +идиот +издрочиться +измандить +измандиться +измандовать +измандоваться +измандовывать +измандовываться +изъеб +изъебать +изъебаться +изъебашивать +изъебашиваться +изъебашить +изъебашиться +изъебенивать +изъебениваться +изъебенить +изъебениться +илья +испиздеться +испиздить +исхуякать +исхуякаться +исхуякивать +исхуякиваться +исхуяривать +исхуярить +исхуяриться +кастрат +кастрировать +кнахт +кончить +косоебить +косоебиться +кривохуй +курвиный +лахудра +лох +лохматка +лохудра +манда +мандавоха +мандавошка +мандить +мандиться +мандоватая +мандовать +мандохать +мандохаться +мандохивать +мандохиваться +мандошить +мастурбатор +минетка +минетчик +минетчица +мозгоеб +мозгоебатель +мозгоебать +мозгоебка +мокрожопый +мокропиздая +мочиться +мразота +мразь +мудак +мудашвили +мудила +мудило +мудильщик +мудистый +мудить +мудоеб +набздеть +наблядоваться +надристать +надроченный +надрочивать +надрочить +надрочиться +наебанный +наебать +наебаться +наебка +наебнуть +наебнуться +наебщик +наебывать +наебываться +наебыш +накакать +накакаться +накакивать +напиздить +напиздошить +напиздюрить +напиздюриться +насрать +насраться +нассать +нассаться +нахуякать +нахуякаться +нахуякивать +нахуякиваться +нахуяривать +нахуяриваться +нахуярить +нахуяриться +нахуячивать +нахуячиваться +нахуячить +нахуячиться +нахуяшить +недоебанный +недоносок +неебущий +нищеебство +обдристанный +обдристать +обдрочиться +обосранец +обосранная +обосраный +обосрать +обосраться +обоссанец +обоссаный +обоссать +обоссаться +обоссывать +обоссываться +обпиздить +обпиздиться +обпиздовать +обпиздоваться +обпиздовывать +обпиздовываться +обпиздохать +обпиздохаться +обпиздохивать +обпиздохиваться +обпиздошить +обтрахать +обтрахаться +обтрахивать +обтрахиваться +обхуярить +обхуяриться +обхуячить +объебать +объебаться +объебенить +объебешь +объебнуть +объебон +одинхуй +однапизда +однохуйственно +оебать +оебашивать +оебашить +оебенивать +оебенить +оебыват +опедерастить +опизденеть +опизденно +опизденный +опиздеть +опиздить +остоебенило +остоебенить +остоебеть +остопиздело +остопиздеть +остохуело +остохуеть +отдрачивать +отдрачиваться +отдрочить +отдрочиться +отпиздить +отпиздошить +отпиздяшивание +отпиздяшивать +отпиздяшиваться +отпиздяшить +отпиздяшиться +отсасывать +отсасываться +отсосать +отсосаться +отхуякать +отхуякаться +отхуякивать +отхуякиваться +отхуяривать +отхуяриваться +отхуярить +отхуяриться +отхуячивать +отхуячиваться +отхуячить +отхуячиться +отхуяшивать +отхуяшиваться +отхуяшить +отхуяшиться +отъебать +отъебашивание +отъебашивать +отъебашиваться +отъебашить +отъебенивать +отъебениваться +отъебенить +отъебениться +отъебись +отъебнуть +отъебывание +отъебывать +отъебываться +отьебаться +отьебашиться +отьебенивание +отьебись +отьебнуться +охуевать +охуевающий +охуевший +охуение +охуенно +охуенные +охуеть +охуительно +охуительный +охуякать +охуякаться +охуякивать +охуякиваться +охуякнуть +охуякнуться +охуяривать +охуяриваться +охуярить +охуяриться +охуячивать +охуячиваться +охуячить +охуячиться +охуяшивать +охуяшиваться +охуяшить +охуяшиться +очко +падла +падлюка +педераст +педерастина +педерастический +педерастия +педик +педрило +пежить +пезда +перднуть +передрачивать +передрочить +передрочиться +переебаться +переебашить +перехуйнуть +перехуйнуться +перехуякать +перехуякаться +перехуякивать +перехуякиваться +перехуякнуть +перехуякнуться +перехуяривать +перехуяриваться +перехуярить +перехуяриться +перехуячивать +перехуячить +перехуячиться +пидарасы +пидор +пидорас +пидр +пизда +пизданутая +пиздануть +пиздануться +пиздато +пизденка +пизденочка +пизденыш +пиздень +пиздеть +пиздец +пиздища +пиздобол +пиздовать +пиздолиз +пиздомол +пиздосос +пиздоход +пиздуй +пиздун +пиздюга +пиздюк +пиздюкать +пиздюкаться +пиздюлей +пиздюли +пиздюлина +пиздюшка +пиздякать +пиздятина +пиздятиной +пиздячий +плоскозадая +поблядовать +поблядушка +подосрать +подосраться +подоссать +подпиздить +подпиздовать +подпиздоваться +подпиздовывать +подпиздовываться +подпиздохать +подпиздохаться +подпиздохивать +подпиздохиваться +подпиздошивать +подпиздошить +подпиздошиться +подпиздякать +подпиздякаться +подпиздякивать +подпиздякиваться +подпиздяривать +подпиздяриваться +подпиздярить +подпиздяриться +подпиздяхать +подпиздяхаться +подпиздяхивать +подпиздяхиваться +подпиздячивать +подпиздячиваться +подпиздячить +подпиздячиться +подпиздяшивать +подпиздяшиваться +подпиздяшить +подпиздяшиться +подристывать +подрочить +подсирать +подхуякать +подхуякаться +подхуякивать +подхуякиваться +подхуякнуть +подхуякнуться +подхуяривать +подхуяриваться +подхуярить +подхуяриться +подхуячивать +подхуячиваться +подхуячиться +подхуяшивать +подхуяшиваться +подхуяшить +подхуяшиться +подъеб +подъебать +подъебаться +подъебашить +подъебка +подъебнуть +подъебывать +подъябывать +поебанный +поебать +поебаться +поебень +поебистика +поебон +поебончик +поебочка +поебывать +поебываться +попердеть +попердеться +попердывать +попизденная +попиздеть +попиздистее +попиздить +попиздиться +попиздоболивать +попиздоболиваться +попиздоболить +попиздоболиться +попиздоватей +попиздовать +попиздоваться +попиздовывать +попиздовываться +попиздохать +попиздохаться +попиздохивать +попиздохиваться +попиздошивать +попиздошиваться +попиздошить +попиздошиться +попиздюкать +попиздюкаться +попиздюкивать +попиздюкиваться +попиздюливать +попиздюливаться +попиздюлить +попиздюлиться +попиздюривать +попиздюриваться +попиздюрить +попиздюриться +попиздюхать +попиздюхаться +попиздюхивать +попиздюхиваться +попиздякать +попиздякаться +попиздякивать +попиздякиваться +попиздяривать +попиздяриваться +попиздярить +попиздяриться +попиздяхать +попиздяхаться +попиздяхивать +попиздяхиваться +попиздячивать +попиздячиваться +попиздячить +попиздячиться +попиздяшивать +попиздяшиваться +попиздяшить +попиздяшиться +попизживать +попизживаться +похуист +похуякать +похуякаться +похуякивать +похуякиваться +похуяривать +похуяриваться +похуярить +похуяриться +похуячивать +похуячиваться +похуячить +похуячиться +похуяшивать +похуяшиваться +похуяшить +похуяшиться +пошмариться +поябывать +приебать +приебаться +приебашивать +приебашиваться +приебашить +приебашиться +приебенивать +приебениваться +приебенить +приебениться +приебехать +приебехаться +приебехивать +приебехиваться +приебистый +приебуривать +приебуриваться +приебурить +приебуриться +приебывать +приебываться +примавдовывать +примандехать +примандехаться +примандехивать +примандехиваться +примандить +примандиться +примандовать +примандоваться +примандовываться +примандохать +примандохаться +примандохивать +примандохиваться +примандошивать +примандошиваться +примандошить +примандошиться +примандюкать +примандюкаться +примандюкивать +примандюкиваться +примандюливать +примандюливаться +примандюлить +примандюлиться +примандюривать +примандюриваться +примандюрить +примандюриться +примандякать +примандякаться +примандякивать +примандякиваться +примандяривать +примандяриваться +примандярить +примандяриться +примандяхать +примандяхаться +примандяхивать +примандяхиваться +примандячивать +примандячиваться +примандячить +примандячиться +примандяшивать +примандяшиваться +примандяшить +примандяшиться +примудохать +примудохаться +примудохивать +примудохиваться +припизденный +припиздень +припиздить +припиздиться +припиздовать +припиздоваться +припиздовывать +припиздовываться +припиздохать +припиздохаться +припиздохивать +припиздохиваться +припиздошивать +припиздошиваться +припиздошить +припиздошиться +припиздронивать +припиздрониваться +припиздронить +припиздрониться +припиздывать +припиздываться +припиздюкать +припиздюкаться +припиздюкивать +припиздюкиваться +припиздюливать +припиздюливаться +припиздюлить +припиздюлиться +припиздюривать +припиздюриваться +припиздюрить +припиздюриться +припиздюхать +припиздюхаться +припиздюхивать +припиздюхиваться +припиздякать +припиздякаться +припиздякивать +припиздякиваться +припиздяривать +припиздяриваться +припиздярить +припиздяриться +припиздяхать +припиздяхаться +припиздяхивать +припиздяхиваться +припиздячивать +припиздячиваться +припиздячить +припиздячиться +припиздяшивать +припиздяшиваться +припиздяшить +припиздяшиться +припизживать +припизживаться +притрахаться +прихуеть +прихуякать +прихуякаться +прихуякивать +прихуякиваться +прихуяривать +прихуяриваться +прихуярить +прихуяриться +прихуячивать +прихуячиваться +прихуячить +прихуячиться +прихуяшивать +прихуяшиваться +прихуяшить +прихуяшиться +проблядовать +проблядушка +проблядь +продрачивать +продрачиваться +продрочить +продрочиться +проебать +проебаться +проебашивать +проебашиваться +проебашить +проебашиться +проебенить +проебениться +проебывать +проебываться +пропиздить +пропиздиться +пропиздоболивать +пропиздоболиваться +пропиздоболить +пропиздоболиться +пропиздовать +пропиздоваться +пропиздовывать +пропиздовываться +пропиздон +пропиздохать +пропиздохаться +пропиздохивать +пропиздохиваться +пропиздошивать +пропиздошиваться +пропиздошить +пропиздошиться +пропиздюкать +пропиздюкаться +пропиздюкивать +пропиздюкиваться +пропиздюливать +пропиздюливаться +пропиздюлить +пропиздюлиться +пропиздюривать +пропиздюриваться +пропиздюрить +пропиздюриться +пропиздюхать +пропиздюхаться +пропиздюхивать +пропиздюхиваться +пропиздякать +пропиздякаться +пропиздякивать +пропиздякиваться +пропиздяривать +пропиздяриваться +пропиздярить +пропиздяриться +пропиздяхать +пропиздяхивать +пропиздяхиваться +пропиздячивать +пропиздячиваться +пропиздячить +пропиздячиться +пропиздяшивать +пропиздяшиваться +пропиздяшить +пропиздяшиться +пропизживать +пропизживаться +прохуякать +прохуякаться +прохуякивать +прохуякиваться +прохуяривать +прохуяриваться +прохуярить +прохуяриться +прохуячивать +прохуячиваться +прохуячить +прохуячиться +прохуяшивать +прохуяшиваться +прохуяшить +прохуяшиться +разблядоваться +раздрочить +раздрочиться +раззалупаться +разнохуйственно +разъебать +разъебаться +разъебашивать +разъебашиваться +разъебашить +разъебашиться +разъебенивать +разъебениваться +разъебенить +разъебениться +распиздить +распиздиться +распиздовать +распиздоваться +распиздовывать +распиздовываться +распиздон +распиздохать +распиздохаться +распиздохивать +распиздохиваться +распиздошивать +распиздошиваться +распиздошить +распиздошиться +распиздяй +расхуяривать +расхуяриваться +расхуярить +расхуяриться +расхуячивать +расхуячиваться +расхуячить +расхуячиться +сдрочить +сестроеб +сифилитик +сифилюга +скурвиться +смандить +смандиться +сперматозавр +спиздеть +стерва +стервоза +сука +суки +сукин +сукины +суходрочка +суходрочкой +сучара +сучий +сучка +сучье +схуякать +схуякаться +схуякивать +схуякиваться +схуяривать +схуяриваться +схуярить +схуяриться +схуячивать +схуячить +схуячиться +сцука +сцуко +съебать +съебаться +съебашивать +съебашиваться +съебашить +съебашиться +съебенивать +съебенить +съебениться +съебывать +съебываться +тварь +толстожопый +толстозадая +торчило +трепак +триппер +ублюдок +уебать +уебашивать +уебашить +уебенить +уебище +уебывать +уебываться +уебыш +ухуякать +ухуякаться +ухуякивать +ухуякиваться +ухуяривать +ухуяриваться +ухуярить +ухуяриться +ухуячивать +ухуячиваться +ухуячить +ухуячиться +ухуяшивать +ухуяшиваться +ухуяшить +ухуяшиться +фекал +фекалии +фекалий +худоебина +хуебень +хуев +хуева +хуевато +хуеватый +хуевина +хуево +хуевый +хуеглот +хуегрыз +хуедрыга +хуек +хуемудрие +хуемыслие +хуеньки +хуеплет +хуесос +хуета +хуетень +хуец +хуечек +хуи +хуила +хуило +хуиный +хуистый +хуишко +хуище +хуй +хуйло +хуйнуть +хуйню +хуйня +хуйство +хули +хуюживать +хуюживаться +хуюжить +хуюжиться +хуюшки +хуя +хуяк +хуякать +хуями +хуярить +хуяриться +хуястый +хуячий +хуячить +хуячиться +хуяшить +целка +целку +целочка +черножопые +чернозадый +шалава +шлюха +шмара +шмарить +шмариться diff --git a/nlp/stopwords_detector.py b/nlp/stopwords_detector.py new file mode 100644 index 0000000..f5d1573 --- /dev/null +++ b/nlp/stopwords_detector.py @@ -0,0 +1,27 @@ +stopwords = [] +with open('stop_words.txt', 'r', encoding='utf-8') as file: + text = file.readlines() + +# Convert stopwords to a set for faster lookup +stopword_set = set(stopwords) + +def check_stopwords(text, stopwords): + """ + Check if any words from the stopwords list are present in the given text. + + Args: + text (str): The input text to check. + stopwords (list): A list of stopwords. + + Returns: + bool: True if any stopword is found in the text, False otherwise. + """ + # Normalize the text by converting it to lower case and splitting into words + words = text.lower().split() + + # Iterate through each word and check for stopwords + for word in words: + if word in stopword_set: + return True # Stop iteration and return True if a stopword is found + + return False # Return False if no stopwords are found diff --git a/requirements.txt b/requirements.txt index 0c7e787..8bb295b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,5 @@ redis[hiredis] aiohttp aiofiles -spacy transformers easyocr \ No newline at end of file