Я проектирую метрику для измерения, когда поисковый термин «неоднозначен». Оценка близка к единице означает, что она неоднозначна («Аякс» может быть языком программирования, чистящим решением, греческим героем, европейским футбольным клубом и т. Д.), А оценка близка к нулю означает, что довольно ясно, что пользователь («Леди Гага», вероятно, означает только одно). Часть этой метрики состоит в том, что у меня есть список возможных интерпретаций и частота этих интерпретаций из прошлых данных, и мне нужно превратить это в число от 0 до 1.Предложения по проектированию метрики
Например: можно сказать, что термин " Кошки "- миллион испытаний в 850 000 раз, когда пользователь имел в виду пушистую вещь, которая мяукает, в 80 000 раз они означали мюзикл под этим именем, а остальные - сокращения для вещей, каждый из которых означал тривиальное число раз. Я бы сказал, что это должно иметь низкий показатель двусмысленности, потому что, хотя существует несколько возможных значений, один из них был, безусловно, предпочтительным. В противоположность этому, можно сказать, что термин «Друзья» - миллион испытаний в 500 000 раз, когда пользователь имел в виду людей, с которыми они все время болтаются, в 450 000 раз они означали телешоу под этим именем, а остальное - другое значение , Это должно получить более высокую оценку неоднозначности, поскольку различные значения были намного ближе по частоте.
TLDR: Если я сортирую массив в порядке убывания, мне нужен способ взять массивы, которые быстро сбрасываются на числа, близкие к нулю, и массивы, которые падают медленнее, чем числа, близкие к одному. Если массив был [1,0,0,0 ...], он должен получить идеальный балл 0, и если он был [1/n, 1/n, 1/n ...], это должно получиться отличным счетом 1. Какие-нибудь предложения?
Спасибо за этот отличный ответ – hackartist
Две вещи при ближайшем рассмотрении, я бы просто не использовал H (x), а не 1.0-H (x), поскольку из примеров, которые вы показываете H (X) = -log (1) = 0,0 - случай, когда нет двусмысленности, и H (X) = - (0.33 * log3 (0.33) + 0.33 * log3 (0.33) + 0.33 * log3 (0.33)) = 1.0 - это случай, когда неоднозначность очень высока, а во-вторых, как вы знаете, что, используя другую базу в журнале, вы всегда можете получить число меньше 1? – hackartist