anonym.legal
Назад к блогуТехнические

Многоязычное NER: Почему ваша модель...

Модели NER на английском достигают 85-92% точности. Арабский и китайский? Часто 50-70%.

February 26, 20268 мин чтения
NERmultilingualArabic NLPChinese NLPPII detection

Проблема многоязычного NER

Модели распознавания именованных сущностей (NER), обученные на английском, показывают впечатляющие результаты — 85-92% F1 на стандартных тестах. Примените эти же модели к арабскому или китайскому? Точность часто падает до 50-70%.

Для обнаружения PII этот разрыв критичен. Уровень обнаружения в 70% означает, что 30% чувствительных данных остается незащищенным.

Почему английские модели не работают

1. Границы слов

Английский: Слова разделены пробелами.

"John Smith lives in New York"
→ ["John", "Smith", "lives", "in", "New", "York"]

Китайский: Нет границ слов вообще.

"张伟住在北京"
→ Требуется сегментация сначала: ["张伟", "住在", "北京"]

Арабский: Слова соединяются, и краткие гласные не пишутся.

"محمد يعيش في دبي"
→ Соединенный текст, справа налево, гласные опущены

Правила токенизации английского просто не применимы.

2. Морфологическая сложность

Английская морфология: Относительно простая

run → runs, running, ran

Арабская морфология: Чрезвычайно сложная (система корней и шаблонов)

كتب (k-t-b, "корень писать")
→ كاتب (писатель), كتاب (книга), مكتبة (библиотека), يكتب (он пишет)

Один арабский корень генерирует десятки связанных слов. Модели NER должны понимать эту систему деривации.

3. Конвенции имен

Английские имена: Имя Фамилия

John Smith, Mary Johnson

Арабские имена: Множество компонентов

محمد بن عبد الله بن عبد المطلب
(Мухаммад сын Абдуллы сын Абд аль-Муталиба)

Китайские имена: Фамилия первая, часто 2-3 символа в общем

张伟 (Чжан Вэй) - 2 символа
欧阳修 (Оуян Сю) - 3 символа

4. Направление письма

Английский: Слева направо (LTR) Арабский/Иврит: Справа налево (RTL) Смешанный текст: Двунаправленный (BiDi) - чрезвычайно сложный

Когда английское имя появляется в арабском тексте:

التقيت بـ John Smith في المؤتمر
(Я встретил Джона Смита на конференции)

Порядок рендеринга, логический порядок и порядок отображения все различаются.

Точность по языкам

Реальная производительность NER варьируется значительно:

ЯзыкСкриптДиапазон F1-ОценкиУровень сложности
АнглийскийЛатиница85-92%Низкий
НемецкийЛатиница82-88%Низкий
ФранцузскийЛатиница80-87%Низкий
ИспанскийЛатиница81-86%Низкий
РусскийКириллица75-83%Средний
АрабскийАрабский55-75%Высокий
КитайскийХандзи60-78%Высокий
ЯпонскийСмешанный65-80%Высокий
ТайскийТайский50-70%Очень высокий
ХиндиДеванагари60-75%Высокий

Языки со сложной морфологией, нелатинскими скриптами или отсутствием границ слов последовательно показывают низкие результаты.

Подход anonym.legal с тремя уровнями

Мы решаем многоязычное NER через три специализированных уровня:

Уровень 1: spaCy (25 языков)

Для языков с высоким ресурсом и хорошими моделями:

  • Английский, Немецкий, Французский, Испанский, Итальянский, Португальский
  • Нидерландский, Польский, Русский, Греческий
  • И еще 15 с надежной точностью

Уровень 2: Stanza (7 языков)

Для языков со сложной морфологией:

  • Арабский (морфология корней и шаблонов)
  • Китайский (требуется сегментация слов)
  • Японский (несколько скриптов)
  • Корейский (агглютинативный)
  • И еще 3

Уровень 3: XLM-RoBERTa (16 языков)

