实体抽取(EntityExtractor)使用指导:从文字里找出电话、地址、日期、快递单号

« 返回

机器学习套件(ML Kit)组件在在线版和教育版中提供,离线版(含机房版)不包含。

它能做什么

实体抽取从一段文字里自动找出地址、日期时间、电话、邮箱、网址、金额、快递单号、航班号、ISBN、IBAN、银行卡号等,并给出每一处在原文中的位置。常用于从短信里提取验证信息、从聊天记录里提取联系方式。抽取在本地完成。

准备工作

  • 模型下载:语言模型首次使用需联网从 Google 服务器下载(国内网络可能失败),下载后离线可用;「抽取」时没下载会自动先下载。
  • 语言:「语言」默认 chinese,可选值见「支持的语言」属性。
  • 联机调试:安卓上用 AI 伴侣调试需要安装 MLKit 版 AI 伴侣(应用宝,包名 cn.fun123.appinventor);普通版伴侣不含识别引擎,调用时会触发「屏幕.出现错误时」(错误码 4722)。直接打包 APK 安装测试不受影响。
  • 安装包体积:只有用到本组件的 App 才会打包它的识别引擎与模型,体积以编译结果为准。
  • 鸿蒙:完整支持:调用系统自然语言能力,模型由系统提供,「下载模型」直接触发「模型下载完成」;类型编号相同,另有人名 101、验证码 102、身份证号 103 三种鸿蒙独有类型。

案例一:抽取信息

把文字交给「抽取实体」,结果事件给出数量和 JSON:

when 按钮_抽取.Click() {
  实体抽取1.Extract(文本输入框_文本.Text)
}
when 实体抽取1.GotEntities(数量, 结果JSON) {
  标签_状态.Text = join("找到 ", 数量, " 处信息")
}
when 实体抽取1.NoEntityFound(文本) {
  标签_状态.Text = "没有找到电话、地址、日期这类信息"
}

案例二:逐条列出类型和原文

每一处结果含原文、起止位置和类型(编号与名称):

when 实体抽取1.GotEntities(数量, 结果JSON) {
  var 行 = list()
  foreach 项 in Web客户端1.JsonTextDecodeWithDictionaries(结果JSON) {
    var 类型 = select(dictget(项, "entities", list(makedict())), 1)
    listAdd(行, join(dictget(类型, "name", ""), ":", dictget(项, "text", "")))
  }
  列表显示框_实体.Elements = 行
}

结果数据说明

「结果JSON」每项:{"text":"010-12345678","start":40,"end":52,"entities":[{"type":8,"name":"PHONE"}]}。类型名称:ADDRESS 地址、DATE_TIME 日期时间、EMAIL 邮箱、FLIGHT_NUMBER 航班号、PHONE 电话、TRACKING_NUMBER 快递单号、URL 网址、MONEY 金额等;「类型名称」方法把编号转成名称。

常见问题

现象 原因与处理
抽取失败提示下载 首次需联网下载模型;或先点「下载模型」
有的信息没抽出来 格式太随意时识别不到;电话号码带区号更容易识别

完整 .aia 源码与操作指导

下载 .aia 源码

导入 EntityExtractorDemo.aia 后可以直接打包 APK 运行;用 AI 伴侣联机调试请安装 MLKit 版 AI 伴侣。源码文件已通过正式编辑器载入、后台导入和 APK 编译校验;真机识别效果请以实际设备为准。

功能 操作 预期结果
抽取示例文本 直接点「抽取」 列出快递单号、日期时间、地址、电话、邮箱
自己的文字 粘贴一段短信再抽取 列出其中的电话、网址等
下载模型 点「下载模型」 提示模型已就绪

案例界面与积木源码在仓库 docs/markdown/reference/components/guide/examples/EntityExtractorDemo/,SHA-256:50bb8db7d0884dcd20ab0ea62ce32e80b15310cb134a3fa2e14d5b758f6abefa。

文档反馈