批量文本内容提取项目总结
主要实现批量文本中相关信息的提取。涉及手机号,姓名,相关日期,金额。
1、本项目是作为一个服务接口,使用Python开发,对方采用Java从MySQL数据库中读取批量文本信息,然后调用本接口服务,解析出相关的字段信息。跨语言平台间数据交互采用HTTP的方式。
服务端采用Flask框架,对方先将文本信息通过POST方式向服务地址发送(信息为JSON格式的字符串,如果不转为字符串传输会有乱码)。接口获取信息,进行内容提取,然后将解析出的字段信息封装成JSON格式进行返回;对方再将JSON信息进行解析。
# 服务端程序 # 服务端解析用户端传来的数据 param=json.loads(request.data.decode("utf-8")) id=param['id'] data=param['data'] ...... bid={'id':ID,'hostname':HOST_NAME,'hostphone':HOST_PHONE,'agentname':AGENT_NAME,'agentphone':AGENT_PHONE,'budget':BUDGET,'bid_open':BID_OPEN,'bid_close':BID_CLOSE} return jsonify(bid)
用户端程序如下:
// 用户端程序
// 发送POST请求 public static JSONObject doPostStr(String url,String param){ DefaultHttpClient httpClient = new DefaultHttpClient(); HttpPost httpPost = new HttpPost(url); JSONObject jsonObject = null; try { httpPost.setEntity(new StringEntity(param, "UTF-8")); HttpResponse response = httpClient.execute(httpPost); String result = EntityUtils.toString(response.getEntity(),"UTF-8"); jsonObject = JSONObject.fromObject(result); } catch (IOException e) { e.printStackTrace(); } return jsonObject; } // url为服务接口地址 // js为获取到解析后的内容提取信息,JSON格式 JSONObject jo=new JSONObject(); jo.put("id", id); jo.put("data", data); String param=jo.toString(); JSONObject js=doPostStr(url, param); System.out.println(js.toString());
2、信息的提取前期主要使用正则匹配和主要字段查找。提高准确度主要方法构造关键词列表。准确率可以达到80%以上,金额最高可以达到90%
3、提取过程分为两部分,粗提取和精提取。粗提取先进行相关字段范围提取,主要通过精确查找相关词;精提取主要使用正则进行匹配
4、通过已经提取的信息,可以对文本进行标注。BIEO。使用CNN或LSTM进行深度提取,进一步提高准确率和召回率。
5、测试过程,部署到阿里云服务器供对方测试,加快了测试过程。最终服务部署到其公司内部服务器进行局域网内部调用