将列2除以标题中的特定值

2024-04-25 21:34:50 发布

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

大家好, 首先,我是一个新手的编码,我现在正在学习。所以,请原谅我的怀疑!你知道吗

我的数据如下:

TOPIC:  1 87187.0

Mr 2288.0
's 1633.0
@card@ 1132.0
party 731.0
say 710.0

TOPIC:  2 97854.0

say 2170.0
@card@ 1872.0
people 1078.0
police 562.0

等等。。。。直到主题100,格式相同。你知道吗

这里第一行是主题编号和它的权重。以下是该主题中的单词及其在该主题中的权重。你知道吗

我想找出每个单词的概率。也就是用每个词的权重除以每个词的主题权重。例如

In topic 1, the word Mr weight is 2288.0 and it's topic weight is 87187.0. So, the probability of the word Mr in Topic 0 is 2288.0/87187.0. Likewise I would like to know the probability of all the words. 

My output should be like:

TOPIC:  1 87187.0

Mr 0.02624 
's 0.01872
@card@ 0.0129

等等。。。其中这些值是单词权重/主题权重的结果。你知道吗

如果它是一个正常的列划分,那么,我会使用col2/col1技术,但这相当具有挑战性。所以,请引导我。提前谢谢!你知道吗


Tags: ofthe主题topiciscard单词like
1条回答
网友
1楼 · 发布于 2024-04-25 21:34:50

你没有说任何关于你想要你的输出格式是什么样子的,或者甚至给出一个这样的例子,但是这至少应该为你指明正确的方向。。。你知道吗

建议的python起始点,即您的编辑似乎表明的是您所需的输出,除了浮点舍入问题外:

divisor = 1.0
with open("input.txt") as fd:
    for line in fd:
        fields = line.strip().split()
        if len(fields) > 0:
            if fields[0] == 'TOPIC:':
                divisor = float(fields[-1])
            if len(fields) == 2:
                fields[-1] = str(float(fields[-1]) / divisor)
        print ' '.join(fields)

使用上述示例输入,此代码生成:

TOPIC: 1 87187.0

Mr 0.0262424444011
's 0.0187298565153
@card@ 0.0129835870026
party 0.00838427747256
say 0.00814341587622

TOPIC: 2 97854.0

say 0.0221758947003
@card@ 0.0191305414188
people 0.0110164122059
police 0.00574325014818

相关问题 更多 >