返回博客技术

多语言命名实体识别:为什么您训练的英语模型在阿拉伯语上失败

英语命名实体识别模型的准确率达到85-92%。阿拉伯语和中文呢?通常只有50-70%。了解技术挑战以及如何构建真正的多语言个人身份信息检测。

February 26, 20268 分钟阅读
NERmultilingualArabic NLPChinese NLPPII detection

多语言命名实体识别挑战

在英语上训练的命名实体识别(NER)模型取得了令人印象深刻的结果——在标准基准上F1分数达到85-92%。将这些模型应用于阿拉伯语或中文时?准确率通常下降到50-70%。

对于个人身份信息检测,这一差距至关重要。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

阿拉伯语名字: 多个组成部分

محمد بن عبد الله بن عبد المطلب
(Muhammad son-of Abdullah son-of Abdul-Muttalib)

中文名字: 姓在前,通常总共2-3个字符

张伟 (Zhang Wei) - 2个字符
欧阳修 (Ouyang Xiu) - 3个字符

4. 书写方向

英语: 从左到右(LTR) 阿拉伯语/希伯来语: 从右到左(RTL) 混合文本: 双向(BiDi) - 极其复杂

当一个英语名字出现在阿拉伯语文本中时:

التقيت بـ John Smith في المؤتمر
(我在会议上遇见了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问题:

第一层:spaCy(25种语言)

针对资源丰富的语言和良好的模型:

  • 英语、德语、法语、西班牙语、意大利语、葡萄牙语
  • 荷兰语、波兰语、俄语、希腊语
  • 还有15种准确性可靠的语言

第二层:Stanza(7种语言)

针对具有复杂形态的语言:

  • 阿拉伯语(根-模式形态学)
  • 中文(需要分词)
  • 日语(多种书写系统)
  • 韩语(粘着语)
  • 还有3种

第三层:XLM-RoBERTa(16种语言)

针对没有专用模型的低资源语言:

  • 泰语、越南语、印尼语
  • 印地语、孟加拉语、泰米尔语
  • 希伯来语、土耳其语、波斯语
  • 还有更多

工作原理

输入文本与语言检测
        ↓
[语言路由器]
        ↓
┌───────┴───────┐
↓               ↓
高资源       复杂/低资源
(spaCy)         (Stanza/XLM-RoBERTa)
↓               ↓
└───────┬───────┘
        ↓
[用于结构化数据的正则表达式覆盖]
        ↓
[置信度合并]
        ↓
最终实体

正则表达式覆盖

一些模式与语言无关:

  • 电子邮件地址:[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}
  • 信用卡:\d{4}[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}
  • 电话号码:每个国家的各种模式

我们首先应用正则表达式以获取结构化数据,无论语言如何。

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"
}

对于桌面应用程序用户

该应用程序会自动检测每个文档的语言。对于混合语言文件,它会适当地处理每个段落。

对于自定义实体类型

自定义模式应考虑书写系统:

# 英语员工ID
EMP-[0-9]{6}

# 阿拉伯语员工ID(包括阿拉伯数字)
موظف-[٠-٩0-9]{6}

结论

在非英语文本上,英语训练的NER模型失败是因为语言在以下方面根本不同:

  • 单词边界(或缺乏)
  • 形态复杂性
  • 书写方向
  • 名字惯例

有效的多语言个人身份信息检测需要:

  1. 针对复杂书写系统的特定语言模型
  2. 用于结构化数据的正则表达式模式
  3. 适当的RTL/BiDi处理
  4. 代码切换支持

anonym.legal通过我们的三层方法支持48种语言,在所有语言中实现一致的准确性。

亲自试试:


来源:

准备好保护您的数据了吗?

开始使用 285 种实体类型在 48 种语言中匿名化 PII。