File size: 15,014 Bytes
f781593
 
b61db1b
f781593
b61db1b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f781593
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b61db1b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f781593
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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
#!/bin/bash

# Script to add model tooltips and fix existing tooltips in all HTML files

# Model tooltip definitions - exact descriptions from cost analysis tab
declare -A model_tooltips
model_tooltips["OpenAI gpt-4o"]="OpenAI's flagship multimodal model optimized for a balance of quality and speed. Features strong performance across diverse tasks with capabilities for complex financial reasoning and instruction following."
model_tooltips["GPT-4o"]="OpenAI's flagship multimodal model optimized for a balance of quality and speed. Features strong performance across diverse tasks with capabilities for complex financial reasoning and instruction following."
model_tooltips["OpenAI o1-mini"]="OpenAI's smaller advanced model balancing efficiency and performance. Demonstrates surprisingly strong results on financial tasks despite its reduced parameter count."
model_tooltips["o1-mini"]="OpenAI's smaller advanced model balancing efficiency and performance. Demonstrates surprisingly strong results on financial tasks despite its reduced parameter count."
model_tooltips["Claude 3.5 Sonnet"]="Anthropic's advanced proprietary language model optimized for complex reasoning and instruction-following. Features enhanced performance on financial tasks with strong text processing capabilities."
model_tooltips["Claude 3 Haiku"]="Anthropic's smaller efficiency-focused model in the Claude family. Designed for speed and lower computational requirements while maintaining reasonable performance on financial tasks."
model_tooltips["Google Gemini 1.5 Pro"]="Google's advanced proprietary multimodal model designed for complex reasoning and instruction-following tasks. Features strong performance across financial domains with advanced reasoning capabilities."
model_tooltips["Gemini 1.5 Pro"]="Google's advanced proprietary multimodal model designed for complex reasoning and instruction-following tasks. Features strong performance across financial domains with advanced reasoning capabilities."
model_tooltips["Cohere Command R 7B"]="Cohere's 7-billion parameter model focused on instruction-following. An efficient model with reasonable financial domain capabilities for its size."
model_tooltips["Cohere Command R +"]="Cohere's enhanced command model with improved instruction-following capabilities. Features advanced reasoning for financial domains with stronger performance than its smaller counterpart."
model_tooltips["DeepSeek R1"]="DeepSeek's premium 671 billion parameter Mixture of Experts (MoE) model representing their most advanced offering. Designed for state-of-the-art performance across complex reasoning and financial tasks."
model_tooltips["DeepSeek-V3"]="DeepSeek's 685 billion parameter Mixture of Experts (MoE) model optimized for advanced reasoning. Strong performance on financial tasks with robust instruction-following capabilities."
model_tooltips["DeepSeek LLM (67B)"]="DeepSeek's 67 billion parameter model optimized for chat applications. Balances performance and efficiency across financial tasks with solid reasoning capabilities."
model_tooltips["Llama 3 70B Instruct"]="Meta's advanced 70 billion parameter dense language model optimized for instruction-following tasks. Available through Together AI and notable for complex reasoning capabilities."
model_tooltips["Llama 3 8B Instruct"]="Meta's efficient 8 billion parameter language model optimized for instruction-following. Balances performance and efficiency for financial tasks with reasonable reasoning capabilities."
model_tooltips["DBRX Instruct"]="Databricks' 132 billion parameter Mixture of Experts (MoE) model focused on advanced reasoning. Demonstrates competitive performance on financial tasks with strong text processing capabilities."
model_tooltips["Mixtral-8x22B Instruct"]="Mistral AI's 141 billion parameter MoE model with eight 22B expert networks. Features robust reasoning capabilities for financial tasks with strong instruction-following performance."
model_tooltips["Mixtral-8x7B Instruct"]="Mistral AI's 47 billion parameter MoE model with eight 7B expert networks. Balances efficiency and performance with reasonable financial reasoning capabilities."
model_tooltips["Mistral (7B) Instruct v0.3"]="Mistral AI's 7 billion parameter instruction-tuned model. Demonstrates impressive efficiency with reasonable performance on financial tasks despite its smaller size."
model_tooltips["Qwen 2 Instruct (72B)"]="Alibaba's 72 billion parameter instruction-following model optimized for reasoning tasks. Features strong performance on financial domains with advanced text processing capabilities."
model_tooltips["WizardLM-2 8x22B"]="A 176 billion parameter MoE model focused on complex reasoning. Designed for advanced instruction-following with strong capabilities across financial tasks."
model_tooltips["Gemma 2 27B"]="Google's open-weight 27 billion parameter model optimized for reasoning tasks. Balances performance and efficiency across financial domains with strong instruction-following."
model_tooltips["Gemma 2 9B"]="Google's efficient open-weight 9 billion parameter model. Demonstrates good performance on financial tasks relative to its smaller size."
model_tooltips["QwQ-32B-Preview"]="Qwen's experimental 32 billion parameter MoE model focused on efficient computation. Features interesting performance characteristics on certain financial tasks."
model_tooltips["Jamba 1.5 Mini"]="A compact variant in the Jamba model series focused on efficiency. Balances performance and computational requirements for financial tasks."
model_tooltips["Jamba 1.5 Large"]="An expanded variant in the Jamba model series with enhanced capabilities. Features stronger reasoning for financial tasks than its smaller counterpart."

