Я использую меру объединения потоковой взаимной информации (PMI), чтобы рассчитать, как часто слова соединяются, используя частоты слов, полученные из большого корпуса.Взаимная информация: пример вычисления (Java) в стиле таблицы непредвиденных обстоятельств
Я расчет PMI по классическим формулам
log(P(X,Y)/(P(X)*P(Y))
и используя таблицу сопряженности обозначения с складочными и предельными частотами, которые я нашел на http://collocations.de/AM/index.html
Результатов я получаю очень похож, но не тоже самое. Насколько я понял, оба метода должны приводить к точному такому же результату. Я сделал небольшую Java-программу (минимальный рабочий пример), в которой используются слова-частоты из корпуса с использованием обеих формул. Я получаю разные результаты для двух методов. Кто-нибудь знает, почему?
public class MutualInformation
{
public static void main(String[] args)
{
long N = 1024908267229L;
// mutual information = log(P(X,Y)/P(X) * P(Y))
double XandY = (double) 1210738/N;
double X = (double) 67360790/N;
double Y = (double) 1871676/N;
System.out.println(Math.log(XandY/(X * Y))/Math.log(10));
System.out.println("------");
// contingency table notation as on www.collocations.de
long o11 = 1210738;
long o12 = 67360790;
long o21 = 1871676;
long c1 = o11 + o21;
long r1 = o11 + o12;
double e11 = ((double) r1 * c1/N);
double frac = (double) o11/e11;
System.out.println(Math.log(frac)/Math.log(10));
}
}
Что вы подразумеваете под 'очень похожим, но не тем же? BTW Я мог бы написать' e11 = r1 * c1/(double) N; гидроразрыва = О11/e11, и 'Y = 1871676,0/N' –
я получаю эти результаты: +3,9930973261888347 ------ 3,768700373995412 похожи, но не то же самое – toobee