Spaces:
Runtime error
Runtime error
| import sys | |
| sys.modules["bertopic.plotting"] = None # Blocks plotting from loading | |
| from fastapi import FastAPI, Request | |
| from fastapi.middleware.cors import CORSMiddleware | |
| from bertopic._bertopic import BERTopic # internal module that avoids plotting | |
| from sentence_transformers import SentenceTransformer | |
| import uvicorn | |
| app = FastAPI() | |
| app.add_middleware( | |
| CORSMiddleware, | |
| allow_origins=["*"], | |
| allow_methods=["*"], | |
| allow_headers=["*"] | |
| ) | |
| # Czech-capable multilingual model | |
| embedding_model = SentenceTransformer("paraphrase-multilingual-MiniLM-L12-v2") | |
| # 👇 THIS is the crucial fix: disable UMAP to avoid caching and plotting imports | |
| topic_model = BERTopic(embedding_model=embedding_model, umap_model=None) | |
| async def segment_topics(request: Request): | |
| payload = await request.json() | |
| texts = payload.get("texts", []) | |
| starts = payload.get("starts", []) | |
| ends = payload.get("ends", []) | |
| topics, _ = topic_model.fit_transform(texts) | |
| output = [] | |
| for i, (text, topic, start, end) in enumerate(zip(texts, topics, starts, ends)): | |
| output.append({ | |
| "text": text, | |
| "topic": int(topic), | |
| "start": start, | |
| "end": end | |
| }) | |
| return output | |