1需求说明
接入NLP厂商提供的接口,进行文本实体抽取,并能根据客户需求,进行NLP厂商SDK替换。
2设计目标
对外接口稳定:能适应用户的不同场景需求,保证接口不变; NLP厂商接口可灵活替换:可根据客户需求,和不同的NLP厂商合作,进行底层接口实现封装NLP厂商的SDK并注册成Spring bean,而不影响原有业务;
3接口描述
3.1UML类图
3.2对外接口 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)