Skip to content

Commit

Permalink
Дорабатываем расчёт рейтинга
Browse files Browse the repository at this point in the history
  • Loading branch information
anyks committed Sep 16, 2020
1 parent d500d2b commit cf7ed05
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 12 deletions.
2 changes: 2 additions & 0 deletions ChangeLog.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# [Change Log](https://github.com/anyks/asc/archive/release.tar.gz)

## [1.1.7](https://github.com/anyks/asc/archive/v1.1.7.tar.gz) Bug fixes

## [1.1.6](https://github.com/anyks/asc/archive/v1.1.6.tar.gz) Bug fixes

## [1.1.5](https://github.com/anyks/asc/archive/v1.1.5.tar.gz) Bug fixes
Expand Down
2 changes: 1 addition & 1 deletion app/asc.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
// Название языковой модели
#define ANYKS_ASC_NAME "asc"
// Версия приложения
#define ANYKS_ASC_VERSION "1.1.6"
#define ANYKS_ASC_VERSION "1.1.7"
// Версия словаря
#define ANYKS_ASC_DICT_VERSION "1.0.1"
// Автор приложения
Expand Down
59 changes: 48 additions & 11 deletions src/dumper.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,8 @@ const pair <size_t, const anyks::Dumper::awrd_t *> anyks::Dumper::best() const n
if(it != this->sequence.end()){
// Сбрасываем буфер
var1 = {};
// Сбрасываем второй рейтинг
var2.buffer.reset();
// Получаем последовательность
seq = const_cast <vector <size_t> *> (&it->second);
// Получаем количество слов в списке
Expand All @@ -192,12 +194,17 @@ const pair <size_t, const anyks::Dumper::awrd_t *> anyks::Dumper::best() const n
// Если вес слов больше предыдущего
if(item.second.wltf >= var2.wltf){
// Снимаем рейтинг предыдущего варианта
if(item.second.wltf > var2.wltf) var2.buffer.reset(0);
// Запоминаем вес слов
var1.wltf = item.second.wltf;
if(item.second.wltf > var2.wltf)
// Устанавливаем рейтинг текущего варианта
var2.buffer.reset(0);
// Устанавливаем также рейтинг предыдущего варианта
else var2.buffer.set(0);
// Устанавливаем значение рейтинга
var1.buffer.set(0);
}
// Запоминаем вес слов
var1.wltf = item.second.wltf;
// Устанавливаем рейтинг предыдущего варианта
} else var2.buffer.set(0);
// Учитываем коэффициенты, только если они переданы переданы
if((item.second.lev != 0) && (item.second.tmo != 0.0)){
// Если значение Танимото больше предыдущего
Expand All @@ -208,12 +215,19 @@ const pair <size_t, const anyks::Dumper::awrd_t *> anyks::Dumper::best() const n
var2.buffer.reset(1);
// Запоминаем вес слов
var1.wltf = item.second.wltf;
// Запоминаем предыдущее значение рейтинга слова
} else {
// Устанавливаем также рейтинг предыдущего варианта
var2.buffer.set(1);
// Запоминаем предыдущее значение рейтинга слова
var1.wltf = var2.wltf;
}
// Устанавливаем значение рейтинга
var1.buffer.set(1);
// Запоминаем значение Танимото
var1.tmo = item.second.tmo;
}
// Устанавливаем рейтинг предыдущего варианта
} else var2.buffer.set(1);
}
// Если - это одиночное слово
} else {
Expand All @@ -222,12 +236,17 @@ const pair <size_t, const anyks::Dumper::awrd_t *> anyks::Dumper::best() const n
// Если значение Танимото больше предыдущего
if(item.second.tmo >= var2.tmo){
// Снимаем рейтинг предыдущего варианта
if(item.second.tmo > var2.tmo) var2.buffer.reset(0);
if(item.second.tmo > var2.tmo)
// Устанавливаем рейтинг текущего варианта
var2.buffer.reset(0);
// Устанавливаем также рейтинг предыдущего варианта
else var2.buffer.set(0);
// Устанавливаем значение рейтинга
var1.buffer.set(0);
// Запоминаем значение Танимото
var1.tmo = item.second.tmo;
}
// Устанавливаем рейтинг предыдущего варианта
} else var2.buffer.set(0);
}
// Если вес слов больше предыдущего
if(item.second.wltf >= var2.wltf){
Expand All @@ -237,12 +256,19 @@ const pair <size_t, const anyks::Dumper::awrd_t *> anyks::Dumper::best() const n
var2.buffer.reset(1);
// Запоминаем значение Танимото
var1.tmo = item.second.tmo;
// Запоминаем предыдущее значение Танимото
} else {
// Устанавливаем также рейтинг предыдущего варианта
var2.buffer.set(1);
// Устанавливаем предыдущее значение Танимота
var1.tmo = var2.tmo;
}
// Устанавливаем значение рейтинга
var1.buffer.set(1);
// Запоминаем вес слов
var1.wltf = item.second.wltf;
}
// Устанавливаем рейтинг предыдущего варианта
} else var2.buffer.set(1);
}
// Учитываем коэффициенты, только если они переданы переданы
if((item.second.lev != 0) && (item.second.tmo != 0.0)){
Expand All @@ -256,12 +282,21 @@ const pair <size_t, const anyks::Dumper::awrd_t *> anyks::Dumper::best() const n
var1.tmo = item.second.tmo;
// Запоминаем вес слов
var1.wltf = item.second.wltf;
// Если расстояние Левенштейна такое-же
} else {
// Устанавливаем также рейтинг предыдущего варианта
var2.buffer.set(2);
// Запоминаем предыдущее значение Танимото
var1.tmo = var2.tmo;
// Запоминаем предыдущий рейтинг слова
var1.wltf = var2.wltf;
}
// Устанавливаем значение рейтинга
var1.buffer.set(2);
// Запоминаем дистанцию Левенштейна
var1.lev = item.second.lev;
}
// Устанавливаем рейтинг предыдущего варианта
} else var2.buffer.set(2);
}
// Если последовательность существует
if(exist && !onewrd){
Expand Down Expand Up @@ -311,10 +346,12 @@ const pair <size_t, const anyks::Dumper::awrd_t *> anyks::Dumper::best() const n
logprob = var2.logprob;
// Запоминаем частоту последовательности
var1.logprob = ppl.logprob;
}
// Устанавливаем также рейтинг предыдущего варианта
} else var2.buffer.set(3);
// Устанавливаем значение рейтинга
var1.buffer.set(3);
}
// Устанавливаем рейтинг предыдущего варианта
} else var2.buffer.set(3);
// Если частоты, псевдо-одинаковые, выполняем коррекцию
if(((max(var1.logprob, logprob) - min(var1.logprob, logprob)) < 0.09) && mode1 && mode2){
// Запоминаем значение второго буфера
Expand Down

0 comments on commit cf7ed05

Please sign in to comment.