我正在尝试训练朴素贝叶斯分类器,从情绪中提取正/负词.例:
我喜欢这部电影 :))
我讨厌下雨的时候:(
我的想法是根据所使用的emoctions提取正面或负面的句子,但是为了训练分类器并将其持久化到数据库中.
问题是我有超过100万个这样的句子,所以如果我逐字训练,数据库就会折腾.我想删除所有不相关的单词示例'I','this','when','it',以便我必须进行数据库查询的次数较少.
请帮我解决这个问题,向我建议更好的方法
谢谢
我需要与正面和负面的单词的列表的权重根据他们是多么的强大和周分配给的话.我有 :
1.)WordNet - 它为每个单词提供+或 - 分数.
2.)SentiWordNet - 给出[0,1]范围内的正负值.
我用几句话检查了这些,
爱 - wordNet给出了名词和动词的0.0,我不知道为什么我认为它至少应该是积极的因素.
压制 - wordNet给出-9.93
- SentiWordNet给出了pos和neg的0.0.(应该是否定的)
休息 - wordNet - 2.488
- SentiWordNet - {pos - 0.125,neg - 0.5}(应为正)
我需要一些帮助来决定使用哪一个.
谢谢.
所以,这个问题可能有点天真,但我想要问Stackoverflow友好的人不会受伤.
我现在的公司已经在NLP上使用第三方API了一段时间了.我们基本上对一个字符串进行URL编码并将其发送出去,然后他们为我们提取某些实体(我们有一个我们正在查找的实体列表)并返回一个实体:情感的json映射.我们最近决定将这个项目改为内部.
我过去两天一直在研究NLTK,Stanford NLP和lingpipe,并且无法弄清楚我是否正在重新发明这个项目的轮子.
我们已经拥有包含原始非结构化文本的大量表格,以及包含该文本中提取的实体及其情绪的另一个表格.实体是单个单词.例如:
非结构化文本:现在用于床.这不是最好的.
实体:床
情绪:消极
我认为这意味着我们拥有培训数据(非结构化文本)以及实体和情感.现在我如何在其中一个NLP框架上使用此培训数据并获得我们想要的内容?没有线索.我有点步骤,但不确定:
但是,对于我上面提到的情况,这应该是失败的,因为它用2个不同的句子谈论床?
所以问题 - 是否有人知道完成上述任务的最佳框架是什么,以及相同的任何教程(注意:我不是要求解决方案).如果您之前已经完成了这些工作,这个任务是否太大而无法承担?我查了一些商业API,但使用起来非常昂贵(我们是一个小小的创业公司).
谢谢stackoverflow!
我想在twitter上进行情绪分析.我不想存储任何推文,但对它们进行分析,如推文,这些推文说明了关于特定主题标签的积极内容等等.我在这里遇到的问题是访问推文太慢了.什么是访问推文并分析它们并向用户提供结果的方式.这里有一个很好的例子:http://www.sentiment140.com/search?query = hello&hl = en
虽然上面链接中的人只发了10条推文并进行分析.我想知道如何访问api以便用户可以快速响应.
即使这是一个很好的例子:http://snapbird.org/即使我知道如何访问推文并自动分析它们而不必将它们存储在任何地方也是一个完美的解决方案.
请注意,我只是询问如何在没有存储的情况下访问推文,这样我就可以直接对用户进行分析并在我的网络应用中显示.
twitter web-applications twitter-oauth sentiment-analysis twitter-streaming-api
我的下面的代码工作正常,除非我使用创建一个超过3000个术语的DocumentTermMatrix.这一行:
movie_dict <- findFreqTerms(movie_dtm_train, 8)
movie_dtm_hiFq_train <- DocumentTermMatrix(movie_corpus_train, list(dictionary = movie_dict))
Run Code Online (Sandbox Code Playgroud)
失败:
Error in simple_triplet_matrix(i = i, j = j, v = as.numeric(v), nrow = length(allTerms), :
'i, j, v' different lengths
In addition: Warning messages:
1: In mclapply(unname(content(x)), termFreq, control) :
all scheduled cores encountered errors in user code
2: In simple_triplet_matrix(i = i, j = j, v = as.numeric(v), nrow = length(allTerms), :
NAs introduced by coercion
Run Code Online (Sandbox Code Playgroud)
有什么方法可以解决这个问题吗?对于DocumentTermMatrix,3000*60000矩阵是否太大了?这对于文档分类来说似乎相当小..
完整代码段:
n1 <- 60000
n2 <- 70000
#******* loading the …Run Code Online (Sandbox Code Playgroud) 我使用以下来计算200个短句的情绪.我没有使用训练数据集:
for sentence in textblob.sentences:
print(sentence.sentiment)
分析返回两个值:极性和主观性.根据我在网上看到的,极性分数是在[-1.0,1.0]范围内的浮点数,其中0表示中性,+1表示非常积极态度,-1表示非常消极态度.主观性是在[0.0,1.0]范围内的浮点数,其中0.0是非常客观的,1.0是非常主观的.
那么,现在我的问题是:这些分数是如何计算的?
对于几乎一半的短语的极性分数,我有一些零,我想知道零是否表示中立,或者更确切地说这个短语不包含具有极性的单词这一事实.我想知道另一个情绪分析器的相同问题:NaiveBayesAnalyzer.
谢谢您的帮助!
玛丽
谁能想到加快我的CoreNLP情绪分析的方法(下图)?
我在服务器启动时初始化CoreNLP管道:
// Initialize the CoreNLP text processing pipeline
public static Properties props = new Properties();
public static StanfordCoreNLP pipeline;
// Set text processing pipeline's annotators
props.setProperty("annotators", "tokenize, ssplit, pos, parse, sentiment");
// Use Shift-Reduce Constituency Parsing (O(n),
// http://nlp.stanford.edu/software/srparser.shtml) vs CoreNLP's default
// Probabilistic Context-Free Grammar Parsing (O(n^3))
props.setProperty("parse.model", "edu/stanford/nlp/models/srparser/englishSR.ser.gz");
pipeline = new StanfordCoreNLP(props);
Run Code Online (Sandbox Code Playgroud)
然后我从我的控制器调用管道:
String text = 'A sample string.'
Annotation annotation = pipeline.process(text);
List<CoreMap> sentences = annotation.get(CoreAnnotations.SentencesAnnotation.class);
for (CoreMap sentence : sentences) {
Tree tree = sentence.get(SentimentCoreAnnotations.SentimentAnnotatedTree.class); …Run Code Online (Sandbox Code Playgroud) java optimization performance stanford-nlp sentiment-analysis
我试图在Windows上使用Stanford CoreNLP设置本地服务器,以计算超过1M文章和视频文本的情绪分数.我不懂Java,所以我需要一些帮助.
我成功安装了Stanford CoreNLP 3.6.0,我运行的服务器运行:
java -mx4g -cp "*" edu.stanford.nlp.pipeline.StanfordCoreNLPServer
Run Code Online (Sandbox Code Playgroud)
从我的其他计算机运行此http帖子工作,我收到预期的响应(xxx.xxx.xxx.xxx是服务器的IP地址):
wget --post-data 'the quick brown fox jumped over the lazy dog' 'xxx.xxx.xxx.xxx:9000/?properties={"tokenize.whitespace": "true", "annotators": "tokenize,ssplit,pos,lemma,parse", "outputFormat": "json"}' -O -
Run Code Online (Sandbox Code Playgroud)
但是,回复并不包含情绪.显而易见的解决方案是添加注释器:
wget --post-data 'the quick brown fox jumped over the lazy dog' 'xxx.xxx.xxx.xxx:9000/?properties={"tokenize.whitespace": "true", "annotators": "tokenize,ssplit,pos,lemma,parse,sentiment", "outputFormat": "json"}' -O -
Run Code Online (Sandbox Code Playgroud)
但是,在服务器端,我收到此错误:
java.lang.IllegalArgumentException: Unknown annotator: sentiment
at edu.stanford.nlp.pipeline.StanfordCoreNLP.ensurePrerequisiteAnnotators(StanfordCoreNLP.java:281)
at edu.stanford.nlp.pipeline.StanfordCoreNLPServer$CoreNLPHandler.getProperties(StanfordCoreNLPServer.java:476)
at edu.stanford.nlp.pipeline.StanfordCoreNLP$CoreNLPHandler.handle(StanfordCoreNLPServer.java:350)
at com.sun.net.httpserver.Filter$Chain.doFilter(Unknown Source)
at sun.net.httpserver.AuthFilter.doFilter(Unknown Source)
at com.sun.net.httpserver.Filter$Chain.doFilter(Unknown Source)
at sun.net.httpserver.ServerImpl$Exchange$LinkHandler.handle(Unknown Source)
at com.sun.net.httpserver.Filter$Chain.doFilter(Unknown Source)
at sun.net.httpserver.ServerImpl$Exchange.run(Unknown Source)
at …Run Code Online (Sandbox Code Playgroud) 我使用qdap包来确定特定应用程序的每个评论评论的情绪.我从CSV文件中读取了评论评论,并将其传递给qdap的极性函数.一切正常,我得到所有评论评论的极性,但问题是计算所有句子的极性需要7-8秒(CSV文件中存在的句子总数是779).我在下面粘贴我的代码.
temp_csv <- filePath()
attach(temp_csv)
text_data <- temp_csv[,c('Content')]
print(Sys.time())
polterms <- list(neg=c('wtf'))
POLKEY <- sentiment_frame(positives=c(positive.words),negatives=c(polterms[[1]],negative.words))
polarity <- polarity(sentences, polarity.frame = POLKEY)
print(Sys.time())
Run Code Online (Sandbox Code Playgroud)
所用时间如下:
[1]"2016-04-12 16:43:01 IST"
[1]"2016-04-12 16:43:09 IST"
如果我做错了什么,有人可以告诉我吗?如何提高性能?
nlp ×3
stanford-nlp ×3
java ×2
r ×2
database ×1
hadoop ×1
lingpipe ×1
nltk ×1
optimization ×1
performance ×1
python ×1
qdap ×1
server ×1
shiny ×1
text-mining ×1
tm ×1
twitter ×1
wordnet ×1