Skip to content

max-word为什么要采用两个字一组,不采用在词库中存在的词就分出来呢? #1

@haochun

Description

@haochun

如题,在实际应用中可能会出现分词的时候使用max-word,而检索采用complex,但您的max-word测试后发现是最多两个字一组,这样的话是否有问题?我在使用的过程中是将其能分成更多的词,比如 计算机学院 我会分成 计算机、学院、计算 这样的,我对代码修改了一点,其中主要对MaxWordSeg.java进行了修改,如下:

public Chunk seg(Sentence sen) {
        Chunk chunk = new Chunk();
        char[] chs = sen.getText();
        List<Word> cks = new ArrayList<Word>();
        for(int k=0; k<3&&!sen.isFinish(); k++) {
            int offset = sen.getOffset();
            int maxLen = 0;
            //有了 key tree 的支持可以从头开始 max match
            ArrayList<Integer> lens = dic.maxMatchs(chs, offset);
            maxLen = lens.get(0);
            for(int len:lens){
                if(len>maxLen){
                    maxLen = len;
                }
                cks.add(new Word(chs, sen.getStartOffset(), offset, len+1));
            }
            chunk.words[k] = new Word(chs, sen.getStartOffset(), offset, maxLen+1);
            offset += maxLen + 1;
            sen.setOffset(offset);
        }
        chunk.words = cks.toArray(new Word[cks.size()]);
        chunk.count = cks.size();
        return chunk;
    }

如有不当之处,请见谅

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