Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
|
@@ -154,12 +154,13 @@ entities_data = {}
|
|
| 154 |
|
| 155 |
if text_input and model is not None:
|
| 156 |
try:
|
|
|
|
| 157 |
if selected_language in ["German", "English - spaCy"]:
|
| 158 |
-
# Process the text with error handling for spaCy
|
| 159 |
doc = model(text_input)
|
| 160 |
entities = []
|
| 161 |
for ent in doc.ents:
|
| 162 |
try:
|
|
|
|
| 163 |
kb_qid = getattr(ent._, 'kb_qid', None)
|
| 164 |
url_wikidata = getattr(ent._, 'url_wikidata', None)
|
| 165 |
entities.append((ent.text, ent.label_, kb_qid, url_wikidata))
|
|
@@ -175,14 +176,15 @@ if text_input and model is not None:
|
|
| 175 |
|
| 176 |
else:
|
| 177 |
# === CORRECTED ReFinED PROCESSING LOGIC ===
|
| 178 |
-
|
| 179 |
-
|
| 180 |
-
|
| 181 |
-
|
| 182 |
-
|
| 183 |
-
if
|
| 184 |
-
|
| 185 |
-
|
|
|
|
| 186 |
entity_link = f"http://www.wikidata.org/entity/{entity_id}"
|
| 187 |
|
| 188 |
# Populate your dictionaries
|
|
@@ -191,7 +193,6 @@ if text_input and model is not None:
|
|
| 191 |
if entity_data is not None:
|
| 192 |
entities_data[entity_text] = entity_data
|
| 193 |
|
| 194 |
-
|
| 195 |
except Exception as e:
|
| 196 |
st.error(f"Error processing text: {e}")
|
| 197 |
if "entityfishing" in str(e).lower():
|
|
|
|
| 154 |
|
| 155 |
if text_input and model is not None:
|
| 156 |
try:
|
| 157 |
+
# This block for German/English spaCy is correct
|
| 158 |
if selected_language in ["German", "English - spaCy"]:
|
|
|
|
| 159 |
doc = model(text_input)
|
| 160 |
entities = []
|
| 161 |
for ent in doc.ents:
|
| 162 |
try:
|
| 163 |
+
# Safely get the custom attributes from entity-fishing
|
| 164 |
kb_qid = getattr(ent._, 'kb_qid', None)
|
| 165 |
url_wikidata = getattr(ent._, 'url_wikidata', None)
|
| 166 |
entities.append((ent.text, ent.label_, kb_qid, url_wikidata))
|
|
|
|
| 176 |
|
| 177 |
else:
|
| 178 |
# === CORRECTED ReFinED PROCESSING LOGIC ===
|
| 179 |
+
# The model processes the text and returns doc.ents, which is a tuple of Spans
|
| 180 |
+
spans = model.process_text(text_input)
|
| 181 |
+
|
| 182 |
+
# Iterate through the Span objects and use the correct custom attribute
|
| 183 |
+
for ent in spans:
|
| 184 |
+
# Safely check if the custom attribute exists and has a value
|
| 185 |
+
if hasattr(ent._, 'wikidata_id') and ent._.wikidata_id:
|
| 186 |
+
entity_text = ent.text
|
| 187 |
+
entity_id = ent._.wikidata_id # <-- THE FIX: Access via ._.
|
| 188 |
entity_link = f"http://www.wikidata.org/entity/{entity_id}"
|
| 189 |
|
| 190 |
# Populate your dictionaries
|
|
|
|
| 193 |
if entity_data is not None:
|
| 194 |
entities_data[entity_text] = entity_data
|
| 195 |
|
|
|
|
| 196 |
except Exception as e:
|
| 197 |
st.error(f"Error processing text: {e}")
|
| 198 |
if "entityfishing" in str(e).lower():
|