-
Notifications
You must be signed in to change notification settings - Fork 4
/
polarityAccuracy.py
71 lines (55 loc) · 1.62 KB
/
polarityAccuracy.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
from __future__ import division
from data_parser import outputParser
import xml.etree.ElementTree as ET
import polarity
def evaluate(train_filename):
orgnlData={}
testdata={}
tree = ET.ElementTree(file=train_filename)
sentences = tree.getroot()
count=0
for sentence in sentences:
terms = []
for elem in sentence.iter():
aspect=[]
if elem.tag=='text':
line= elem.text
orgnlData[line]=terms
if elem.tag=='aspectTerm':
aspect.append(elem.attrib['term'])
aspect.append(elem.attrib['polarity'])
orgnlData[line].append(aspect)
testdata=polarity.findpol()
precision=0
recall=0
orgtotal=0
testtotal=0
for k,v in testdata.iteritems():
if k in orgnlData:
# print v
orgnalaspects=orgnlData[k]
orgtotal+=len(orgnalaspects)
testtotal+=len(v)
for i in orgnalaspects:
for key,val in v.iteritems():
if i[0]==key and i[1]==val:
precision+=1
fr=open("generated_files/crf_output.txt",'r')
for line in fr:
words=line.split()
if len(words)>0:
if words[3]=="True":
recall+=1
# print orgnlData
# print (testdata)
# print (orgnlData)
print "Precision=",
precision=precision/testtotal
print (precision)*100
# recall=recall/orgtotal
# print "Recall=",
# print (recall)*100
# a=precision*recall
# b= precision+recall
# f1=2*(a/b)
# print "F-Score= "+str(f1*100)