Hacker News Digest

Тег: #ner

Постов: 2

SpaCy: Industrial-Strength Natural Language Processing (NLP) in Python (github.com)

spaCy — промышленная библиотека NLP на Python.
Быстрая, точная, поддерживает 70+ языков.

Основное

  • Установка
    pip install -U spacy
    python -m spacy download en_core_web_sm
    
  • Быстрый старт
    import spacy
    nlp = spacy.load("en_core_web_sm")
    doc = nlp("Apple is looking at buying U.K. startup for $1 billion")
    for ent in doc.ents:
        print(ent.text, ent.label_)
    

Возможности

  • токенизация, POS-теги, синтаксис, NER
  • готовые модели CNN/Transformer
  • обучение и дообучение
  • интеграция с PyTorch, Transformers, FastAPI
  • GPU/Apple Metal

Примеры

  • NER: выделение имён, дат, денег
  • Matcher: поиск паттернов
  • Projects: end-to-end пайплайны
  • spaCy LLM: LLM-интеграция без кода

Ресурсы

by marklit • 23 августа 2025 г. в 09:07 • 104 points

ОригиналHN

#spacy#python#nlp#pytorch#transformers#fastapi#ner#llm#machine-learning#natural-language-processing

Комментарии (40)

  • В эпоху LLM традиционный NLP (SpaCy) всё ещё нужен: дешевле, быстрее, работает на обычном железе и не требует постоянной оплаты провайдеру.
  • Участники хвалят SpaCy за отличный API, скорость, надёжность NER и удобство пайплайнов; активно используют в enterprise, RAG-метриках и даже на Raspberry Pi.
  • Некоторые задачи (классификация, сентимент) LLM решают хуже и дороже, поэтому возвращаются к дискриминативным моделям.
  • Сообщество отмечает, что проект немного сократился (v4 задерживается), но библиотека по-прежнему поддерживается и считается недооценённой.

Top Secret: Automatically filter sensitive information (thoughtbot.com)

Top Secret — новая open-source библиотека от thoughtbot для удаления чувствительных данных из произвольного текста.

Проблема: регулярки не ловят всё (имена, адреса, карты). Решение: смесь regex и NER (распознавание именованных сущностей) через гем mitie-ruby.

Как работает:

  1. TopSecret::Text.filter заменяет сущности на токены [PERSON_1], [LOCATION_1] и возвращает mapping.
  2. После ответа LLM вызываем TopSecret::FilteredText.restore, чтобы вернуть реальные значения.

Пример:

input  = "Ralph lives in Boston."
filtered = TopSecret::Text.filter(input)
#=> "[PERSON_1] lives in [LOCATION_1]."
mapping  = { PERSON_1: "Ralph", LOCATION_1: "Boston" }

response = "Hi [PERSON_1]! How is the weather in [LOCATION_1]?"
TopSecret::FilteredText.restore(response, mapping: mapping)
#=> "Hi Ralph! How is the weather in Boston?"

Подходит для чат-ботов, где нужно скрыть персональные данные, но сохранить контекст.
Код и демо: GitHub и стрим.

by thunderbong • 22 августа 2025 г. в 04:48 • 115 points

ОригиналHN

#ruby#mitie#ner#open-source#text-processing#data-privacy#chatbots

Комментарии (12)

  • Обсуждают лёгкий NER-фильтр на базе MITIE для автоматического скрытия чувствительных данных в строках.
  • US Marshalls уже заинтересовались такой «авто-редактурой».
  • Участники предупреждают: NER не 100 % точен, модель старая (~10 лет) и плохо переносится на новые домены.
  • Возникает вопрос, можно ли применять фильтр к стримингу/шерингу экрана: технически возможно через accessibility-API, но нужно определять координаты сущностей и бороться с ложными срабатываниями.
  • Для продакшена с длинными диалогами 1 с на инференс может быть медленно; логировать через LLM-фильтр тоже рискует «убить» скорость.