Подтвердить что ты не робот

Обработка строк текста для ввода нейронной сети

Я понимаю, что вход ANN должен быть нормализован, стандартизирован и т.д. Оставив в стороне особенности и модели различных ANN, как я могу препроцитировать кодированный текст UTF-8 в диапазоне {0,1} или, альтернативно, между диапазоном {-1,1}, прежде чем он будет дан в качестве входных данных для нейронных сетей? Я искал это в google, но не могу найти никакой информации (я могу использовать неправильный термин).

  • Это имеет смысл?
  • Не так ли, как текст предварительно обрабатывается для нейронных сетей?
  • Есть ли альтернативы?

EDIT 20-ноябрь-2013:

Я уже давно принял правильный ответ Пита. Тем не менее, у меня есть серьезные сомнения, в основном из-за недавних исследований, которые я делал по символическим знаниям и ANN.

Дарио Флореано и Клаудио Маттиусси в своей книге объясняют, что такая обработка действительно возможна, используя распределенное кодирование > .

Действительно, если вы попробуете поиск ученого в Google, существует множество статей и статей о нейробиологии о том, как гипотетически предполагаемое кодирование используется мозгами для кодирования символического знания.

Teuvo Kohonen, в своей статье "Самоорганизующиеся карты" объясняется:

Можно подумать, что применение законов нейронной адаптации к набор символов (рассматриваемый как набор векторных переменных) может создать топографическую карту, которая отображает "логические расстояния" между символы. Однако возникает проблема, лежащая в разных характер символов по сравнению с непрерывными данными. Для последнего, сходство всегда проявляется естественным образом, поскольку метрические различия между их непрерывными кодировками. Это больше не верно для дискретные, символические элементы, такие как слова, для которых не было метрики определены. В самой природе символа имеет смысл диссоциированных от его кодирования.

Однако Кохонену удалось справиться с символической информацией в ЗВОЛХ!

Кроме того, профессор д-р Альфред Ульч в своей статье "Интеграция нейронных сетей с" Обработка символических знаний" имеет дело с тем, как обрабатывать символические знания (такие как текст) в ANN. Ultsch предлагает следующие методологии для обработки символических знаний: нейронное аппроксимативное рассуждение, нейронное объединение, интроспекция и интеграция Приобретение знаний. Хотя небольшая информация может быть найдена на тех, кто в google ученом или где-либо еще в этом отношении.

Пит в своем ответе прав о семантике. Семантика в ANN обычно отключается. Однако, следуя ссылке, дается представление о том, как исследователи использовали RBM, обученные распознавать сходство в семантике различных вводов слов, поэтому не может быть невозможно иметь семантику, но для этого требуется многоуровневый подход или вторичный ANN, если требуется семантика.

Обработка естественного языка с помощью подсимвольных нейронных сетей, Risto Miikkulainen, 1997 г. Обучение ограниченным машинам Больцмана по наблюдению за словами, Г. Э. Дахл, Райан.П.Адамс, Х.Рарочелле, 2012 г.

4b9b3361

Ответ 1

Я продолжу и обобщу наше обсуждение в качестве ответа здесь.

Ваша цель - включить текст в вашу нейронную сеть. Мы установили, что традиционные ANN не подходят для анализа текста. Основополагающее объяснение того, почему это так, основано на идее, что ANN работают на входах, которые обычно представляют собой непрерывный диапазон значений, а близость двух значений для ввода означает некоторую близость по своему значению. У слов нет такой идеи близости, и поэтому нет реального численного кодирования слов, которые могут иметь смысл в качестве входных данных для ANN.

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

Ответ 2

В ответ на ваши комментарии нет, ваша предлагаемая схема не имеет смысла. Вывод искусственного нейрона по своей природе представляет собой непрерывное или, по меньшей мере, двоичное значение. Не имеет смысла отображать между огромным дискретным перечислением (например, символы UTF-8) и непрерывным диапазоном, представленным значением с плавающей запятой. ANN обязательно будет действовать как 0.1243573, это очень хорошее приближение к 0.1243577, когда эти числа могут быть легко сопоставлены с символом новой строки и символом "a", например, что не будет хорошим приближением друг к другу вообще.

