В последнее время меня интересует классификация текста и языковая классификация, основанная на статье Кавнара и Тренкля "N-Gram-based Text Категоризация", а также на других связанных источниках.
Для классификации языков я нашел этот метод очень надежным и полезным. Размер документов, используемых для создания частотных профилей N-грамм, довольно не важен, поскольку они «достаточно длинные», поскольку я просто использую самые распространенные n N-грамм из документов.
С другой стороны, хорошо функционирующая классификация текста ускользает от меня. Я пробовал как с моими собственными реализациями различных вариантов алгоритмов под рукой, так и без различных настроек, таких как взвешивание idf и реализации других людей. Это работает довольно хорошо, пока я могу генерировать частотные профили примерно одинакового размера для справочных документов категории, но в тот момент, когда они начинают слишком сильно различаться, все разваливается, и категория с самым коротким профилем заканчивается непропорционально количество документов, присвоенных ему.
Теперь мой вопрос. Каков предпочтительный метод компенсации этого эффекта? Это, очевидно, происходит потому, что алгоритм предполагает максимальное расстояние для любой данной N-граммы, равное длине частотного профиля категории, но по какой-то причине я просто не могу понять, как это исправить. Одна из причин, по которой меня интересует это исправление, заключается в том, что я пытаюсь автоматизировать создание профилей категорий на основе документов с известной категорией, длина которых может варьироваться (и даже если они имеют одинаковую длину, профили могут оказаться разной длины). Есть ли в этом "лучшее решение"?