Мне было интересно, как можно вычислить поточечную взаимную информацию для классификации текста. Точнее, я хочу классифицировать твиты в категориях. У меня есть набор данных твитов (которые аннотируются), и у меня есть словарь для каждой категории слов, относящихся к этой категории. Учитывая эту информацию, как можно рассчитать PMI для каждой категории на твит, классифицировать твит в одной из этих категорий.
Потенциальная общая информация по тексту
Ответ 1
PMI - это мера связи между функцией (в вашем случае слова) и классом (категорией), а не между документом (твит) и категорией. Формула доступна на Wikipedia:
P(x, y)
pmi(x ,y) = log ------------
P(x)P(y)
В этой формуле X
- это случайная величина, которая моделирует появление слова, а Y
моделирует появление класса. Для данного слова X
и заданного класса Y
вы можете использовать PMI, чтобы решить, является ли функция информативной или нет, и вы можете сделать выбор функции на этой основе. Наличие меньшего количества функций часто улучшает производительность вашего алгоритма классификации и значительно ускоряет его. Шаг классификации, однако, является отдельным - PMI только помогает вам выбрать лучшие функции для подачи в ваш алгоритм обучения.
Изменить: Одна вещь, о которой я не упоминал в оригинальной публикации, заключается в том, что PMI чувствителен к частотам слов. Перепишем формулу как
P(x, y) P(x|y)
pmi(x ,y) = log ------------ = log ------------
P(x)P(y) P(x)
Когда X
и Y
отлично коррелированы, P(x|y) = P(y|x) = 1
, поэтому pmi(x,y) = 1/P(x)
. Менее частые X
-es (слова) будут иметь более высокий показатель PMI, чем частые X
-es, даже если оба они отлично коррелированы с Y
.