Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

希望不检测英文及数字 #5

Open
minboo opened this issue Oct 20, 2022 · 5 comments
Open

希望不检测英文及数字 #5

minboo opened this issue Oct 20, 2022 · 5 comments

Comments

@minboo
Copy link

minboo commented Oct 20, 2022

您好,在使用jcorrector的过程中我发现会把一些英文或者数字进行替换,导致一些异常,我想如果句子中包含英文或数字的情况,不将它们替换,而是保留原字符,我该怎么做?

@jiangnanboy
Copy link
Owner

有例子么

@minboo
Copy link
Author

minboo commented Oct 21, 2022

使用代码中的demo如下,测试的句子中,英文及数字会被错误的转换

public static void main(String[] args) throws OrtException {
        LoadModel.loadOnnxModel();
        String text = "今天新情很好。";
        text = "是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5ms发送一个新线程,而不会产生净内存累积,并确认它的RNG内存已在GC上清理)。编号7788";
        Pair<BertTokenizer, Map<String, OnnxTensor>> pair = null;
        try {
            pair = MacBert.parseInputText(text);
        } catch (Exception e) {
            e.printStackTrace();
        }
        var predString = MacBert.predCSC(pair);
        List<Pair<String, String>> resultList = MacBert.getErrors(predString, text);
        for(Pair<String, String> result : resultList) {
            System.out.println(text + " => " + result.getLeft() + " " + result.getRight());
            // System.out.println(result.getRight());
        }
    }

输出如下:

