Named Entity Recognition: Complete Implementation

Building production NER systems with LLMs and spaCy

返回教程列表
进阶12 分钟

Named Entity Recognition: Complete Implementation

Building production NER systems with LLMs and spaCy

Named Entity Recognition Overview Building production NER systems with LLMs and spaCy. This guide provides practical, production-ready implementations. **Category**: nlp **Primary Tool**: spacy **Tags**: nlp, ner, text-processing Prerequisite

nlpnertext-processingspacypython

Named Entity Recognition

Overview

Building production NER systems with LLMs and spaCy. This guide provides practical, production-ready implementations.

Category: nlp Primary Tool: spacy Tags: nlp, ner, text-processing

Prerequisites

bash
pip install openai anthropic spacy python-dotenv
export OPENAI_API_KEY="sk-..."

Core Implementation

python
import os
from openai import OpenAI
from typing import Optional, Any
import json

client = OpenAI()

class Named_Entity_Recognition: """Named Entity Recognition Building production NER systems with LLMs and spaCy """ def __init__(self, model: str = "gpt-4o", temperature: float = 0.3): self.client = OpenAI() self.model = model self.temperature = temperature self.system = """You are an AI expert in nlp. Provide accurate, practical, production-ready assistance. Be clear, concise, and well-structured.""" def run(self, query: str, context: Optional[dict] = None) -> dict: """Execute the main workflow.""" messages = [{"role": "system", "content": self.system}] if context: messages.append({ "role": "user", "content": f"Context: {json.dumps(context, indent=2)}" }) messages.append({"role": "user", "content": query}) response = self.client.chat.completions.create( model=self.model, messages=messages, temperature=self.temperature, max_tokens=2000 ) return { "output": response.choices[0].message.content, "model": self.model, "tokens": response.usage.total_tokens, "category": "nlp" } def batch_run(self, queries: list[str]) -> list[dict]: """Process multiple queries.""" return [self.run(q) for q in queries]

Usage

tool_instance = Named_Entity_Recognition() result = tool_instance.run("How do I implement named entity recognition?") print(result["output"])

Advanced Usage

python
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel

app = FastAPI(title="Named Entity Recognition API") tool_instance = Named_Entity_Recognition()

class Request(BaseModel): query: str context: dict = {}

@app.post("/run") async def run_endpoint(req: Request): try: result = tool_instance.run(req.query, req.context) return result except Exception as e: raise HTTPException(status_code=500, detail=str(e))

@app.get("/health") async def health(): return {"status": "ok", "tool": "Named Entity Recognition"}

Best Practices

  • Input validation — always validate and sanitize inputs
  • Error handling — handle API failures gracefully with retries
  • Rate limiting — respect API rate limits with backoff
  • Caching — cache responses to reduce costs
  • Monitoring — track usage, costs, and quality metrics
  • Testing

    python
    import pytest

    @pytest.fixture def tool(): return Named_Entity_Recognition(model="gpt-4o-mini")

    def test_basic_functionality(tool): result = tool.run("Test query for Named Entity Recognition") assert "output" in result assert len(result["output"]) > 10 assert result["category"] == "nlp"

    def test_batch_processing(tool): queries = ["Query 1", "Query 2", "Query 3"] results = tool.batch_run(queries) assert len(results) == 3 assert all("output" in r for r in results)

    Resources

  • OpenAI API: https://platform.openai.com/docs
  • spacy documentation
  • Related tutorials on nlp, ner, text-processing
  • 相关工具

    spacypython