HanLP情感分析

1.HanLP的入门使用

方式一、maven

为了方便用户,特提供内置了数据包的Portable版,只需在pom.xml加入:

  1. <dependency>
  2. <groupId>com.hankcs</groupId>
  3. <artifactId>hanlp</artifactId>
  4. <version>portable-1.8.1</version>
  5. </dependency>

方式二、下载jar、data、hanlp.properties

HanLP将数据与程序分离,给予用户自定义的自由。

1、下载:data.zip
下载后解压到任意目录,接下来通过配置文件告诉HanLP数据包的位置。

HanLP中的数据分为词典和模型,其中词典是词法分析必需的,模型是句法分析必需的。

data

├─dictionary
└─model
用户可以自行增删替换,如果不需要句法分析等功能的话,随时可以删除model文件夹。

模型跟词典没有绝对的区别,隐马模型被做成人人都可以编辑的词典形式,不代表它不是模型。
GitHub代码库中已经包含了data.zip中的词典,直接编译运行自动缓存即可;模型则需要额外下载。
2、下载jar和配置文件:hanlp-release.zip
配置文件的作用是告诉HanLP数据包的位置,只需修改第一行

root=D:/JavaProjects/HanLP/
为data的父目录即可,比如data目录是/Users/hankcs/Documents/data,那么root=/Users/hankcs/Documents/ 。

最后将hanlp.properties放入classpath即可,对于多数项目,都可以放到src或resources目录下,编译时IDE会自动将其复制到classpath中。

具体使用请参考 : HanLP

2.情感分析

步骤一、准备情感分析素材

01.png

步骤二、训练模型

  1. LinearSVMModel model = (LinearSVMModel) IOUtil.readObjectFrom(svmModelPath);
  2. if (model != null) return model;
  3. ResourceBundle hanlp = ResourceBundle.getBundle("hanlp");
  4. String sentimentPath = hanlp.getString("sentimentPath");
  5. String corpusFolderStr = String.format("%s%s", sentimentPath, StringConstant.SENTI_NEWS);
  6. File corpusFolder = new File(corpusFolderStr);
  7. if (!corpusFolder.exists() || !corpusFolder.isDirectory())
  8. {
  9. System.err.println("情感训练素材不存在");
  10. System.exit(1);
  11. }
  12. IClassifier classifier = new LinearSVMClassifier(); // 创建分类器,更高级的功能请参考IClassifier的接口定义
  13. classifier.train(corpusFolderStr); // 训练后的模型支持持久化,下次就不必训练了
  14. model = (LinearSVMModel) classifier.getModel();
  15. IOUtil.saveObjectTo(model, svmModelPath);
  16. return model;

步骤三、获取情感

  1. // 贝叶斯算法
  2. // NaiveBayesClassifier classifier = new NaiveBayesClassifier(CorpusUtility.trainOrLoadModel(svmModelPath));
  3. // 特征算法
  4. IClassifier classifier = new LinearSVMClassifier(CorpusUtility.trainOrLoadSVMModel(svmModelPath));
  5. String emotion = classifier.classify(text01);

HanLP情感分析