Автоматическое связывание категорий друг с другом при категоризации текста - PullRequest
2 голосов
/ 18 августа 2011

Я работал над проектом по извлечению большого количества коротких текстов и распределению их по категориям на основе уже существующего большого списка названий категорий. Для этого мне пришлось выяснить, как сначала создать хороший текстовый корпус из данных, чтобы иметь справочные документы для категоризации, а затем повысить качество категоризации до приемлемого уровня. Эта часть, с которой я закончил (к счастью, классификация текста - это то, что многие люди провели много исследований).

Теперь моя следующая проблема, я пытаюсь найти хороший способ связать различные категории друг с другом в вычислительном отношении. То есть выяснить, как распознать, что «автомобили» и «шевроле» связаны между собой. До сих пор я пытался использовать методы категоризации N-Gram, описанные, среди прочего, Cavnar и Trenkle для сравнения различных справочных документов, которые я создал для каждой категории. К сожалению, мне кажется, что лучшее, что я смог извлечь из этого метода, это примерно 50-55% правильных отношений между категориями, и это лучшие отношения, в целом это примерно 30-35%, что крайне плохо.

Я также попробовал несколько других подходов, но мне не удалось получить релевантные ссылки на более чем 40% (примером несоответствующего отношения может быть категория "грузовики", тесно связанная с категория «макияж» или категория «подгузники», хотя слабо (или не совсем) относятся к «шеви»).

Теперь я попытался найти лучшие методы для этого, но мне кажется, что я не могу найти ни одного (хотя я знаю, что другие добились большего успеха, чем я). У кого-нибудь есть опыт с этим? Какие-нибудь подсказки относительно полезных методов для создания отношений между категориями? Прямо сейчас методы, которые я попробовал, либо не дают достаточно отношений вообще, либо содержат слишком высокий процент нежелательных отношений.

1 Ответ

0 голосов
/ 19 сентября 2011

Очевидно, что наилучший способ сопоставления во многом зависит от вашей таксономии, характера ваших "справочных документов" и ожидаемых отношений, которые вы хотели бы создать.

Однако, исходя из предоставленной информации, я бы предложил следующее:

  1. Начните с создания словесной (а не буквенной) униграммы или биграммы для каждой из ваших категорий на основе справочных документов. Если их мало для каждой категории (кажется, что у вас может быть только одна), вы можете использовать подход под наблюдением и добавить также автоматически классифицированные документы для каждой категории. Относительно простым инструментом для построения модели может быть набор инструментов CMU SLM .
  2. Рассчитайте взаимную информацию (информационную строку) каждого термина или фразы в вашей модели по отношению к другим категориям. если ваши категории похожи, вам может потребоваться использовать только соседние категории, чтобы получить значимый результат. Этот шаг даст лучшие разделительные термины более высокие оценки.
  3. Соотнесите категории друг с другом на основе самых популярных терминов или фраз. Это можно сделать либо с помощью евклидова или косинусного расстояния между моделями категорий, либо с помощью несколько более сложных методов, таких как алгоритмы на основе графов или иерархическая кластеризация.
...