Skip to content

Assignment1 pairsfreq_queue update problem #1

@vc-zju

Description

@vc-zju

在对pairsfreq_queue更新的时候 bpe.hxx使用如下方法

            if (i > 0) {
                pairsfreq_queue_->increase(std::make_pair(voc[i-1], voc[i]), -freq);
                pairsfreq_queue_->increase(std::make_pair(voc[i-1], best_bytes), freq);
            }

            if (i+2 < n) {
                pairsfreq_queue_->increase(std::make_pair(voc[i+1], voc[i+2]), -freq);
                pairsfreq_queue_->increase(std::make_pair(best_bytes, voc[i+2]), freq);
            }

这里似乎没有考虑连续两个都被合并的情况 比如eded 我们将e和d合并 第一个ed合并的时候 会减少de的freq 第二个de合并时候 会再次减少de的freq 此外 第一个ed合并后 增加的是ed e这一个pair的freq 但实际上应该增加的是ed ed这一个pair的freq 也就是合并后插入pairsfreq_queue_的应该是(ed, ed) 且只插入一次 freq为1

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions