-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathpred_opinion.py
96 lines (85 loc) · 2.25 KB
/
pred_opinion.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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
from nltk.corpus import wordnet as wn
import csv
class adjective():
def __init__(self,filename,adjectives):
self.filename=filename
self.adjectives=adjectives
self.seed_list=[]
self.new_list=[]
self.pos=0
self.neg=0
def file_write(self):
sead_file=open(self.filename,'w')
#print(self.seed_list);
writer = csv.writer(sead_file, delimiter=' ',quotechar='|', quoting= csv.QUOTE_MINIMAL )
for row in self.seed_list:
writer.writerow(row)
def file_read(self):
sead_file=open(self.filename,'r')
csv_read= csv.reader(sead_file,delimiter=' ')
for row in csv_read:
self.seed_list.append(row)
def orientation(self):
for row in self.adjectives:
self.new_list.append([row,0])
while(1):
size1=len(self.seed_list)
self.search()
size2=len(self.seed_list)
if(size1==size2):
break
self.new_list=dict( (x,y) for x,y in self.new_list)
return [self.pos,self.neg,self.new_list]
def search(self):
self.pos=0;
self.neg=0;
flag=[0]*(len(self.new_list)+5)
for row in self.new_list:
for r in self.seed_list:
if(r[0]==row[0]):
if(int(r[1])==-1):
self.neg+=1
row[1]=-1;
else:
self.pos+=1
row[1]=1;
flag[self.new_list.index(row)]=1
break;
for row in self.new_list:
if(flag[self.new_list.index(row)]==1):
continue;
for r in self.seed_list:
if(self.syn_search(r[0],row[0])):
row[1]=1
self.pos+=1
self.seed_list.append([row[0],r[1]])
break
elif(self.ant_search(r[0],row[0])):
row[1]=-1
self.neg+=1
self.seed_list.append([row[0],str(-1* int(r[1]))] )
break;
def syn_search(self,seed_word,adjective):
for ss in wn.synsets(seed_word):
for sim in ss.lemmas():
if(sim.name()==adjective):
return 1
return 0;
def ant_search(self,seed_word,adjective):
for ss in wn.synsets(seed_word):
for sim in ss.lemmas():
if(sim.antonyms()):
if(sim.antonyms()[0].name()==adjective):
return 1
elif(self.syn_search(sim.antonyms()[0].name(),adjective)):
return 1
return 0;
'''
filename='seed_list.csv'
adjectiv= ['beautiful','concrete','quick','worse','cheap','good','nice','excellent','slow']
cl=adjective(filename,adjectiv)
cl.file_read()
[pos,neg]=cl.orientation()
cl.file_write()
print(pos,neg)
'''