Example #1
0
	def multiParse(self, sentence):
		sentimentscore = []
		parser = SyntacticParser()
		# test_sentence = [x.split("/") for x in "To/NUM russere/N_INDEF_PLU tror/V_PRES ikke/ADV intet/ADJ ./TEGN".split(" ")]
		t = parser.parse_sentence(sentence)
		print "sentence: ", self.print_sentence(sentence), "\n\n"

		if t is not None:
			# print t.tree
			score = t.get_sentiment_score(self.sentimentdict, term)
			return score
		else:
			return 0
Example #2
0
	def score_sentiment(self, term_subset):
		starttime = time.time()
		term, subset = term_subset
		print ">>SENTIMENTSCORE: Scoring sentiment for '%s'." % term
		sentences = []
		sentimentarr = []
		sentimentscore = 0
		bowscore = 0
		
		# Get sentences
		# p = Pool(4)
		# sentences += (p.map(multiSentence,subset))

		for articleid in subset:
			article = self.articleDict[articleid]
			tmp = self.get_sentences(article, term)
			for sentence in tmp:
				for word in sentence:
					if word[0] in self.sentimentdict:
						bowscore += int(self.sentimentdict[word[0]])
				# print " ".join([y[:y.find("/")] for y in x])
				sentences.append(sentence)
		subsetTime = time.time()

		print ">>SENTIMENTSCORE: Found %s sentences."%len(sentences)

		# p = Pool(4)
		# sentimentarr += (p.map(self.multiParse,sentences))
		# for x in sentimentarr:
		# 	if x != 0:
		# 		sentimentscore += x
		# 		parsedSentencesCount += 1

		parser = SyntacticParser()
		parsedSentencesCount = 0

		for sentence in sentences:
			# test_sentence = [x.split("/") for x in "To/NUM russere/N_INDEF_PLU tror/V_PRES ikke/ADV intet/ADJ ./TEGN".split(" ")]
			t = parser.parse_sentence(sentence)
			# print "sentence: ", self.print_sentence(sentence), "\n\n"

			if t is not None:
				# print t.tree
				score = t.get_sentiment_score(self.sentimentdict, term)
				if score != 0:
					# if score > 0.5:
					# 	print t.tree
					# 	print "score: %s" %score
					# 	print self.print_sentence(sentence)
					# 	print
					parsedSentencesCount += 1
					if sentimentscore == 0:
						sentimentscore = score
					else:
						sentimentscore = (sentimentscore + score) / 2
					# if parsedSentencesCount > 3:
					# 	break
					# print ">>SENTIMENTSCORE: ", self.print_sentence(sentence)
					# print "sentence: ", sentence
					# print t.tree
					# print ">>SENTIMENTSCORE: Current score is:", sentimentscore
					# print
		if len(sentences) == 0:
			bowscore = "0 (0)"
			sentencesCount = "0.0% (0/0)"
		else:
			bowscore = "%s (%s)" %(round(bowscore/float(len(sentences)),3),bowscore)
			sentencesCount = "%s%% (%s/%s)" %(round((parsedSentencesCount/float(len(sentences)))*100, 2), parsedSentencesCount, len(sentences))

		print ">>SENTIMENTSCORE: BOW SCORE IS: ", bowscore
		print ">>SENTIMENTSCORE: Final score is", sentimentscore
		print


		parseTime = round((time.time() - subsetTime), 3)
		subsetTime = round((subsetTime - starttime), 3)
		sentimentSentenceLog(term, sentencesCount, sentimentscore, bowscore, self.inputfiles, subsetTime, parseTime)