【发布时间】:2017-09-27 03:00:43
【问题描述】:
我需要计算同时出现的生物实体的 PMI 分数,例如Gene A - Gene B,或Gene C - Disease A。已从Pubtator 中提取了共现。我使用 Python 3。
对于一组文档,我已经按共现类别提取了所有实体的个体计数 freq(x) 和 freq(y),例如Gene-Gene 或 Gene-Disease,我有实体对 freq(x,y) 的共现计数。所有计数都存储在Dict 中。
从原始计数中计算逐点互信息 (PMI) 分数的最佳方法是什么:
- 创建两个数据框(一个用于单独计数,一个用于共现计数)
- 创建两个矩阵? (同上)
- 另一种方法?
假设一组数据有 3 列:entity, category, count,另一组数据有 4 列:entity_a, category, entity_b, count 其中 category 表示共现类别。我需要单个实体计数的类别,因为如果我要使用它们的总计数,它会扭曲给定共现类型的结果。
我尝试了数据框方法,但不知道如何创建一个新的 PMI 列,该列使用两个不同的数据框 (DF) 计算结果,因此我认为矩阵方法可能效果更好?如果有,为什么?
转换为 DF 时的数据示例:
df1.head():
ent rel count
177 5197 Gene_Gene 2
176 56744 Gene_Gene 2
175 12766 Gene_Gene 2
174 3091 Gene_Gene 2
173 3162 Gene_Gene 2
df2.head():
ent_a rel ent_b count
247 5197 Gene_Gene 56744 1
246 12766 Gene_Gene 5197 1
245 12766 Gene_Gene 56744 1
244 3091 Gene_Gene 3162 1
243 3091 Gene_Gene 54583 1
PMI 公式:
【问题讨论】:
标签: python nlp text-mining