Совершенно откровенно, нет разумного представления для "общей строки Unicode" в качестве входных данных для ANN. Разумное представление зависит от специфики того, что вы делаете. Это зависит от ваших ответов на следующие вопросы:

  • Ожидаете ли вы слова во входных строках в отличие от блоков символов? Какие слова вы ожидаете увидеть в строках?
  • Каково распределение длины входных строк?
  • Какова ожидаемая энтропия входных строк?
  • Есть ли какие-либо знания о домене, которые вы знаете о том, что вы ожидаете от строк?

и, самое главное,

  • Что вы пытаетесь сделать с ANN. Это не то, что вы можете игнорировать.

Возможно, у вас может быть установка, для которой нет перевода, который фактически позволит вам делать то, что вы хотите, с нейронной сетью. Пока вы не ответите на эти вопросы (вы обходите вокруг них в своих комментариях выше), невозможно дать хороший ответ.

Я могу привести пример ответа, который сработает, если вам удастся дать определенные ответы на вышеупомянутые вопросы. Например, если вы читаете строки с произвольной длиной, но составлены из небольшого словарного запаса слов, разделенных пробелами, тогда я бы предложил схему перевода, в которой вы делаете N входов, по одному для каждого слова в словаре и используете повторяющиеся нейронные сеть для подачи слов по одному, установив соответствующий вход в 1, а все остальные - на 0.

Ответ 3

Я думаю, что было бы интересно прокормить текст (закодированный на уровне персонажа) в сеть глубоких убеждений, чтобы узнать, какие свойства языка он может обнаружить.

Недавно была проведена большая работа по моделированию нейронных сетей (в основном на уровне слов, но также и на уровне персонажа).

Смотрите эти ссылки для получения дополнительной информации

http://www.stanford.edu/group/pdplab/pdphandbook/handbookch8.html http://code.google.com/p/word2vec/

Векторы слов закодированы путем обучения на большом корпусе статей в википедии и т.д. и были способны получить семантические и синтаксические функции, что позволяет определять "расстояние" между ними "

"Недавно было показано, что векторы векторов захватывают многие языковые закономерности, например вектор векторных операций (" король ") - вектор (" человек ") + вектор (" женщина ") близок к вектору (" королева ")"

Также см. эту замечательную исследовательскую работу Илья Суцквель на создании случайных персонажей, которые демонстрируют особенности английского языка после обучения в википедии. Удивительный материал!

http://www.cs.toronto.edu/~ilya/pubs/2011/LANG-RNN.pdf http://www.cs.toronto.edu/~ilya/rnn.html (текстовое демоверсия текстового текста - очень круто!)

Ответ 4

Не совсем ясно, что вы пытаетесь сделать, но я думаю, что это в некотором смысле связано с тем, что люди называют "естественным языком". Об этом много ссылок... Я не эксперт, но я знаю, например, что есть интересные ссылки О'Рейли.

С точки зрения NN существует множество различных моделей NN. Я думаю, вы имеете в виду самый популярный, известный как многослойный персептрон с каким-то алгоритмом backpropagation, но есть много моделей ассоциативной памяти, которые могут быть более подходящими для вашего случая. Очень хорошая рекомендация об этом - книга Симона Хайкина.

Однако, если бы я попытался сделать что-то подобное, я начал бы пытаться понять, как частота букв, слогов и слов возникает вместе на английском языке (?).

Я надеюсь, что помог. Как я уже говорил, я не специалист в этой области.

Ответ 5

Решение 1: A = Alt (65) = 65 Bin = 01000001

Решение 2: Добавьте слова в базу данных словарей и добавьте поле id (int). Преобразуйте поле id в двоичный файл.

В NN используйте буквы или слова id (в двоичном формате)