package com.ruoyi.biemo.nlp; import com.hankcs.hanlp.classification.classifiers.IClassifier; import com.hankcs.hanlp.classification.classifiers.NaiveBayesClassifier; import com.ruoyi.biemo.utils.TestUtility; import org.springframework.web.multipart.MultipartFile; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; /** * 情感分析 */ public class SentimentAnalysisUtils { public static final String CORPUS_FOLDER = TestUtility.ensureTestData("ChnSentiCorp情感分析酒店评论", "http://hanlp.linrunsoft.com/release/corpus/ChnSentiCorp.zip"); public static String analysis(String text){ String result = ""; IClassifier classifier = new NaiveBayesClassifier(); try { classifier.train(CORPUS_FOLDER); result = classifier.classify(text); } catch (IOException ioException) { ioException.printStackTrace(); } return result; } public static Object analysisImport(MultipartFile[] files, String name) { if(files!=null&&files.length>0){ File file1 = new File(CORPUS_FOLDER+"/"+name); if(!file1.getParentFile().exists()){ file1.mkdirs(); } if(!file1.exists()){ file1.mkdirs(); } for(int i=0;i<files.length;i++){ MultipartFile file = files[i]; try { File file2 = new File(file1.getCanonicalPath()+"/"+ file.getOriginalFilename()); file.transferTo(file2); } catch (IOException ioException) { ioException.printStackTrace(); } } IClassifier classifier = new NaiveBayesClassifier(); try { classifier.train(CORPUS_FOLDER); } catch (IOException ioException) { ioException.printStackTrace(); } } return "ok"; } public static List<String> getCurrSentiments(){ File file = new File(CORPUS_FOLDER); File[] dirs = file.listFiles(); List<String> result = new ArrayList<>(); if(dirs!=null&&dirs.length>0){ for(int i=0;i<dirs.length;i++){ if(dirs[i].isDirectory()){ result.add(dirs[i].getName()); } } } return result; } }