# Files to process
files=(
  "text_classification_table.html"
  "sentiment_analysis_table.html"
  "information_retrieval_table.html"
  "causal_analysis_table.html"
  "text_summarization_table.html"
  "qa_table.html"
)

# Fix existing dataset tooltips
# Fix tooltips in information_retrieval_table.html
sed -i 's/tooltip-trigger" data-tooltip="A dataset for information retrieval in the financial domain/tooltip-trigger tooltip-right" data-tooltip="A dataset for information retrieval in the financial domain/g' information_retrieval_table.html

# Fix tooltips in text_classification_table.html
sed -i 's/tooltip-trigger" data-tooltip="An expert-annotated dataset for detecting fine-grained investor claims/tooltip-trigger tooltip-right" data-tooltip="An expert-annotated dataset for detecting fine-grained investor claims/g' text_classification_table.html

# Fix tooltips in causal_analysis_table.html (in case the tooltip-right class isn't working)
sed -i 's/tooltip-trigger tooltip-right" data-tooltip="Determines if a given financial text section contains a causal relation/tooltip-trigger tooltip-right" data-tooltip="Determines if a given financial text section contains a causal relation/g' causal_analysis_table.html

# Fix tooltips in sentiment_analysis_table.html (in case the tooltip-right class isn't working)
sed -i 's/tooltip-trigger tooltip-right" data-tooltip="Manually-annotated dataset focusing on subjectivity/tooltip-trigger tooltip-right" data-tooltip="Manually-annotated dataset focusing on subjectivity/g' sentiment_analysis_table.html

# Fix tooltips in text_summarization_table.html (in case the tooltip-right class isn't working)
sed -i 's/tooltip-trigger tooltip-right" data-tooltip="Financial news summarization dataset with 2,000 financial news articles/tooltip-trigger tooltip-right" data-tooltip="Financial news summarization dataset with 2,000 financial news articles/g' text_summarization_table.html

# Add or update model tooltips to each file
for file in "${files[@]}"; do
  echo "Processing $file..."
  
  # For each model in our list
  for model in "${!model_tooltips[@]}"; do
    # Convert model name to a sed-safe string by escaping special characters
    model_sed_safe=$(echo "$model" | sed 's/[\/&]/\\&/g')
    tooltip_sed_safe=$(echo "${model_tooltips[$model]}" | sed 's/[\/&]/\\&/g')
    
    # First, update existing tooltips if they exist
    sed -i "s/data-title=\"$model_sed_safe\" data-tooltip=\"[^\"]*\"/data-title=\"$model_sed_safe\" data-tooltip=\"$tooltip_sed_safe\"/g" "$file"
    
    # Then, add tooltips to plain model names without tooltips
    sed -i "s/<td>$model_sed_safe<\/td>/<td class=\"tooltip-trigger tooltip-right\" data-title=\"$model_sed_safe\" data-tooltip=\"$tooltip_sed_safe\">$model_sed_safe<\/td>/g" "$file"
  done
  
  # Ensure tooltip script is included at the bottom of the file
  if ! grep -q "tooltips.js" "$file"; then
    echo "<script src=\"static/js/tooltips.js\"></script>" >> "$file"
  fi
  
  if ! grep -q "fixed-tooltips.js" "$file"; then
    echo "<script src=\"static/js/fixed-tooltips.js\"></script>" >> "$file"
  fi
  
  # Add tooltips.css if not already included
  if ! grep -q "tooltips.css" "$file"; then
    sed -i '1i<link rel="stylesheet" href="static/css/tooltips.css">' "$file"
  fi
done

# Also update results.html to ensure proper tooltip handling
echo "Adding tooltip fix to results.html..."