load onnx model...
/data/jcorrector/model/macbert4csc.onnx
init bertTokenizer...
load vocab ...
[[CLS], 是, 的, ,, 当, 线, 程, 不, 再, 使, 用, 时, ,, 该, 缓, 冲, 区, 将, 被, 清, 理, (, 我, 昨, 天, 实, 际, 上, 对, 此, 进, 行, 了, 测, 试, ,, 我, 可, 以, 每, 5m, ##s, 发, 送, 一, 个, 新, 线, 程, ,, 而, 不, 会, 产, 生, 净, 内, 存, 累, 积, ,, 并, 确, 认, 它, 的, [UNK], 内, 存, 已, 在, [UNK], 上, 清, 理, ), 。, 编, 号, 77, ##88, [SEP]]
15:02:52.504 [main] INFO org.nd4j.linalg.factory.Nd4jBackend - Loaded [CpuBackend] backend
15:02:52.845 [main] INFO org.nd4j.nativeblas.NativeOpsHolder - Number of threads used for linear algebra: 4
15:02:52.845 [main] WARN org.nd4j.linalg.cpu.nativecpu.CpuNDArrayFactory - *********************************** CPU Feature Check Warning ***********************************
15:02:52.845 [main] WARN org.nd4j.linalg.cpu.nativecpu.CpuNDArrayFactory - Warning: Initializing ND4J with Generic x86 binary on a CPU with AVX512 support
15:02:52.845 [main] WARN org.nd4j.linalg.cpu.nativecpu.CpuNDArrayFactory - Using ND4J with AVX512 will improve performance. See deeplearning4j.org/cpu for more details
15:02:52.845 [main] WARN org.nd4j.linalg.cpu.nativecpu.CpuNDArrayFactory - Or set environment variable ND4J_IGNORE_AVX=true to suppress this warning
15:02:52.845 [main] WARN org.nd4j.linalg.cpu.nativecpu.CpuNDArrayFactory - *************************************************************************************************
15:02:52.860 [main] INFO org.nd4j.nativeblas.Nd4jBlas - Number of threads used for OpenMP BLAS: 4
15:02:52.867 [main] INFO org.nd4j.linalg.api.ops.executioner.DefaultOpExecutioner - Backend used: [CPU]; OS: [Windows 11]
15:02:52.867 [main] INFO org.nd4j.linalg.api.ops.executioner.DefaultOpExecutioner - Cores: [8]; Memory: [4.0GB];
15:02:52.867 [main] INFO org.nd4j.linalg.api.ops.executioner.DefaultOpExecutioner - Blas vendor: [OPENBLAS]
是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5ms发送一个新线程,而不会产生净内存累积,并确认它的RNG内存已在GC上清理)。编号7788 => 是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5m##s发送一个新线程,而不会产生净内存累积,并确认它的[unk]内存已在[unk]上清理)。编号77##88 s,#,41,42
是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5ms发送一个新线程,而不会产生净内存累积,并确认它的RNG内存已在GC上清理)。编号7788 => 是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5m##s发送一个新线程,而不会产生净内存累积,并确认它的[unk]内存已在[unk]上清理)。编号77##88 发,#,42,43
是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5ms发送一个新线程,而不会产生净内存累积,并确认它的RNG内存已在GC上清理)。编号7788 => 是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5m##s发送一个新线程,而不会产生净内存累积,并确认它的[unk]内存已在[unk]上清理)。编号77##88 送,s,43,44
是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5ms发送一个新线程,而不会产生净内存累积,并确认它的RNG内存已在GC上清理)。编号7788 => 是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5m##s发送一个新线程,而不会产生净内存累积,并确认它的[unk]内存已在[unk]上清理)。编号77##88 一,发,44,45
是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5ms发送一个新线程,而不会产生净内存累积,并确认它的RNG内存已在GC上清理)。编号7788 => 是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5m##s发送一个新线程,而不会产生净内存累积,并确认它的[unk]内存已在[unk]上清理)。编号77##88 个,送,45,46
是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5ms发送一个新线程,而不会产生净内存累积,并确认它的RNG内存已在GC上清理)。编号7788 => 是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5m##s发送一个新线程,而不会产生净内存累积,并确认它的[unk]内存已在[unk]上清理)。编号77##88 新,一,46,47
是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5ms发送一个新线程,而不会产生净内存累积,并确认它的RNG内存已在GC上清理)。编号7788 => 是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5m##s发送一个新线程,而不会产生净内存累积,并确认它的[unk]内存已在[unk]上清理)。编号77##88 线,个,47,48
是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5ms发送一个新线程,而不会产生净内存累积,并确认它的RNG内存已在GC上清理)。编号7788 => 是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5m##s发送一个新线程,而不会产生净内存累积,并确认它的[unk]内存已在[unk]上清理)。编号77##88 程,新,48,49
是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5ms发送一个新线程,而不会产生净内存累积,并确认它的RNG内存已在GC上清理)。编号7788 => 是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5m##s发送一个新线程,而不会产生净内存累积,并确认它的[unk]内存已在[unk]上清理)。编号77##88 ,,线,49,50
是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5ms发送一个新线程,而不会产生净内存累积,并确认它的RNG内存已在GC上清理)。编号7788 => 是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5m##s发送一个新线程,而不会产生净内存累积,并确认它的[unk]内存已在[unk]上清理)。编号77##88 而,程,50,51
是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5ms发送一个新线程,而不会产生净内存累积,并确认它的RNG内存已在GC上清理)。编号7788 => 是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5m##s发送一个新线程,而不会产生净内存累积,并确认它的[unk]内存已在[unk]上清理)。编号77##88 不,,,51,52
是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5ms发送一个新线程,而不会产生净内存累积,并确认它的RNG内存已在GC上清理)。编号7788 => 是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5m##s发送一个新线程,而不会产生净内存累积,并确认它的[unk]内存已在[unk]上清理)。编号77##88 会,而,52,53
是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5ms发送一个新线程,而不会产生净内存累积,并确认它的RNG内存已在GC上清理)。编号7788 => 是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5m##s发送一个新线程,而不会产生净内存累积,并确认它的[unk]内存已在[unk]上清理)。编号77##88 产,不,53,54
是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5ms发送一个新线程,而不会产生净内存累积,并确认它的RNG内存已在GC上清理)。编号7788 => 是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5m##s发送一个新线程,而不会产生净内存累积,并确认它的[unk]内存已在[unk]上清理)。编号77##88 生,会,54,55
是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5ms发送一个新线程,而不会产生净内存累积,并确认它的RNG内存已在GC上清理)。编号7788 => 是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5m##s发送一个新线程,而不会产生净内存累积,并确认它的[unk]内存已在[unk]上清理)。编号77##88 净,产,55,56
是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5ms发送一个新线程,而不会产生净内存累积,并确认它的RNG内存已在GC上清理)。编号7788 => 是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5m##s发送一个新线程,而不会产生净内存累积,并确认它的[unk]内存已在[unk]上清理)。编号77##88 内,生,56,57
是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5ms发送一个新线程,而不会产生净内存累积,并确认它的RNG内存已在GC上清理)。编号7788 => 是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5m##s发送一个新线程,而不会产生净内存累积,并确认它的[unk]内存已在[unk]上清理)。编号77##88 存,净,57,58
是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5ms发送一个新线程,而不会产生净内存累积,并确认它的RNG内存已在GC上清理)。编号7788 => 是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5m##s发送一个新线程,而不会产生净内存累积,并确认它的[unk]内存已在[unk]上清理)。编号77##88 累,内,58,59
是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5ms发送一个新线程,而不会产生净内存累积,并确认它的RNG内存已在GC上清理)。编号7788 => 是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5m##s发送一个新线程,而不会产生净内存累积,并确认它的[unk]内存已在[unk]上清理)。编号77##88 积,存,59,60
是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5ms发送一个新线程,而不会产生净内存累积,并确认它的RNG内存已在GC上清理)。编号7788 => 是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5m##s发送一个新线程,而不会产生净内存累积,并确认它的[unk]内存已在[unk]上清理)。编号77##88 ,,累,60,61
是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5ms发送一个新线程,而不会产生净内存累积,并确认它的RNG内存已在GC上清理)。编号7788 => 是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5m##s发送一个新线程,而不会产生净内存累积,并确认它的[unk]内存已在[unk]上清理)。编号77##88 并,积,61,62
是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5ms发送一个新线程,而不会产生净内存累积,并确认它的RNG内存已在GC上清理)。编号7788 => 是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5m##s发送一个新线程,而不会产生净内存累积,并确认它的[unk]内存已在[unk]上清理)。编号77##88 确,,,62,63
是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5ms发送一个新线程,而不会产生净内存累积,并确认它的RNG内存已在GC上清理)。编号7788 => 是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5m##s发送一个新线程,而不会产生净内存累积,并确认它的[unk]内存已在[unk]上清理)。编号77##88 认,并,63,64
是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5ms发送一个新线程,而不会产生净内存累积,并确认它的RNG内存已在GC上清理)。编号7788 => 是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5m##s发送一个新线程,而不会产生净内存累积,并确认它的[unk]内存已在[unk]上清理)。编号77##88 它,确,64,65
是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5ms发送一个新线程,而不会产生净内存累积,并确认它的RNG内存已在GC上清理)。编号7788 => 是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5m##s发送一个新线程,而不会产生净内存累积,并确认它的[unk]内存已在[unk]上清理)。编号77##88 的,认,65,66
是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5ms发送一个新线程,而不会产生净内存累积,并确认它的RNG内存已在GC上清理)。编号7788 => 是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5m##s发送一个新线程,而不会产生净内存累积,并确认它的[unk]内存已在[unk]上清理)。编号77##88 R,它,66,67
是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5ms发送一个新线程,而不会产生净内存累积,并确认它的RNG内存已在GC上清理)。编号7788 => 是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5m##s发送一个新线程,而不会产生净内存累积,并确认它的[unk]内存已在[unk]上清理)。编号77##88 N,的,67,68
是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5ms发送一个新线程,而不会产生净内存累积,并确认它的RNG内存已在GC上清理)。编号7788 => 是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5m##s发送一个新线程,而不会产生净内存累积,并确认它的[unk]内存已在[unk]上清理)。编号77##88 G,[,68,69
是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5ms发送一个新线程,而不会产生净内存累积,并确认它的RNG内存已在GC上清理)。编号7788 => 是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5m##s发送一个新线程,而不会产生净内存累积,并确认它的[unk]内存已在[unk]上清理)。编号77##88 内,u,69,70
是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5ms发送一个新线程,而不会产生净内存累积,并确认它的RNG内存已在GC上清理)。编号7788 => 是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5m##s发送一个新线程,而不会产生净内存累积,并确认它的[unk]内存已在[unk]上清理)。编号77##88 存,n,70,71
是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5ms发送一个新线程,而不会产生净内存累积,并确认它的RNG内存已在GC上清理)。编号7788 => 是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5m##s发送一个新线程,而不会产生净内存累积,并确认它的[unk]内存已在[unk]上清理)。编号77##88 已,k,71,72
是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5ms发送一个新线程,而不会产生净内存累积,并确认它的RNG内存已在GC上清理)。编号7788 => 是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5m##s发送一个新线程,而不会产生净内存累积,并确认它的[unk]内存已在[unk]上清理)。编号77##88 在,],72,73
是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5ms发送一个新线程,而不会产生净内存累积,并确认它的RNG内存已在GC上清理)。编号7788 => 是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5m##s发送一个新线程,而不会产生净内存累积,并确认它的[unk]内存已在[unk]上清理)。编号77##88 G,内,73,74
是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5ms发送一个新线程,而不会产生净内存累积,并确认它的RNG内存已在GC上清理)。编号7788 => 是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5m##s发送一个新线程,而不会产生净内存累积,并确认它的[unk]内存已在[unk]上清理)。编号77##88 C,存,74,75
是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5ms发送一个新线程,而不会产生净内存累积,并确认它的RNG内存已在GC上清理)。编号7788 => 是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5m##s发送一个新线程,而不会产生净内存累积,并确认它的[unk]内存已在[unk]上清理)。编号77##88 上,已,75,76
是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5ms发送一个新线程,而不会产生净内存累积,并确认它的RNG内存已在GC上清理)。编号7788 => 是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5m##s发送一个新线程,而不会产生净内存累积,并确认它的[unk]内存已在[unk]上清理)。编号77##88 清,在,76,77
是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5ms发送一个新线程,而不会产生净内存累积,并确认它的RNG内存已在GC上清理)。编号7788 => 是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5m##s发送一个新线程,而不会产生净内存累积,并确认它的[unk]内存已在[unk]上清理)。编号77##88 理,[,77,78
是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5ms发送一个新线程,而不会产生净内存累积,并确认它的RNG内存已在GC上清理)。编号7788 => 是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5m##s发送一个新线程,而不会产生净内存累积,并确认它的[unk]内存已在[unk]上清理)。编号77##88 ),u,78,79
是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5ms发送一个新线程,而不会产生净内存累积,并确认它的RNG内存已在GC上清理)。编号7788 => 是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5m##s发送一个新线程,而不会产生净内存累积,并确认它的[unk]内存已在[unk]上清理)。编号77##88 。,n,79,80
是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5ms发送一个新线程,而不会产生净内存累积,并确认它的RNG内存已在GC上清理)。编号7788 => 是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5m##s发送一个新线程,而不会产生净内存累积,并确认它的[unk]内存已在[unk]上清理)。编号77##88 编,k,80,81
是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5ms发送一个新线程,而不会产生净内存累积,并确认它的RNG内存已在GC上清理)。编号7788 => 是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5m##s发送一个新线程,而不会产生净内存累积,并确认它的[unk]内存已在[unk]上清理)。编号77##88 号,],81,82
是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5ms发送一个新线程,而不会产生净内存累积,并确认它的RNG内存已在GC上清理)。编号7788 => 是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5m##s发送一个新线程,而不会产生净内存累积,并确认它的[unk]内存已在[unk]上清理)。编号77##88 7,上,82,83
是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5ms发送一个新线程,而不会产生净内存累积,并确认它的RNG内存已在GC上清理)。编号7788 => 是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5m##s发送一个新线程,而不会产生净内存累积,并确认它的[unk]内存已在[unk]上清理)。编号77##88 7,清,83,84
是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5ms发送一个新线程,而不会产生净内存累积,并确认它的RNG内存已在GC上清理)。编号7788 => 是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5m##s发送一个新线程,而不会产生净内存累积,并确认它的[unk]内存已在[unk]上清理)。编号77##88 8,理,84,85
是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5ms发送一个新线程,而不会产生净内存累积,并确认它的RNG内存已在GC上清理)。编号7788 => 是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5m##s发送一个新线程,而不会产生净内存累积,并确认它的[unk]内存已在[unk]上清理)。编号77##88 8,),85,86

