Подход, который может быть уместным здесь, особенно если онтология велика / сложна или может измениться в будущем, и при условии, что некоторые ошибки допустимы, это машинное обучение .
Схема процесса, использующего этот подход, может быть такой:
- Определите набор функций, который вы можете извлечь из каждой строки, относящейся к вашей онтологии (некоторые примеры ниже).
- Collect a "набор "строк" и их истинно соответствующих категорий.
- Извлечение признаков из каждой строки и обучение некоторому алгоритму машинного обучения на этих данных.
- Использование обученной модели для классификации новых строк.
- Возобновите или обновите вашу модель какнеобходимо (например, при добавлении новых категорий).
Чтобы проиллюстрировать более конкретно, вот несколько предложений, основанных на вашем примере онтологии.
Некоторые логические функции, которые могут быть применимы:строка соответствует регулярному выражению (например, те, которые Qtax предлагает);существует ли строка в заранее созданном списке известных названий городов;существует ли он в списке известных стран;наличие заглавных букв;длина строки (не булево) и т. д.
Итак, если, например, у вас есть всего 8 функций: соответствует 4 регулярным выражениям, упомянутым выше;и дополнительные 4, предложенные здесь, тогда «Испания» будет представлена как (1,1,0,0,1,0,1,5) (соответствует первым 2 регулярным выражениям, но не двум последним, это название города, ноне название страны, заглавная буква и длина 5).
Этот набор функций будет представлять любую заданную строку.
для обучения и тестирования алгоритма машинного обучения, вы можете использовать ВЕКА .Я бы начал с алгоритмов, основанных на правилах или деревьях, например PART, RIDOR, JRIP или J48.
Затем обученные модели можно использовать через Weka либо из Java, либо как внешнюю командную строку.
Очевидно, что функции, которые я предлагаю, почти соответствуют соотношению 1: 1 с вашей онтологией, но если учесть, что ваша таксономия больше и сложнее, этот подход, вероятно, будет одним из лучших с точки зрения экономической эффективности.