1需求说明

  接入NLP厂商提供的接口,进行文本实体抽取,并能根据客户需求,进行NLP厂商SDK替换。

2设计目标

  对外接口稳定:能适应用户的不同场景需求,保证接口不变; NLP厂商接口可灵活替换:可根据客户需求,和不同的NLP厂商合作,进行底层接口实现封装NLP厂商的SDK并注册成Spring bean,而不影响原有业务;

3接口描述

3.1UML类图

UML类图

3.2对外接口 XiaozAiModelApi.java

XiaozAiModelApi.java

3.2.1 parseTextEntryByFile 通过文件抽取实体

1)输入参数:

名称 类型 是否必备 说明
modelId Long 用户在后台配置的NLP模型id,通过此模型ID可获取到模型其他相关信息
fileId Long V5系统中,上传的文件ID(一般是通过前端附件上传组件获取,根据NLP厂商支持能力,前端附件上传组件对文件进行类型过滤,如:阿里云支持的文件类型包括 docx、doc、html、pdf、txt)

2)输出参数:

名称 类型 是否必备 说明
TextEntryPredictResultBO Object 文本实体解析结果对象

TextEntryPredictResultBO结构:

名称 类型 是否必备 说明
predictStatus String 解析的结果是否完成
finished:完成了,不需要再做轮询操作;
progressing:还在解析过程中,需要前端继续轮询结果;
failed:失败,表示获取解析结果失败了,不需要再轮询了
textEntryList Array 抽取出的实体列表

TextEntryBO结构:

名称 类型 是否必备 说明
id String 实体主键ID
用于映射模型实体和业务数据的绑定关系,如:表单字段和该实体进行映射后,实体就可以正确填入到相关表单字段中
name String 实体名称
用于前端显示和实体抽取时进行字段名称对比,一般是中文
type String 实体类型,目前支持
text:文本;
longtext:文本域;
number:数字,支持小数点、百分号、科学计数;
date:日期 支持yyyy-MM-dd、yyyy/MM/dd等;
datetime:日期时间,支持yyyy-MM-dd hh:mm等
entryValue String NLP模型抽取出来的实体文本值

3.3底层NLP厂商接口灵活替换

  我们对NLP厂商提供的接口进行了二次封装,如需替换厂商接口只需重新实现我们封装的标准接口即可,具体步骤如下:

3.3.1 实现com.seeyon.apps.xiaoz.aisdk.aliyun.nlp.TeeApi类
接口名 入参 说明
predictModel modelId 必填
authInfo 必填
toParseFile 必填
fileType 必填
version 非必填
根据文件对象抽取的实体信息,一般是NLP厂商提供的同步解析接口,一般文字解析量在1000~10000字左右(根据NLP厂商能力的不同,解析量有所差别)

modelId[String] 模型ID,绑定的NLP厂商的模型ID,即通过此ID可以知道使用哪个模型来抽取实体信息;

authInfo[Object] NLP厂商认证信息,用户可根据合作的NLP厂商对此认证对象信息进行扩展,如AccessKeyId和AccessKeySecret;

toParseFile[File] 待解析的文件,一般是1000~10000字左右;

fileType[String] 待解析的文件的类型,可以是docx、doc、html、pdf、txt

version[String] 使用的模型版本号,如果没有传一般就使用最新的版本号
getPredictResultAsync asynInfo 必填
authInfo 必填
对于已经使用了异步解析接口而没有立即返回结果,需要此接口轮询NLP厂商去获取最终结果,轮询的次数根据解析结果是否完成对用户进行告知,如果没有解析完成,还需要重复调用此接口

asynInfo[Map] 异步信息,即异步接口没有立即返回最终结果而返回的中间值

authInfo[Map] NLP厂商认证信息,用户可根据合作的NLP厂商对此认证对象信息进行扩展
3.3.2 将TeeSdk的实现并进行bean注册(专门用于替换标准功能中的阿里云的SDK)

  根据Spring框架,客开伙伴需要将实现的类,以bean的方式注册到xml文件中; 在\WEB-INF\cfgHome\plugin\xiaoz\spring路径下找到spring-xiaoz-ai-sdk.xml文件中将原实现类的bean注册(bean的id必须是teeSdk)

teesdk

results matching ""

    No results matching ""