我有一个2D数组,其中每个元素都是一对两个标签,例如[“ NOUN”,“ VERB”],我想计算每个唯一对在大型数据集中出现的次数。

到目前为止,我已经尝试使用defaultdict(int)和Counter()轻松地添加元素(如果以前未找到),或者如果找到则将值增加1。

dTransition = Counter()
# dTransition = defaultdict(int)

# <s> is a start of sentence tag
pairs = [[('<s>', 'NOUN')], [('CCONJ', 'NOUN')], [('NOUN', 'SCONJ')], [('SCONJ', 'NOUN')]]

for pair in pairs:
      dTransition[pairs] += 1



这不起作用,因为它不接受两个参数。因此,我想知道是否存在一种简单的方法来检查字典,如果已经存在作为2D数组的键,并且将键值增加1。

最佳答案

考虑到与列表不同,元组是可哈希的,因此您需要使列表变平。一个简单的选择是使用itertools.chain,然后使用元组列表构建Counter

from itertools import chain
Counter(chain(*pairs))


 输出量

Counter({('<s>', 'NOUN'): 1, ('CCONJ', 'NOUN'): 1,
         ('NOUN', 'SCONJ'): 1, ('SCONJ', 'NOUN'): 1})

10-06 09:42