Update app.py
Browse files
app.py
CHANGED
@@ -75,10 +75,10 @@ def load_symptom_model():
|
|
75 |
try:
|
76 |
model = pipeline(
|
77 |
"text-classification",
|
78 |
-
model="
|
79 |
device=-1
|
80 |
)
|
81 |
-
logger.warning("Fallback to
|
82 |
return model
|
83 |
except Exception as fallback_e:
|
84 |
logger.error(f"Fallback model failed: {str(fallback_e)}")
|
@@ -185,25 +185,28 @@ def analyze_symptoms(text):
|
|
185 |
result = symptom_classifier(text)
|
186 |
logger.debug(f"Model output: {result}")
|
187 |
|
188 |
-
# Handle
|
189 |
-
if
|
190 |
-
logger.warning("
|
191 |
return "No health condition detected", 0.0
|
192 |
if isinstance(result, tuple):
|
193 |
-
logger.
|
194 |
-
result = list(result)
|
195 |
if not isinstance(result, list) or len(result) == 0:
|
196 |
logger.warning(f"Invalid model output: {result}")
|
197 |
return "No health condition detected", 0.0
|
198 |
-
if not isinstance(result[0], dict)
|
199 |
logger.warning(f"Invalid result structure: {result[0]}")
|
200 |
return "No health condition detected", 0.0
|
|
|
|
|
|
|
201 |
|
202 |
prediction = result[0]["label"]
|
203 |
score = result[0]["score"]
|
204 |
if is_fallback_model:
|
205 |
-
logger.warning("Using fallback model")
|
206 |
-
prediction = f"{prediction} (
|
207 |
logger.info(f"Prediction: {prediction}, Score: {score:.4f}")
|
208 |
return prediction, score
|
209 |
except Exception as e:
|
@@ -249,7 +252,7 @@ def analyze_voice(audio_file):
|
|
249 |
|
250 |
unique_path = os.path.join(
|
251 |
temp_dir,
|
252 |
-
f"audio_{datetime.utcnow().strftime('%Y%m%d%H%M%S%f')}_{os.path.basename(audio_file)}"
|
253 |
)
|
254 |
try:
|
255 |
shutil.copy(audio_file, unique_path)
|
|
|
75 |
try:
|
76 |
model = pipeline(
|
77 |
"text-classification",
|
78 |
+
model="dmis-lab/biobert-base-cased-v1.2",
|
79 |
device=-1
|
80 |
)
|
81 |
+
logger.warning("Fallback to biobert-base-cased-v1.2 model")
|
82 |
return model
|
83 |
except Exception as fallback_e:
|
84 |
logger.error(f"Fallback model failed: {str(fallback_e)}")
|
|
|
185 |
result = symptom_classifier(text)
|
186 |
logger.debug(f"Model output: {result}")
|
187 |
|
188 |
+
# Handle all possible output structures
|
189 |
+
if result is None or isinstance(result, (str, int, float)):
|
190 |
+
logger.warning(f"Invalid model output: {result}")
|
191 |
return "No health condition detected", 0.0
|
192 |
if isinstance(result, tuple):
|
193 |
+
logger.debug(f"Converting tuple to list: {result}")
|
194 |
+
result = list(result)
|
195 |
if not isinstance(result, list) or len(result) == 0:
|
196 |
logger.warning(f"Invalid model output: {result}")
|
197 |
return "No health condition detected", 0.0
|
198 |
+
if not isinstance(result[0], dict):
|
199 |
logger.warning(f"Invalid result structure: {result[0]}")
|
200 |
return "No health condition detected", 0.0
|
201 |
+
if not all(k in result[0] for k in ["label", "score"]):
|
202 |
+
logger.warning(f"Missing label or score in result: {result[0]}")
|
203 |
+
return "No health condition detected", 0.0
|
204 |
|
205 |
prediction = result[0]["label"]
|
206 |
score = result[0]["score"]
|
207 |
if is_fallback_model:
|
208 |
+
logger.warning("Using fallback BioBERT model")
|
209 |
+
prediction = f"{prediction} (biobert)"
|
210 |
logger.info(f"Prediction: {prediction}, Score: {score:.4f}")
|
211 |
return prediction, score
|
212 |
except Exception as e:
|
|
|
252 |
|
253 |
unique_path = os.path.join(
|
254 |
temp_dir,
|
255 |
+
f"audio_{datetime.utcnow().strftime('%Y%m%d%H%M%S%f')}_{os.path.basename(audio_file or 'unknown.wav')}"
|
256 |
)
|
257 |
try:
|
258 |
shutil.copy(audio_file, unique_path)
|