Недавно я начал работать с онтологиями и использую Protege для создания онтологии, которую я также хотел бы использовать для автоматической классификации строк. Следующее иллюстрирует очень простую иерархию классов:
String
|_ AlphabeticString
|_ CountryName
|_ CityName
|_ AlphaNumericString
|_ PrefixedNumericString
|_ NumericString
В конечном итоге строки, такие как Spain
, должны быть классифицированы как CountryName
или UE4564
, будут иметь префикс с префиксомNumericString
.
Однако я не знаю, как смоделировать это знание. Должен ли я сначала определить, является ли символ буквенным, числовым и т. Д., А затем построить слово из существующих символов или есть способ использовать Regexes? До сих пор мне удавалось классифицировать строки только на основе точной фразы, такой как String и значение hasString "UE4565"
.
Или было бы лучше сохранить regex для каждого класса в онтологии, а затем классифицировать строку в Java, используя эти regexes?