#algorithm #text #nlp #n-gram
#алгоритм #текст #nlp #n-граммовая
Вопрос:
В последнее время я возился с категоризацией текста и языковой классификацией на основе статьи Кавнара и Тренкла «N-граммовая категоризация текста», а также других связанных источников.
Для выполнения классификации языков я нашел этот метод очень надежным и полезным. Размер документов, используемых для генерации N-граммовых частотных профилей, довольно неважен, пока они «достаточно длинные», поскольку я просто использую наиболее распространенные n N-граммовые профили из документов.
С другой стороны, хорошо функционирующая категоризация текста ускользает от меня. Я пробовал использовать как свои собственные реализации различных вариантов имеющихся алгоритмов, так и без различных настроек, таких как взвешивание idf и реализации других пользователей. Это работает довольно хорошо, пока я могу генерировать частотные профили примерно одинакового размера для справочных документов категории, но в тот момент, когда они начинают слишком сильно отличаться, все это разваливается, и категория с самым коротким профилем в конечном итоге получает непропорционально большое количество документов, присвоенных ей.
Теперь мой вопрос таков. Какой предпочтительный метод компенсации этого эффекта? Очевидно, это происходит потому, что алгоритм предполагает максимальное расстояние для любого заданного N-грамма, равное длине частотного профиля категории, но по какой-то причине я просто не могу понять, как это исправить. Одна из причин, по которой я заинтересован в этом исправлении, на самом деле заключается в том, что я пытаюсь автоматизировать генерацию профилей категорий на основе документов с известной категорией, которые могут различаться по длине (и даже если они одинаковой длины, профили могут в конечном итоге иметь разную длину). Существует ли решение «наилучшей практики» для этого?
Ответ №1:
Если вам все еще интересно, и если предположить, что я правильно понял ваш вопрос, ответом на вашу проблему было бы нормализовать ваши частоты n-граммовой.
Самый простой способ сделать это для каждого документа — подсчитать общую частоту всех n грамм в вашем документе и разделить каждую отдельную частоту n грамм на это число. Результатом является то, что каждое взвешивание частоты в n граммов теперь относится к проценту от общего содержимого документа, независимо от общей длины.
Использование этих процентных соотношений в ваших показателях расстояния уменьшит размер документов и вместо этого сосредоточится на фактическом составе их содержимого.
Возможно, также стоит отметить, что представление на n граммах составляет лишь очень малую часть всего решения по категоризации. Вы могли бы также рассмотреть возможность использования уменьшения размеров, разных показателей взвешивания индекса и, очевидно, разных алгоритмов классификации.
Смотрите здесь пример использования n-граммовой классификации текста
Ответ №2:
Насколько я знаю, задача состоит в том, чтобы подсчитать вероятность генерации некоторого текста языковой моделью M.
Недавно я работал над измерением читаемости текстов, используя семантические, синтаксические и лексические свойства. Это также может быть измерено с помощью подхода языковой модели.
Для правильного ответа вам следует рассмотреть эти вопросы:
Используете ли вы подход логарифмического правдоподобия?
Какие уровни N-граммовой классификации вы используете? униграммы, диграммы или более высокий уровень?
Насколько велики языковые корпуса, которые вы используете?
Используя только диграммы и униграммы, мне удалось классифицировать некоторые документы с хорошими результатами. Если ваша классификация слабая, подумайте о создании большего языкового корпуса или использовании n-граммовых файлов более низких уровней.
Также помните, что отнесение некоторого текста к недопустимой категории может быть ошибкой в зависимости от длины текста (случайно в других языковых моделях появляется несколько слов).
Просто подумайте о том, чтобы увеличить объем ваших языковых корпусов, и знайте, что при анализе коротких текстов выше вероятность неправильной классификации
Комментарии:
1. Я не уверен, одобряю ли я все эти языковые каркасы, висящие повсюду. Я полагаю, что слово, которое вы ищете, — это «корпус» (форма множественного числа «корпуса»).