我有一个字典,键值,值对为{'p h' : 12, 'i e' : 14}
,在文本语料库中有一个双音素及其频率。
biphone_frequency = get_biphone_dist(baseline_corpus_phonetic)
此函数从文本语料库中返回具有上述规范的字典。
我需要创建两个词典,其中一个uniform_RP
表示所有双音素的均匀百分比分布,另一个correlation_CP
显示双音素的实际百分比分布。所以,我采取:
length_dict = len(biphone_frequency.values())
sum_dict = sum(biphone_frequency.values())
#calculating uniform distribution of all the biphones
rp = 1.0/float(length_dict)
# creating dictionary with constant values wrt every biphone
uniform_RP = {x : rp for x in biphone_frequency.keys()}
# creating dictionary with actual values wrt every biphone
correlation_CP = {}
for key, val in biphone_frequency.items():
cp = val/float(sum_dict) ##individual %age distribution
correlation_CP[key] = cp
我需要在correlation_CP.values()
和uniform_RP.values()
之间找到点积。所以我用:
RP_values = np.array(uniform_RP.values())
CP_values = np.array(correlation_CP.values())
correlation_coefficient = np.dot(RP_values, CP_values)
问题是点积始终与uniform_RP.values()
中的值相同。任何人都可以建议为什么会发生这种情况?!
答案 0 :(得分:2)
这种情况正在发生,因为它是如何定义点积的。您将每个元素乘以1 / N,然后将它们相加。这是因为uniform_RP
每个值包含1 / N.结果将始终为correlation_CP
的平均值。
我使用1 / N代替1.0/length_dict
进行empasis。他们的意思是一样的。