Для языков с низким ресурсом без специализированных моделей:

  • Тайский, Вьетнамский, Индонезийский
  • Хинди, Бенгальский, Тамильский
  • Иврит, Турецкий, Персидский
  • И другие

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

Входной текст с определением языка
        ↓
[Маршрутизатор языка]
        ↓
┌───────┴───────┐
↓               ↓
Языки с высоким ресурсом   Сложные/Языки с низким ресурсом
(spaCy)         (Stanza/XLM-RoBERTa)
↓               ↓
└───────┬───────┘
        ↓
[Накладка Regex для структурированных данных]
        ↓
[Объединение уверенности]
        ↓
Итоговые сущности

Накладка Regex

Некоторые шаблоны не зависят от языка:

  • Адреса электронной почты: [a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}
  • Кредитные карты: \d{4}[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}
  • Номера телефонов: Различные шаблоны для каждой страны

Мы применяем regex в первую очередь для структурированных данных, независимо от языка.

Обработка RTL-скриптов

Языки справа налево требуют специальной обработки:

Алгоритм двунаправленного текста

Когда арабский содержит английский:

Визуально: المؤتمر في John Smith بـ التقيت
Логически: التقيت بـ John Smith في المؤتمر

Наша обработка:

  1. Нормализовать до логического порядка
  2. Запустить NER в логическом порядке
  3. Соотнести позиции сущностей обратно к визуальному порядку
  4. Вернуть согласованные позиции для любого рендеринга

Обнаружение границ сущностей

Границы сущностей в арабском языке сложны:

"محمد" - только имя
"لمحمد" - "к Мухаммаду" (присоединенное предлог)
"ومحمد" - "и Мухаммад" (присоединенное соединение)

Мы удаляем аффиксы перед NER и прикрепляем их обратно после.

Код-свитчинг

Реальный текст часто смешивает языки:

"El meeting con John es at 3pm"
(Испанско-английское смешение)

"我今天跟John去shopping"
(Китайско-английское смешение)

Наш подход:

  1. Сегментировать текст по языкам
  2. Обрабатывать каждый сегмент с соответствующей моделью
  3. Объединить результаты с сопоставлением позиций

Эталоны производительности

Внутренние тесты на наборах данных с смешанными языками:

СценарийF1-Оценка
Только английский91%
Только немецкий88%
Только арабский79%
Только китайский81%
Смешение английского и арабского83%
Смешение английского и китайского84%
Смешение английского и немецкого89%

Наш гибридный подход поддерживает высокую точность даже на сложных языках.

Советы по внедрению

Для пользователей API

Укажите язык, когда он известен:

{
  "text": "محمد بن عبد الله",
  "language": "ar"
}

Позвольте нам автоматически определить, когда неизвестно:

{
  "text": "محمد بن عبد الله",
  "language": "auto"
}

Для пользователей настольного приложения

Приложение автоматически определяет язык для каждого документа. Для файлов с смешанными языками оно обрабатывает каждый сегмент соответствующим образом.

Для пользовательских типов сущностей

Пользовательские шаблоны должны учитывать скрипты:

# Английский идентификатор сотрудника
EMP-[0-9]{6}

# Арабский идентификатор сотрудника (включает арабские цифры)
موظف-[٠-٩0-9]{6}

Заключение

Модели NER, обученные на английском, не работают с неанглийским текстом, потому что языки принципиально различаются в:

  • Границах слов (или их отсутствии)
  • Морфологической сложности
  • Направлении письма
  • Конвенциях имен

Эффективное многоязычное обнаружение PII требует:

  1. Языковых моделей для сложных скриптов
  2. Шаблонов regex для структурированных данных
  3. Правильной обработки RTL/BiDi
  4. Поддержки код-свитчинга

anonym.legal поддерживает 48 языков через наш подход с тремя уровнями, достигая стабильной точности во всех.

Попробуйте сами:


Источники:

Готовы защитить ваши данные?

Начните анонимизацию PII с 285+ типов сущностей на 48 языках.