• Как получить следующее сообщение, отправленное ботом?

    Vindicar
    @Vindicar
    RTFM!
    Не имел дела с VKBottle, но я здорово подозреваю, что функция отправки сообщения возвращает объект, описывающий отправленное сообщение. Возьми id оттуда.
    Ответ написан
    3 комментария
  • Как вызвать функцию, название которой записано в переменной?

    Vindicar
    @Vindicar
    RTFM!
    Правильное решение - иметь словарь функций.
    funcs = {
        'test': test
    }
    
    cmd = input('Введите команду: ')
    func = funcs.get(cmd, None)
    if func is None:
        print(f'неизвеcтная команда {cmd}')
    else:
        try:
            result = func()
        except Exception as err:
            print("Ошибка:", err)
        else:
            print("Результат:", result)
    Ответ написан
    1 комментарий
  • Каким образом можно обучить ИИ распознавать лицо python?

    @rPman
    Вроде бы openvino может работать без tensorflow (и скорее всего умеет работать с intel ускорителями), вот пример их модели распознавания эмоций
    Ответ написан
    1 комментарий
  • Как вычленить из текста ФИО на python, при том что конкретных шаблонов нет?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    В общем случае эта задача не решается на 100% по определению.
    Вы говорите, что вокруг фамилий у вас произвольный текст, а это значит, что среди этого текста попадаются слова, которые чем-то похожи на ФИО, но не ФИО, или имя отчество, без фамилии, или что-то вроде "светкин василёк Игоревич". Можно это считать таким экзотическим ФИО, или отчество тут просто отдельно стоит и искать его не надо?
    В любом случае схема решения примерно такая. Если у вас есть знаки препинания, то можно разбить по ним фрагменты текста, ФИО не разделяется знаками препинания (кроме дефиса), но дефис отличается от тире пробелами по бокам.
    Далее у вас есть цепочки слов. Если в цепочке N слов, то в ней, можно сказать, N-2 кандидата на ФИО.
    Каждая трока-кандидат на ФИО может быть проклассифицирована по ряду признаков, свидетельствующих в пользу того, является ли эта тройка ФИО. Осталось только определить набор признаков и веса этих признаков. Каждый признак определяет два показателя: 1) насколько этот признак добавляет шансов тройке быть ФИО; 2) на сколько несовпадение по этому признаку отнимает шансов быть ФИО. Показатели определяются от нуля до 1 и перемножаются. Подбор признаков и их показателей будет настройкой вашего классификатора.
    Тут дальше можно двигаться разными путями.
    Часть детектов вы сможете надёжно определять по окончанию отчества.
    Часть признаков у вас будут словарными словами, которые, по вашему, не могут быть именем и\или фамилией.
    На этом этапе уже будет довольно хорошая детекция. Вопрос что вам важнее, отсутствие false positive, или отсутствие false negative.
    Так же по-разному может повезти с входными данными. Если у вас много "ловушек" в виде разбросанных по тексту бесхозных отчеств, если у вас много очень странных имён... в общем тут вам никто не выдаст идеальное решение. При отсутствии четкого ТЗ результатом будет расплывчатое ХЗ.
    В целом обычно на настройку таких классификаторов под текст на первое время сажают людей. У нас сейчас есть ChatGPT и ему, думаю, вполне можно скидывать наборы имён, чтобы он вычеркивал те, которые вряд ли именами являются. Если вы приняли, что какое-то слово не может являться именем, или фамилией, то такое решение хорошо бы кэшировать, а затем для консистентности придерживаться аналогичного в других случаях.

    Странная у вас задача, сударь. Выглядит как учебная. В этом случае рассуждений вроде приведенных мной здесь хватило бы для успешного ответа на собеседовании.
    Ответ написан
    2 комментария
  • Как FastAPI определяет, что запрос нужно обработать параллельно другим?

    Daemon23RUS
    @Daemon23RUS
    Note: You can mix def and async def in your path operation functions as much as you need and define each one using the best option for you. FastAPI will do the right thing with them.

    Anyway, in any of the cases above, FastAPI will still work asynchronously and be extremely fast.

    But by following the steps above, it will be able to do some performance optimizations.


    Обычный вызов выполняется асинхронно, но если вы указываете асинхронную обработку, то и асинхронность лежит на вас, а у вас там sleep во 2м примере который возвращает промис с задержкой.
    Ответ написан
    Комментировать
  • Как исправить проблему импорта библиотеки python-valve?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Библиотека valve поддерживает максимум python 3.7, у вас 3.12. Библиотека не обновлялась около 4 лет. Закопайте стюардессу.
    Ответ написан
    Комментировать
  • Expected `float` but got `int`, как исправить?

    @Everything_is_bad
    Учимся нормально конкретизировано задавать вопросы, в текущем виде ответ: "явно преобразовать во float", который ты вообще сам должен был домыслить.
    Ответ написан
  • Почему удаляет аккаунт телеграмм на python telethon?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Скорее всего вы применяете клиентское API телеграма не по назначению или вопреки лицензии. Например, вы, может быть, рассылаете спам, или скам, а может быть делаете что-то ещё, что противоречит добросовестному использованию сети.
    Конкретной причины, по которой вас блокируют вам никто скорее всего не скажет. В таких случаях самое эффективное - это максимальнео расплывчато описывать причины и критерии возможных блокировок, чтобы играясь с пороговыми критериями злоумышленники не могли подстроиться под ограничения.

    Скорее всего ограничения и критерии, по которым вашу деятельность пресекают, не заключаются в чем-то одном. Скорее всего критериев много и они не однозначно влияют на принятие решения о блокировке. Другими словами, если быть по ту сторону баррикад от вас, то причины блокировок нужно сделать максимально многофакторными, диверсифицированными, неявными и нечеткими. Где-то нужно даже вводить рандомизацию и отложенную блокировку, если вы предпринимаете серьёзные меры, чтобы ваш софт притворялся валидным штатным клиентом. В вашем же случае, видимо, паттерн использования протокола и АПИ выдаёт вас мгновенно.

    Подумайте чем ваш "клиент" телеграма отличается от добросовестно выполненного клиента для штатных целей? Может быть он не сохраняет контактов? Может быть коннекты идут из одной подсети и она уже "на особом счету"? Может быть На ваши сообщения много жаловались, и теперь отдельные специальные эвристики вылавливают клиентов, похожих по паттерну на ваши и банят их сразу же?

    Никто вам не скажет конкретных критериев. Никто не допустит, чтобы эти критерии были всегда неизменными и четкими. Это не эффективно для борьбы со спамерами.
    Ответ написан
    3 комментария
  • В чем заключается ошибка в коде python?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Это типичная ошибка тех, кто не учил язык. Попробуйте так:
    if self.s1 in [color1, color2]:
    Ответ написан
    4 комментария
  • Можно ли в Python сделать такой механизм, чтобы при изменении значения в любой ветки словаря, я был уведомлен?

    fenrir1121
    @fenrir1121
    Начни с документации
    Наследование от dict повлечет за собой неявные ошибки, используйте предназначенный для этого collections.UserDict
    from collections import UserDict
    class MyDict(UserDict):
        def __setitem__(self, key, value):
            print(f'Меняем значение {key} на {value}')
            super().__setitem__(key, value)


    Мне нужно чтобы при изменении любого значения словаря, в том числе значения словаря по ключу 'z', выполнялся определенный код.

    Очевидно вам это нужно для ваших конкретных словарей с бизнес логикой. И это нормально что они будут отдельным классом. Питон под капотом тоже использует словари и там явно не должен выполняться ваш код.
    Ответ написан
    Комментировать
  • Можно ли в Python сделать такой механизм, чтобы при изменении значения в любой ветки словаря, я был уведомлен?

    @twistfire92
    Python backend developer
    Как верно подметил fenrir , наследоваться надо от UserDict.
    Чуть поменял код, можете посмотреть что вышло. Была еще проблема в том, что при создании объекта вызывается метод __setitem__, для этого добавил флаг _initialization_finished

    from collections import UserDict
    
    
    class MyDict(UserDict):
        def __init__(self, **kwargs):
            self._initialization_finished = False
            print('Создан объект')
            super().__init__(**kwargs)
            self._initialization_finished = True
    
        def __setitem__(self, item, value):
            if self._initialization_finished:
                print(f"Вы поменяли значение {item} на {value}!")
            if isinstance(value, dict):
                value = MyDict(**value)
            super().__setitem__(item, value)
    
        def __getitem__(self, item):
            print(f"Пытаемся получить значение {item}")
            return super().__getitem__(item)
    
    
    d = MyDict(x='123', y=15, z={'a': 4})
    # Создан объект
    # Создан объект
    
    d['x'] = '456'
    # Вы поменяли значение x на 456!
    
    e = d['y']
    # Пытаемся получить значение y


    Два сообщения подряд "Создан объект" из-за того, что сначала создается основной кастомный словарь, потом создается словарь под ключом z, который тоже вызывает сообщение
    Ответ написан
    Комментировать
  • Как скачать видео на YouTube с помощью python3. 9 bs4?

    Maksim_64
    @Maksim_64
    Data Analyst
    Что значит спарсит видео по ссылке? beatifulsoup парсит html и xml. Что бы качать видео c ютуба средствами python, есть специальная библиотека pytube. https://pytube.io/en/latest/
    Ответ написан
    2 комментария
  • Cannot connect to chrome at 127.0.0.1:58477 - Как исправить?

    xzripper
    @xzripper
    0xC0000005
    Попробуйте добавить эти аргументы к options
    --disable-extensions, --disable-application-cache, --disable-gpu, --no-sandbox,  --disable-setuid-sandbox, --disable-dev-shm-usage


    Еще попробуйте добавить аргумент version_main=110 в Chrome()
    Ответ написан
    1 комментарий
  • Как добавить явное условие при обучении модели AI?

    Maksim_64
    @Maksim_64
    Data Analyst
    Явные условия (детерминистические) это не про машинное обучение. Сама суть машинного обучения это обучение без задания явных инструкций.

    Твоя проблема, большая называется "несбалансированные классы". 5 в одном 100 в другом это безнадега, модель по умолчанию имеет большую предрасположенность, что мешает обучению.

    Это распространенная проблема и к сожалению простого решения (не имеет). Существуют разные стратегии, как с этим бороться, и надо пробовать, что будет работать.

    Советую изучить вот эту статью на эту тему внимательно, и запастись терпением. Вот эта статья с медиума (открывается только через vpn) по крайней мере у меня, там тоже BERT и тоже решается проблема с не сбалансированным классами. Есть код. Но повторю проблема решается разными стратегиями препроцессинга (первая статья).
    Ответ написан
    1 комментарий
  • Можно ли использовать цикл for и файл с массивами?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    import lists
    
    text = input()
    if hasattr(lists, text):
        for i in getattr(lists, text):
            print(i)
    else:
        print('Такого нет')
    Ответ написан
    Комментировать
  • Что делать если при попытке авторизоваться используя FastAPI появляется ошибка 204?

    Vindicar
    @Vindicar
    RTFM!
    Ну код 2хх - это не ошибка. Просто сервер сообщает, что действие выполнено, а вот сказать ему нечего (т.е. нет отдаваемого документа). Поищи в документации, наверняка можно настроить переадресацию при logout, чтобы отдавать код 302.
    Ответ написан
    Комментировать
  • Как сделать, чтобы киви ключ принимался без ошибки «binascii.Error»?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    Не похоже на ключ даже близко. Они выглядят как длинный и валидный b64
    Ответ написан
    4 комментария
  • Как прописать относительный путь URL в функции в Джанго проекте?

    deepblack
    @deepblack
    Так, но подозреваю это не то что тебе надо:
    Документация
    url_ = f"{reverse("products")}"/add?pk_order={order_pk}&pk_repairer={i[0]}"


    или вот так:
    # settings.py
    YOUR_SITE_BASE_URL = os.getenv('YOUR_SITE_BASE_URL')


    from django.conf import settings
    
    url_ = f"{settings.YOUR_SITE_BASE_URL}/add?pk_order={order_pk}&pk_repairer={i[0]}"
    Ответ написан
    1 комментарий
  • Почему не видит модуль dotenv?

    SoreMix
    @SoreMix
    yellow
    pip install python-dotenv
    Ответ написан
    Комментировать
  • Ошибка expected expect or finally block.Как решить?

    Frostealth
    @Frostealth
    Backend Developer
    Исключения в python
    try:
        # your code
    except ExceptedException as exc:
        # handle the exception
    Ответ написан
    Комментировать