# Copy the model tooltip fixing code for all tabs to a new JS file
cat > static/js/model-tooltips.js << EOF
document.addEventListener('DOMContentLoaded', function() {
  // Fix model tooltips in all tabs
  function fixAllModelTooltips() {
    console.log("Fixing model tooltips in all tabs");
    
    // Find all model name cells (first column in all tables)
    const modelCells = document.querySelectorAll('td:first-child');
    
    // Process each model cell
    modelCells.forEach(cell => {
      // Skip cells that already have tooltips
      if (cell.classList.contains('tooltip-trigger')) {
        return;
      }
      
      // Get the model name
      const modelName = cell.textContent.trim();
      
      // Add tooltip-trigger class and position style
      cell.classList.add('tooltip-trigger');
      cell.style.position = 'relative';
      
      // Add data-title attribute with the model name
      cell.setAttribute('data-title', modelName);
      
      // Add descriptive tooltip based on model
      let tooltipText = "";
      
      // Set descriptive tooltip based on model name
      if (modelName.includes("GPT-4o")) {
        tooltipText = "OpenAI's advanced proprietary closed-source model. One of the top performers across most tasks.";
      } else if (modelName.includes("o1-mini")) {
        tooltipText = "Compact proprietary model from OpenAI. Shows strong performance on causal analysis tasks.";
      } else if (modelName.includes("Claude 3.5 Sonnet")) {
        tooltipText = "Anthropic's model optimized for advanced reasoning. Strong performer on text classification and summarization.";
      } else if (modelName.includes("Claude 3 Haiku")) {
        tooltipText = "Anthropic's smaller, efficiency-focused model in the Claude series.";
      } else if (modelName.includes("Gemini 1.5")) {
        tooltipText = "Google's highly capable proprietary model.";
      } else if (modelName.includes("Command R 7B")) {
        tooltipText = "A 7-billion parameter model from Cohere focused on instruction-following.";
      } else if (modelName.includes("Command R +")) {
        tooltipText = "An improved version of Cohere's Command R model.";
      } else if (modelName.includes("DeepSeek R1")) {
        tooltipText = "Open-weight model from DeepSeek AI with 671B parameters (MoE architecture). One of the top performers in the benchmark.";
      } else if (modelName.includes("DeepSeek-V3") || modelName.includes("DeepSeek V3")) {
        tooltipText = "Open-weight model from DeepSeek AI with 685B parameters (MoE architecture).";
      } else if (modelName.includes("DeepSeek LLM")) {
        tooltipText = "A 67-billion parameter chat-optimized model from DeepSeek AI.";
      } else if (modelName.includes("Llama 3 70B")) {
        tooltipText = "Meta's 70-billion parameter dense model, optimized for instruction-following tasks.";
      } else if (modelName.includes("Llama 3 8B")) {
        tooltipText = "Meta's 8-billion parameter efficient model variant.";
      } else if (modelName.includes("DBRX")) {
        tooltipText = "Databricks' 132B parameter MoE model.";
      } else if (modelName.includes("Mixtral-8x22B")) {
        tooltipText = "141B parameter MoE model from Mistral AI with eight 22-billion parameter sub-models.";
      } else if (modelName.includes("Mixtral-8x7B")) {
        tooltipText = "46.7B parameter MoE model from Mistral AI with eight 7-billion parameter sub-models.";
      } else if (modelName.includes("Mistral")) {
        tooltipText = "A 7-billion parameter instruction-tuned model from Mistral AI.";
      } else if (modelName.includes("Qwen 2")) {
        tooltipText = "Alibaba's 72-billion parameter instruction-following model.";
      } else if (modelName.includes("WizardLM")) {
        tooltipText = "A 176B parameter MoE model focused on complex reasoning.";
      } else if (modelName.includes("Gemma 2 27B")) {
        tooltipText = "Google's open-weight 27B parameter model.";
      } else if (modelName.includes("Gemma 2 9B")) {
        tooltipText = "Google's open-weight 9B parameter efficient model.";
      } else if (modelName.includes("QwQ-32B")) {
        tooltipText = "Qwen's experimental MoE model with 32B parameters.";
      } else if (modelName.includes("Jamba 1.5 Mini")) {
        tooltipText = "A compact variant of the Jamba model series.";
      } else if (modelName.includes("Jamba 1.5 Large")) {
        tooltipText = "An expanded variant of the Jamba model series.";
      } else {
        tooltipText = "A large language model from the FLaME evaluation benchmark.";
      }
      
      // Set the tooltip
      cell.setAttribute('data-tooltip', tooltipText);
    });
    
    // After adding attributes, run the tooltip fix
    if (window.fixProblemTooltips) {
      window.fixProblemTooltips();
    }
  }
  
  // Run on page load
  setTimeout(fixAllModelTooltips, 500);
  
  // Run when tabs are clicked
  const tabs = document.querySelectorAll('.tabs li');
  tabs.forEach(tab => {
    tab.addEventListener('click', () => {
      // Give time for content to be displayed
      setTimeout(fixAllModelTooltips, 200);
    });
  });
});
EOF

# Add script inclusion to results.html if not already there
if ! grep -q "model-tooltips.js" "results.html"; then
  # Add the script link before the closing body tag
  sed -i 's/<\/body>/<script src="static\/js\/model-tooltips.js"><\/script>\n<\/body>/g' "results.html"
fi

# Add tooltip fix to ensure all tabs initialize properly
if ! grep -q "window.fixProblemTooltips" "results.html"; then
  # Add call to fix all tooltips when tabs are clicked
  sed -i '/document\.addEventListener.*DOMContentLoaded/a \
  // Fix all tooltips in all tabs\
  setTimeout(function() {\
    if (window.fixProblemTooltips) {\
      window.fixProblemTooltips();\
    }\
  }, 500);' "results.html"
fi

echo "Fixed tooltips in all HTML files"