WeTextProcessing icon indicating copy to clipboard operation
WeTextProcessing copied to clipboard

tn 新增 億~千億

Open bensonbs opened this issue 1 year ago • 4 comments

tn/chinese/rules/cardinal.py

        # 10001111, 1001111, 101111, 11111, 10111, 10011, 10001, 10000
        ten_thousand = ((thousand | hundred | ten | digit) + insert('萬') +
                        (thousand
                         | (zero + rmpunct + hundred)
                         | (rmzero + rmpunct + zero + tens)
                         | (rmzero + rmpunct + rmzero + zero + digit)
                         | rmzero**4))

        # add hundred_million
        hundred_million = 

bensonbs avatar Jun 04 '24 04:06 bensonbs


_ten_thousand = ((thousand | (zero + hundred) | (rmzero + zero + rmpunct + tens) | (rmzero + rmzero + rmpunct + zero + digit)) + insert('万') +
                (thousand
                 | (zero + rmpunct + hundred)
                 | (rmzero + rmpunct + zero + tens)
                 | (rmzero + rmpunct + rmzero + zero + digit)
                 | rmzero**4))

billion =  ((ten_thousand | thousand | hundred | ten | digit) + insert('亿') +
            _ten_thousand
            |rmzero**8)

写了好久,测试下来看似对了, rmzero的位置好像有问题,但是不想改了,直接前处理把数字里的逗号给去了 如果有其他不对的话麻烦反馈一下

FlynnFlag avatar Jan 16 '25 09:01 FlynnFlag

_ten_thousand = ((thousand | (zero + hundred) | (rmzero + zero + rmpunct + tens) | (rmzero + rmzero + rmpunct + zero + digit)) + insert('万') + (thousand | (zero + rmpunct + hundred) | (rmzero + rmpunct + zero + tens) | (rmzero + rmpunct + rmzero + zero + digit) | rmzero**4))

billion = ((ten_thousand | thousand | hundred | ten | digit) + insert('亿') + _ten_thousand |rmzero**8) 写了好久,测试下来看似对了, rmzero的位置好像有问题,但是不想改了,直接前处理把数字里的逗号给去了 如果有其他不对的话麻烦反馈一下

非常棒的解决方案,但是在对999,999,999做处理的时候,出来的结果是九百九十九,九十九万九千九百九十九

Dobby22 avatar Jan 20 '25 09:01 Dobby22

_ten_thousand = ((thousand | (zero + hundred) | (rmzero + zero + rmpunct + tens) | (rmzero + rmzero + rmpunct + zero + digit)) + insert('万') + (thousand | (zero + rmpunct + hundred) | (rmzero + rmpunct + zero + tens) | (rmzero + rmpunct + rmzero + zero + digit) | rmzero4)) billion = ((ten_thousand | thousand | hundred | ten | digit) + insert('亿') + _ten_thousand |rmzero8) 写了好久,测试下来看似对了, rmzero的位置好像有问题,但是不想改了,直接前处理把数字里的逗号给去了 如果有其他不对的话麻烦反馈一下

非常棒的解决方案,但是在对999,999,999做处理的时候,出来的结果是九百九十九,九十九万九千九百九十九

因为我写的这个逻辑,亿级别时,挪用原先的逗号位置判断就不对了。我的应用场景其实也用不到逗号,所以为了方便我直接前面预处理,你也可以自行修改rmpunct的组合位置。

FlynnFlag avatar Jan 21 '25 11:01 FlynnFlag

_ten_thousand = ((thousand | (zero + hundred) | (rmzero + zero + rmpunct + tens) | (rmzero + rmzero + rmpunct + zero + digit)) + insert('万') + (thousand | (zero + rmpunct + hundred) | (rmzero + rmpunct + zero + tens) | (rmzero + rmpunct + rmzero + zero + digit) | rmzero4)) billion = ((ten_thousand | thousand | hundred | ten | digit) + insert('亿') + _ten_thousand |rmzero8) 写了好久,测试下来看似对了, rmzero的位置好像有问题,但是不想改了,直接前处理把数字里的逗号给去了 如果有其他不对的话麻烦反馈一下

非常棒的解决方案,但是在对999,999,999做处理的时候,出来的结果是九百九十九,九十九万九千九百九十九

因为我写的这个逻辑,亿级别时,挪用原先的逗号位置判断就不对了。我的应用场景其实也用不到逗号,所以为了方便我直接前面预处理,你也可以自行修改rmpunct的组合位置。

Image 大佬,我这个700000000会划分成3部分,没有输出期望的7亿,请教下为什么会分割成三部分,在哪里改这一块的逻辑?

zhangyue678 avatar Jun 25 '25 08:06 zhangyue678