@ramiil
Насколько я знаю, нейросети обычно имеют двоичный вход, т.е. каждый входной нейрон может принимать значение (0;1).
Вопрос: как представить слово для обработки нейросетью? Передавать ей код символа побитно?
Отмечу, что вопрос не практический(я не занимаюсь разработкой нейросетей для какого-либо серьёзного применения), а учебный, по сему прошу воздержаться от ответов «возьми модуль nn_text_processing, он сам всё сделает». Спасибо
Решения вопроса 0
Ответы на вопрос 6
@sergiks
[ 1, 0, 0, 0, 0 ] Как
[ 0, 1, 0, 0, 0 ] нейросети
[ 0, 0, 1, 0, 0 ] обрабатывают
[ 0, 0, 0, 1, 0 ] текстовую
[ 0, 0, 0, 0, 1 ] информацию
Далее возможны преобразования слов в многомерные векторы так, что слова со сходными смыслами оказываются рядом. Или вектор от «кошка» к «котёнок» оказывается параллелен и той же длины, что от «собака» к «щенок». Это называется «word embedding». Один из способов их построения называется «Word2Vec».
@Maksim_64
(x - min(X)) /(max(X) - min(X))
, где x это каждый элемент вектора, ну и соответственно min(X) — минимальный элемент вектора max(X) максимальный элемент вектора. подобная трансформация применяется к каждому элементу каждого вектора. Это примитивный пример, для понимания идеи. Данный вопрос глубокий различные техники кодирования могут быть очень сложны и существуют не мало разных подходов для решения подобных задач. Что касается двоичного входа для нейронных сетей то ответ нет. Нейронные сети могут в том числе получать двоичные значения, но не ограничены этим, также они могут получать дискретные (целые) или числа с плавающей запятой.
@mayton2019
со словами. Она их просто не знает. Но она работает с входами и выходами вещественного типа.
Какую дать ИНТЕРПРЕТАЦИЮ входу и выходу — задача разработчика НС. Можем входом считать
букву. Можем фонему или слог. Можем — слово. Или лемматизированное слово. Или целую фразу
или фрагмент AST. Или целый абзац текста. Все зависит от задачи.
В последние 10 лет НС сильно рванули вперед. В особенности в части архитектур. Благо мощности догнали. Например свёрточные сети. Которые узнают картинки. Им надо просто большое число параллельно работающих ядер, которые разбирают на слои одну и ту-же картинку. Скорее всего мощности догнали и сети обработки
естесвтенного языка.
По поводу обработки языка, что у нас есть. У нас есть как минимум ChatGPT. У нас есть Co-Pilot.
Надо почитать что о них пишут сами разработчики. Из каких частей и из каких архитектур они построены.
Там будет элемент ноу-хау. Иначе они-бы так громко не выстрелили.
@AgentSmith
Существуют нейросети, которые способны определять, к какой части речи относится слово, выделять морфемы и определять словоформы.
Эта задача давно уже решена и для неё не нужны нейросети. Это как из пушки стрелять по воробьям
@AlexSku
Для слов сейчас применяют трансформеры.
@Vindicar
На базе текстов, подобных тем, которые планируется обрабатывать, строится автоэнкодер. Как обычно в автоэнкодерах, его первая половина учится «сжимать» входные данные (в нашем случае кодированный текст), а вторая половина учится их «распаковывать» обратно. При этом «несжатые» данные — это последовательность входов, а «сжатые» — статический вектор контекста, который некоторым (не обязательно известным нам) способом кодирует «смысл». Контроль успешности кодирования проверяется последующей «распаковкой» — на выходе автоэнкодера должна получиться та же самая последовательность, которая была на входе.
Когда научились «сжимать» текст в вектор, этот вектор можно обрабатывать другими методами машинного обучения. Например, решать задачи классификации, регрессии и т.п.
Тогда при обработке неизвестного текста он кодируется (например, производится лемматизация — устраняются грамматические числа, падежи и т.п.), прогоняется через первую половину автоэнкодера, а полученный вектор контекста подаётся на вход сети, которая и заточена под решение нашей задачи.
Но ЕМНИП, это один из ранних подходов. Сейчас есть более продвинутые вещи, я просто о них в не курсе.