Я пытаюсь использовать простую систему ценностей (очень упрощенную и не ожидающую замечательных результатов) для оценки «настроений» в документе.
Я построил цикл for, используя defaultdict (int), но я просто вертел руки в коде, и он всплывал с кортежами вместо целого числа, давая значение каждому найденному слову, а не суммируя по строке как я и предполагал. (Я ОЧЕНЬ новичок во всем этом и совершенно потерян. Пожалуйста, не ненавидите меня?)
positive = ['accurate','adore','agree','amazed','amazingly','amazing','award worthy', 'awesome','beautiful', 'better','breathtaking','cool', 'enjoy','excited', 'exciting','fantastic', 'friend','glad','good','handpicked', 'handsome', 'happy','hopeful','impressive','improved', 'incredible','like', 'love', 'relieved','right']
negative = ['angry','annoyed','annoying','awful','badly', 'bad','butcher', 'careless','disagree', 'disappointed','disgusting','dislike', 'gross','hated', 'hate', 'horrible','horribly','mutilated','ruin', 'sad','terrible', 'terribly', 'thoughtless','ugh','ugly','unrealistic','worse','worst','wrong']
shifters = ['but','don’t', 'however', 'not']
intensifiers = ['awfully','completely','incredibly', 'majorly','really','seriously','so','wow']
def value_eval(doc):
value = defaultdict(int)
for line in doc:
for word in line:
if word in positive:
value[line[0]] += 1
if word in negative:
value[line[0]] - 1
if word in intensifiers:
value[line[0]] * 1.25
if word in shifters:
value[line[0]] * -1.25
return value
Я надеялся на добавленную стоимость всех строк, но получилось что-то вроде:
defaultdict(int,
{'I': 75,
';': 179,
'But': 13,
'With': 0,
'Tolkien': 3,
'And': 9,
'even': 1,
'no': 0,
'“': 1,
'You': 5,
'They': 9,
'Sure': 5,
'it': 7,
'He': 16,
'Like': 2,
'Why': 0,
'Totally': 0,
'Looks': 3,
'Instead-': 0})
но намного дольше.