blob: 70e4b2a6da31d4c70088f6f24a9eb60a21758c47 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
#include "sources.h"
#include <cstdint>
#include <stdexcept>
namespace NIPREG {
const ui32 ML_COEFF_DEFAULT = 50000;
ui32 ML_COEFFICIENT = ML_COEFF_DEFAULT;
void SetCoefficient(ui32 type, ui32 value) {
switch (type) {
case SOURCE_ML:
ML_COEFFICIENT = value;
break;
default:
throw std::runtime_error("unsupported setcoeff-type");
}
}
double GetSourceCoefficient(ui32 type) {
switch (type) {
case SOURCE_MAIL: return 1;
case SOURCE_PHONE: return 3;
case SOURCE_GEO: return 4;
case SOURCE_COUNTRY: return 100;
case SOURCE_DOMAIN_NAME: return 1;
case SOURCE_MANUAL: return 1;
case SOURCE_YANDEX_NETWORK: return 1000; // NB: in yandex_noc source weight := 10K
case SOURCE_SPECIAL_NETWORK: return 1000000;
case SOURCE_PROVIDERS: return 50;
case SOURCE_MAXMIND: return 4;
case SOURCE_UNITED_UID_YANDEX_MAPS: return 0.7;
case SOURCE_RELIABILITY_AROUND: return 1;
case SOURCE_UNITED_UID_WEATHER: return 0.9;
case SOURCE_UNITED_UID_YANDEX_GID: return 1;
case SOURCE_UNITED_UID_SEARCH_QUERY: return 1.5;
case SOURCE_UNITED_UID_SEARCH_IN_REG: return 2;
case SOURCE_BGP_ASPATH_COMMUNITY: return 10;
case SOURCE_ML: return ML_COEFFICIENT;
}
return 0;
}
bool SourceWantApplyDepthCoeff(ui32 source_type) {
switch (source_type) {
case SOURCE_MAIL:
case SOURCE_PHONE:
case SOURCE_GEO:
case SOURCE_COUNTRY:
case SOURCE_DOMAIN_NAME:
return true;
default:
return false;
}
}
bool SourceWantApplyNetsizeCoeff(ui32 source_type) {
return SourceWantApplyDepthCoeff(source_type);
}
bool SourceIsHuman(ui32 source_type) {
switch (source_type) {
case SOURCE_UNITED_UID_SEARCH_QUERY:
case SOURCE_UNITED_UID_SEARCH_IN_REG:
case SOURCE_UNITED_UID_WEATHER:
case SOURCE_UNITED_UID_YANDEX_GID:
case SOURCE_UNITED_UID_YANDEX_MAPS:
return true;
default:
return false;
}
}
bool SourceIsForRegionNormalize(ui32 source_type) {
return SourceIsHuman(source_type);
}
bool SourceIsForEnoughHumanData(ui32 source_type) {
switch (source_type) {
case SOURCE_COUNTRY:
case SOURCE_MANUAL:
case SOURCE_PROVIDERS:
case SOURCE_YANDEX_NETWORK:
case SOURCE_SPECIAL_NETWORK:
return true;
default:
return SourceIsHuman(source_type);
}
}
bool SourceIsForFewHumanData(ui32 source_type) {
return !SourceIsHuman(source_type);
}
bool SourceIsForReliability(ui32 source_type) {
return SourceIsHuman(source_type) || SOURCE_YANDEX_NETWORK == source_type;
}
} // NIPREG
|