Ответ 1
Это выглядит как довольно простая задача классификации на основе ключевых слов. Поскольку вы используете Java, хорошие пакеты для рассмотрения будут Classifier4J, Weka, или Lucene Mahout,
Classifier4J
Classifier4J поддерживает классификацию с использованием наивных байесов и векторное пространство.
Как показано в этом фрагменте кода при обучении и подсчете с использованием его наивного классификатора Байеса, пакет разумно легко использовать. Он также распространяется под лицензией Apache Software License.
Weka
Weka - очень популярный инструмент для интеллектуального анализа данных. Преимущество использования этого заключается в том, что вы сможете легко экспериментировать с использованием многочисленных различных моделей машинного обучения, чтобы классифицировать книги по темам, включая наивный Байес, деревья решений, поддерживающие векторные машины, k-ближайший сосед, логистическая регрессия и даже установленный на основе набора правил.
Вы найдете руководство по использованию Weka для категоризации текста здесь.
Weka, однако, распространяется под GPL. Вы не сможете использовать его для программного обеспечения с закрытым исходным кодом, которое вы хотите распространять. Но вы все равно можете использовать его для поддержки веб-службы.
Lucene Mahout
Mahout предназначен для машинного обучения на очень больших наборах данных. Он построен поверх Apache Hadoop и поддерживает контролируемую классификацию с использованием наивных байесов.
Вы найдете учебное пособие, посвященное использованию Mahout для классификации текста здесь.
Подобно Classifier4J, Mahout распространяется под лицензией Apache Software License.