-
Notifications
You must be signed in to change notification settings - Fork 0
/
redis_words_loader.py
executable file
·95 lines (75 loc) · 2.76 KB
/
redis_words_loader.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
#!/usr/bin/python
#Uso: ./redis_words_loader.py -mode file_name
#mode:
# i: interactivo, se le pasa un archivo con texto y se clasifican a mano las palabras que no estan cargadas
# m: archivo de modifiers (varios renglones palabra <espacio> valor)
# p: archivo de polaridades (palabra <espacio> polaridad)
import sys
from database_connection.d_words import DWords
from models.d_word import DWord
from pattern.es import parsetree
def load_modifiers(file_name):
print "Loading modifiers from "+file_name
load_polarity_or_modifier(file_name, "modifier")
def load_polarities(file_name):
print "Loading polarities from "+file_name
load_polarity_or_modifier(file_name, "polarity")
def load_polarity_or_modifier(file_name, attrname):
words = file(file_name).read().split("\n")
for word_value in words:
if len(word_value.split()) != 2:
print "Invalid line: \""+word_value+"\""
continue
word, value = word_value.split()
print word_value
d_word = DWords.find_word(word) or DWord(word)
setattr(d_word, attrname, float(value))
DWords.insert_word(d_word)
def interactive_loader(file_name):
GROUP_SIZE = 3
text = file(file_name).read()
words = parsetree(text, tags=False, chunks=False).words
for word_group in zip(*[iter(words)]*GROUP_SIZE):
options = ""
d_words = []
for word in word_group:
d_word = DWords.find_word(word.string.lower()) or DWord(word.string.lower())
if not (d_word.has_polarity() or d_word.is_modifier()):
d_words.append(d_word)
if len(d_words) == 0:
continue
while len(options)!=len(d_words):
print "\t".join(map((lambda w: w.word), d_words))
options = list(raw_input("0:neutral\t1:positive\t2: negative\t3:inversor\t5:minimizer\t6:maximizer\td:descartar\n")[:len(d_words)])
for d_word in d_words:
option = options.pop(0)
if option=="0":
d_word.polarity = 0
elif option=="1":
d_word.polarity = 1
elif option=="2":
d_word.polarity = -1
elif option == "3":
d_word.modifier = -1
elif option == "5":
d_word.modifier = 0.5
elif option == "6":
d_word.modifier = 2
if option!="d":
DWords.insert_word(d_word)
save_in_file(d_word)
print "\n\n\n"
def save_in_file(d_word):
if d_word.is_modifier():
with open("analyser/data/modifiers.txt", "a") as f:
f.write("\n" + d_word.word.encode('utf-8')+" "+str(d_word.modifier))
elif d_word.has_polarity():
with open("analyser/data/polarities.txt", "a") as f:
f.write("\n" + d_word.word.encode('utf-8')+" "+str(d_word.polarity))
mode = sys.argv[1]
if mode == "-i":
interactive_loader(sys.argv[2])
elif mode == "-m":
load_modifiers(sys.argv[2])
elif mode == "-p":
load_polarities(sys.argv[2])