HanLP情感分析
1.HanLP的入门使用
方式一、maven
为了方便用户,特提供内置了数据包的Portable版,只需在pom.xml加入:
<dependency>
<groupId>com.hankcs</groupId>
<artifactId>hanlp</artifactId>
<version>portable-1.8.1</version>
</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.情感分析
步骤一、准备情感分析素材
步骤二、训练模型
LinearSVMModel model = (LinearSVMModel) IOUtil.readObjectFrom(svmModelPath);
if (model != null) return model;
ResourceBundle hanlp = ResourceBundle.getBundle("hanlp");
String sentimentPath = hanlp.getString("sentimentPath");
String corpusFolderStr = String.format("%s%s", sentimentPath, StringConstant.SENTI_NEWS);
File corpusFolder = new File(corpusFolderStr);
if (!corpusFolder.exists() || !corpusFolder.isDirectory())
{
System.err.println("情感训练素材不存在");
System.exit(1);
}
IClassifier classifier = new LinearSVMClassifier(); // 创建分类器,更高级的功能请参考IClassifier的接口定义
classifier.train(corpusFolderStr); // 训练后的模型支持持久化,下次就不必训练了
model = (LinearSVMModel) classifier.getModel();
IOUtil.saveObjectTo(model, svmModelPath);
return model;
步骤三、获取情感
// 贝叶斯算法
// NaiveBayesClassifier classifier = new NaiveBayesClassifier(CorpusUtility.trainOrLoadModel(svmModelPath));
// 特征算法
IClassifier classifier = new LinearSVMClassifier(CorpusUtility.trainOrLoadSVMModel(svmModelPath));
String emotion = classifier.classify(text01);