нейронные сети понимают только числа, да еще и нормированные на интервале
boolean это два значения 0 и 1 (условно можно выбрать любые другие значения, это без разницы)
а вот строки это вопрос вида признака - если это значение из справочника то если их можно как то отсортировать по признаку (например большой, средний, маленький) то их можно заменить на одно значение на интервале (в моем примере 1,0.5,0), но если нет то это вектор значений 0 или 1 с единичкой только в нужном элементе (кстати ничто не мешает использовать сложные комбинации, когда одна строка устанавливает значение сразу в нескольких элементах в векторе, например если строка составная - 'синий кролик' нужно установить 1 в элементы соответственно цвету синий, типу животное и кролику (может еще какие), плюс можно давать разные значения как вес значимости признака, например кролик это не только животное но и немного еда и чуть чуть развлечение)
Да 0 для нейронной сети очень удобное значение отсутствия признака (кстати ничто не мешает для перевернуть значения и сделать 1 - признаком отсутствия а 0 - присутствия, нейронная сеть все переварит, правда могут быть алгоритмы ее оптимизации которые этого не поймут)