Алгоритм машинного обучения, такой как искусственная нейронная сеть, не кажется здесь лучшим решением. ANN могут использоваться для классификации нескольких классов (т. Е. «Какой из предоставленных предварительно обученных классов представляет вход?», А не «представляет ли вход X?»), Что соответствует вашему варианту использования. Проблема заключается в том, что они являются контролируемыми методами обучения, и поэтому вам необходимо предоставить список пар ключевых слов и классов (разделов), охватывающий все возможные входные данные, которые будут предоставлены вашими пользователями. Это невозможно, и на практике ANN проходят переподготовку, когда доступно больше данных для получения лучших результатов и создания более точной границы принятия решений / представления функции, которая отображает входные данные в выходные данные. Это также предполагает, что вы знаете все возможные классы до того, как начнете, и каждый из этих классов имеет вводимые вами значения обучения.
Проблема заключается в том, что входные данные для вашего ANN (список символов или числовой хэш строки) не предоставляют контекста для классификации. Нет информации более высокого уровня, которая описывает значение слова. Это означает, что другое слово, которое хэширует численно близкое значение, может быть неправильно классифицировано, если было недостаточно обучающих данных.
(Как сказал Маклема, выход из ANN всегда будет плавающим, при этом каждое значение представляет близость к классу - или классу с уровнем неопределенности.)
Лучшим решением было бы использовать какой-либо граф отношений слов или синонимов. * * * * * * * * * * * * * * * * * * * * * * * * Могла бы быть здесь полезной моделью «1007 *».
Редактировать: В свете вашего комментария, что вы не знаете разделы заранее,
простое решение для программирования - предоставить список ключевых слов в файле, который обновляется по мере того, как люди используют программу. Простое сохранение сопоставления предоставленных комментариев -> разделов, которые у вас уже будут в вашей базе данных, позволит вам отфильтровать не ключевые слова (и, или,, ...). Один из вариантов заключается в том, чтобы затем найти список каждого раздела, к которому относятся введенные ключевые слова, и предложить несколько разделов, и позволить пользователю выбрать один. Отзывы, полученные при выборе пользователя, позволят улучшить предложения в будущем. Другой способ состоит в том, чтобы вычислить байесовскую вероятность - вероятность того, что это слово принадлежит разделу X с учетом предыдущих сохраненных отображений - для всех ключевых слов и разделов и либо взять модальный раздел, либо нормализовать по каждому уникальному ключевому слову и взять имею в виду. Расчеты вероятностей необходимо будет обновлять по мере сбора дополнительной информации о курсе, возможно, это можно сделать при каждом новом добавлении в фоновом потоке.