如何将字典的“真”值替换为“正”或“负”

时间:2019-04-18 16:30:31

标签: python nlp

我最近开始学习python,并且尝试将单词列表分类为:正数“ pos”和负数“ neg”

我正在寻找的结果是:

('joli': 'pos', 'bravo': 'pos', 'magnifique': 'pos')
('arnaque': 'neg', 'désagréable': 'neg', 'mauvais': 'neg')

我有以下代码:

def word_feats(words):
    return dict([(word, True) for word in words])


vocab_positif = [ 'joli', 'bravo', 'magnifique']
vocab_negatif = [ 'arnaque', 'désagréable','mauvais']


positive_features = [(word_feats(vocab_positif), 'pos')]
negative_features = [(word_feats(vocab_negatif), 'neg')]

输出:

({'joli': True, 'bravo': True, 'magnifique': True}, 'pos')
({'arnaque': True, 'désagréable': True, 'mauvais': True}, 'neg')

2 个答案:

答案 0 :(得分:0)

如果给出更多上下文,则可以用更好的方式编写,但我认为此解决方案与您期望的输出匹配。

def word_feats(words, val):
    return {word: val for word in words}


vocab_positif = [ 'joli', 'bravo', 'magnifique']
vocab_negatif = [ 'arnaque', 'désagréable','mauvais']

features = {}
positive_features = word_feats(vocab_positif, 'pos')
negative_features = word_feats(vocab_negatif, 'neg')

print(positive_features)
print(negative_features))

输出:

{'joli': 'pos', 'bravo': 'pos', 'magnifique': 'pos'}
{'arnaque': 'neg', 'désagréable': 'neg', 'mauvais': 'neg'}

如果需要,可以合并dict,例如:

combined = {**positive_features, **negative_features}

或类似的东西

features = {}
features.update(word_feats(vocab_positif, 'pos'))
features.update(word_feats(vocab_negatif, 'neg'))
print(features)

答案 1 :(得分:0)

这应该为您提供所需的输出:

def word_feats(words, desc):
    return dict([(word, desc) for word in words])

vocab_positif = [ 'joli', 'bravo', 'magnifique']
vocab_negatif = [ 'arnaque', 'désagréable','mauvais']

positive_features = word_feats(vocab_positif, 'pos')
negative_features = word_feats(vocab_negatif, 'neg')