基于单词及其加权概率从矩阵生成文本语料库

2024-05-31 10:59:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个矩阵,我试图生成文本语料库

             chewbacca  darth  han  leia  luke  obi
chewbacca          0      0    0     0   0.66 0.33
darth              0      0    0     1     0    0
han                0      0    0     0     1    0
leia               0      0    0     0     1    0
luke               0      0    0     0     0    0
obi                0      0    0     0     0    0

我选择作品《丘巴卡》作为我的第一个词

现在我正试图根据概率为丘巴卡找到配对。这里有两个词-luke(0.66)和obi(0.33)

第二个词必须基于加权概率

例如,如果“卢克”对的“丘巴卡”为0.66,“欧比”对的“丘巴卡”为0.33,“卢克”的选择概率必须是“欧比”的两倍

如何处理?谢谢你的建议


Tags: 文本矩阵概率作品建议语料库lukehan
1条回答
网友
1楼 · 发布于 2024-05-31 10:59:06

如果您想创建一个Bigram语料库:

#remove rows that sum to 0
df = df.loc[df.sum(axis=1) != 0]
#normalizing row sum to 1
df = df.div(df.sum(axis=1), axis=0).fillna(0)
#number of bigrams you wish to generate for each row, you can change it by row as well
num_bigrams_per_word = 3
df['bigrams'] = df.apply(lambda x:[x.name+' '+s for s in np.random.choice(df.columns,p=x.values,size=num_bigrams_per_word)], axis=1)
corpus = df.bigrams.sum()

示例输出:

['chewbacca obi', 'chewbacca obi', 'chewbacca luke', 'darth leia', 'darth leia', 'darth leia', 'han luke', 'han luke', 'han luke', 'leia luke', 'leia luke', 'leia luke']

相关问题 更多 >