我有两个string
列表:
(Pdb) word_list1
['first', 'sentence', 'ant', 'first', 'whatever']
(Pdb) word_list2
['second', 'second', 'heck', 'anything', 'youtube', 'gmail', 'hotmail']
我想计算每个单词的两组中每一组的单词联合的概率分布。
(Pdb) print list(set(word_list1) | set(word_list2))
['hotmail', 'anything', 'sentence', 'maybe', 'youtube', 'whatever', 'ant', 'second', 'heck', 'gmail', 'first']
(Pdb) len(list(set(word_list1) | set(word_list2)))
11
所以,我想要两个长度为11的向量,每个词列表一个。
答案 0 :(得分:1)
您需要更多包含11个元素的字典,如果您正在寻找频率,请选择Counter
而不是set
操作:
from collections import Counter
n = len(l1) + len(l2)
dic = dict(Counter(l1) + Counter(l2))
# for the first list
{k:round(v/n,2) if k in l1 else 0 for k,v in dic.iteritems()}
#{'ant': 0.09,
# 'anything': 0,
# 'first': 0.18,
# 'gmail': 0,
# 'heck': 0,
# 'hotmail': 0,
# 'second': 0,
# 'sentence': 0.09,
# 'whatever': 0.09,
# 'youtube': 0}