Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -72,10 +72,10 @@ def highlight_matching_words(text: str, query: str) -> str:
|
|
| 72 |
for token in tokens:
|
| 73 |
token_lc = token.lower()
|
| 74 |
if token_lc in query_words:
|
| 75 |
-
highlighted.append(f'<span
|
| 76 |
elif token.strip() and token.isalpha() and any(w in token_lc and w != token_lc for w in query_words):
|
| 77 |
def green_sub(m):
|
| 78 |
-
return f'<span
|
| 79 |
highlighted.append(partial_pattern.sub(green_sub, token))
|
| 80 |
else:
|
| 81 |
highlighted.append(token)
|
|
@@ -151,14 +151,82 @@ def format_results_html(results: List[Dict[str, Any]]) -> str:
|
|
| 151 |
return f'<div style="color:red">Error: {results[0]["Error"]}</div>'
|
| 152 |
html = [
|
| 153 |
'<style>',
|
| 154 |
-
'/*
|
| 155 |
-
'
|
| 156 |
-
'
|
| 157 |
-
'
|
| 158 |
-
'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 159 |
'}',
|
| 160 |
'</style>',
|
| 161 |
-
'<table
|
| 162 |
'<thead><tr>'
|
| 163 |
'<th>Reference</th><th>Text</th><th>Similarity</th><th>Book</th><th>Chapter</th><th>Verse</th>'
|
| 164 |
'</tr></thead><tbody>'
|
|
@@ -186,7 +254,7 @@ with gr.Blocks(title="Latin Vulgate Verse Similarity Search", theme=gr.themes.So
|
|
| 186 |
# Latin Vulgate Verse Similarity Search
|
| 187 |
|
| 188 |
Search for similar verses in the Latin Vulgate Bible using semantic similarity.
|
| 189 |
-
<br>Words matching your query will be
|
| 190 |
""")
|
| 191 |
with gr.Row():
|
| 192 |
query = gr.Textbox(
|
|
|
|
| 72 |
for token in tokens:
|
| 73 |
token_lc = token.lower()
|
| 74 |
if token_lc in query_words:
|
| 75 |
+
highlighted.append(f'<span class="exact-match">{token}</span>')
|
| 76 |
elif token.strip() and token.isalpha() and any(w in token_lc and w != token_lc for w in query_words):
|
| 77 |
def green_sub(m):
|
| 78 |
+
return f'<span class="partial-match">{m.group(0)}</span>'
|
| 79 |
highlighted.append(partial_pattern.sub(green_sub, token))
|
| 80 |
else:
|
| 81 |
highlighted.append(token)
|
|
|
|
| 151 |
return f'<div style="color:red">Error: {results[0]["Error"]}</div>'
|
| 152 |
html = [
|
| 153 |
'<style>',
|
| 154 |
+
'/* CSS variables for theming */',
|
| 155 |
+
':root {',
|
| 156 |
+
' --table-bg: #fff;',
|
| 157 |
+
' --table-text: #222;',
|
| 158 |
+
' --header-bg: #f4f1e9;',
|
| 159 |
+
' --row-even-bg: #f9f9f9;',
|
| 160 |
+
' --row-hover-bg: #e6e2d3;',
|
| 161 |
+
' --table-shadow: 0 2px 8px #e6e2d3;',
|
| 162 |
+
' --exact-match-bg: #ffeb3b;',
|
| 163 |
+
' --exact-match-text: #000;',
|
| 164 |
+
' --partial-match-bg: #c8e6c9;',
|
| 165 |
+
' --partial-match-text: #000;',
|
| 166 |
+
'}',
|
| 167 |
+
'',
|
| 168 |
+
'/* Dark mode styles */',
|
| 169 |
+
'@media (prefers-color-scheme: dark) {',
|
| 170 |
+
' :root {',
|
| 171 |
+
' --table-bg: #2d2d2d;',
|
| 172 |
+
' --table-text: #e0e0e0;',
|
| 173 |
+
' --header-bg: #3d3d3d;',
|
| 174 |
+
' --row-even-bg: #333333;',
|
| 175 |
+
' --row-hover-bg: #404040;',
|
| 176 |
+
' --table-shadow: 0 2px 8px rgba(0,0,0,0.5);',
|
| 177 |
+
' --exact-match-bg: #fbc02d;',
|
| 178 |
+
' --exact-match-text: #000;',
|
| 179 |
+
' --partial-match-bg: #4caf50;',
|
| 180 |
+
' --partial-match-text: #fff;',
|
| 181 |
+
' }',
|
| 182 |
+
'}',
|
| 183 |
+
'',
|
| 184 |
+
'/* Table styles */',
|
| 185 |
+
'table {',
|
| 186 |
+
' border-collapse: collapse;',
|
| 187 |
+
' width: 100%;',
|
| 188 |
+
' font-size: 1em;',
|
| 189 |
+
' background: var(--table-bg);',
|
| 190 |
+
' color: var(--table-text);',
|
| 191 |
+
' border-radius: 8px;',
|
| 192 |
+
' overflow: hidden;',
|
| 193 |
+
' box-shadow: var(--table-shadow);',
|
| 194 |
+
'}',
|
| 195 |
+
'',
|
| 196 |
+
'td, th {',
|
| 197 |
+
' padding: 8px;',
|
| 198 |
+
' vertical-align: top;',
|
| 199 |
+
'}',
|
| 200 |
+
'',
|
| 201 |
+
'th {',
|
| 202 |
+
' background: var(--header-bg);',
|
| 203 |
+
' font-weight: bold;',
|
| 204 |
+
'}',
|
| 205 |
+
'',
|
| 206 |
+
'tr:nth-child(even) {',
|
| 207 |
+
' background: var(--row-even-bg);',
|
| 208 |
+
'}',
|
| 209 |
+
'',
|
| 210 |
+
'tr:hover {',
|
| 211 |
+
' background: var(--row-hover-bg);',
|
| 212 |
+
'}',
|
| 213 |
+
'',
|
| 214 |
+
'/* Highlighting styles */',
|
| 215 |
+
'.exact-match {',
|
| 216 |
+
' background: var(--exact-match-bg);',
|
| 217 |
+
' color: var(--exact-match-text);',
|
| 218 |
+
' padding: 1px 2px;',
|
| 219 |
+
' border-radius: 2px;',
|
| 220 |
+
'}',
|
| 221 |
+
'',
|
| 222 |
+
'.partial-match {',
|
| 223 |
+
' background: var(--partial-match-bg);',
|
| 224 |
+
' color: var(--partial-match-text);',
|
| 225 |
+
' padding: 1px 2px;',
|
| 226 |
+
' border-radius: 2px;',
|
| 227 |
'}',
|
| 228 |
'</style>',
|
| 229 |
+
'<table>',
|
| 230 |
'<thead><tr>'
|
| 231 |
'<th>Reference</th><th>Text</th><th>Similarity</th><th>Book</th><th>Chapter</th><th>Verse</th>'
|
| 232 |
'</tr></thead><tbody>'
|
|
|
|
| 254 |
# Latin Vulgate Verse Similarity Search
|
| 255 |
|
| 256 |
Search for similar verses in the Latin Vulgate Bible using semantic similarity.
|
| 257 |
+
<br>Words matching your query will be highlighted (exact matches and partial matches).
|
| 258 |
""")
|
| 259 |
with gr.Row():
|
| 260 |
query = gr.Textbox(
|