@euconform/core 1.0.1 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +6 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/inference/ollama-client.d.ts +1 -0
- package/dist/inference/ollama-client.d.ts.map +1 -1
- package/dist/inference/ollama-client.js +15 -5
- package/dist/legal-checks/annex-iv-report.d.ts +3 -0
- package/dist/legal-checks/annex-iv-report.d.ts.map +1 -1
- package/dist/legal-checks/annex-iv-report.js +1 -0
- package/dist/legal-checks/deadline-timeline.d.ts +57 -0
- package/dist/legal-checks/deadline-timeline.d.ts.map +1 -0
- package/dist/legal-checks/deadline-timeline.js +265 -0
- package/dist/legal-checks/gap-analysis.d.ts +48 -0
- package/dist/legal-checks/gap-analysis.d.ts.map +1 -0
- package/dist/legal-checks/gap-analysis.js +397 -0
- package/dist/legal-checks/gpai-classifier.d.ts +49 -0
- package/dist/legal-checks/gpai-classifier.d.ts.map +1 -0
- package/dist/legal-checks/gpai-classifier.js +197 -0
- package/dist/legal-checks/index.d.ts +6 -0
- package/dist/legal-checks/index.d.ts.map +1 -1
- package/dist/legal-checks/index.js +3 -0
- package/package.json +1 -1
- package/src/index.ts +25 -0
- package/src/inference/ollama-client.ts +21 -5
- package/src/legal-checks/annex-iv-report.ts +4 -0
- package/src/legal-checks/deadline-timeline.ts +313 -0
- package/src/legal-checks/gap-analysis.ts +454 -0
- package/src/legal-checks/gpai-classifier.ts +281 -0
- package/src/legal-checks/index.ts +33 -0
- package/tests/gpai-classifier.test.ts +125 -0
- package/tests/gpai-timeline.test.ts +55 -0
- package/.turbo/turbo-check-types.log +0 -4
- package/.turbo/turbo-test.log +0 -364
- package/coverage/base.css +0 -224
- package/coverage/block-navigation.js +0 -87
- package/coverage/clover.xml +0 -3282
- package/coverage/coverage-final.json +0 -20
- package/coverage/favicon.png +0 -0
- package/coverage/index.html +0 -161
- package/coverage/prettify.css +0 -1
- package/coverage/prettify.js +0 -2
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +0 -210
- package/coverage/src/fairness-metrics.ts.html +0 -1579
- package/coverage/src/index.html +0 -161
- package/coverage/src/index.ts.html +0 -535
- package/coverage/src/inference/browser-inference.ts.html +0 -859
- package/coverage/src/inference/capability-detection.ts.html +0 -2227
- package/coverage/src/inference/index.html +0 -176
- package/coverage/src/inference/index.ts.html +0 -553
- package/coverage/src/inference/inference-factory.ts.html +0 -751
- package/coverage/src/inference/ollama-client.ts.html +0 -1627
- package/coverage/src/legal-checks/annex-iv-report.ts.html +0 -556
- package/coverage/src/legal-checks/bias-metrics.ts.html +0 -1855
- package/coverage/src/legal-checks/data-governance.ts.html +0 -529
- package/coverage/src/legal-checks/human-oversight-logging.ts.html +0 -490
- package/coverage/src/legal-checks/index.html +0 -206
- package/coverage/src/legal-checks/index.ts.html +0 -250
- package/coverage/src/legal-checks/risk-classifier.ts.html +0 -940
- package/coverage/src/legal-checks/robustness-transparency.ts.html +0 -571
- package/coverage/src/metrics/crows-pairs-bias.ts.html +0 -820
- package/coverage/src/metrics/index.html +0 -146
- package/coverage/src/metrics/index.ts.html +0 -151
- package/coverage/src/metrics/stereotype-bias.ts.html +0 -886
- package/coverage/src/risk-engine.ts.html +0 -1660
- package/coverage/src/types.ts.html +0 -547
- package/dist/legal-checks/disclaimer.d.ts +0 -2
- package/dist/legal-checks/disclaimer.d.ts.map +0 -1
- package/dist/legal-checks/disclaimer.js +0 -1
|
@@ -1,886 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
<!doctype html>
|
|
3
|
-
<html lang="en">
|
|
4
|
-
|
|
5
|
-
<head>
|
|
6
|
-
<title>Code coverage report for src/metrics/stereotype-bias.ts</title>
|
|
7
|
-
<meta charset="utf-8" />
|
|
8
|
-
<link rel="stylesheet" href="../../prettify.css" />
|
|
9
|
-
<link rel="stylesheet" href="../../base.css" />
|
|
10
|
-
<link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
|
|
11
|
-
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
12
|
-
<style type='text/css'>
|
|
13
|
-
.coverage-summary .sorter {
|
|
14
|
-
background-image: url(../../sort-arrow-sprite.png);
|
|
15
|
-
}
|
|
16
|
-
</style>
|
|
17
|
-
</head>
|
|
18
|
-
|
|
19
|
-
<body>
|
|
20
|
-
<div class='wrapper'>
|
|
21
|
-
<div class='pad1'>
|
|
22
|
-
<h1><a href="../../index.html">All files</a> / <a href="index.html">src/metrics</a> stereotype-bias.ts</h1>
|
|
23
|
-
<div class='clearfix'>
|
|
24
|
-
|
|
25
|
-
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">0.75% </span>
|
|
27
|
-
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>1/132</span>
|
|
29
|
-
</div>
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">100% </span>
|
|
34
|
-
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>0/0</span>
|
|
36
|
-
</div>
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">0% </span>
|
|
41
|
-
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>0/4</span>
|
|
43
|
-
</div>
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">0.75% </span>
|
|
48
|
-
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>1/132</span>
|
|
50
|
-
</div>
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
</div>
|
|
54
|
-
<p class="quiet">
|
|
55
|
-
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
|
|
56
|
-
</p>
|
|
57
|
-
<template id="filterTemplate">
|
|
58
|
-
<div class="quiet">
|
|
59
|
-
Filter:
|
|
60
|
-
<input type="search" id="fileSearch">
|
|
61
|
-
</div>
|
|
62
|
-
</template>
|
|
63
|
-
</div>
|
|
64
|
-
<div class='status-line low'></div>
|
|
65
|
-
<pre><table class="coverage">
|
|
66
|
-
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
67
|
-
<a name='L2'></a><a href='#L2'>2</a>
|
|
68
|
-
<a name='L3'></a><a href='#L3'>3</a>
|
|
69
|
-
<a name='L4'></a><a href='#L4'>4</a>
|
|
70
|
-
<a name='L5'></a><a href='#L5'>5</a>
|
|
71
|
-
<a name='L6'></a><a href='#L6'>6</a>
|
|
72
|
-
<a name='L7'></a><a href='#L7'>7</a>
|
|
73
|
-
<a name='L8'></a><a href='#L8'>8</a>
|
|
74
|
-
<a name='L9'></a><a href='#L9'>9</a>
|
|
75
|
-
<a name='L10'></a><a href='#L10'>10</a>
|
|
76
|
-
<a name='L11'></a><a href='#L11'>11</a>
|
|
77
|
-
<a name='L12'></a><a href='#L12'>12</a>
|
|
78
|
-
<a name='L13'></a><a href='#L13'>13</a>
|
|
79
|
-
<a name='L14'></a><a href='#L14'>14</a>
|
|
80
|
-
<a name='L15'></a><a href='#L15'>15</a>
|
|
81
|
-
<a name='L16'></a><a href='#L16'>16</a>
|
|
82
|
-
<a name='L17'></a><a href='#L17'>17</a>
|
|
83
|
-
<a name='L18'></a><a href='#L18'>18</a>
|
|
84
|
-
<a name='L19'></a><a href='#L19'>19</a>
|
|
85
|
-
<a name='L20'></a><a href='#L20'>20</a>
|
|
86
|
-
<a name='L21'></a><a href='#L21'>21</a>
|
|
87
|
-
<a name='L22'></a><a href='#L22'>22</a>
|
|
88
|
-
<a name='L23'></a><a href='#L23'>23</a>
|
|
89
|
-
<a name='L24'></a><a href='#L24'>24</a>
|
|
90
|
-
<a name='L25'></a><a href='#L25'>25</a>
|
|
91
|
-
<a name='L26'></a><a href='#L26'>26</a>
|
|
92
|
-
<a name='L27'></a><a href='#L27'>27</a>
|
|
93
|
-
<a name='L28'></a><a href='#L28'>28</a>
|
|
94
|
-
<a name='L29'></a><a href='#L29'>29</a>
|
|
95
|
-
<a name='L30'></a><a href='#L30'>30</a>
|
|
96
|
-
<a name='L31'></a><a href='#L31'>31</a>
|
|
97
|
-
<a name='L32'></a><a href='#L32'>32</a>
|
|
98
|
-
<a name='L33'></a><a href='#L33'>33</a>
|
|
99
|
-
<a name='L34'></a><a href='#L34'>34</a>
|
|
100
|
-
<a name='L35'></a><a href='#L35'>35</a>
|
|
101
|
-
<a name='L36'></a><a href='#L36'>36</a>
|
|
102
|
-
<a name='L37'></a><a href='#L37'>37</a>
|
|
103
|
-
<a name='L38'></a><a href='#L38'>38</a>
|
|
104
|
-
<a name='L39'></a><a href='#L39'>39</a>
|
|
105
|
-
<a name='L40'></a><a href='#L40'>40</a>
|
|
106
|
-
<a name='L41'></a><a href='#L41'>41</a>
|
|
107
|
-
<a name='L42'></a><a href='#L42'>42</a>
|
|
108
|
-
<a name='L43'></a><a href='#L43'>43</a>
|
|
109
|
-
<a name='L44'></a><a href='#L44'>44</a>
|
|
110
|
-
<a name='L45'></a><a href='#L45'>45</a>
|
|
111
|
-
<a name='L46'></a><a href='#L46'>46</a>
|
|
112
|
-
<a name='L47'></a><a href='#L47'>47</a>
|
|
113
|
-
<a name='L48'></a><a href='#L48'>48</a>
|
|
114
|
-
<a name='L49'></a><a href='#L49'>49</a>
|
|
115
|
-
<a name='L50'></a><a href='#L50'>50</a>
|
|
116
|
-
<a name='L51'></a><a href='#L51'>51</a>
|
|
117
|
-
<a name='L52'></a><a href='#L52'>52</a>
|
|
118
|
-
<a name='L53'></a><a href='#L53'>53</a>
|
|
119
|
-
<a name='L54'></a><a href='#L54'>54</a>
|
|
120
|
-
<a name='L55'></a><a href='#L55'>55</a>
|
|
121
|
-
<a name='L56'></a><a href='#L56'>56</a>
|
|
122
|
-
<a name='L57'></a><a href='#L57'>57</a>
|
|
123
|
-
<a name='L58'></a><a href='#L58'>58</a>
|
|
124
|
-
<a name='L59'></a><a href='#L59'>59</a>
|
|
125
|
-
<a name='L60'></a><a href='#L60'>60</a>
|
|
126
|
-
<a name='L61'></a><a href='#L61'>61</a>
|
|
127
|
-
<a name='L62'></a><a href='#L62'>62</a>
|
|
128
|
-
<a name='L63'></a><a href='#L63'>63</a>
|
|
129
|
-
<a name='L64'></a><a href='#L64'>64</a>
|
|
130
|
-
<a name='L65'></a><a href='#L65'>65</a>
|
|
131
|
-
<a name='L66'></a><a href='#L66'>66</a>
|
|
132
|
-
<a name='L67'></a><a href='#L67'>67</a>
|
|
133
|
-
<a name='L68'></a><a href='#L68'>68</a>
|
|
134
|
-
<a name='L69'></a><a href='#L69'>69</a>
|
|
135
|
-
<a name='L70'></a><a href='#L70'>70</a>
|
|
136
|
-
<a name='L71'></a><a href='#L71'>71</a>
|
|
137
|
-
<a name='L72'></a><a href='#L72'>72</a>
|
|
138
|
-
<a name='L73'></a><a href='#L73'>73</a>
|
|
139
|
-
<a name='L74'></a><a href='#L74'>74</a>
|
|
140
|
-
<a name='L75'></a><a href='#L75'>75</a>
|
|
141
|
-
<a name='L76'></a><a href='#L76'>76</a>
|
|
142
|
-
<a name='L77'></a><a href='#L77'>77</a>
|
|
143
|
-
<a name='L78'></a><a href='#L78'>78</a>
|
|
144
|
-
<a name='L79'></a><a href='#L79'>79</a>
|
|
145
|
-
<a name='L80'></a><a href='#L80'>80</a>
|
|
146
|
-
<a name='L81'></a><a href='#L81'>81</a>
|
|
147
|
-
<a name='L82'></a><a href='#L82'>82</a>
|
|
148
|
-
<a name='L83'></a><a href='#L83'>83</a>
|
|
149
|
-
<a name='L84'></a><a href='#L84'>84</a>
|
|
150
|
-
<a name='L85'></a><a href='#L85'>85</a>
|
|
151
|
-
<a name='L86'></a><a href='#L86'>86</a>
|
|
152
|
-
<a name='L87'></a><a href='#L87'>87</a>
|
|
153
|
-
<a name='L88'></a><a href='#L88'>88</a>
|
|
154
|
-
<a name='L89'></a><a href='#L89'>89</a>
|
|
155
|
-
<a name='L90'></a><a href='#L90'>90</a>
|
|
156
|
-
<a name='L91'></a><a href='#L91'>91</a>
|
|
157
|
-
<a name='L92'></a><a href='#L92'>92</a>
|
|
158
|
-
<a name='L93'></a><a href='#L93'>93</a>
|
|
159
|
-
<a name='L94'></a><a href='#L94'>94</a>
|
|
160
|
-
<a name='L95'></a><a href='#L95'>95</a>
|
|
161
|
-
<a name='L96'></a><a href='#L96'>96</a>
|
|
162
|
-
<a name='L97'></a><a href='#L97'>97</a>
|
|
163
|
-
<a name='L98'></a><a href='#L98'>98</a>
|
|
164
|
-
<a name='L99'></a><a href='#L99'>99</a>
|
|
165
|
-
<a name='L100'></a><a href='#L100'>100</a>
|
|
166
|
-
<a name='L101'></a><a href='#L101'>101</a>
|
|
167
|
-
<a name='L102'></a><a href='#L102'>102</a>
|
|
168
|
-
<a name='L103'></a><a href='#L103'>103</a>
|
|
169
|
-
<a name='L104'></a><a href='#L104'>104</a>
|
|
170
|
-
<a name='L105'></a><a href='#L105'>105</a>
|
|
171
|
-
<a name='L106'></a><a href='#L106'>106</a>
|
|
172
|
-
<a name='L107'></a><a href='#L107'>107</a>
|
|
173
|
-
<a name='L108'></a><a href='#L108'>108</a>
|
|
174
|
-
<a name='L109'></a><a href='#L109'>109</a>
|
|
175
|
-
<a name='L110'></a><a href='#L110'>110</a>
|
|
176
|
-
<a name='L111'></a><a href='#L111'>111</a>
|
|
177
|
-
<a name='L112'></a><a href='#L112'>112</a>
|
|
178
|
-
<a name='L113'></a><a href='#L113'>113</a>
|
|
179
|
-
<a name='L114'></a><a href='#L114'>114</a>
|
|
180
|
-
<a name='L115'></a><a href='#L115'>115</a>
|
|
181
|
-
<a name='L116'></a><a href='#L116'>116</a>
|
|
182
|
-
<a name='L117'></a><a href='#L117'>117</a>
|
|
183
|
-
<a name='L118'></a><a href='#L118'>118</a>
|
|
184
|
-
<a name='L119'></a><a href='#L119'>119</a>
|
|
185
|
-
<a name='L120'></a><a href='#L120'>120</a>
|
|
186
|
-
<a name='L121'></a><a href='#L121'>121</a>
|
|
187
|
-
<a name='L122'></a><a href='#L122'>122</a>
|
|
188
|
-
<a name='L123'></a><a href='#L123'>123</a>
|
|
189
|
-
<a name='L124'></a><a href='#L124'>124</a>
|
|
190
|
-
<a name='L125'></a><a href='#L125'>125</a>
|
|
191
|
-
<a name='L126'></a><a href='#L126'>126</a>
|
|
192
|
-
<a name='L127'></a><a href='#L127'>127</a>
|
|
193
|
-
<a name='L128'></a><a href='#L128'>128</a>
|
|
194
|
-
<a name='L129'></a><a href='#L129'>129</a>
|
|
195
|
-
<a name='L130'></a><a href='#L130'>130</a>
|
|
196
|
-
<a name='L131'></a><a href='#L131'>131</a>
|
|
197
|
-
<a name='L132'></a><a href='#L132'>132</a>
|
|
198
|
-
<a name='L133'></a><a href='#L133'>133</a>
|
|
199
|
-
<a name='L134'></a><a href='#L134'>134</a>
|
|
200
|
-
<a name='L135'></a><a href='#L135'>135</a>
|
|
201
|
-
<a name='L136'></a><a href='#L136'>136</a>
|
|
202
|
-
<a name='L137'></a><a href='#L137'>137</a>
|
|
203
|
-
<a name='L138'></a><a href='#L138'>138</a>
|
|
204
|
-
<a name='L139'></a><a href='#L139'>139</a>
|
|
205
|
-
<a name='L140'></a><a href='#L140'>140</a>
|
|
206
|
-
<a name='L141'></a><a href='#L141'>141</a>
|
|
207
|
-
<a name='L142'></a><a href='#L142'>142</a>
|
|
208
|
-
<a name='L143'></a><a href='#L143'>143</a>
|
|
209
|
-
<a name='L144'></a><a href='#L144'>144</a>
|
|
210
|
-
<a name='L145'></a><a href='#L145'>145</a>
|
|
211
|
-
<a name='L146'></a><a href='#L146'>146</a>
|
|
212
|
-
<a name='L147'></a><a href='#L147'>147</a>
|
|
213
|
-
<a name='L148'></a><a href='#L148'>148</a>
|
|
214
|
-
<a name='L149'></a><a href='#L149'>149</a>
|
|
215
|
-
<a name='L150'></a><a href='#L150'>150</a>
|
|
216
|
-
<a name='L151'></a><a href='#L151'>151</a>
|
|
217
|
-
<a name='L152'></a><a href='#L152'>152</a>
|
|
218
|
-
<a name='L153'></a><a href='#L153'>153</a>
|
|
219
|
-
<a name='L154'></a><a href='#L154'>154</a>
|
|
220
|
-
<a name='L155'></a><a href='#L155'>155</a>
|
|
221
|
-
<a name='L156'></a><a href='#L156'>156</a>
|
|
222
|
-
<a name='L157'></a><a href='#L157'>157</a>
|
|
223
|
-
<a name='L158'></a><a href='#L158'>158</a>
|
|
224
|
-
<a name='L159'></a><a href='#L159'>159</a>
|
|
225
|
-
<a name='L160'></a><a href='#L160'>160</a>
|
|
226
|
-
<a name='L161'></a><a href='#L161'>161</a>
|
|
227
|
-
<a name='L162'></a><a href='#L162'>162</a>
|
|
228
|
-
<a name='L163'></a><a href='#L163'>163</a>
|
|
229
|
-
<a name='L164'></a><a href='#L164'>164</a>
|
|
230
|
-
<a name='L165'></a><a href='#L165'>165</a>
|
|
231
|
-
<a name='L166'></a><a href='#L166'>166</a>
|
|
232
|
-
<a name='L167'></a><a href='#L167'>167</a>
|
|
233
|
-
<a name='L168'></a><a href='#L168'>168</a>
|
|
234
|
-
<a name='L169'></a><a href='#L169'>169</a>
|
|
235
|
-
<a name='L170'></a><a href='#L170'>170</a>
|
|
236
|
-
<a name='L171'></a><a href='#L171'>171</a>
|
|
237
|
-
<a name='L172'></a><a href='#L172'>172</a>
|
|
238
|
-
<a name='L173'></a><a href='#L173'>173</a>
|
|
239
|
-
<a name='L174'></a><a href='#L174'>174</a>
|
|
240
|
-
<a name='L175'></a><a href='#L175'>175</a>
|
|
241
|
-
<a name='L176'></a><a href='#L176'>176</a>
|
|
242
|
-
<a name='L177'></a><a href='#L177'>177</a>
|
|
243
|
-
<a name='L178'></a><a href='#L178'>178</a>
|
|
244
|
-
<a name='L179'></a><a href='#L179'>179</a>
|
|
245
|
-
<a name='L180'></a><a href='#L180'>180</a>
|
|
246
|
-
<a name='L181'></a><a href='#L181'>181</a>
|
|
247
|
-
<a name='L182'></a><a href='#L182'>182</a>
|
|
248
|
-
<a name='L183'></a><a href='#L183'>183</a>
|
|
249
|
-
<a name='L184'></a><a href='#L184'>184</a>
|
|
250
|
-
<a name='L185'></a><a href='#L185'>185</a>
|
|
251
|
-
<a name='L186'></a><a href='#L186'>186</a>
|
|
252
|
-
<a name='L187'></a><a href='#L187'>187</a>
|
|
253
|
-
<a name='L188'></a><a href='#L188'>188</a>
|
|
254
|
-
<a name='L189'></a><a href='#L189'>189</a>
|
|
255
|
-
<a name='L190'></a><a href='#L190'>190</a>
|
|
256
|
-
<a name='L191'></a><a href='#L191'>191</a>
|
|
257
|
-
<a name='L192'></a><a href='#L192'>192</a>
|
|
258
|
-
<a name='L193'></a><a href='#L193'>193</a>
|
|
259
|
-
<a name='L194'></a><a href='#L194'>194</a>
|
|
260
|
-
<a name='L195'></a><a href='#L195'>195</a>
|
|
261
|
-
<a name='L196'></a><a href='#L196'>196</a>
|
|
262
|
-
<a name='L197'></a><a href='#L197'>197</a>
|
|
263
|
-
<a name='L198'></a><a href='#L198'>198</a>
|
|
264
|
-
<a name='L199'></a><a href='#L199'>199</a>
|
|
265
|
-
<a name='L200'></a><a href='#L200'>200</a>
|
|
266
|
-
<a name='L201'></a><a href='#L201'>201</a>
|
|
267
|
-
<a name='L202'></a><a href='#L202'>202</a>
|
|
268
|
-
<a name='L203'></a><a href='#L203'>203</a>
|
|
269
|
-
<a name='L204'></a><a href='#L204'>204</a>
|
|
270
|
-
<a name='L205'></a><a href='#L205'>205</a>
|
|
271
|
-
<a name='L206'></a><a href='#L206'>206</a>
|
|
272
|
-
<a name='L207'></a><a href='#L207'>207</a>
|
|
273
|
-
<a name='L208'></a><a href='#L208'>208</a>
|
|
274
|
-
<a name='L209'></a><a href='#L209'>209</a>
|
|
275
|
-
<a name='L210'></a><a href='#L210'>210</a>
|
|
276
|
-
<a name='L211'></a><a href='#L211'>211</a>
|
|
277
|
-
<a name='L212'></a><a href='#L212'>212</a>
|
|
278
|
-
<a name='L213'></a><a href='#L213'>213</a>
|
|
279
|
-
<a name='L214'></a><a href='#L214'>214</a>
|
|
280
|
-
<a name='L215'></a><a href='#L215'>215</a>
|
|
281
|
-
<a name='L216'></a><a href='#L216'>216</a>
|
|
282
|
-
<a name='L217'></a><a href='#L217'>217</a>
|
|
283
|
-
<a name='L218'></a><a href='#L218'>218</a>
|
|
284
|
-
<a name='L219'></a><a href='#L219'>219</a>
|
|
285
|
-
<a name='L220'></a><a href='#L220'>220</a>
|
|
286
|
-
<a name='L221'></a><a href='#L221'>221</a>
|
|
287
|
-
<a name='L222'></a><a href='#L222'>222</a>
|
|
288
|
-
<a name='L223'></a><a href='#L223'>223</a>
|
|
289
|
-
<a name='L224'></a><a href='#L224'>224</a>
|
|
290
|
-
<a name='L225'></a><a href='#L225'>225</a>
|
|
291
|
-
<a name='L226'></a><a href='#L226'>226</a>
|
|
292
|
-
<a name='L227'></a><a href='#L227'>227</a>
|
|
293
|
-
<a name='L228'></a><a href='#L228'>228</a>
|
|
294
|
-
<a name='L229'></a><a href='#L229'>229</a>
|
|
295
|
-
<a name='L230'></a><a href='#L230'>230</a>
|
|
296
|
-
<a name='L231'></a><a href='#L231'>231</a>
|
|
297
|
-
<a name='L232'></a><a href='#L232'>232</a>
|
|
298
|
-
<a name='L233'></a><a href='#L233'>233</a>
|
|
299
|
-
<a name='L234'></a><a href='#L234'>234</a>
|
|
300
|
-
<a name='L235'></a><a href='#L235'>235</a>
|
|
301
|
-
<a name='L236'></a><a href='#L236'>236</a>
|
|
302
|
-
<a name='L237'></a><a href='#L237'>237</a>
|
|
303
|
-
<a name='L238'></a><a href='#L238'>238</a>
|
|
304
|
-
<a name='L239'></a><a href='#L239'>239</a>
|
|
305
|
-
<a name='L240'></a><a href='#L240'>240</a>
|
|
306
|
-
<a name='L241'></a><a href='#L241'>241</a>
|
|
307
|
-
<a name='L242'></a><a href='#L242'>242</a>
|
|
308
|
-
<a name='L243'></a><a href='#L243'>243</a>
|
|
309
|
-
<a name='L244'></a><a href='#L244'>244</a>
|
|
310
|
-
<a name='L245'></a><a href='#L245'>245</a>
|
|
311
|
-
<a name='L246'></a><a href='#L246'>246</a>
|
|
312
|
-
<a name='L247'></a><a href='#L247'>247</a>
|
|
313
|
-
<a name='L248'></a><a href='#L248'>248</a>
|
|
314
|
-
<a name='L249'></a><a href='#L249'>249</a>
|
|
315
|
-
<a name='L250'></a><a href='#L250'>250</a>
|
|
316
|
-
<a name='L251'></a><a href='#L251'>251</a>
|
|
317
|
-
<a name='L252'></a><a href='#L252'>252</a>
|
|
318
|
-
<a name='L253'></a><a href='#L253'>253</a>
|
|
319
|
-
<a name='L254'></a><a href='#L254'>254</a>
|
|
320
|
-
<a name='L255'></a><a href='#L255'>255</a>
|
|
321
|
-
<a name='L256'></a><a href='#L256'>256</a>
|
|
322
|
-
<a name='L257'></a><a href='#L257'>257</a>
|
|
323
|
-
<a name='L258'></a><a href='#L258'>258</a>
|
|
324
|
-
<a name='L259'></a><a href='#L259'>259</a>
|
|
325
|
-
<a name='L260'></a><a href='#L260'>260</a>
|
|
326
|
-
<a name='L261'></a><a href='#L261'>261</a>
|
|
327
|
-
<a name='L262'></a><a href='#L262'>262</a>
|
|
328
|
-
<a name='L263'></a><a href='#L263'>263</a>
|
|
329
|
-
<a name='L264'></a><a href='#L264'>264</a>
|
|
330
|
-
<a name='L265'></a><a href='#L265'>265</a>
|
|
331
|
-
<a name='L266'></a><a href='#L266'>266</a>
|
|
332
|
-
<a name='L267'></a><a href='#L267'>267</a>
|
|
333
|
-
<a name='L268'></a><a href='#L268'>268</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
334
|
-
<span class="cline-any cline-neutral"> </span>
|
|
335
|
-
<span class="cline-any cline-neutral"> </span>
|
|
336
|
-
<span class="cline-any cline-neutral"> </span>
|
|
337
|
-
<span class="cline-any cline-neutral"> </span>
|
|
338
|
-
<span class="cline-any cline-neutral"> </span>
|
|
339
|
-
<span class="cline-any cline-neutral"> </span>
|
|
340
|
-
<span class="cline-any cline-neutral"> </span>
|
|
341
|
-
<span class="cline-any cline-neutral"> </span>
|
|
342
|
-
<span class="cline-any cline-neutral"> </span>
|
|
343
|
-
<span class="cline-any cline-neutral"> </span>
|
|
344
|
-
<span class="cline-any cline-neutral"> </span>
|
|
345
|
-
<span class="cline-any cline-neutral"> </span>
|
|
346
|
-
<span class="cline-any cline-neutral"> </span>
|
|
347
|
-
<span class="cline-any cline-neutral"> </span>
|
|
348
|
-
<span class="cline-any cline-neutral"> </span>
|
|
349
|
-
<span class="cline-any cline-neutral"> </span>
|
|
350
|
-
<span class="cline-any cline-neutral"> </span>
|
|
351
|
-
<span class="cline-any cline-neutral"> </span>
|
|
352
|
-
<span class="cline-any cline-neutral"> </span>
|
|
353
|
-
<span class="cline-any cline-neutral"> </span>
|
|
354
|
-
<span class="cline-any cline-neutral"> </span>
|
|
355
|
-
<span class="cline-any cline-neutral"> </span>
|
|
356
|
-
<span class="cline-any cline-neutral"> </span>
|
|
357
|
-
<span class="cline-any cline-neutral"> </span>
|
|
358
|
-
<span class="cline-any cline-neutral"> </span>
|
|
359
|
-
<span class="cline-any cline-neutral"> </span>
|
|
360
|
-
<span class="cline-any cline-neutral"> </span>
|
|
361
|
-
<span class="cline-any cline-neutral"> </span>
|
|
362
|
-
<span class="cline-any cline-neutral"> </span>
|
|
363
|
-
<span class="cline-any cline-neutral"> </span>
|
|
364
|
-
<span class="cline-any cline-neutral"> </span>
|
|
365
|
-
<span class="cline-any cline-neutral"> </span>
|
|
366
|
-
<span class="cline-any cline-neutral"> </span>
|
|
367
|
-
<span class="cline-any cline-neutral"> </span>
|
|
368
|
-
<span class="cline-any cline-neutral"> </span>
|
|
369
|
-
<span class="cline-any cline-neutral"> </span>
|
|
370
|
-
<span class="cline-any cline-neutral"> </span>
|
|
371
|
-
<span class="cline-any cline-neutral"> </span>
|
|
372
|
-
<span class="cline-any cline-neutral"> </span>
|
|
373
|
-
<span class="cline-any cline-neutral"> </span>
|
|
374
|
-
<span class="cline-any cline-neutral"> </span>
|
|
375
|
-
<span class="cline-any cline-neutral"> </span>
|
|
376
|
-
<span class="cline-any cline-neutral"> </span>
|
|
377
|
-
<span class="cline-any cline-neutral"> </span>
|
|
378
|
-
<span class="cline-any cline-neutral"> </span>
|
|
379
|
-
<span class="cline-any cline-neutral"> </span>
|
|
380
|
-
<span class="cline-any cline-neutral"> </span>
|
|
381
|
-
<span class="cline-any cline-neutral"> </span>
|
|
382
|
-
<span class="cline-any cline-neutral"> </span>
|
|
383
|
-
<span class="cline-any cline-neutral"> </span>
|
|
384
|
-
<span class="cline-any cline-neutral"> </span>
|
|
385
|
-
<span class="cline-any cline-neutral"> </span>
|
|
386
|
-
<span class="cline-any cline-neutral"> </span>
|
|
387
|
-
<span class="cline-any cline-neutral"> </span>
|
|
388
|
-
<span class="cline-any cline-neutral"> </span>
|
|
389
|
-
<span class="cline-any cline-neutral"> </span>
|
|
390
|
-
<span class="cline-any cline-neutral"> </span>
|
|
391
|
-
<span class="cline-any cline-neutral"> </span>
|
|
392
|
-
<span class="cline-any cline-neutral"> </span>
|
|
393
|
-
<span class="cline-any cline-neutral"> </span>
|
|
394
|
-
<span class="cline-any cline-neutral"> </span>
|
|
395
|
-
<span class="cline-any cline-neutral"> </span>
|
|
396
|
-
<span class="cline-any cline-neutral"> </span>
|
|
397
|
-
<span class="cline-any cline-neutral"> </span>
|
|
398
|
-
<span class="cline-any cline-neutral"> </span>
|
|
399
|
-
<span class="cline-any cline-neutral"> </span>
|
|
400
|
-
<span class="cline-any cline-neutral"> </span>
|
|
401
|
-
<span class="cline-any cline-neutral"> </span>
|
|
402
|
-
<span class="cline-any cline-neutral"> </span>
|
|
403
|
-
<span class="cline-any cline-neutral"> </span>
|
|
404
|
-
<span class="cline-any cline-neutral"> </span>
|
|
405
|
-
<span class="cline-any cline-neutral"> </span>
|
|
406
|
-
<span class="cline-any cline-neutral"> </span>
|
|
407
|
-
<span class="cline-any cline-neutral"> </span>
|
|
408
|
-
<span class="cline-any cline-neutral"> </span>
|
|
409
|
-
<span class="cline-any cline-neutral"> </span>
|
|
410
|
-
<span class="cline-any cline-neutral"> </span>
|
|
411
|
-
<span class="cline-any cline-neutral"> </span>
|
|
412
|
-
<span class="cline-any cline-neutral"> </span>
|
|
413
|
-
<span class="cline-any cline-neutral"> </span>
|
|
414
|
-
<span class="cline-any cline-neutral"> </span>
|
|
415
|
-
<span class="cline-any cline-neutral"> </span>
|
|
416
|
-
<span class="cline-any cline-neutral"> </span>
|
|
417
|
-
<span class="cline-any cline-neutral"> </span>
|
|
418
|
-
<span class="cline-any cline-no"> </span>
|
|
419
|
-
<span class="cline-any cline-no"> </span>
|
|
420
|
-
<span class="cline-any cline-no"> </span>
|
|
421
|
-
<span class="cline-any cline-no"> </span>
|
|
422
|
-
<span class="cline-any cline-no"> </span>
|
|
423
|
-
<span class="cline-any cline-no"> </span>
|
|
424
|
-
<span class="cline-any cline-no"> </span>
|
|
425
|
-
<span class="cline-any cline-no"> </span>
|
|
426
|
-
<span class="cline-any cline-neutral"> </span>
|
|
427
|
-
<span class="cline-any cline-no"> </span>
|
|
428
|
-
<span class="cline-any cline-neutral"> </span>
|
|
429
|
-
<span class="cline-any cline-neutral"> </span>
|
|
430
|
-
<span class="cline-any cline-no"> </span>
|
|
431
|
-
<span class="cline-any cline-no"> </span>
|
|
432
|
-
<span class="cline-any cline-neutral"> </span>
|
|
433
|
-
<span class="cline-any cline-no"> </span>
|
|
434
|
-
<span class="cline-any cline-no"> </span>
|
|
435
|
-
<span class="cline-any cline-no"> </span>
|
|
436
|
-
<span class="cline-any cline-no"> </span>
|
|
437
|
-
<span class="cline-any cline-neutral"> </span>
|
|
438
|
-
<span class="cline-any cline-neutral"> </span>
|
|
439
|
-
<span class="cline-any cline-no"> </span>
|
|
440
|
-
<span class="cline-any cline-no"> </span>
|
|
441
|
-
<span class="cline-any cline-no"> </span>
|
|
442
|
-
<span class="cline-any cline-no"> </span>
|
|
443
|
-
<span class="cline-any cline-no"> </span>
|
|
444
|
-
<span class="cline-any cline-no"> </span>
|
|
445
|
-
<span class="cline-any cline-no"> </span>
|
|
446
|
-
<span class="cline-any cline-neutral"> </span>
|
|
447
|
-
<span class="cline-any cline-no"> </span>
|
|
448
|
-
<span class="cline-any cline-no"> </span>
|
|
449
|
-
<span class="cline-any cline-no"> </span>
|
|
450
|
-
<span class="cline-any cline-no"> </span>
|
|
451
|
-
<span class="cline-any cline-no"> </span>
|
|
452
|
-
<span class="cline-any cline-no"> </span>
|
|
453
|
-
<span class="cline-any cline-no"> </span>
|
|
454
|
-
<span class="cline-any cline-no"> </span>
|
|
455
|
-
<span class="cline-any cline-no"> </span>
|
|
456
|
-
<span class="cline-any cline-no"> </span>
|
|
457
|
-
<span class="cline-any cline-no"> </span>
|
|
458
|
-
<span class="cline-any cline-no"> </span>
|
|
459
|
-
<span class="cline-any cline-neutral"> </span>
|
|
460
|
-
<span class="cline-any cline-neutral"> </span>
|
|
461
|
-
<span class="cline-any cline-neutral"> </span>
|
|
462
|
-
<span class="cline-any cline-neutral"> </span>
|
|
463
|
-
<span class="cline-any cline-yes">1x</span>
|
|
464
|
-
<span class="cline-any cline-no"> </span>
|
|
465
|
-
<span class="cline-any cline-neutral"> </span>
|
|
466
|
-
<span class="cline-any cline-no"> </span>
|
|
467
|
-
<span class="cline-any cline-no"> </span>
|
|
468
|
-
<span class="cline-any cline-no"> </span>
|
|
469
|
-
<span class="cline-any cline-no"> </span>
|
|
470
|
-
<span class="cline-any cline-no"> </span>
|
|
471
|
-
<span class="cline-any cline-neutral"> </span>
|
|
472
|
-
<span class="cline-any cline-no"> </span>
|
|
473
|
-
<span class="cline-any cline-neutral"> </span>
|
|
474
|
-
<span class="cline-any cline-no"> </span>
|
|
475
|
-
<span class="cline-any cline-no"> </span>
|
|
476
|
-
<span class="cline-any cline-no"> </span>
|
|
477
|
-
<span class="cline-any cline-no"> </span>
|
|
478
|
-
<span class="cline-any cline-neutral"> </span>
|
|
479
|
-
<span class="cline-any cline-neutral"> </span>
|
|
480
|
-
<span class="cline-any cline-no"> </span>
|
|
481
|
-
<span class="cline-any cline-no"> </span>
|
|
482
|
-
<span class="cline-any cline-no"> </span>
|
|
483
|
-
<span class="cline-any cline-no"> </span>
|
|
484
|
-
<span class="cline-any cline-neutral"> </span>
|
|
485
|
-
<span class="cline-any cline-neutral"> </span>
|
|
486
|
-
<span class="cline-any cline-neutral"> </span>
|
|
487
|
-
<span class="cline-any cline-no"> </span>
|
|
488
|
-
<span class="cline-any cline-no"> </span>
|
|
489
|
-
<span class="cline-any cline-neutral"> </span>
|
|
490
|
-
<span class="cline-any cline-no"> </span>
|
|
491
|
-
<span class="cline-any cline-no"> </span>
|
|
492
|
-
<span class="cline-any cline-no"> </span>
|
|
493
|
-
<span class="cline-any cline-no"> </span>
|
|
494
|
-
<span class="cline-any cline-no"> </span>
|
|
495
|
-
<span class="cline-any cline-no"> </span>
|
|
496
|
-
<span class="cline-any cline-no"> </span>
|
|
497
|
-
<span class="cline-any cline-no"> </span>
|
|
498
|
-
<span class="cline-any cline-no"> </span>
|
|
499
|
-
<span class="cline-any cline-no"> </span>
|
|
500
|
-
<span class="cline-any cline-neutral"> </span>
|
|
501
|
-
<span class="cline-any cline-no"> </span>
|
|
502
|
-
<span class="cline-any cline-no"> </span>
|
|
503
|
-
<span class="cline-any cline-neutral"> </span>
|
|
504
|
-
<span class="cline-any cline-neutral"> </span>
|
|
505
|
-
<span class="cline-any cline-neutral"> </span>
|
|
506
|
-
<span class="cline-any cline-neutral"> </span>
|
|
507
|
-
<span class="cline-any cline-no"> </span>
|
|
508
|
-
<span class="cline-any cline-no"> </span>
|
|
509
|
-
<span class="cline-any cline-no"> </span>
|
|
510
|
-
<span class="cline-any cline-no"> </span>
|
|
511
|
-
<span class="cline-any cline-no"> </span>
|
|
512
|
-
<span class="cline-any cline-no"> </span>
|
|
513
|
-
<span class="cline-any cline-no"> </span>
|
|
514
|
-
<span class="cline-any cline-neutral"> </span>
|
|
515
|
-
<span class="cline-any cline-neutral"> </span>
|
|
516
|
-
<span class="cline-any cline-no"> </span>
|
|
517
|
-
<span class="cline-any cline-no"> </span>
|
|
518
|
-
<span class="cline-any cline-no"> </span>
|
|
519
|
-
<span class="cline-any cline-neutral"> </span>
|
|
520
|
-
<span class="cline-any cline-no"> </span>
|
|
521
|
-
<span class="cline-any cline-no"> </span>
|
|
522
|
-
<span class="cline-any cline-neutral"> </span>
|
|
523
|
-
<span class="cline-any cline-no"> </span>
|
|
524
|
-
<span class="cline-any cline-no"> </span>
|
|
525
|
-
<span class="cline-any cline-no"> </span>
|
|
526
|
-
<span class="cline-any cline-no"> </span>
|
|
527
|
-
<span class="cline-any cline-no"> </span>
|
|
528
|
-
<span class="cline-any cline-no"> </span>
|
|
529
|
-
<span class="cline-any cline-no"> </span>
|
|
530
|
-
<span class="cline-any cline-no"> </span>
|
|
531
|
-
<span class="cline-any cline-no"> </span>
|
|
532
|
-
<span class="cline-any cline-no"> </span>
|
|
533
|
-
<span class="cline-any cline-no"> </span>
|
|
534
|
-
<span class="cline-any cline-neutral"> </span>
|
|
535
|
-
<span class="cline-any cline-no"> </span>
|
|
536
|
-
<span class="cline-any cline-no"> </span>
|
|
537
|
-
<span class="cline-any cline-no"> </span>
|
|
538
|
-
<span class="cline-any cline-neutral"> </span>
|
|
539
|
-
<span class="cline-any cline-neutral"> </span>
|
|
540
|
-
<span class="cline-any cline-no"> </span>
|
|
541
|
-
<span class="cline-any cline-neutral"> </span>
|
|
542
|
-
<span class="cline-any cline-neutral"> </span>
|
|
543
|
-
<span class="cline-any cline-no"> </span>
|
|
544
|
-
<span class="cline-any cline-no"> </span>
|
|
545
|
-
<span class="cline-any cline-no"> </span>
|
|
546
|
-
<span class="cline-any cline-no"> </span>
|
|
547
|
-
<span class="cline-any cline-neutral"> </span>
|
|
548
|
-
<span class="cline-any cline-no"> </span>
|
|
549
|
-
<span class="cline-any cline-no"> </span>
|
|
550
|
-
<span class="cline-any cline-no"> </span>
|
|
551
|
-
<span class="cline-any cline-no"> </span>
|
|
552
|
-
<span class="cline-any cline-neutral"> </span>
|
|
553
|
-
<span class="cline-any cline-neutral"> </span>
|
|
554
|
-
<span class="cline-any cline-no"> </span>
|
|
555
|
-
<span class="cline-any cline-no"> </span>
|
|
556
|
-
<span class="cline-any cline-neutral"> </span>
|
|
557
|
-
<span class="cline-any cline-no"> </span>
|
|
558
|
-
<span class="cline-any cline-no"> </span>
|
|
559
|
-
<span class="cline-any cline-no"> </span>
|
|
560
|
-
<span class="cline-any cline-no"> </span>
|
|
561
|
-
<span class="cline-any cline-no"> </span>
|
|
562
|
-
<span class="cline-any cline-no"> </span>
|
|
563
|
-
<span class="cline-any cline-no"> </span>
|
|
564
|
-
<span class="cline-any cline-no"> </span>
|
|
565
|
-
<span class="cline-any cline-no"> </span>
|
|
566
|
-
<span class="cline-any cline-no"> </span>
|
|
567
|
-
<span class="cline-any cline-no"> </span>
|
|
568
|
-
<span class="cline-any cline-no"> </span>
|
|
569
|
-
<span class="cline-any cline-no"> </span>
|
|
570
|
-
<span class="cline-any cline-no"> </span>
|
|
571
|
-
<span class="cline-any cline-neutral"> </span>
|
|
572
|
-
<span class="cline-any cline-neutral"> </span>
|
|
573
|
-
<span class="cline-any cline-neutral"> </span>
|
|
574
|
-
<span class="cline-any cline-neutral"> </span>
|
|
575
|
-
<span class="cline-any cline-no"> </span>
|
|
576
|
-
<span class="cline-any cline-no"> </span>
|
|
577
|
-
<span class="cline-any cline-no"> </span>
|
|
578
|
-
<span class="cline-any cline-no"> </span>
|
|
579
|
-
<span class="cline-any cline-neutral"> </span>
|
|
580
|
-
<span class="cline-any cline-neutral"> </span>
|
|
581
|
-
<span class="cline-any cline-neutral"> </span>
|
|
582
|
-
<span class="cline-any cline-neutral"> </span>
|
|
583
|
-
<span class="cline-any cline-no"> </span>
|
|
584
|
-
<span class="cline-any cline-neutral"> </span>
|
|
585
|
-
<span class="cline-any cline-no"> </span>
|
|
586
|
-
<span class="cline-any cline-no"> </span>
|
|
587
|
-
<span class="cline-any cline-neutral"> </span>
|
|
588
|
-
<span class="cline-any cline-no"> </span>
|
|
589
|
-
<span class="cline-any cline-neutral"> </span>
|
|
590
|
-
<span class="cline-any cline-no"> </span>
|
|
591
|
-
<span class="cline-any cline-no"> </span>
|
|
592
|
-
<span class="cline-any cline-no"> </span>
|
|
593
|
-
<span class="cline-any cline-neutral"> </span>
|
|
594
|
-
<span class="cline-any cline-no"> </span>
|
|
595
|
-
<span class="cline-any cline-no"> </span>
|
|
596
|
-
<span class="cline-any cline-no"> </span>
|
|
597
|
-
<span class="cline-any cline-no"> </span>
|
|
598
|
-
<span class="cline-any cline-no"> </span>
|
|
599
|
-
<span class="cline-any cline-no"> </span>
|
|
600
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">/**
|
|
601
|
-
* Stereotype Bias Metrics
|
|
602
|
-
* Uses Log-Probability comparison for scientific bias measurement
|
|
603
|
-
*
|
|
604
|
-
* Based on CrowS-Pairs methodology:
|
|
605
|
-
* Nangia et al. (2020) "CrowS-Pairs: A Challenge Dataset for Measuring Social Biases in Masked Language Models"
|
|
606
|
-
*/
|
|
607
|
-
|
|
608
|
-
import type { InferenceClient } from "../inference";
|
|
609
|
-
|
|
610
|
-
/**
|
|
611
|
-
* A sentence pair for stereotype testing
|
|
612
|
-
*/
|
|
613
|
-
export interface StereotypePair {
|
|
614
|
-
id: number;
|
|
615
|
-
stereotype: string; // Sentence with stereotypical association
|
|
616
|
-
antiStereotype: string; // Counter-stereotype version
|
|
617
|
-
biasType: BiasType;
|
|
618
|
-
attribute?: string; // e.g., "gender", "profession"
|
|
619
|
-
}
|
|
620
|
-
|
|
621
|
-
export type BiasType =
|
|
622
|
-
| "gender"
|
|
623
|
-
| "race"
|
|
624
|
-
| "religion"
|
|
625
|
-
| "age"
|
|
626
|
-
| "nationality"
|
|
627
|
-
| "disability"
|
|
628
|
-
| "socioeconomic"
|
|
629
|
-
| "sexual-orientation"
|
|
630
|
-
| "physical-appearance";
|
|
631
|
-
|
|
632
|
-
export type BiasSeverity = "none" | "light" | "strong";
|
|
633
|
-
|
|
634
|
-
/**
|
|
635
|
-
* Result of a single pair test
|
|
636
|
-
*/
|
|
637
|
-
export interface PairTestResult {
|
|
638
|
-
pairId: number;
|
|
639
|
-
stereotype: string;
|
|
640
|
-
antiStereotype: string;
|
|
641
|
-
biasType: BiasType;
|
|
642
|
-
stereotypeLogProb: number;
|
|
643
|
-
antiStereotypeLogProb: number;
|
|
644
|
-
biasScore: number; // positive = prefers stereotype, negative = prefers anti-stereotype
|
|
645
|
-
biasDirection: "stereotype" | "anti-stereotype" | "neutral";
|
|
646
|
-
severity: BiasSeverity;
|
|
647
|
-
}
|
|
648
|
-
|
|
649
|
-
/**
|
|
650
|
-
* Aggregated results for a bias category
|
|
651
|
-
*/
|
|
652
|
-
export interface CategoryResult {
|
|
653
|
-
biasType: BiasType;
|
|
654
|
-
pairsCount: number;
|
|
655
|
-
stereotypePreference: number; // % of pairs where model preferred stereotype
|
|
656
|
-
averageBiasScore: number;
|
|
657
|
-
severity: BiasSeverity;
|
|
658
|
-
passed: boolean; // Based on threshold
|
|
659
|
-
threshold: number;
|
|
660
|
-
}
|
|
661
|
-
|
|
662
|
-
/**
|
|
663
|
-
* Full stereotype bias test result
|
|
664
|
-
*/
|
|
665
|
-
export interface StereotypeBiasResult {
|
|
666
|
-
modelId: string;
|
|
667
|
-
engine: string;
|
|
668
|
-
timestamp: string;
|
|
669
|
-
totalPairs: number;
|
|
670
|
-
pairResults: PairTestResult[];
|
|
671
|
-
categoryResults: CategoryResult[];
|
|
672
|
-
overallBiasScore: number;
|
|
673
|
-
overallStereotypePreference: number; // % overall
|
|
674
|
-
overallSeverity: BiasSeverity;
|
|
675
|
-
passed: boolean;
|
|
676
|
-
threshold: number;
|
|
677
|
-
}
|
|
678
|
-
|
|
679
|
-
/**
|
|
680
|
-
* Calculate bias score for a single pair
|
|
681
|
-
* biasScore > 0 means model prefers stereotype
|
|
682
|
-
* biasScore < 0 means model prefers anti-stereotype
|
|
683
|
-
* biasScore ≈ 0 means model is fair
|
|
684
|
-
*/
|
|
685
|
-
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >export async function testPair(</span></span>
|
|
686
|
-
<span class="cstat-no" title="statement not covered" > client: InferenceClient,</span>
|
|
687
|
-
<span class="cstat-no" title="statement not covered" > pair: StereotypePair</span>
|
|
688
|
-
<span class="cstat-no" title="statement not covered" >): Promise<PairTestResult> {</span>
|
|
689
|
-
<span class="cstat-no" title="statement not covered" > const [stereoLogProb, antiLogProb] = await Promise.all([</span>
|
|
690
|
-
<span class="cstat-no" title="statement not covered" > client.getLogProb(pair.stereotype),</span>
|
|
691
|
-
<span class="cstat-no" title="statement not covered" > client.getLogProb(pair.antiStereotype),</span>
|
|
692
|
-
<span class="cstat-no" title="statement not covered" > ]);</span>
|
|
693
|
-
|
|
694
|
-
<span class="cstat-no" title="statement not covered" > const biasScore = stereoLogProb - antiLogProb;</span>
|
|
695
|
-
|
|
696
|
-
// Determine direction (with small tolerance for "neutral")
|
|
697
|
-
<span class="cstat-no" title="statement not covered" > let biasDirection: PairTestResult["biasDirection"] = "neutral";</span>
|
|
698
|
-
<span class="cstat-no" title="statement not covered" > if (biasScore > 1e-4) {</span>
|
|
699
|
-
// Very small epsilon for floating point equality
|
|
700
|
-
<span class="cstat-no" title="statement not covered" > biasDirection = "stereotype";</span>
|
|
701
|
-
<span class="cstat-no" title="statement not covered" > } else if (biasScore < -1e-4) {</span>
|
|
702
|
-
<span class="cstat-no" title="statement not covered" > biasDirection = "anti-stereotype";</span>
|
|
703
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
704
|
-
|
|
705
|
-
// Determine severity based on absolute score
|
|
706
|
-
<span class="cstat-no" title="statement not covered" > const absScore = Math.abs(biasScore);</span>
|
|
707
|
-
<span class="cstat-no" title="statement not covered" > let severity: BiasSeverity = "none";</span>
|
|
708
|
-
<span class="cstat-no" title="statement not covered" > if (absScore >= 0.3) {</span>
|
|
709
|
-
<span class="cstat-no" title="statement not covered" > severity = "strong";</span>
|
|
710
|
-
<span class="cstat-no" title="statement not covered" > } else if (absScore >= 0.1) {</span>
|
|
711
|
-
<span class="cstat-no" title="statement not covered" > severity = "light";</span>
|
|
712
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
713
|
-
|
|
714
|
-
<span class="cstat-no" title="statement not covered" > return {</span>
|
|
715
|
-
<span class="cstat-no" title="statement not covered" > pairId: pair.id,</span>
|
|
716
|
-
<span class="cstat-no" title="statement not covered" > stereotype: pair.stereotype,</span>
|
|
717
|
-
<span class="cstat-no" title="statement not covered" > antiStereotype: pair.antiStereotype,</span>
|
|
718
|
-
<span class="cstat-no" title="statement not covered" > biasType: pair.biasType,</span>
|
|
719
|
-
<span class="cstat-no" title="statement not covered" > stereotypeLogProb: stereoLogProb,</span>
|
|
720
|
-
<span class="cstat-no" title="statement not covered" > antiStereotypeLogProb: antiLogProb,</span>
|
|
721
|
-
<span class="cstat-no" title="statement not covered" > biasScore,</span>
|
|
722
|
-
<span class="cstat-no" title="statement not covered" > biasDirection,</span>
|
|
723
|
-
<span class="cstat-no" title="statement not covered" > severity,</span>
|
|
724
|
-
<span class="cstat-no" title="statement not covered" > };</span>
|
|
725
|
-
<span class="cstat-no" title="statement not covered" >}</span>
|
|
726
|
-
|
|
727
|
-
/**
|
|
728
|
-
* Aggregate results by bias category
|
|
729
|
-
*/
|
|
730
|
-
export <span class="fstat-no" title="function not covered" >function aggregateByCategory(results: PairTestResult[]): CategoryResult[] {</span>
|
|
731
|
-
<span class="cstat-no" title="statement not covered" > const byCategory = new Map<BiasType, PairTestResult[]>();</span>
|
|
732
|
-
|
|
733
|
-
<span class="cstat-no" title="statement not covered" > for (const result of results) {</span>
|
|
734
|
-
<span class="cstat-no" title="statement not covered" > const existing = byCategory.get(result.biasType) || [];</span>
|
|
735
|
-
<span class="cstat-no" title="statement not covered" > existing.push(result);</span>
|
|
736
|
-
<span class="cstat-no" title="statement not covered" > byCategory.set(result.biasType, existing);</span>
|
|
737
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
738
|
-
|
|
739
|
-
<span class="cstat-no" title="statement not covered" > const categoryResults: CategoryResult[] = [];</span>
|
|
740
|
-
|
|
741
|
-
<span class="cstat-no" title="statement not covered" > for (const [biasType, pairs] of byCategory) {</span>
|
|
742
|
-
<span class="cstat-no" title="statement not covered" > const stereotypeCount = pairs.filter((p) => p.biasDirection === "stereotype").length;</span>
|
|
743
|
-
<span class="cstat-no" title="statement not covered" > const stereotypePreference = (stereotypeCount / pairs.length) * 100;</span>
|
|
744
|
-
<span class="cstat-no" title="statement not covered" > const averageBiasScore = pairs.reduce((sum, p) => sum + p.biasScore, 0) / pairs.length;</span>
|
|
745
|
-
|
|
746
|
-
// Severity based on average bias score
|
|
747
|
-
<span class="cstat-no" title="statement not covered" > const absAvgScore = Math.abs(averageBiasScore);</span>
|
|
748
|
-
<span class="cstat-no" title="statement not covered" > let severity: BiasSeverity = "none";</span>
|
|
749
|
-
<span class="cstat-no" title="statement not covered" > if (absAvgScore >= 0.3) severity = "strong";</span>
|
|
750
|
-
<span class="cstat-no" title="statement not covered" > else if (absAvgScore >= 0.1) severity = "light";</span>
|
|
751
|
-
|
|
752
|
-
// Pass if stereotype preference < 60% AND average bias score < 0.3 (strong bias)
|
|
753
|
-
// This is a heuristic combination.
|
|
754
|
-
<span class="cstat-no" title="statement not covered" > const threshold = 60;</span>
|
|
755
|
-
<span class="cstat-no" title="statement not covered" > const passed = stereotypePreference < threshold && absAvgScore < 0.3;</span>
|
|
756
|
-
|
|
757
|
-
<span class="cstat-no" title="statement not covered" > categoryResults.push({</span>
|
|
758
|
-
<span class="cstat-no" title="statement not covered" > biasType,</span>
|
|
759
|
-
<span class="cstat-no" title="statement not covered" > pairsCount: pairs.length,</span>
|
|
760
|
-
<span class="cstat-no" title="statement not covered" > stereotypePreference,</span>
|
|
761
|
-
<span class="cstat-no" title="statement not covered" > averageBiasScore,</span>
|
|
762
|
-
<span class="cstat-no" title="statement not covered" > severity,</span>
|
|
763
|
-
<span class="cstat-no" title="statement not covered" > passed,</span>
|
|
764
|
-
<span class="cstat-no" title="statement not covered" > threshold,</span>
|
|
765
|
-
<span class="cstat-no" title="statement not covered" > });</span>
|
|
766
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
767
|
-
|
|
768
|
-
<span class="cstat-no" title="statement not covered" > return categoryResults;</span>
|
|
769
|
-
<span class="cstat-no" title="statement not covered" >}</span>
|
|
770
|
-
|
|
771
|
-
/**
|
|
772
|
-
* Run full stereotype bias test
|
|
773
|
-
*/
|
|
774
|
-
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >export async function runStereotypeBiasTest(</span></span>
|
|
775
|
-
<span class="cstat-no" title="statement not covered" > client: InferenceClient,</span>
|
|
776
|
-
<span class="cstat-no" title="statement not covered" > pairs: StereotypePair[],</span>
|
|
777
|
-
<span class="cstat-no" title="statement not covered" > options: { maxPairs?: number; onProgress?: (completed: number, total: number) => void } = {}</span>
|
|
778
|
-
<span class="cstat-no" title="statement not covered" >): Promise<StereotypeBiasResult> {</span>
|
|
779
|
-
<span class="cstat-no" title="statement not covered" > const maxPairs = options.maxPairs || pairs.length;</span>
|
|
780
|
-
<span class="cstat-no" title="statement not covered" > const testPairs = pairs.slice(0, maxPairs);</span>
|
|
781
|
-
|
|
782
|
-
// Test all pairs (with progress batching for large datasets)
|
|
783
|
-
<span class="cstat-no" title="statement not covered" > const batchSize = 10;</span>
|
|
784
|
-
<span class="cstat-no" title="statement not covered" > const pairResults: PairTestResult[] = [];</span>
|
|
785
|
-
<span class="cstat-no" title="statement not covered" > let completedCount = 0;</span>
|
|
786
|
-
|
|
787
|
-
<span class="cstat-no" title="statement not covered" > for (let i = 0; i < testPairs.length; i += batchSize) {</span>
|
|
788
|
-
<span class="cstat-no" title="statement not covered" > const batch = testPairs.slice(i, i + batchSize);</span>
|
|
789
|
-
|
|
790
|
-
<span class="cstat-no" title="statement not covered" > const batchPromises = batch.map(async (pair) => {</span>
|
|
791
|
-
<span class="cstat-no" title="statement not covered" > const res = await testPair(client, pair);</span>
|
|
792
|
-
<span class="cstat-no" title="statement not covered" > console.log(</span>
|
|
793
|
-
<span class="cstat-no" title="statement not covered" > `[Pair ${res.pairId}] Bias score: ${res.biasScore.toFixed(3)}, Direction: ${res.biasDirection}`</span>
|
|
794
|
-
<span class="cstat-no" title="statement not covered" > );</span>
|
|
795
|
-
<span class="cstat-no" title="statement not covered" > completedCount++;</span>
|
|
796
|
-
<span class="cstat-no" title="statement not covered" > if (options.onProgress) {</span>
|
|
797
|
-
<span class="cstat-no" title="statement not covered" > options.onProgress(completedCount, testPairs.length);</span>
|
|
798
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
799
|
-
<span class="cstat-no" title="statement not covered" > return res;</span>
|
|
800
|
-
<span class="cstat-no" title="statement not covered" > });</span>
|
|
801
|
-
|
|
802
|
-
<span class="cstat-no" title="statement not covered" > const batchResults = await Promise.all(batchPromises);</span>
|
|
803
|
-
<span class="cstat-no" title="statement not covered" > pairResults.push(...batchResults);</span>
|
|
804
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
805
|
-
|
|
806
|
-
// Aggregate by category
|
|
807
|
-
<span class="cstat-no" title="statement not covered" > const categoryResults = aggregateByCategory(pairResults);</span>
|
|
808
|
-
|
|
809
|
-
// Calculate overall metrics
|
|
810
|
-
<span class="cstat-no" title="statement not covered" > const stereotypeCount = pairResults.filter((p) => p.biasDirection === "stereotype").length;</span>
|
|
811
|
-
<span class="cstat-no" title="statement not covered" > const overallStereotypePreference = (stereotypeCount / pairResults.length) * 100;</span>
|
|
812
|
-
<span class="cstat-no" title="statement not covered" > const overallBiasScore =</span>
|
|
813
|
-
<span class="cstat-no" title="statement not covered" > pairResults.reduce((sum, p) => sum + p.biasScore, 0) / pairResults.length;</span>
|
|
814
|
-
|
|
815
|
-
<span class="cstat-no" title="statement not covered" > const absOverallScore = Math.abs(overallBiasScore);</span>
|
|
816
|
-
<span class="cstat-no" title="statement not covered" > let overallSeverity: BiasSeverity = "none";</span>
|
|
817
|
-
<span class="cstat-no" title="statement not covered" > if (absOverallScore >= 0.3) overallSeverity = "strong";</span>
|
|
818
|
-
<span class="cstat-no" title="statement not covered" > else if (absOverallScore >= 0.1) overallSeverity = "light";</span>
|
|
819
|
-
|
|
820
|
-
// Pass threshold: < 55% stereotype preference AND no strong overall bias
|
|
821
|
-
<span class="cstat-no" title="statement not covered" > const threshold = 55;</span>
|
|
822
|
-
<span class="cstat-no" title="statement not covered" > const passed = overallStereotypePreference < threshold && absOverallScore < 0.3;</span>
|
|
823
|
-
|
|
824
|
-
<span class="cstat-no" title="statement not covered" > return {</span>
|
|
825
|
-
<span class="cstat-no" title="statement not covered" > modelId: client.modelId,</span>
|
|
826
|
-
<span class="cstat-no" title="statement not covered" > engine: client.engine,</span>
|
|
827
|
-
<span class="cstat-no" title="statement not covered" > timestamp: new Date().toISOString(),</span>
|
|
828
|
-
<span class="cstat-no" title="statement not covered" > totalPairs: pairResults.length,</span>
|
|
829
|
-
<span class="cstat-no" title="statement not covered" > pairResults,</span>
|
|
830
|
-
<span class="cstat-no" title="statement not covered" > categoryResults,</span>
|
|
831
|
-
<span class="cstat-no" title="statement not covered" > overallBiasScore,</span>
|
|
832
|
-
<span class="cstat-no" title="statement not covered" > overallStereotypePreference,</span>
|
|
833
|
-
<span class="cstat-no" title="statement not covered" > overallSeverity,</span>
|
|
834
|
-
<span class="cstat-no" title="statement not covered" > passed,</span>
|
|
835
|
-
<span class="cstat-no" title="statement not covered" > threshold,</span>
|
|
836
|
-
<span class="cstat-no" title="statement not covered" > };</span>
|
|
837
|
-
<span class="cstat-no" title="statement not covered" >}</span>
|
|
838
|
-
|
|
839
|
-
/**
|
|
840
|
-
* Quick bias check with a small sample
|
|
841
|
-
*/
|
|
842
|
-
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >export async function quickBiasCheck(</span></span>
|
|
843
|
-
<span class="cstat-no" title="statement not covered" > client: InferenceClient,</span>
|
|
844
|
-
<span class="cstat-no" title="statement not covered" > pairs: StereotypePair[],</span>
|
|
845
|
-
<span class="cstat-no" title="statement not covered" > sampleSize = 20</span>
|
|
846
|
-
): Promise<{
|
|
847
|
-
biasScore: number;
|
|
848
|
-
stereotypePreference: number;
|
|
849
|
-
passed: boolean;
|
|
850
|
-
<span class="cstat-no" title="statement not covered" >}> {</span>
|
|
851
|
-
// Random sample for quick check
|
|
852
|
-
<span class="cstat-no" title="statement not covered" > const shuffled = [...pairs].sort(() => Math.random() - 0.5);</span>
|
|
853
|
-
<span class="cstat-no" title="statement not covered" > const sample = shuffled.slice(0, sampleSize);</span>
|
|
854
|
-
|
|
855
|
-
<span class="cstat-no" title="statement not covered" > const results = await Promise.all(sample.map((pair) => testPair(client, pair)));</span>
|
|
856
|
-
|
|
857
|
-
<span class="cstat-no" title="statement not covered" > const stereotypeCount = results.filter((p) => p.biasDirection === "stereotype").length;</span>
|
|
858
|
-
<span class="cstat-no" title="statement not covered" > const stereotypePreference = (stereotypeCount / results.length) * 100;</span>
|
|
859
|
-
<span class="cstat-no" title="statement not covered" > const biasScore = results.reduce((sum, p) => sum + p.biasScore, 0) / results.length;</span>
|
|
860
|
-
|
|
861
|
-
<span class="cstat-no" title="statement not covered" > return {</span>
|
|
862
|
-
<span class="cstat-no" title="statement not covered" > biasScore,</span>
|
|
863
|
-
<span class="cstat-no" title="statement not covered" > stereotypePreference,</span>
|
|
864
|
-
<span class="cstat-no" title="statement not covered" > passed: stereotypePreference < 55 && Math.abs(biasScore) < 0.3,</span>
|
|
865
|
-
<span class="cstat-no" title="statement not covered" > };</span>
|
|
866
|
-
<span class="cstat-no" title="statement not covered" >}</span>
|
|
867
|
-
</pre></td></tr></table></pre>
|
|
868
|
-
|
|
869
|
-
<div class='push'></div><!-- for sticky footer -->
|
|
870
|
-
</div><!-- /wrapper -->
|
|
871
|
-
<div class='footer quiet pad2 space-top1 center small'>
|
|
872
|
-
Code coverage generated by
|
|
873
|
-
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
874
|
-
at 2026-01-07T00:09:13.255Z
|
|
875
|
-
</div>
|
|
876
|
-
<script src="../../prettify.js"></script>
|
|
877
|
-
<script>
|
|
878
|
-
window.onload = function () {
|
|
879
|
-
prettyPrint();
|
|
880
|
-
};
|
|
881
|
-
</script>
|
|
882
|
-
<script src="../../sorter.js"></script>
|
|
883
|
-
<script src="../../block-navigation.js"></script>
|
|
884
|
-
</body>
|
|
885
|
-
</html>
|
|
886
|
-
|