Skip to content

Commit cf7ed05

Browse files
committed
Дорабатываем расчёт рейтинга
1 parent d500d2b commit cf7ed05

File tree

3 files changed

+51
-12
lines changed

3 files changed

+51
-12
lines changed

ChangeLog.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# [Change Log](https://github.com/anyks/asc/archive/release.tar.gz)
22

3+
## [1.1.7](https://github.com/anyks/asc/archive/v1.1.7.tar.gz) Bug fixes
4+
35
## [1.1.6](https://github.com/anyks/asc/archive/v1.1.6.tar.gz) Bug fixes
46

57
## [1.1.5](https://github.com/anyks/asc/archive/v1.1.5.tar.gz) Bug fixes

app/asc.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
// Название языковой модели
1010
#define ANYKS_ASC_NAME "asc"
1111
// Версия приложения
12-
#define ANYKS_ASC_VERSION "1.1.6"
12+
#define ANYKS_ASC_VERSION "1.1.7"
1313
// Версия словаря
1414
#define ANYKS_ASC_DICT_VERSION "1.0.1"
1515
// Автор приложения

src/dumper.cpp

Lines changed: 48 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,8 @@ const pair <size_t, const anyks::Dumper::awrd_t *> anyks::Dumper::best() const n
169169
if(it != this->sequence.end()){
170170
// Сбрасываем буфер
171171
var1 = {};
172+
// Сбрасываем второй рейтинг
173+
var2.buffer.reset();
172174
// Получаем последовательность
173175
seq = const_cast <vector <size_t> *> (&it->second);
174176
// Получаем количество слов в списке
@@ -192,12 +194,17 @@ const pair <size_t, const anyks::Dumper::awrd_t *> anyks::Dumper::best() const n
192194
// Если вес слов больше предыдущего
193195
if(item.second.wltf >= var2.wltf){
194196
// Снимаем рейтинг предыдущего варианта
195-
if(item.second.wltf > var2.wltf) var2.buffer.reset(0);
196-
// Запоминаем вес слов
197-
var1.wltf = item.second.wltf;
197+
if(item.second.wltf > var2.wltf)
198+
// Устанавливаем рейтинг текущего варианта
199+
var2.buffer.reset(0);
200+
// Устанавливаем также рейтинг предыдущего варианта
201+
else var2.buffer.set(0);
198202
// Устанавливаем значение рейтинга
199203
var1.buffer.set(0);
200-
}
204+
// Запоминаем вес слов
205+
var1.wltf = item.second.wltf;
206+
// Устанавливаем рейтинг предыдущего варианта
207+
} else var2.buffer.set(0);
201208
// Учитываем коэффициенты, только если они переданы переданы
202209
if((item.second.lev != 0) && (item.second.tmo != 0.0)){
203210
// Если значение Танимото больше предыдущего
@@ -208,12 +215,19 @@ const pair <size_t, const anyks::Dumper::awrd_t *> anyks::Dumper::best() const n
208215
var2.buffer.reset(1);
209216
// Запоминаем вес слов
210217
var1.wltf = item.second.wltf;
218+
// Запоминаем предыдущее значение рейтинга слова
219+
} else {
220+
// Устанавливаем также рейтинг предыдущего варианта
221+
var2.buffer.set(1);
222+
// Запоминаем предыдущее значение рейтинга слова
223+
var1.wltf = var2.wltf;
211224
}
212225
// Устанавливаем значение рейтинга
213226
var1.buffer.set(1);
214227
// Запоминаем значение Танимото
215228
var1.tmo = item.second.tmo;
216-
}
229+
// Устанавливаем рейтинг предыдущего варианта
230+
} else var2.buffer.set(1);
217231
}
218232
// Если - это одиночное слово
219233
} else {
@@ -222,12 +236,17 @@ const pair <size_t, const anyks::Dumper::awrd_t *> anyks::Dumper::best() const n
222236
// Если значение Танимото больше предыдущего
223237
if(item.second.tmo >= var2.tmo){
224238
// Снимаем рейтинг предыдущего варианта
225-
if(item.second.tmo > var2.tmo) var2.buffer.reset(0);
239+
if(item.second.tmo > var2.tmo)
240+
// Устанавливаем рейтинг текущего варианта
241+
var2.buffer.reset(0);
242+
// Устанавливаем также рейтинг предыдущего варианта
243+
else var2.buffer.set(0);
226244
// Устанавливаем значение рейтинга
227245
var1.buffer.set(0);
228246
// Запоминаем значение Танимото
229247
var1.tmo = item.second.tmo;
230-
}
248+
// Устанавливаем рейтинг предыдущего варианта
249+
} else var2.buffer.set(0);
231250
}
232251
// Если вес слов больше предыдущего
233252
if(item.second.wltf >= var2.wltf){
@@ -237,12 +256,19 @@ const pair <size_t, const anyks::Dumper::awrd_t *> anyks::Dumper::best() const n
237256
var2.buffer.reset(1);
238257
// Запоминаем значение Танимото
239258
var1.tmo = item.second.tmo;
259+
// Запоминаем предыдущее значение Танимото
260+
} else {
261+
// Устанавливаем также рейтинг предыдущего варианта
262+
var2.buffer.set(1);
263+
// Устанавливаем предыдущее значение Танимота
264+
var1.tmo = var2.tmo;
240265
}
241266
// Устанавливаем значение рейтинга
242267
var1.buffer.set(1);
243268
// Запоминаем вес слов
244269
var1.wltf = item.second.wltf;
245-
}
270+
// Устанавливаем рейтинг предыдущего варианта
271+
} else var2.buffer.set(1);
246272
}
247273
// Учитываем коэффициенты, только если они переданы переданы
248274
if((item.second.lev != 0) && (item.second.tmo != 0.0)){
@@ -256,12 +282,21 @@ const pair <size_t, const anyks::Dumper::awrd_t *> anyks::Dumper::best() const n
256282
var1.tmo = item.second.tmo;
257283
// Запоминаем вес слов
258284
var1.wltf = item.second.wltf;
285+
// Если расстояние Левенштейна такое-же
286+
} else {
287+
// Устанавливаем также рейтинг предыдущего варианта
288+
var2.buffer.set(2);
289+
// Запоминаем предыдущее значение Танимото
290+
var1.tmo = var2.tmo;
291+
// Запоминаем предыдущий рейтинг слова
292+
var1.wltf = var2.wltf;
259293
}
260294
// Устанавливаем значение рейтинга
261295
var1.buffer.set(2);
262296
// Запоминаем дистанцию Левенштейна
263297
var1.lev = item.second.lev;
264-
}
298+
// Устанавливаем рейтинг предыдущего варианта
299+
} else var2.buffer.set(2);
265300
}
266301
// Если последовательность существует
267302
if(exist && !onewrd){
@@ -311,10 +346,12 @@ const pair <size_t, const anyks::Dumper::awrd_t *> anyks::Dumper::best() const n
311346
logprob = var2.logprob;
312347
// Запоминаем частоту последовательности
313348
var1.logprob = ppl.logprob;
314-
}
349+
// Устанавливаем также рейтинг предыдущего варианта
350+
} else var2.buffer.set(3);
315351
// Устанавливаем значение рейтинга
316352
var1.buffer.set(3);
317-
}
353+
// Устанавливаем рейтинг предыдущего варианта
354+
} else var2.buffer.set(3);
318355
// Если частоты, псевдо-одинаковые, выполняем коррекцию
319356
if(((max(var1.logprob, logprob) - min(var1.logprob, logprob)) < 0.09) && mode1 && mode2){
320357
// Запоминаем значение второго буфера

0 commit comments

Comments
 (0)