IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным. В описании темы указываем язык!!!

> Энтропия сообщения, С++ Builder
18192123
сообщение 21.02.2009 12:16
Сообщение #1


Профи
****

Группа: Пользователи
Сообщений: 920
Пол: Женский
Реальное имя: Марина

Репутация: -  2  +


Требуется определить энтропию сообщения при условии независимости символов и при условии попарной зависимости символов..
Что касается 1-го случая -
H = -сумма (i=1,m)pi * log pi, логарифм берётся по основанию два, а pi - вероятность появления i-го символа..
Здесь проблем не возникает...нахождение вероятности не вызывает трудностей..
Во 2-м случае:
H = -1/2*сумма (i) сумма(j) pij * log pij, pij - вероятность появления пары символов. И как раз с этой вероятностью pij проблемка - не пойму, как её получить..


struct str
{
char symbol; // очередной символ алфавита
unsigned int count; // частота появления
float probability; // вероятность
};
typedef str STR;
STR Alph[n];
int amount=0; //кол-во всех символов в сообщении

.....

i=0;
while (Alph[i].count)
{
Alph[i].probability=(float)(Alph[i].count)/(amount); //нашли вероятность pi
i++;
}

......
//и дальше вычисляем энтропию на основе pi
float entropy(int i)
{
float Hp=(float)((-1)*Alph[i].probability*((log10(Alph[i].probability))/(log10(2))));
return Hp;
}

.......

void __fastcall TFormTIPiS1::BitBtnHpClick(TObject *Sender)
{
float HpAll=0;
int i=0;
while (Alph[i].count)
{
HpAll+=entropy(i);
i++;
}

}




Объясните пожалуйста, а что нужно делать, чтобы найти вероятность pij (при условии попарной зависимости символов)?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 21.02.2009 14:38
Сообщение #2


Гость






Цитата
а что нужно делать, чтобы найти вероятность pij (при условии попарной зависимости символов)?
Собирать статистику, насколько часто в языке, на котором написано сообщение, встречаются те или иные двухбуквенные сочетания. Для русского языка может быть полезной вот это: Новый частотный словарь русской лексики (приведены количества встреченных сочетаний двух букв... Те сочетания, которые не были встречены, отсутствуют: их вероятность = 0. Собственно вероятности можно получить если делить число совпадений для каждого двухбуквенного сочетания на общую сумму всех совпадений...). Для других языков - надо искать (или составлять самостоятельно) другие частотные словари...
 К началу страницы 
+ Ответить 
18192123
сообщение 21.02.2009 14:47
Сообщение #3


Профи
****

Группа: Пользователи
Сообщений: 920
Пол: Женский
Реальное имя: Марина

Репутация: -  2  +


Цитата(volvo @ 21.02.2009 14:38) *

Собирать статистику, насколько часто в языке, на котором написано сообщение, встречаются те или иные двухбуквенные сочетания. Для других языков - надо искать (или составлять самостоятельно) другие частотные словари...

У меня сообщения на голландском..
И что будет значить составлять самостоятельно частотный словарь (составить всё возможные пары, проверить какие из них и по сколько раз встречаются в сообщении, и тогда, чтобы получить вероятность, количество конкретной пары поделить на общее количество возможных пар)?

Сообщение отредактировано: 18192123 - 21.02.2009 15:06
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 21.02.2009 16:20
Сообщение #4


Гость






Цитата(18192123 @ 21.02.2009 13:47) *
(составить всё возможные пары, проверить какие из них и по сколько раз встречаются в сообщении, и тогда, чтобы получить вероятность, количество конкретной пары поделить на общее количество возможных пар)?
Нет... У тебя не сообщение, которое само по себе, а сообщение на голландском языке Значит, тебе надо будет взять несколько объемных текстов на этом языке, и проанализировать вероятность, с которой в текстах встречаются все двухбуквенные комбинации... Чем объёмнее тексты (и чем их больше), тем ближе к истине будет такой словарь... Можно попробовать найти частотные словари для голландского языка...
 К началу страницы 
+ Ответить 
18192123
сообщение 21.02.2009 16:40
Сообщение #5


Профи
****

Группа: Пользователи
Сообщений: 920
Пол: Женский
Реальное имя: Марина

Репутация: -  2  +


Цитата(volvo @ 21.02.2009 16:20) *

Нет... У тебя не сообщение, которое само по себе, а сообщение на голландском языке Значит, тебе надо будет взять несколько объемных текстов на этом языке, и проанализировать вероятность, с которой в текстах встречаются все двухбуквенные комбинации... Чем объёмнее тексты (и чем их больше), тем ближе к истине будет такой словарь... Можно попробовать найти частотные словари для голландского языка...

А если не все комбинации встретятся? Такое может быть?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 3:19
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"