Задать вопрос
  • Возможно ли использовать ИИ для сравнения текста?

    @rPman
    Юрий, так как имеющейся информации для принятия решения недостаточно (не важно автоматически или вручную), особенно если у вас ТОЛЬКО название, необходимо лезть в интернет, и вот тут то и начинаются проблемы автоматизации.

    Реализовать желаемое реально, с каждым дополнительным процентом данных, которые это решение будет реализовывать автоматически, сложность будет расти экспоненциально, но с другой стороны, это решение поможет вашей компании в будущем, если вам требуется выверенный список товаров.

    До появления gpt ИИ, такую задачу решать пришлось бы буквально для каждого сайта источника информации, где то загружать базу вручную, преобразовывать в вид, понятный твоей системе, а где то писать парсер или пользоваться ее поисковой системой (тупой пример - вбиваешь название в поиск по крупному каталогу или магазину, загружаешь описания, и уже на их основе что то делаешь). Теперь же программист может поиграть с промптом и используя ИИ пытаться анализировать веб сайты автоматически без разработки для каждого своего парсера, но в любом случае просто не будет.
    Ответ написан
    1 комментарий
  • Возможно ли использовать ИИ для сравнения текста?

    @WaterSmith
    Android-разработчик. Java, Kotlin
    Эту задачу нельзя решать алгортмом. Можно придумать какие-то критерии, сделать инструмент, для облегчения работы пользователя. Но окончательное решение о том, какие товары являются дублями должен принимать ответственный человек. Иначе у вас в базе будет каша.
    Просто представьте себе последствия ложных срабатываний, когда алгоритм примет за одинаковые элементы, товары которые на самом деле разные.

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

    Lord_of_Rings
    @Lord_of_Rings
    Дунадан - северный странник. Злой, но очень добрый
    Думаю здесь вам лучше помогут
    Ответ написан
    Комментировать
  • Как вывести полностью строки через \n в python?

    Lord_of_Rings
    @Lord_of_Rings
    Дунадан - северный странник. Злой, но очень добрый
    Ну если через это г..., то
    x_split = x.split('\n')
    print(x_split[0]) # где 0 - номер нужной вам строки (считая  с 0)
    Если вы ищете по предмету, то можно и такое сварганить
    def extract_specific_lines(text, subject_keyword):
        # Разбиваем строку на отдельные строки
        lines = text.split('\n')
    
        # Начинаем с пустого списка для хранения нужных строк
        selected_lines = []
    
        # Флаг для отслеживания, когда начинается нужный блок строк
        start_collecting = False
    
        # Перебираем все строки
        for line in lines:
            if line.startswith(f"Предмет: {subject_keyword}"):
                start_collecting = True
            if start_collecting:
                selected_lines.append(line)
                # Останавливаем сбор после последней нужной строки
                if line.startswith("Задания и решения:"):
                    break
    
        # Объединяем выбранные строки в одну строку
        result = '\n'.join(selected_lines)
    
        return result
    
    # Ваша исходная строка
    x = """Предмет: Право
    Сроки проведения: 3 декабря 2024 года
    Время начала: 16:00
    Классы участия: 9–11
    Итоги проверки: официальная публикация ожидается 9.12
    Задания и решения: задания и решения
    --------------------
    Предмет: Математика
    Сроки проведения: 4 декабря 2024 года
    Время начала: 16:00
    Классы участия: 7–8
    Итоги проверки: официальная публикация ожидается 12.12
    Задания и решения: задания и решения"""
    
    # Используем функцию для извлечения нужных строк
    subject_keyword = "Математика"
    result = extract_specific_lines(x, subject_keyword)
    
    # Выводим результат
    print(result)


    Но вообще все это бред. По-хорошему надо так:
    blocks = []
    block = {
            "Предмет": subject,
            "Сроки проведения": dates,
            "Время начала": times,
            "Классы участия": grades,
            "Итоги проверки": itog,
            "Задания и решения": results_publication
    }
    blocks.append(block)

    А потом делайте, что хотите. Например вывести всё на экран можно так
    for block in blocks:
        for key, value in block.items():
            print(f"{key}: {value}")
        print("-" * 20)
    Ответ написан
    1 комментарий
  • Как сделать так, чтобы скрипт добавлял все данные в таблицу?

    Lord_of_Rings
    @Lord_of_Rings
    Дунадан - северный странник. Злой, но очень добрый
    что делать?
    Перестать задавать глупые вопросы, понять что никто здесь отладкой заниматься и копаться в таких портянках не будет и дебажить самому
    Ответ написан
    1 комментарий
  • Как написать автоматизированный тест для тестирования сортировки по цене?

    @dim5x
    ЗИ, ИБ. Помогли? Поблагодарите. Отметьте ответом.
    its_southpaw, [тестил на Win10, Edge].
    1. Что-то не так с селекторами, с теми которые у вас мне не удалось отыскать элементы.
    Для того, чтобы хотя бы был клик по выпадающему меню, использовал такой:
    SORT_BUTTON = (By.XPATH, "(//span[@class='select2-selection select2-selection--single select2-selection--buttoned select2-selection--buttoned-dark select select--sorting'])[1]")

    2. Для SORT_ASC использовал такой:
    SORT_ASC_OPTION = (By.ID, 'select2-catalog_sorting_mobile-7h-result-jsvp-price:asc')

    3. Для SORT_DESC вы вообще решили не писать.
    SORT_DESC_OPTION = (By.ID, 'select2-catalog_sorting_mobile-7h-result-jsvp-price:desc')

    4. В def select_sort_option() добавил небольшую задержку (2-3 секунды) после
    WebDriverWait(self.driver, 10).until(EC.staleness_of(option))
    .

    После этих манипуляций стало так:
    675a4852cde6a196859565.png

    Но второй тест не пройдёт, потому что вот это:
    675a46e898655425277103.png
    Что приводит к: [...11900, 11900, 7735, 11900...], что никак не будет равно отсортированному списку цен в assert.

    З.Ы. если вы хотите читаемую кириллицу в выводе, а не вот это вот:
    test_sort_by_price[\u0426\u0435\u043d\u0430 \u043f\u043e \u0432\u043e\u0437\
    ,
    то добавьте файлик pytest.ini с содержимым:
    [pytest]
    disable_test_id_escaping_and_forfeit_all_rights_to_community_support = True
    Ответ написан
    Комментировать
  • Как сделать, чтобы бот постоянно работал?

    @ImagoRay
    Создайте службу для выполнения бота. Иначе вы можете столкнуться с ограничением сессий на сервере. Бот будет работать то количество времени, которое отведено для неактивной сессии. По истечении этого времени сервер дисконнектит вашу УЗ, так как вы отключились от сервера.
    Ответ написан
    Комментировать
  • Какой отечественный linux выбрать для веб-разработки?

    @lrmpsm53
    Оиентируйся на свежесть и количество пакетов. Поэтому точно не Рэд ос и не альт (ну или смотри в сторону регулярок). Я б росу потыкал

    Сам вообще на Федоре сижу)
    Ответ написан
    2 комментария
  • Почему питание домашних роутеров — 12 В?

    @AiR_WiZArD
    USB относительно новый стандарт, сетевое оборудование появилось раньше, чем получил широкое распростроение USB с токоотдачей 2A. Делать кастомный блок питания на 5В смысла не было, ибо 12В получило широкое распространение (ATX, видеонаблюдение, куча бытовой низковольтки), а рассчитать DC-DC от 5В или 12В разницы почти нет, все равно потом опускать до 3.3В, 1.2В (редко 1.8В). На самом деле есть куча сетевого оборудования с разными напряжениями, если поискать, то можно модели с 5В, 9В, 24В найти, не стоит забывать и о 48В PoE
    Ответ написан
    5 комментариев
  • Почему питание домашних роутеров — 12 В?

    @Tabletko
    никого не трогаю, починяю примус
    Думаю если вести 5 вольт от адаптера питания по проводу до роутера то, при требуемой мощности, будет больше ток и сильнее начинают играть потери на проводах и разъёмах. В нужные 3, 5 вольт напряжение преобразуется уже на плате устройства.
    Ответ написан
    1 комментарий
  • Почему питание домашних роутеров — 12 В?

    LbICbIY
    @LbICbIY
    улвекающийся
    Пятнадцать лет назад роутеры как раз и работали от 5В. Тот же знаменитый дир-320 или wl500. И у таких роутеров часто БП был проблемным местом — умирали кондёры и вайфай переставал цеплять клиентов.
    Ответ написан
    2 комментария
  • Почему питание домашних роутеров — 12 В?

    GavriKos
    @GavriKos
    Невольно думается, что это заговор производителей: чтобы горели, а мы шли новые покупать.

    Ну я вот на днях сменил роутер. Предыдущий отпахал 10 лет - и пахал бы дальше, ничего не сгорело. И это при том что у него адаптер питания на 24 вольта, а допустимое входное - 10-28. Так что тут скорее наоборот страхуется производитель, чтобы сделать нормальное питание внутри для себя, независимо качества БП (их скорее всего делает подрядчик - они далеко не всегда фирменные). А чтобы гарантировать норму внутри - на вход надо таки повыше подать.

    А чего вы про ноуты такой же вопрос не задаете? Там БП тоже не 5 вольт далеко выдают.
    Ответ написан
    12 комментариев
  • Как обойти контроль просмотра видео на сайте образовательного ресурса?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Раз работает на 2х, значит в теории самый простой вариант:
    f12 - консоль
    document.querySelectorAll('video').forEach(video => video.playbackRate = 100500);
    Ответ написан
    Комментировать
  • Как сравнить 2 df в Пандасе?

    Maksim_64
    @Maksim_64
    Data Analyst
    1. Если в колонке сборник (строки, числа, пропущенные значения). То это тип 'object'. Что означает python object что в свою очередь надо понимать буквально, массив состоит из python объектов.

    2. Операция сравнения двух объектов, не является однозначно трактованной операцией, в том числе и по этому в python существуют дандер методы которые позволяют переопределять операторы сравнения (вложить свой смысл что именно ты подразумеваешь по сравнением). Это я к тому что ты должен четко понимать что значит равны.

    pandas объекты поддерживают сравнение в его собственной интерпретации и поведении. Если этого достаточно
    то, все элементарно. Если сравнение используется для фильтра то такие колонки не хранят.
    df = pd.DataFrame({
        'A':[1,'a',2],
        'B':[1,'a',3]
    })
    
    df.loc[df['A'] == df['B']]

    Колонкам не обязательно быть из одного и того же фрейма, лишь бы размерность совпадала.
    Если же нужно особое понимание сравнения. То пишется функция которая принимает два массива на вход и возвращает массив булевых значений, затем этот массив используется в качестве маски, для осуществления выборки.
    Ответ написан
    Комментировать
  • Как найти сумму элементов словаря вложенного в список?

    AmanitaRubescens
    @AmanitaRubescens
    Шалтай-болтай
    Бабушкин способ:

    lst = [
    	{
    		1: 11,
    		2: 12,
    		3: 13,
    	},
    	{
    		1: 21,
    		2: 22,
    		3: 23,
    	},
    	{
    		1: 24,
    		2: 25,
    		3: 26,
    	},
    ]
    add_lst = []
    
    for i in lst:
        add_lst.append(sum(i.values()))
    
    print(sum(add_lst))
    Ответ написан
    Комментировать
  • Насколько уникальная часть хеша (md5)?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Ну, общее количество вариантов в таком хэше 224. Значит с вероятностью 1/2 среди примерно 5000 наугад выбранных значений найдутся одинаковые. Парадокс дней рождения, однако.
    Ответ написан
    Комментировать
  • Как работать со строками в питоне?

    @Everything_is_bad
    1. С путями надо работать через модуль pathlib.
    2. Открой доки и прочитай про экранирование символов в строках, чтобы раз и навсегда разобраться в этом моменте, пока больше похоже на то что ты выдумал себе проблему.
    3. Зачем тут = после return, и почему file_name в кавычках?
    Ответ написан
    2 комментария
  • Как упростить мой торговый скрипт и избавиться от кучи функций?

    AlexNest
    @AlexNest Куратор тега Python
    Работаю с Python/Django
    Как упростить это?

    Добавить в функцию соответствующие аргументы и указывать и при вызове.
    Ответ написан
    2 комментария
  • Не понимаю в чем ошибка, можете помочь?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Не обработан случай, когда в конце строки нет даты.
    Ответ написан
    4 комментария
  • Как связать код Python и GUI на wxPython?

    @dim5x
    ЗИ, ИБ. Помогли? Поблагодарите. Отметьте ответом.
    6717cf333e689297739155.png
    Код
    import wx
    
    class MyFrame(wx.Frame):
        def __init__(self, *args, **kwds):
            kwds["style"] = kwds.get("style", 0) | wx.DEFAULT_FRAME_STYLE
            wx.Frame.__init__(self, *args, **kwds)
            self.SetSize((250, 250))
            self.SetTitle("frame")
    
            sizer_1 = wx.WrapSizer(wx.VERTICAL)
    
            fields = [
                ("Ширина (м)", "a"),
                ("Длина (м)", "b"),
                ("Высота (м)", "h"),
                ("Окно ширина (м)", "o1"),
                ("Окно высота (м)", "o2"),
                ("Дверь ширина (м)", "d1"),
                ("Дверь высота (м)", "d2"),
            ]
    
            # Create grid sizers and controls dynamically
            for label_text, attr in fields:
                grid_sizer = wx.GridSizer(1, 2, 0, 0)
                sizer_1.Add(grid_sizer, 1, wx.EXPAND, 0)
    
                label = wx.StaticText(self, wx.ID_ANY, label_text)
                grid_sizer.Add(label, 0, wx.ALL, 1)
    
                text_ctrl = wx.TextCtrl(self, wx.ID_ANY, "")
                setattr(self, attr, text_ctrl)  # Store the text control in the instance
                grid_sizer.Add(text_ctrl, 0, 0, 0)
    
            # Create a horizontal sizer for the result and button
            h_sizer = wx.BoxSizer(wx.HORIZONTAL)
    
            # Result text control
            self.itogo = wx.TextCtrl(self, wx.ID_ANY, "")
            self.itogo.SetBackgroundColour((171, 171, 171))
            h_sizer.Add(self.itogo, 1, wx.EXPAND | wx.ALL, 5)
    
            # Calculate button
            self.button_1 = wx.Button(self, wx.ID_ANY, "Посчитать", size=(110, 21))
            h_sizer.Add(self.button_1, 0, wx.ALL, 5)
            self.button_1.Bind(wx.EVT_BUTTON, self.onclick)
    
            # Add the horizontal sizer to the main sizer
            sizer_1.Add(h_sizer, 0, wx.EXPAND, 0)
    
            self.SetSizer(sizer_1)
            self.Layout()
    
        def onclick(self, event):
            a = float(self.a.GetValue())
            b = float(self.b.GetValue())
            h = float(self.h.GetValue())
            o1 = float(self.o1.GetValue())
            o2 = float(self.o2.GetValue())
            d1 = float(self.d1.GetValue())
            d2 = float(self.d2.GetValue())
    
            result = round(a * 2 * h + b * 2 * h - o1 * o2 - d1 * d2, 2)
            self.itogo.SetValue(str(result))
    
    class MyApp(wx.App):
        def OnInit(self):
            self.frame = MyFrame(None, wx.ID_ANY, "")
            self.SetTopWindow(self.frame)
            self.frame.Show()
            return True
    
    
    if __name__ == "__main__":
        app = MyApp(0)
        app.MainLoop()
    Ответ написан
    1 комментарий