テキストアドレスインテリジェント識別コンポーネント(3)
前言
名前+電話+アドレス識別、前のテキストアドレスインテリジェント識別コンポーネント(一)とテキストアドレスインテリジェント識別コンポーネント(二)はアドレス識別の基本的な需要を満たすことができるが、絶えずテストと実際のシーンの使用を経て、まだいくつかの細部の問題が存在していることを発見し、黄河に行かないで心を込めて究極のバージョンのテキストアドレスインテリジェント識別コンポーネント(三)を実現した.宅配会社の識別機能を参考にして、自分で書き直してみましたが、手間がかからず、やっと作者の望む効果に達しました.
イニシアチブ
まず、倉考の前の考え方は、文字列を処理することによってマッチングの結果を達成する.電話はきっと手に入れることができて、住所なら、私たちは単独でデータベースに行って1.照合には、テキストの電話番号2を認識する必要がある.住所の省市区の入力が完全に正しいと仮定して、私たちは直接ライブラリの中のデータをマッチングして、それから省市区の名称を比較して、省市区の名称の前のは名前で、もし名前が詳しい住所の後ろにあるならば、それは識別できません3.住所の入力は2級または1級のみで、この場合は何度も処理する必要があり、まず省名を照会し、省名は空責で市名を照会し、市名に照会すると市名に基づいて対応する省名を照会し、市名の下の区名を照会し、テキストの住所と比較する.余計なことを言わないで,直接手を広げなさい.
注意事項
コードは比较的に长くて、それから业务は主に私の仕事の中の需要に対して研究开発して、だから関连するコードは変更したことがあって、住所のSQLを调べても今の表の构造の処理によって、関连する考え方を参考にして変更することができて、本人はこれが识别率が最も高くて、最もシーンに合います.
コードレンズは誰がピークですか?VX 18670040141 POS機办理,クレジットカード办理
名前+電話+アドレス識別、前のテキストアドレスインテリジェント識別コンポーネント(一)とテキストアドレスインテリジェント識別コンポーネント(二)はアドレス識別の基本的な需要を満たすことができるが、絶えずテストと実際のシーンの使用を経て、まだいくつかの細部の問題が存在していることを発見し、黄河に行かないで心を込めて究極のバージョンのテキストアドレスインテリジェント識別コンポーネント(三)を実現した.宅配会社の識別機能を参考にして、自分で書き直してみましたが、手間がかからず、やっと作者の望む効果に達しました.
イニシアチブ
まず、倉考の前の考え方は、文字列を処理することによってマッチングの結果を達成する.電話はきっと手に入れることができて、住所なら、私たちは単独でデータベースに行って1.照合には、テキストの電話番号2を認識する必要がある.住所の省市区の入力が完全に正しいと仮定して、私たちは直接ライブラリの中のデータをマッチングして、それから省市区の名称を比較して、省市区の名称の前のは名前で、もし名前が詳しい住所の後ろにあるならば、それは識別できません3.住所の入力は2級または1級のみで、この場合は何度も処理する必要があり、まず省名を照会し、省名は空責で市名を照会し、市名に照会すると市名に基づいて対応する省名を照会し、市名の下の区名を照会し、テキストの住所と比較する.余計なことを言わないで,直接手を広げなさい.
/**
service
text
*/
@Override
public Map<String, Object> getTextRecognitionInfo(String text) {
//
String details = text.replaceAll("\\pP|\\pS|\\s+", "").trim();
Map<String, Object> data = new HashMap<String, Object> ();
//
String phone = "";
Pattern phoneReg = Pattern.compile("\\d{7,17}");
Matcher phoneMatcher = phoneReg.matcher(details);
while (phoneMatcher.find()) {
phone = phoneMatcher.group();
}
phoneReg = Pattern.compile("1[345678]\\d{9}");
phoneMatcher = phoneReg.matcher(details);
while(phoneMatcher.find()) {
phone = phoneMatcher.group();
details = details.replaceFirst(phone, "");
}
data.put("phone", phone);
details = details.replaceFirst(phone, "");
//
RegionDTO region = regionMapper.getMatchingRecognition(details);
//
int provinceLength = 0;
String provinceTemp = "";
//
if (region != null) {
data.put("region", region);
String name = details.substring(0, details.indexOf(region.getProvince()));
data.put("name", name);
details = details.replaceFirst(name, "");
data.put("details", details.replaceFirst(region.getProvince()+region.getCity()+region.getCounty(), ""));
return data;
} else {
region = new RegionDTO();
//
List<KdRegion> provinceList = regionMapper.getRegionListByType(1);
for (KdRegion province : provinceList) {
String tem;
if (province.getRegionName().contains(" ")) {
tem = province.getRegionName().replace(" ","");
} else if (province.getRegionName().contains(" ")) {
tem = province.getRegionName().replace(" ","");
} else if (province.getRegionName().contains(" ")) {
tem = province.getRegionName().replace(" ","");
} else {
tem = province.getRegionName();
}
if (details.contains(tem)) {
if (tem.length() > provinceLength) {
provinceLength = tem.length();
provinceTemp = tem;
region.setProvince(province.getRegionName());
region.setProvinceCode(province.getRegionId());
}
}
}
}
String name = details.substring(0, details.indexOf(provinceTemp));
data.put("name", name);
details = details.replaceFirst(name, "");
details = details.replaceFirst(region.getProvince()==null ? "" : region.getProvince(), "").replaceFirst(provinceTemp, "");
String cityCode = "";
int cityLength = 0;
String cityTemp = "";
//
if (region.getProvince() != null) {
List<KdRegion> cityList = regionMapper.queryregionParentId(region.getProvinceCode());
for (KdRegion city : cityList) {
String tem;
if (city.getRegionName().contains(" ")) {
tem = city.getRegionName().replace(" ","");
} else if (city.getRegionName().contains(" ")) {
tem = city.getRegionName().replace(" ","");
} else if (city.getRegionName().contains(" ")) {
tem = city.getRegionName().replace(" ","");
} else if (city.getRegionName().contains(" ")) {
tem = city.getRegionName().replace(" ","");
} else if (city.getRegionName().contains(" ")) {
tem = city.getRegionName().replace(" ","");
} else if (city.getRegionName().contains(" ")) {
tem = city.getRegionName().replace(" ","");
} else {
tem = city.getRegionName();
}
if (details.contains(tem)) {
if (tem.length() > cityLength) {
cityLength = tem.length();
cityTemp = tem;
cityCode = city.getRegionId();
region.setCity(city.getRegionName());
}
}
}
} else {
List<KdRegion> cityList = regionMapper.getRegionListByType(2);
for (KdRegion city : cityList) {
String tem;
if (city.getRegionName().contains(" ")) {
tem = city.getRegionName().replace(" ","");
} else if (city.getRegionName().contains(" ")) {
tem = city.getRegionName().replace(" ","");
} else if (city.getRegionName().contains(" ")) {
tem = city.getRegionName().replace(" ","");
} else if (city.getRegionName().contains(" ")) {
tem = city.getRegionName().replace(" ","");
} else if (city.getRegionName().contains(" ")) {
tem = city.getRegionName().replace(" ","");
} else if (city.getRegionName().contains(" ")) {
tem = city.getRegionName().replace(" ","");
} else {
tem = city.getRegionName();
}
if (details.contains(tem)) {
if (tem.length() > cityLength) {
cityLength = tem.length();
cityTemp = tem;
cityCode = city.getRegionId();
region.setCity(city.getRegionName());
region.setProvinceCode(city.getRegionParentId());
region.setProvince(regionMapper.selectByPrimaryKey(city.getRegionParentId()).getRegionName());
}
}
}
}
name = details.substring(0, details.indexOf(cityTemp));
data.put("name", name);
details = details.replaceFirst(name, "");
details = details.replaceFirst(region.getCity()==null ? "" : region.getCity(), "").replaceFirst(cityTemp, "");
//
int countyLength = 0;
String countyTmp = "";
if (region.getCity() != null) {
List<KdRegion> countyList = regionMapper.queryregionParentId(cityCode);
for (KdRegion county : countyList) {
String tem;
if (county.getRegionName().contains(" ")) {
tem = county.getRegionName().replace(" ","");
} else if (county.getRegionName().contains(" ")) {
tem = county.getRegionName().replace(" ","");
} else if (county.getRegionName().contains(" ")) {
tem = county.getRegionName().replace(" ","");
} else if (county.getRegionName().contains(" ")) {
tem = county.getRegionName().replace(" ","");
} else if (county.getRegionName().contains(" ")) {
tem = county.getRegionName().replace(" ","");
} else if (county.getRegionName().contains(" ")) {
tem = county.getRegionName().replace(" ","");
} else if (county.getRegionName().contains(" ")) {
tem = county.getRegionName().replace(" ","");
} else if (county.getRegionName().contains(" ")) {
tem = county.getRegionName().replace(" ","");
} else if (county.getRegionName().contains(" ")) {
tem = county.getRegionName().replace(" ","");
} else {
tem = county.getRegionName();
}
if (details.contains(tem)) {
if (tem.length() > countyLength) {
countyLength = tem.length();
countyTmp = tem;
region.setCounty(county.getRegionName());
}
}
}
} else {
List<KdRegion> cityList = regionMapper.queryregionParentId(region.getProvinceCode());
for (KdRegion city : cityList) {
List<KdRegion> countyList = regionMapper.queryregionParentId(city.getRegionId());
for (KdRegion county : countyList) {
String tem;
if (county.getRegionName().contains(" ")) {
tem = county.getRegionName().replace(" ","");
} else if (county.getRegionName().contains(" ")) {
tem = county.getRegionName().replace(" ","");
} else if (county.getRegionName().contains(" ")) {
tem = county.getRegionName().replace(" ","");
} else if (county.getRegionName().contains(" ")) {
tem = county.getRegionName().replace(" ","");
} else if (county.getRegionName().contains(" ")) {
tem = county.getRegionName().replace(" ","");
} else if (county.getRegionName().contains(" ")) {
tem = county.getRegionName().replace(" ","");
} else if (county.getRegionName().contains(" ")) {
tem = county.getRegionName().replace(" ","");
} else if (county.getRegionName().contains(" ")) {
tem = county.getRegionName().replace(" ","");
} else if (county.getRegionName().contains(" ")) {
tem = county.getRegionName().replace(" ","");
} else {
tem = county.getRegionName();
}
if (details.contains(tem)) {
if (tem.length() > countyLength) {
countyLength = tem.length();
countyTmp = tem;
region.setCity(city.getRegionName());
region.setCounty(county.getRegionName());
}
}
}
// if (region.getCity() != null) {
// break;
// }
}
}
name = details.substring(0, details.indexOf(countyTmp));
data.put("name", name);
details = details.replaceFirst(name, "");
details = details.replaceFirst(region.getCounty()==null ? "" : region.getCounty(), "").replaceFirst(countyTmp, "");
data.put("region", region);
data.put("details", details);
return data;
}
注意事項
コードは比较的に长くて、それから业务は主に私の仕事の中の需要に対して研究开発して、だから関连するコードは変更したことがあって、住所のSQLを调べても今の表の构造の処理によって、関连する考え方を参考にして変更することができて、本人はこれが识别率が最も高くて、最もシーンに合います.
コードレンズは誰がピークですか?VX 18670040141 POS機办理,クレジットカード办理