import os #from operator import itemgetter files=os.listdir("Sentiments") def returnList(line): lista=[] lista.append(line.split(".txt")[0].lower()) fis=open("Sentiments/"+line,"r") for x in fis: a=x.split(" ")[0] if x.find("\n")>-1: b=x.split("\n")[0].split(" ")[1] else: b=x.split(" ")[1] c=(a,b) lista.append(c) fis.close() return lista surprise=returnList("Surprise.txt") peculiar=returnList("peculiar.txt") fear=returnList("fear.txt") depressive=returnList("depressive.txt") happyness=returnList("happyness.txt") sorrow=returnList("sorrow.txt") disgust=returnList("Disgust.txt") goodness=returnList("goodness.txt") evilness=returnList("evilness.txt") sentiments=[] sentiments.append(surprise) sentiments.append(peculiar) sentiments.append(fear) sentiments.append(depressive) sentiments.append(happyness) sentiments.append(sorrow) sentiments.append(disgust) sentiments.append(goodness) sentiments.append(evilness) sentiment_counter={} fis=open("processthis.txt","r") text="" for line in fis: text=text+line fis.close() import re #import sys #text=sys.argv[1] words=re.compile("\w+") text_words=words.findall(text) #import threadpool #pool=threadpool.ThreadPool(50) def processSentiments(lista,dictionar,text_words,nrtext): sentiment=lista[0] counter=0 for line in range(1,len(lista)): word=text_words.count(lista[line][0]) if len(lista[line][1])>0: counter=counter+word*float(lista[line][1]) dictionar[sentiment]=counter dictionar={} for line in sentiments: processSentiments(line,dictionar,text_words,len(text_words)) sentimentclassifier={} sentimentclassifier["positive"]=("goodness","happyness","surprise") sentimentclassifier["negative"]=("fear","evilness","depressive","disgust","sorrow","peculiar") xmloutput=[] #poate fi extins la dictionar usor def sortDict(dicta): stackvalue=[] stackkey=[] for i in dicta: stackvalue.append(i[1]) stackkey.append(i[0]) while not max(stackvalue)==stackvalue[0]: for i in range(len(stackvalue)-1): if stackvalue[i]=2*negative: result.append("Mostly positive") degree=positive elif negative>=2*positive: result.append("Mostly negative") degree=negative elif negative==(2.0/3.0)*positive: result.append("Positive") degree=positive elif positive==(2.0/3.0)*negative: result.append("Negative") degree=negative elif positive<=negative-(1.0/4.0)*negative: result.append("Negative") degree=negative elif negative<=positive-(1.0/4.0)*positive: result.append("Positive") degree=positive if len(result)<=0: result.append("Neutral") xml="" if degree==positive and degree>0: xml="\t\n\t\t"+result[0]+"\n\t\tNegative\n\t\n" elif degree==negative and degree>0: xml="\t\n\t\t"+result[0]+"\n\t\tPositive\n\t\n" if degree==0: xml="\t\n\t\tNeutral\n\t\t\tPositive\n\t\tNegative\n\t\n" xmloutput.append(xml) def retrieveMediumState(dictionar,xmloutput): rez=[] sumagenerala=0 for i,v in dictionar.iteritems(): sumagenerala=v+sumagenerala for i,v in dictionar.iteritems(): a=(i,(v*100)/sumagenerala) rez.append(a) #t=sorted(rez,key=itemgetter(1),reverse=True) t=sortDict(rez) firstSentiments=[] result=[] degree=0 for i in range(3): firstSentiments.append(t[i]) sentiment1=firstSentiments[0][0] sentiment2=firstSentiments[1][0] sentiment3=firstSentiments[2][0] sentiment1Degree=firstSentiments[0][1] sentiment2Degree=firstSentiments[1][1] sentiment3Degree=firstSentiments[2][1] if sentiment1Degree>=2*sentiment2Degree: result.append("Mostly "+sentiment1) degree=firstSentiments[0][1] elif sentiment2Degree==(2.0/3.0)*sentiment1Degree: result.append(sentiment1.title()) degree=firstSentiments[0][1] elif sentiment2Degree<=sentiment1Degree-(1.0/4.0)*sentiment1Degree: result.append(sentiment1.title()) degree=sentiment1Degree xml="" if len(result)<=0: xml="\t\n\t\t"+sentiment1+"\n\t\t"+sentiment2+"\n\t\t"+sentiment3+"\n\t\n" if degree>0: xml="\t\n\t\t"+sentiment1+"\n\t\t"+sentiment2+"\n\t\n" xmloutput.append(xml) import random def retrieveAdvancedState(dictionar,xmloutput): evilness_sinonims=["dark","evil","sinister"] depressive_sinonims=["sorrowful","gloomy","grim","despaired"] sadness_sinonims=["sorrowful","gloomy","grim","despaired"] fear_sinonims=["tense","dread","fright"] peculiar_sinonims=["bizzare","queer","freakish"] disgust=["decayent","sicken","repel"] rez=[] sumagenerala=0 for i,v in dictionar.iteritems(): sumagenerala=v+sumagenerala for i,v in dictionar.iteritems(): a=(i,(v*100)/sumagenerala) rez.append(a) #t=sorted(rez,key=itemgetter(1),reverse=True) t=sortDict(rez) firstSentiments=[] result=[] degree=0 for i in range(2): firstSentiments.append(t[i]) badfeelings=["evilness","depressive","sadness","fear","disgust","peculiar"] sentiment1=firstSentiments[0][0] sentiment2=firstSentiments[1][0] sentiment1Degree=firstSentiments[0][1] sentiment2Degree=firstSentiments[1][1] rezultat="" if sentiment1=="evilness" and (sentiment2=="depressive" or sentiment2=="sorrow"): rezultat=rezultat+"The atmosphere is "+evilness_sinonims[random.randint(0,len(evilness_sinonims))]+" and "+depressive_sinonims[random.randint(0,len(depressive_sinonims))]+"." elif sentiment1=="evilness" and sentiment2=="fear": rezultat=rezultat+"The atmosphere is "+evilness_sinonims[random.randint(0,len(evilness_sinonims))]+" and "+fear_sinonims[random.randint(0,len(fear_sinonims))]+"." elif sentiment1=="evilness" and sentiment2=="peculiar": rezultat=rezultat+"The atmosphere is "+evilness_sinonims[random.randint(0,len(evilness_sinonims))]+" and "+peculiar_sinonims[random.randint(0,len(peculiar_sinonims))]+"." elif sentiment1=="evilness" and (sentiment2=="goodness" or sentiment2=="happyness"): rezultat="The atmosphere is grey, combining two antagonistic states, evil and good, joy and sorrow." elif sentiment1=="evilness" and sentiment2=="disgust": rezultat=rezultat+"The atmosphere is "+evilness_sinonims[random.randint(0,len(evilness_sinonims))]+" and "+disgust_sinonims[random.randint(0,len(disgust_sinonims))]+"." elif sentiment1=="fear" and sentiment2=="peculiar": rezultat=rezultat+"The atmosphere is "+fear_sinonims[random.randint(0,len(fear_sinonims))]+" and "+peculiar_sinonims[random.randint(0,len(peculiar_sinonims))]+"." elif sentiment1=="fear" and sentiment2=="evilness": rezultat=rezultat+"The atmosphere is "+fear_sinonims[random.randint(0,len(fear_sinonims))]+" and "+evilness_sinonims[random.randint(0,len(evilness_sinonims))]+"." elif sentiment1=="fear" and (sentiment2=="depressive" or sentiment2=="sorrow"): rezultat=rezultat+"The atmosphere is "+fear_sinonims[random.randint(0,len(fear_sinonims))]+" and "+sadness_sinonims[random.randint(0,len(sadness_sinonims))]+"." elif sentiment1=="fear" and (sentiment2=="goodness" or sentiment2=="happyness"): rezultat="The atmosphere is tensioned." elif sentiment1=="peculiar" and sentiment2=="evilness": rezultat=rezultat+"The atmosphere is "+peculiar_sinonims[random.randint(0,len(peculiar_sinonims))]+" and "+evilness_sinonims[random.randint(0,len(evilness_sinonims))]+"." elif sentiment1=="peculiar" and sentiment2=="fear": rezultat=rezultat+"The atmosphere is "+peculiar_sinonims[random.randint(0,len(peculiar_sinonims))]+" and "+fear_sinonims[random.randint(0,len(fear_sinonims))]+"." elif sentiment1=="peculiar" and (sentiment2=="depressive" or sentiment2=="sorrow"): rezultat=rezultat+"The atmosphere is "+peculiar_sinonims[random.randint(0,len(peculiar_sinonims))]+" and "+sadness_sinonims[random.randint(0,len(sadness_sinonims))]+"." elif sentiment1=="peculiar" and sentiment2=="disgust": rezultat=rezultat+"The atmosphere is "+peculiar_sinonims[random.randint(0,len(peculiar_sinonims))]+" and "+disgust_sinonims[random.randint(0,len(disgust_sinonims))]+"." elif sentiment1=="peculiar" and (sentiment2=="goodness" or sentiment2=="happyness"): rezultat=rezultat+"The atmosphere is "+peculiar_sinonims[random.randint(0,len(peculiar_sinonims))]+" and jolly." elif (sentiment1=="happyness" or sentiment1=="goodness") and (sentiment2=="evilness" or sentiment2=="fear" or sentiment2=="peculiar" or sentiment2=="depressive" or sentiment2=="sorrow"): rezultat="The atmosphere is happy, the good winning against the evil" elif (sentiment1=="depressive" or sentiment1=="sorrow") and sentiment2=="evilness": rezultat=rezultat+"The atmosphere is "+depressive_sinonims[random.randint(0,len(depressive_sinonims))]+" and "+evilness_sinonims[random.randint(0,len(evilness_sinonims))]+"." elif (sentiment1=="depressive" or sentiment1=="sorrow") and sentiment2=="fear": rezultat=rezultat+"The atmosphere is "+depressive_sinonims[random.randint(0,len(depressive_sinonims))]+" and "+fear_sinonims[random.randint(0,len(fear_sinonims))]+"." elif (sentiment1=="depressive" or sentiment1=="sorrow") and sentiment2=="peculiar": rezultat=rezultat+"The atmosphere is "+depressive_sinonims[random.randint(0,len(depressive_sinonims))]+" and "+peculiar_sinonims[random.randint(0,len(peculiar_sinonims))]+"." elif (sentiment1=="depressive" or sentiment1=="sorrow") and (sentiment2=="goodness" or sentiment2=="happyness"): rezultat="The atmosphere is "+depressive_sinonims[random.randint(0,len(depressive_sinonims))]+"." elif sentiment1=="goodness" and sentiment2=="happyness": rezultat="The atmosphere is jolly." at="\t\n\t\t\n\t\t\t"+rezultat+"\n\t\t\n\t\n" xmloutput.append(at) retrieveBasicState(dictionar,sentimentclassifier,xmloutput) retrieveMediumState(dictionar,xmloutput) retrieveAdvancedState(dictionar,xmloutput) fis=open("rezultatfinal.xml","w") fis.write("\n") fis.write("\n") for i in xmloutput: fis.write(i) fis.write("") fis.close()