@@ -6,6 +6,7 @@ import './App.css';
6
6
function App ( ) {
7
7
const [ dataset , setDataset ] = useState ( "classic_new" ) ;
8
8
const [ searchPattern , setSearchPattern ] = useState ( null ) ;
9
+ const [ maxConfidence , setMaxConfidence ] = useState ( 1 ) ;
9
10
const [ categories , setCategories ] = useState ( [ ] ) ;
10
11
const [ data , setData ] = useState ( [ ] ) ;
11
12
const [ siderVisible , setSiderVisible ] = useState ( false ) ;
@@ -21,6 +22,15 @@ function App() {
21
22
data = data . filter ( ( item ) => item . question . toLowerCase ( ) . includes ( searchPattern ) || item . generated_query . toLowerCase ( ) . includes ( searchPattern ) ) ;
22
23
}
23
24
25
+ if ( maxConfidence ) {
26
+ // check if the min of all rank_1_probs is less than maxConfidence
27
+ data = data . filter ( ( item ) => {
28
+ return item . logprobs . reduce ( ( acc , item ) => {
29
+ return Math . min ( acc , item . rank_1_prob ) ;
30
+ } , 1 ) <= maxConfidence ;
31
+ } ) ;
32
+ }
33
+
24
34
const cats = [ ] ;
25
35
data . forEach ( ( item ) => {
26
36
if ( ! cats . includes ( item . query_category ) ) {
@@ -53,17 +63,12 @@ function App() {
53
63
54
64
useEffect ( ( ) => {
55
65
getData ( dataset ) ;
56
- } , [ dataset , searchPattern ] ) ;
66
+ } , [ dataset , searchPattern , maxConfidence ] ) ;
57
67
58
68
return (
59
69
< div className = "App" >
60
70
< h1 > Eval Visualizer</ h1 >
61
- < div style = { {
62
- display : "flex" ,
63
- justifyContent : "space-between" ,
64
- alignItems : "center" ,
65
- padding : 10 ,
66
- } } >
71
+ < div className = "flex flex-padded" >
67
72
< div id = "options" >
68
73
< h3 > Eval Type</ h3 >
69
74
< select
@@ -89,16 +94,36 @@ function App() {
89
94
style = { { width : 200 } }
90
95
value = { searchPattern }
91
96
onChange = { ( ev ) => {
92
- setSearchPattern ( ev . target . value ) ;
97
+ setSearchPattern ( ev . target . value . toLowerCase ( ) ) ;
93
98
} }
94
99
/>
95
100
</ div >
101
+
102
+ < div id = "slider-confidence" >
103
+ < h3 > Min Top Prob Threshold</ h3 >
104
+ < input
105
+ type = "range"
106
+ min = { 0 }
107
+ max = { 1 }
108
+ step = { 0.01 }
109
+ value = { maxConfidence }
110
+ style = { { width : 200 } }
111
+ onChange = { ( ev ) => {
112
+ setMaxConfidence ( parseFloat ( ev . target . value ) ) ;
113
+ } }
114
+ />
115
+ < span > { maxConfidence } </ span >
116
+ </ div >
96
117
</ div >
97
118
98
119
< div id = "summary-statistics" >
99
120
< h3 > Summary Statistics</ h3 >
100
- < p > Number of records: { data . length } </ p >
101
- < p > Total Correct: { data . filter ( ( item ) => item . correct === 1 ) . length } ({ 100 * ( data . filter ( ( item ) => item . correct === 1 ) . length / data . length ) } )%</ p >
121
+ < div className = "flex flex-padded" >
122
+ < p > < b > Number of records</ b > : { data . length } </ p >
123
+ < p > < b > Total Correct</ b > : { data . filter ( ( item ) => item . correct === 1 ) . length } ({ 100 * ( data . filter ( ( item ) => item . correct === 1 ) . length / data . length ) . toFixed ( 3 ) } )%</ p >
124
+ < p > < b > Total Incorrect</ b > : { data . filter ( ( item ) => item . correct === 0 ) . length } ({ 100 * ( data . filter ( ( item ) => item . correct === 0 ) . length / data . length ) . toFixed ( 3 ) } )%</ p >
125
+ </ div >
126
+
102
127
</ div >
103
128
< div id = "charts" >
104
129
{ categories . map ( ( category ) => {
@@ -114,12 +139,7 @@ function App() {
114
139
</ h4 >
115
140
< div
116
141
key = { category }
117
- style = { {
118
- display : "flex" ,
119
- flexWrap : "wrap" ,
120
- width : "100%" ,
121
- maxWidth : 600 ,
122
- } }
142
+ className = "flex"
123
143
>
124
144
{ data . filter ( ( item ) => item . query_category === category )
125
145
. sort ( ( item ) => item . correct === 1 ? - 1 : 1 )
0 commit comments