Это структурированный линейный классификатор поверх эмбеддингов.
Минимальная оценка качества
Для NER обычно используют:
Precision
Recall
F1-score
Precision = \frac{TP}{TP + FP}
Recall = \frac{TP}{TP + FN}
F1 = 2 \cdot \frac{Precision \cdot Recall}{Precision + Recall}
Важно: в NER ошибка в границе сущности – это ошибка целиком.
Если модель предсказала:
вместо:
Это считается неправильной сущностью.
Иллюстрация процесса обучения
[PLACEHOLDER_IMAGE_FINE_TUNING]
Промпт для изображения:
Create a simple diagram illustrating NER fine-tuning. Show: labeled text with entity spans → feature extraction → training process → updated NER model. Minimal technical style, white background, arrows between blocks, suitable for programming book.
Что если использовать Transformers
Если вы дообучаете BERT-подобную модель:
Загружаете предобученную модель
Добавляете classification head
Обучаете на размеченном корпусе
Формально:
h_i = \text{Transformer}(x)
P(y_i) = \text{softmax}(W h_i)
Fine-tuning – это обновление весов трансформера и классификатора.
Обычно это делается в Python (HuggingFace), а PHP используется только для inference.
<?php
require 'vendor/autoload.php';
$ner = new \Mitie\Ner('/path/to/new_ner_model.dat');
$text = "Contract #C-2025-001 was signed by Michael Brown in Berlin.";
$entities = $ner->extractEntities($text);
foreach ($entities as $entity) {
echo $entity->getTag() . " → " . $entity->getValue() . "\n";
}
CONTRACT_ID → C-2025-001
PERSON → Michael Brown
LOCATION → Berlin