Ответы пользователя по тегу Обработка естественного языка
  • Как сравнивать два текста и находить между ними сходство средствами python?

    Maksim_64
    @Maksim_64
    Data Analyst
    а как сравнить заготовленный заранее текст с тем, что мы только что получили, чтобы выполнить последующие действия?

    А ты уверен, что тебе нужно сравнение двух текстов? Выглядит как на вход текст за тем он его сопоставит с определенным действием. То есть задача на классификацию с текстом, то есть у тебя есть набор действий labels (1,..n) и есть разный текст который нужно классифицировать в одну из групп, ну и затем просто выполнить код (действия) который наступает в случае (1,..n). Tensorflow + keras гуглить text classification, там есть все что нужно, основная возня будет закодировать при чем именно входные данные, сам target там one-hot-encoding и он там из коробки есть. В общем это довольно обычная задача, полно туториалов.

    Если же речь идет именно о сравнении двух текстов, то тут все на много сложнее. Во первых тут нужно определить критерий их "похожести", определить способы кодировки, в остальном принцип будет метрика "дистанция" там обычно начинают с cosine similarity. Библиотеки как scikit-learn так tensorflow+kears ну и конечно же NLTK для этого используют. Возни будет больше в разы по этому посмотри а не можешь ли ты сгруппировать то есть пользователь вводит текст и нужно его сопоставить (1,..n).

    Что бы разобраться конкретно какие вопросы перед тобой станут, как кодировать, какие виды похожести (similarity), рекомендую вот этот большой гайд, https://www.newscatcherapi.com/blog/ultimate-guide.... Ну а делал бы я лично все это дело на tensorflow+keras.
    Ответ написан
    1 комментарий
  • Как сделать чат-бот на основе ИИ, обученный на собственной базе знаний?

    Maksim_64
    @Maksim_64
    Data Analyst
    Есть ощущение, что вы ожидаете очень сложного ответа, а ответ очень прост. Нет никакой математики в этой задаче, так же нету в этой задаче и архитектуры нейронных сетей. Есть лишь только работа с API, что оно предоставляет, таковы и возможности. Если бы мне нужно было решать такую задачу, я бы открывал статьи на medium (открывается с vpn) и естественно смотрел бы в стороны платных статей и от них бы отталкивался, потому что там множество пошаговых гайдов высокого качества для создания чат-ботов на базе GPT ( предполагаю вы свободно владеете английским).
    Ответ написан
    2 комментария
  • Как нейросети обрабатывают текстовую информацию?

    Maksim_64
    @Maksim_64
    Data Analyst
    Вы правы каждое слово кодируется. Существует огромное количество методов кодирования для NLP (Natural Language Processing). Основной метод кодирования это представления слова в виде вектора где самая важная часть (что делает NLP возможным) при создании такого вектора слова которые используются в схожих контекстах имеют схожее но не одинаковое векторное представление. Векторная схожесть может быть подсчитана разными способами ну например Евклидово расстояние. В таком случае например вы будете иметь уникальный вектор для каждого слова где вектора с близкими Евклидовыми расстояниями будут означать слова которые используются в схожих контекстах. Что касается формата данных которые получит нейронная сеть, то каждый вектор трансформируется где каждое число трансформируется в число 0 до 1. Существует опять таки несколько техник. самая простая формула (x - min(X)) /(max(X) - min(X)), где x это каждый элемент вектора, ну и соответственно min(X) - минимальный элемент вектора max(X) максимальный элемент вектора. подобная трансформация применяется к каждому элементу каждого вектора. Это примитивный пример, для понимания идеи. Данный вопрос глубокий различные техники кодирования могут быть очень сложны и существуют не мало разных подходов для решения подобных задач. Что касается двоичного входа для нейронных сетей то ответ нет. Нейронные сети могут в том числе получать двоичные значения, но не ограничены этим, также они могут получать дискретные (целые) или числа с плавающей запятой.
    Ответ написан
    Комментировать