我正在尝试使用CoreNLP(Java)对大量产品评论进行情感分析。总体而言,我认为分析的准确性相当不错。据我所知,我使用的模型最初是使用电影评论创建的,因此它并非百分之百适用于分析产品评论。我想知道如何“增强”我的分析准确性。
我主要考虑的是除了产品评论文本外,我还有一个用户提供的星级评分。该值范围从1到5,其中1星是最低的。我希望在生成情感得分时考虑星级评分,因为它更准确地反映了用户对特定产品的感受。在CoreNLP中,是否有最佳方法使星级评分因素纳入情感分析评分中?我的分析代码类似于以下内容:
我主要考虑的是除了产品评论文本外,我还有一个用户提供的星级评分。该值范围从1到5,其中1星是最低的。我希望在生成情感得分时考虑星级评分,因为它更准确地反映了用户对特定产品的感受。在CoreNLP中,是否有最佳方法使星级评分因素纳入情感分析评分中?我的分析代码类似于以下内容:
List<ProductReview> reviews = this.reviewRepository.findAll();
for (ProductReview review : reviews) {
Properties props = new Properties();
props.setProperty("annotators", "tokenize, ssplit, pos, lemma, ner, parse, dcoref, sentiment");
props.put("ner.model", "edu/stanford/nlp/models/ner/english.all.3class.distsim.crf.ser.gz");
StanfordCoreNLP pipeline = new StanfordCoreNLP(props);
int starRating = review.getStarRating();
String reviewText = review.getTitle() + " : " + review.getReviewText();
if (!StringUtils.isEmpty(reviewText)) {
int longest = 0;
int mainSentiment = 0;
Annotation annotation = pipeline.process(reviewText);
String sentimentStr = null;
List<CoreMap> sentences = annotation.get(CoreAnnotations.SentencesAnnotation.class);
for (CoreMap sentence : sentences) {
Tree sentimentTree = sentence.get(SentimentCoreAnnotations.SentimentAnnotatedTree.class);
int sentiment = RNNCoreAnnotations.getPredictedClass(sentimentTree) - 2;
String partText = sentence.toString();
if (partText.length() > longest) {
mainSentiment = sentiment;
sentimentStr = sentence.get(SentimentCoreAnnotations.SentimentClass.class);
longest = partText.length();
}
}
}
}
我该如何最好地将星级评分(或其他信息,例如对最有用的产品评论的投票等)纳入CoreNLP正在执行的分析中?这是我必须单独完成的事情吗?还是有一种方法可以直接将附加数据纳入情感分析引擎中?