diff --git a/suimangVideo/src/main/java/com/iformall/language/LanguageDetect.java b/suimangVideo/src/main/java/com/iformall/language/LanguageDetect.java index 86c0fac..c9f75a2 100644 --- a/suimangVideo/src/main/java/com/iformall/language/LanguageDetect.java +++ b/suimangVideo/src/main/java/com/iformall/language/LanguageDetect.java @@ -21,50 +21,46 @@ import java.util.List; @Slf4j public class LanguageDetect { - private static Detector detect = null; + private static Detector initDetector(){ + try { +// DetectorFactory.loadProfile(Thread.currentThread().getContextClassLoader().getResource("profiles").getPath()); +// return DetectorFactory.create(); + List profile = new ArrayList<>(); - private static void initDetector(){ - if(detect == null){ try { - List profile = new ArrayList<>(); - - try { - PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(); - Resource[] resources = resolver.getResources("classpath:profiles/*"); - for (Resource resource:resources) { -// InputStream inputStream = resource.getInputStream(); -// String str = StreamUtils.copyToString(inputStream, StandardCharsets.UTF_8); -//// String str = new String(ByteStreams.toByteArray(inputStream)); -// profile.add(str); -// inputStream.close(); + PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(); + Resource[] resources = resolver.getResources("classpath:profiles/*"); + for (Resource resource:resources) { InputStream inputStream = resource.getInputStream(); - byte[] bytes = new byte[0]; - inputStream.read(bytes); - profile.add(new String(bytes)); - } - } catch (IOException e) { - e.printStackTrace(); - } - log.error("查看初始化数据--"+ JSONObject.toJSONString(profile)); - if(!profile.isEmpty()){ - DetectorFactory.loadProfile(profile); - detect = DetectorFactory.create(); +// String str = StreamUtils.copyToString(inputStream, StandardCharsets.UTF_8); + String str = new String(ByteStreams.toByteArray(inputStream)); + profile.add(str); +// InputStream inputStream = resource.getInputStream(); +// byte[] bytes = new byte[(int) resource.contentLength()]; +// inputStream.read(bytes); +// profile.add(new String(bytes)); } - } catch (LangDetectException e) { + } catch (IOException e) { e.printStackTrace(); - log.error("语言检测初始化错误。"+e.getMessage()); } + if(!profile.isEmpty()){ + DetectorFactory.clear(); + DetectorFactory.loadProfile(profile); + return DetectorFactory.create(); + } + } catch (LangDetectException e) { + e.printStackTrace(); + log.error("语言检测初始化错误。"+e.getMessage()); } + return null; } public static String detect(String str){ - if(detect == null){ - initDetector(); - } - if(detect == null){ + Detector detector = initDetector(); + if(detector == null){ return null; } - detect.append(str); + detector.append(str); // try { // detect.getProbabilities(); // } catch (LangDetectException e) { @@ -72,7 +68,7 @@ public class LanguageDetect { // } try { - String language = detect.detect(); + String language = detector.detect(); log.info("语种识别(" + str + ")-----" + language); return language; } catch (LangDetectException e) { @@ -104,6 +100,6 @@ public class LanguageDetect { // } // // } - System.out.println(detect("aa")); + System.out.println(detect("科技公司")); } } diff --git a/suimangVideo/src/main/java/com/iformall/language/LanguageExcutor.java b/suimangVideo/src/main/java/com/iformall/language/LanguageExcutor.java index c4054f6..dc01316 100644 --- a/suimangVideo/src/main/java/com/iformall/language/LanguageExcutor.java +++ b/suimangVideo/src/main/java/com/iformall/language/LanguageExcutor.java @@ -53,7 +53,7 @@ // // public static void main(String[] args) { // -// String res = detect("语种识别失败,可能文本太短或混合了多国语言 aa"); +// String res = detect("how old are you,think you"); // // System.out.println(res); // }