| # mcp/nlp.py | |
| import spacy | |
| def load_model(): | |
| try: | |
| return spacy.load("en_core_web_sm") | |
| except OSError: | |
| raise RuntimeError( | |
| "spaCy model 'en_core_web_sm' is not installed. " | |
| "Ensure Dockerfile downloads it at build time." | |
| ) | |
| nlp = load_model() | |
| def extract_keywords(text: str): | |
| """Extract unique Named Entities longer than 2 characters.""" | |
| doc = nlp(text) | |
| return list({ent.text for ent in doc.ents if len(ent.text.strip()) > 2}) | |