基于Java的Web应用程序的NLP库(主题提取+情感分析)

时间:2012-05-02 18:19:21

标签: java nlp sentiment-analysis

我是一名大学生,正在寻找一个NLP库,在基于Java的Web应用程序中为夏季业余爱好项目进行主题提取和情感分析。

为您提供一些关于我正在尝试做什么的背景...我想构建一个基于Java的Web应用程序,它将从Reddit提交的标题中提取主题,以及确定OP的情绪。标题(如果可能的话)。

示例输入:

  • Reddit,我们从943,702个签名到反SOPA请愿书 3460313。反CISPA申请是691,768,这是一项广泛的法案 比SOPA更糟糕。请碰一下,然后让我们讨论进一步的措施 或者我们过去的努力是徒劳的。我们之前做过,我担心我们是 要求再做一次。
  • 我的朋友称他为“Ridiculously Photogenic Guy先生”
  • 精神错乱:CISPA变得更糟,然后通过匆匆投票

我目前正在尝试使用AlchemyAPI,但听起来好像存在更好的NLP库。优选地,我不会限制在给定时间段内有限数量的API请求(AlchemyAPI具有配额)。我听说过GATE,LingPipe和OpenNLP的名字 - 但是,我不确定它们是否符合我的需求。

我正在寻找有经验的用户的框架/库/ api建议,甚至更好的比较。我在NLP方面的经验非常有限,这就是为什么我在这里寻求帮助(ps:如果有人有任何资源可以学习更多,请访问www.nlp-class.org,请告诉我!):)

1 个答案:

答案 0 :(得分:4)

首先,我强烈建议使用python,因为NLP库比java更加用户友好,并且为单人项目维护的代码要少得多。

我无法想到任何关于任何分类的事情,所以我的建议是训练两个分类器,一个用于主题,一个用于情感。你必须标记数据和定义特征,但我认为这不会太难,特别是在你建立一个“情感”字词的字典时。标记数据是一个痛苦的屁股,但这和良好的功能是你如何获得良好的分类。

主题分类:

将NLTK与朴素贝叶斯分类器一起使用,并将特征定义为单词(小写),以及单词双字母和三元组。

情感分类:

与主题分类器相同的功能,但也有一个功能,即单词w在带有连接c的情感词典中。因此,“坏”一词意味着“不良情绪”。

一旦您积累了足够的培训/测试数据,您就可以根据需要训练分类器并优化功能,然后就可以针对您想要的任何其他数据运行分类器。

通用库(Java):

  • OpenNLP
  • LingPipe
  • 的Weka
  • 斯坦福大学的东西

库(Python):

  • NLTK
  • SciPy的