Java调用AI做智能数据清洗:实战文本纠错与格式化
一、前言
电商、CRM、企业内部系统里,数据质量问题永远是最头疼的问题之一。重复数据、格式混乱、信息缺失……传统规则引擎清洗规则越写越复杂,维护成本极高。
这一期我们换换口味,聊点接地气的:用AI帮Java做数据清洗。
二、痛点:传统规则清洗的困境
看几个典型例子:
| 问题类型 | 传统规则 | AI规则 |
|---|---|---|
| 手机号格式 | \\d{11}只能验证位数 | “帮我把各种格式的手机号统一成13812345678格式” |
| 地址清洗 | N条正则组合,漏了就得打补丁 | “提取出省份、城市、区县” |
| 商品标题去重 | 字符串相似度阈值,调参调到吐 | “找出相似的商品标题,给出相似度评分” |
| 错别字纠错 | 词库维护,效率低 | “请纠正以下商品描述中的错别字” |
AI的好处:规则就是自然语言,一条prompt搞定,不用写一堆正则。
三、实战:AI数据清洗服务
3.1 项目结构
data-cleaning-service/ ├── src/main/java/com/example/clean/ │ ├── DataCleaningService.java # 清洗服务 │ ├── DataCleaner.java # 各类清洗器 │ └── util/ │ └── AIClient.java # AI调用封装 ├── src/main/resources/ │ └── application.yml └── pom.xml3.2 AI客户端封装
importcom.openai.OpenAI;importcom.openai.models.*;publicclassAIClient{privatefinalOpenAIopenAI;publicAIClient(StringapiKey){this.openAI=OpenAI.builder().apiKey(apiKey).build();}/** * 通用文本处理 */publicStringprocess(Stringprompt,StringuserMessage){ChatModel.ChatCompletionCreateParamsparams=ChatModel.ChatCompletionCreateParams.builder().messages(ChatModel.ChatCompletionCreateParams.Messages.builder().role(ChatModel.ChatCompletionCreateParams.Messages.Role.SYSTEM).content(prompt).build(),ChatModel.ChatCompletionCreateParams.Messages.builder().role(ChatModel.ChatCompletionCreateParams.Messages.Role.USER).content(userMessage).build()).model("gpt-3.5-turbo")