Process finished with exit code 0

若将代码中测试句子改为text = "今天新情很好。build哈哈哈"; 则会出现越界异常,通过debug发现build这个英文被转换为了其它中文,导致结果长度不相同。
image

以下为报错:

load onnx model...
/data/jcorrector/model/macbert4csc.onnx
init bertTokenizer...
load vocab ...
[[CLS], 今, 天, 新, 情, 很, 好, 。, build, 哈, 哈, 哈, [SEP]]
15:14:24.239 [main] INFO org.nd4j.linalg.factory.Nd4jBackend - Loaded [CpuBackend] backend
15:14:24.598 [main] INFO org.nd4j.nativeblas.NativeOpsHolder - Number of threads used for linear algebra: 4
15:14:24.599 [main] WARN org.nd4j.linalg.cpu.nativecpu.CpuNDArrayFactory - *********************************** CPU Feature Check Warning ***********************************
15:14:24.600 [main] WARN org.nd4j.linalg.cpu.nativecpu.CpuNDArrayFactory - Warning: Initializing ND4J with Generic x86 binary on a CPU with AVX512 support
15:14:24.600 [main] WARN org.nd4j.linalg.cpu.nativecpu.CpuNDArrayFactory - Using ND4J with AVX512 will improve performance. See deeplearning4j.org/cpu for more details
15:14:24.600 [main] WARN org.nd4j.linalg.cpu.nativecpu.CpuNDArrayFactory - Or set environment variable ND4J_IGNORE_AVX=true to suppress this warning
15:14:24.600 [main] WARN org.nd4j.linalg.cpu.nativecpu.CpuNDArrayFactory - *************************************************************************************************
15:14:24.615 [main] INFO org.nd4j.nativeblas.Nd4jBlas - Number of threads used for OpenMP BLAS: 4
15:14:24.622 [main] INFO org.nd4j.linalg.api.ops.executioner.DefaultOpExecutioner - Backend used: [CPU]; OS: [Windows 11]
15:14:24.622 [main] INFO org.nd4j.linalg.api.ops.executioner.DefaultOpExecutioner - Cores: [8]; Memory: [4.0GB];
15:14:24.622 [main] INFO org.nd4j.linalg.api.ops.executioner.DefaultOpExecutioner - Blas vendor: [OPENBLAS]
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: begin 11, end 12, length 11
	at java.base/java.lang.String.checkBoundsBeginEnd(String.java:3319)
	at java.base/java.lang.String.substring(String.java:1874)
	at sy.dl.MacBert.getErrors(MacBert.java:111)
	at examples.dl.MacBertDemo.main(MacBertDemo.java:30)
Disconnected from the target VM, address: '127.0.0.1:65143', transport: 'socket'

Process finished with exit code 1

@jiangnanboy
Copy link
Owner

这种可以进行后处理或者模型训练的时候进行处理

@minboo
Copy link
Author

minboo commented Oct 21, 2022

请问应该如何进行后处理呢,可以指点一二吗,感谢

@jiangnanboy
Copy link
Owner

(1). text = "是的,当线程不再使用时,该缓冲区将被清理(我昨天实际上对此进行了测试,我可以每5ms发送一个新线程,而不会产生净内存累积,并确认它的RNG内存已在GC上清理)。编号7788"; ====>这个已解决,看最新代码。
(2). 关于“text = "今天新情很好。build哈哈哈"”,模型在预测时会直接省去“build”这个单词,不太好弄。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants