org.apdplat.word.segmentation.Segmentation Java Examples

The following examples show how to use org.apdplat.word.segmentation.Segmentation. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: WordSegmentFactory.java    From jstarcraft-nlp with Apache License 2.0 5 votes vote down vote up
@Override
protected NlpTokenizer<? extends NlpToken> getNlpTokenizer(Map<String, String> configurations) {
    Segmentation segmentation = build(configurations);

    WordTokenizer tokenizer = new WordTokenizer(segmentation);
    return tokenizer;
}
 
Example #2
Source File: WordSegmentFactory.java    From jstarcraft-nlp with Apache License 2.0 5 votes vote down vote up
@Override
public Segmentation build(Map<String, String> configurations) {
    for (Entry<String, String> keyValue : configurations.entrySet()) {
        String key = keyValue.getKey();
        String value = keyValue.getValue();
        WordConfTools.set(key, value);
    }

    String algorithm = get(configurations, "algorithm", "FullSegmentation");
    Segmentation segmentation = SegmentationFactory.getSegmentation(SegmentationAlgorithm.valueOf(algorithm));
    return segmentation;
}
 
Example #3
Source File: WordSegmenterTestCase.java    From jstarcraft-nlp with Apache License 2.0 5 votes vote down vote up
@Override
protected Tokenizer getSegmenter() {
    // 可以配置到word.local.conf
    // 保持标点符号
    WordConfTools.set("keep.punctuation", "true");
    // 保持空格
    WordConfTools.set("keep.whitespace", "true");
    Segmentation segmentation = SegmentationFactory.getSegmentation(SegmentationAlgorithm.FullSegmentation);
    WordTokenizer tokenizer = new WordTokenizer(segmentation);
    return tokenizer;
}
 
Example #4
Source File: WordTokenizerTestCase.java    From jstarcraft-nlp with Apache License 2.0 5 votes vote down vote up
@Override
protected NlpTokenizer<? extends NlpToken> getTokenizer() {
    // 保持标点符号
    WordConfTools.set("keep.punctuation", "true");
    // 保持空格
    WordConfTools.set("keep.whitespace", "true");
    Segmentation segmentation = SegmentationFactory.getSegmentation(SegmentationAlgorithm.FullSegmentation);
    return new WordTokenizer(segmentation);
}
 
Example #5
Source File: MinimalWordCount.java    From word with Apache License 2.0 5 votes vote down vote up
public static void main(String[] args){
    Segmentation segmentation = new MinimalWordCount();
    if(args !=null && args.length > 0){
        System.out.println(segmentation.seg(Arrays.asList(args).toString()));
        return;
    }
    System.out.println(segmentation.seg("独立自主和平等互利的原则"));
    System.out.println(segmentation.seg("我爱楚离陌"));
}
 
Example #6
Source File: FullSegmentation.java    From word with Apache License 2.0 5 votes vote down vote up
public static void main(String[] args){
    Segmentation m = new FullSegmentation();
    if(args !=null && args.length > 0){
        System.out.println(m.seg(Arrays.asList(args).toString()));
        return;
    }
    String text = "蝶舞打扮得漂漂亮亮出现在张公公面前";
    System.out.println(m.seg(text));
}
 
Example #7
Source File: MaxNgramScore.java    From word with Apache License 2.0 5 votes vote down vote up
public static void main(String[] args){
    Segmentation segmentation = new MaxNgramScore();
    if(args !=null && args.length > 0){
        System.out.println(segmentation.seg(Arrays.asList(args).toString()));
        return;
    }
    System.out.println(segmentation.seg("独立自主和平等互利的原则"));
    System.out.println(segmentation.seg("我爱杨尚川"));
}
 
Example #8
Source File: ReverseMinimumMatchingTest.java    From word with Apache License 2.0 4 votes vote down vote up
@Test
public void testSeg() {
    Segmentation segmentation = new ReverseMinimumMatching();
    List<String> text = new ArrayList<>();
    text.add("长春市长春节致辞");
    text.add("杨");
    text.add("杨尚川好");
    text.add("杨尚川是APDPlat应用级产品开发平台的作者");
    text.add("他说的确实在理");
    text.add("提高人民生活水平");
    text.add("他俩儿谈恋爱是从头年元月开始的");
    text.add("王府饭店的设施和服务是一流的");
    text.add("和服务于三日后裁制完毕,并呈送将军府中");
    text.add("研究生命的起源");
    text.add("他明天起身去北京");
    text.add("在这些企业中国有企业有十个");
    text.add("他站起身来");
    text.add("他们是来查金泰撞人那件事的");
    text.add("行侠仗义的查金泰远近闻名");
    text.add("他从马上摔下来了,你马上下来一下");
    text.add("乒乓球拍卖完了");
    text.add("咬死猎人的狗");
    text.add("地面积了厚厚的雪");
    text.add("这几块地面积还真不小");
    text.add("大学生活象白纸");
    text.add("结合成分子式");
    text.add("有意见分歧");
    text.add("发展中国家兔的计划");
    text.add("明天他将来北京");
    text.add("税收制度将来会更完善");
    text.add("依靠群众才能做好工作");
    text.add("现在是施展才能的好机会");
    text.add("把手举起来");
    text.add("茶杯的把手断了");
    text.add("以新的姿态出现在世界东方");
    text.add("使节约粮食进一步形成风气");
    text.add("反映了一个人的精神面貌");
    text.add("美国加州大学的科学家发现");
    text.add("我好不挺好");
    text.add("木有");
    text.add("下雨天留客天天留我不留");
    text.add("叔叔亲了我妈妈也亲了我");
    
    List<String> expResult = new ArrayList<>();
    expResult.add("[长春, 市长, 春节, 致辞]");
    expResult.add("[杨]");
    expResult.add("[杨尚川, 好]");
    expResult.add("[杨尚川, 是, apdplat, 应用级, 产品, 开发, 平台, 的, 作者]");
    expResult.add("[他, 说, 的, 确实, 在理]");
    expResult.add("[提高, 人民, 生活, 水平]");
    expResult.add("[他俩, 儿, 谈, 恋爱, 是从, 头年, 元月, 开始, 的]");
    expResult.add("[王府, 饭店, 的, 设施, 和, 服务, 是, 一流, 的]");
    expResult.add("[和, 服务于, 三, 日后, 裁制, 完毕, 并, 呈送, 将军, 府中]");
    expResult.add("[研究, 生命, 的, 起源]");
    expResult.add("[他, 明天, 起身, 去, 北京]");
    expResult.add("[在, 这些, 企业, 中, 国有, 企业, 有, 十个]");
    expResult.add("[他, 站, 起身, 来]");
    expResult.add("[他们, 是, 来, 查, 金泰, 撞人, 那, 件事, 的]");
    expResult.add("[行, 侠, 仗义, 的, 查, 金泰, 远近, 闻名]");
    expResult.add("[他, 从, 马上, 摔下, 来了, 你, 马上, 下来, 一下]");
    expResult.add("[乒乓球, 拍卖, 完了]");
    expResult.add("[咬死, 猎人, 的, 狗]");
    expResult.add("[地, 面积, 了, 厚厚的, 雪]");
    expResult.add("[这, 几块, 地, 面积, 还真, 不小]");
    expResult.add("[大, 学生, 活象, 白纸]");
    expResult.add("[结合, 成分, 子式]");
    expResult.add("[有, 意见, 分歧]");
    expResult.add("[发展, 中国, 家兔, 的, 计划]");
    expResult.add("[明天, 他, 将来, 北京]");
    expResult.add("[税收, 制度, 将来, 会, 更, 完善]");
    expResult.add("[依靠, 群众, 才能, 做好, 工作]");
    expResult.add("[现在, 是, 施展, 才能, 的, 好, 机会]");
    expResult.add("[把手, 举, 起来]");
    expResult.add("[茶杯, 的, 把手, 断了]");
    expResult.add("[以, 新的, 姿态, 出, 现在, 世界, 东方]");
    expResult.add("[使, 节约, 粮食, 进, 一步, 形成, 风气]");
    expResult.add("[反映, 了, 一, 个人, 的, 精神, 面貌]");
    expResult.add("[美国, 加州, 大学, 的, 科, 学家, 发现]");
    expResult.add("[我, 好不, 挺好]");
    expResult.add("[木, 有]");
    expResult.add("[下, 雨天, 留客, 天天, 留, 我, 不留]");
    expResult.add("[叔叔, 亲了, 我, 妈妈, 也, 亲了, 我]");
    
    for(int i=0; i<text.size(); i++){
        List<Word> result = segmentation.seg(text.get(i));
        for(Word word : result){
            word.setPartOfSpeech(null);
        }
        assertEquals(expResult.get(i).toString(), result.toString());
    }
}
 
Example #9
Source File: WordTokenizer.java    From jstarcraft-nlp with Apache License 2.0 4 votes vote down vote up
public WordTokenizer(Segmentation segmentation) {
    this.segmentation = segmentation;
}
 
Example #10
Source File: MinimumMatchingTest.java    From word with Apache License 2.0 4 votes vote down vote up
@Test
public void testSeg() {
    Segmentation segmentation = new MinimumMatching();
    List<String> text = new ArrayList<>();
    text.add("长春市长春节致辞");
    text.add("杨");
    text.add("杨尚川好");
    text.add("杨尚川是APDPlat应用级产品开发平台的作者");
    text.add("他说的确实在理");
    text.add("提高人民生活水平");
    text.add("他俩儿谈恋爱是从头年元月开始的");
    text.add("王府饭店的设施和服务是一流的");
    text.add("和服务于三日后裁制完毕,并呈送将军府中");
    text.add("研究生命的起源");
    text.add("他明天起身去北京");
    text.add("在这些企业中国有企业有十个");
    text.add("他站起身来");
    text.add("他们是来查金泰撞人那件事的");
    text.add("行侠仗义的查金泰远近闻名");
    text.add("他从马上摔下来了,你马上下来一下");
    text.add("乒乓球拍卖完了");
    text.add("咬死猎人的狗");
    text.add("地面积了厚厚的雪");
    text.add("这几块地面积还真不小");
    text.add("大学生活象白纸");
    text.add("结合成分子式");
    text.add("有意见分歧");
    text.add("发展中国家兔的计划");
    text.add("明天他将来北京");
    text.add("税收制度将来会更完善");
    text.add("依靠群众才能做好工作");
    text.add("现在是施展才能的好机会");
    text.add("把手举起来");
    text.add("茶杯的把手断了");
    text.add("以新的姿态出现在世界东方");
    text.add("使节约粮食进一步形成风气");
    text.add("反映了一个人的精神面貌");
    text.add("美国加州大学的科学家发现");
    text.add("我好不挺好");
    text.add("木有");
    text.add("下雨天留客天天留我不留");
    text.add("叔叔亲了我妈妈也亲了我");
    
    List<String> expResult = new ArrayList<>();
    expResult.add("[长春, 市长, 春节, 致辞]");
    expResult.add("[杨]");
    expResult.add("[杨尚川, 好]");
    expResult.add("[杨尚川, 是, apdplat, 应用, 级, 产品, 开发, 平台, 的, 作者]");
    expResult.add("[他, 说, 的确, 实在, 理]");
    expResult.add("[提高, 人民, 生活, 水平]");
    expResult.add("[他俩, 儿, 谈恋爱, 是从, 头年, 元月, 开始, 的]");
    expResult.add("[王府, 饭店, 的, 设施, 和服, 务, 是, 一, 流, 的]");
    expResult.add("[和服, 务, 于三, 日后, 裁制, 完毕, 并, 呈送, 将军, 府中]");
    expResult.add("[研究, 生命, 的, 起源]");
    expResult.add("[他, 明天, 起身, 去, 北京]");
    expResult.add("[在, 这些, 企业, 中国, 有, 企业, 有十个]");
    expResult.add("[他, 站起, 身, 来]");
    expResult.add("[他们, 是, 来, 查, 金泰, 撞人, 那件, 事, 的]");
    expResult.add("[行侠仗义, 的, 查, 金泰, 远近, 闻名]");
    expResult.add("[他, 从, 马上, 摔下, 来了, 你, 马上, 下来, 一, 下]");
    expResult.add("[乒乓, 球拍, 卖完, 了]");
    expResult.add("[咬死, 猎人, 的, 狗]");
    expResult.add("[地面, 积, 了, 厚厚, 的, 雪]");
    expResult.add("[这, 几块, 地面, 积, 还真, 不小]");
    expResult.add("[大学, 生活, 象, 白纸]");
    expResult.add("[结合, 成分, 子式]");
    expResult.add("[有意, 见, 分歧]");
    expResult.add("[发展, 中国, 家兔, 的, 计划]");
    expResult.add("[明天, 他, 将来, 北京]");
    expResult.add("[税收, 制度, 将来, 会, 更, 完善]");
    expResult.add("[依靠, 群众, 才能, 做好, 工作]");
    expResult.add("[现在, 是, 施展, 才能, 的, 好机会]");
    expResult.add("[把手, 举起, 来]");
    expResult.add("[茶杯, 的, 把手, 断了]");
    expResult.add("[以, 新的, 姿态, 出现, 在世, 界, 东方]");
    expResult.add("[使节, 约, 粮食, 进一, 步, 形成, 风气]");
    expResult.add("[反映, 了, 一, 个人, 的, 精神, 面貌]");
    expResult.add("[美国, 加州, 大学, 的, 科学, 家, 发现]");
    expResult.add("[我, 好不, 挺好]");
    expResult.add("[木, 有]");
    expResult.add("[下雨, 天, 留客, 天天, 留, 我, 不留]");
    expResult.add("[叔叔, 亲了, 我, 妈妈, 也, 亲了, 我]");
    expResult.add("[白马, 非, 马]");
    
    for(int i=0; i<text.size(); i++){
        List<Word> result = segmentation.seg(text.get(i));
        for(Word word : result){
            word.setPartOfSpeech(null);
        }
        assertEquals(expResult.get(i).toString(), result.toString());
    }
}
 
Example #11
Source File: ReverseMaximumMatchingTest.java    From word with Apache License 2.0 4 votes vote down vote up
@Test
public void testSeg() {
    Segmentation segmentation = new ReverseMaximumMatching();
    List<String> text = new ArrayList<>();
    text.add("长春市长春节致辞");
    text.add("好");
    text.add("杨尚川好");
    text.add("杨尚川是APDPlat应用级产品开发平台的作者");
    text.add("他说的确实在理");
    text.add("提高人民生活水平");
    text.add("他俩儿谈恋爱是从头年元月开始的");
    text.add("王府饭店的设施和服务是一流的");
    text.add("和服务于三日后裁制完毕,并呈送将军府中");
    text.add("研究生命的起源");
    text.add("他明天起身去北京");
    text.add("在这些企业中国有企业有十个");
    text.add("他站起身来");
    text.add("他们是来查金泰撞人那件事的");
    text.add("行侠仗义的查金泰远近闻名");
    text.add("他从马上摔下来了,你马上下来一下");
    text.add("乒乓球拍卖完了");
    text.add("咬死猎人的狗");
    text.add("地面积了厚厚的雪");
    text.add("这几块地面积还真不小");
    text.add("大学生活象白纸");
    text.add("结合成分子式");
    text.add("有意见分歧");
    text.add("发展中国家兔的计划");
    text.add("明天他将来北京");
    text.add("税收制度将来会更完善");
    text.add("依靠群众才能做好工作");
    text.add("现在是施展才能的好机会");
    text.add("把手举起来");
    text.add("茶杯的把手断了");
    text.add("以新的姿态出现在世界东方");
    text.add("使节约粮食进一步形成风气");
    text.add("反映了一个人的精神面貌");
    text.add("美国加州大学的科学家发现");
    text.add("我好不挺好");
    text.add("木有");
    text.add("下雨天留客天天留我不留");
    text.add("叔叔亲了我妈妈也亲了我");
    
    List<String> expResult = new ArrayList<>();
    expResult.add("[长春, 市长, 春节, 致辞]");
    expResult.add("[好]");
    expResult.add("[杨尚川, 好]");
    expResult.add("[杨尚川, 是, apdplat, 应用级, 产品, 开发平台, 的, 作者]");
    expResult.add("[他, 说, 的, 确实, 在理]");
    expResult.add("[提高, 人民, 生活, 水平]");
    expResult.add("[他俩, 儿, 谈恋爱, 是从, 头年, 元月, 开始, 的]");
    expResult.add("[王府, 饭店, 的, 设施, 和, 服务, 是, 一流, 的]");
    expResult.add("[和, 服务于, 三, 日后, 裁制, 完毕, 并, 呈送, 将军, 府中]");
    expResult.add("[研究, 生命, 的, 起源]");
    expResult.add("[他, 明天, 起身, 去, 北京]");
    expResult.add("[在, 这些, 企业, 中, 国有企业, 有, 十个]");
    expResult.add("[他, 站, 起身, 来]");
    expResult.add("[他们, 是, 来, 查, 金泰, 撞人, 那件事, 的]");
    expResult.add("[行侠仗义, 的, 查, 金泰, 远近闻名]");
    expResult.add("[他, 从, 马上, 摔下, 来了, 你, 马, 上下, 来一下]");
    expResult.add("[乒乓球, 拍卖, 完了]");
    expResult.add("[咬死, 猎人, 的, 狗]");
    expResult.add("[地, 面积, 了, 厚厚的, 雪]");
    expResult.add("[这, 几块, 地, 面积, 还真, 不小]");
    expResult.add("[大学生, 活象, 白纸]");
    expResult.add("[结, 合成, 分子式]");
    expResult.add("[有, 意见分歧]");
    expResult.add("[发展, 中国, 家兔, 的, 计划]");
    expResult.add("[明天, 他, 将来, 北京]");
    expResult.add("[税收制度, 将来, 会, 更, 完善]");
    expResult.add("[依靠群众, 才, 能做, 好工作]");
    expResult.add("[现在, 是, 施展才能, 的, 好机会]");
    expResult.add("[把手, 举起来]");
    expResult.add("[茶杯, 的, 把手, 断了]");
    expResult.add("[以, 新的, 姿态, 出现在, 世界, 东方]");
    expResult.add("[使, 节约粮食, 进一步, 形成, 风气]");
    expResult.add("[反映, 了, 一个人, 的, 精神面貌]");
    expResult.add("[美国加州大学, 的, 科学家, 发现]");
    expResult.add("[我, 好不, 挺好]");
    expResult.add("[木, 有]");
    expResult.add("[下雨天, 留客, 天天, 留, 我, 不留]");
    expResult.add("[叔叔, 亲了, 我, 妈妈, 也, 亲了, 我]");
    
    for(int i=0; i<text.size(); i++){
        List<Word> result = segmentation.seg(text.get(i));
        for(Word word : result){
            word.setPartOfSpeech(null);
        }
        assertEquals(expResult.get(i).toString(), result.toString());
    }
}
 
Example #12
Source File: MaximumMatchingTest.java    From word with Apache License 2.0 4 votes vote down vote up
@Test
public void testSeg() {
    Segmentation segmentation = new MaximumMatching();
    List<String> text = new ArrayList<>();
    text.add("长春市长春节致辞");
    text.add("杨");
    text.add("杨尚川好");
    text.add("杨尚川是APDPlat应用级产品开发平台的作者");
    text.add("他说的确实在理");
    text.add("提高人民生活水平");
    text.add("他俩儿谈恋爱是从头年元月开始的");
    text.add("王府饭店的设施和服务是一流的");
    text.add("和服务于三日后裁制完毕,并呈送将军府中");
    text.add("研究生命的起源");
    text.add("他明天起身去北京");
    text.add("在这些企业中国有企业有十个");
    text.add("他站起身来");
    text.add("他们是来查金泰撞人那件事的");
    text.add("行侠仗义的查金泰远近闻名");
    text.add("他从马上摔下来了,你马上下来一下");
    text.add("乒乓球拍卖完了");
    text.add("咬死猎人的狗");
    text.add("地面积了厚厚的雪");
    text.add("这几块地面积还真不小");
    text.add("大学生活象白纸");
    text.add("结合成分子式");
    text.add("有意见分歧");
    text.add("发展中国家兔的计划");
    text.add("明天他将来北京");
    text.add("税收制度将来会更完善");
    text.add("依靠群众才能做好工作");
    text.add("现在是施展才能的好机会");
    text.add("把手举起来");
    text.add("茶杯的把手断了");
    text.add("以新的姿态出现在世界东方");
    text.add("使节约粮食进一步形成风气");
    text.add("反映了一个人的精神面貌");
    text.add("美国加州大学的科学家发现");
    text.add("我好不挺好");
    text.add("木有");
    text.add("下雨天留客天天留我不留");
    text.add("叔叔亲了我妈妈也亲了我");
    
    List<String> expResult = new ArrayList<>();
    expResult.add("[长春市, 长春, 节, 致辞]");
    expResult.add("[杨]");
    expResult.add("[杨尚川, 好]");
    expResult.add("[杨尚川, 是, apdplat, 应用级, 产品开发, 平台, 的, 作者]");
    expResult.add("[他, 说, 的确, 实在, 理]");
    expResult.add("[提高, 人民, 生活, 水平]");
    expResult.add("[他俩, 儿, 谈恋爱, 是从, 头年, 元月, 开始, 的]");
    expResult.add("[王府, 饭店, 的, 设施, 和服, 务, 是, 一流, 的]");
    expResult.add("[和服, 务, 于, 三日, 后, 裁制, 完毕, 并, 呈送, 将军府, 中]");
    expResult.add("[研究生, 命, 的, 起源]");
    expResult.add("[他, 明天, 起身, 去, 北京]");
    expResult.add("[在, 这些, 企业, 中国, 有, 企业, 有, 十个]");
    expResult.add("[他, 站起, 身, 来]");
    expResult.add("[他们, 是, 来, 查, 金泰, 撞人, 那件事, 的]");
    expResult.add("[行侠仗义, 的, 查, 金泰, 远近闻名]");
    expResult.add("[他, 从, 马上, 摔下来, 了, 你, 马上, 下来, 一下]");
    expResult.add("[乒乓球拍, 卖完, 了]");
    expResult.add("[咬死, 猎人, 的, 狗]");
    expResult.add("[地面, 积, 了, 厚厚的, 雪]");
    expResult.add("[这, 几块, 地面, 积, 还真, 不小]");
    expResult.add("[大学生, 活象, 白纸]");
    expResult.add("[结合, 成分, 子式]");
    expResult.add("[有意见, 分歧]");
    expResult.add("[发展中国家, 兔, 的, 计划]");
    expResult.add("[明天, 他, 将来, 北京]");
    expResult.add("[税收制度, 将来, 会, 更, 完善]");
    expResult.add("[依靠群众, 才能, 做好, 工作]");
    expResult.add("[现在, 是, 施展才能, 的, 好机会]");
    expResult.add("[把手, 举起来]");
    expResult.add("[茶杯, 的, 把手, 断了]");
    expResult.add("[以, 新的, 姿态, 出现在, 世界, 东方]");
    expResult.add("[使节, 约, 粮食, 进一步, 形成, 风气]");
    expResult.add("[反映, 了, 一个人, 的, 精神面貌]");
    expResult.add("[美国加州大学, 的, 科学家, 发现]");
    expResult.add("[我, 好不, 挺好]");
    expResult.add("[木, 有]");
    expResult.add("[下雨天, 留客, 天天, 留, 我, 不留]");
    expResult.add("[叔叔, 亲了, 我, 妈妈, 也, 亲了, 我]");
    
    for(int i=0; i<text.size(); i++){
        List<Word> result = segmentation.seg(text.get(i));
        for(Word word : result){
            word.setPartOfSpeech(null);
        }
        assertEquals(expResult.get(i).toString(), result.toString());
    }
}
 
Example #13
Source File: Utils.java    From word with Apache License 2.0 4 votes vote down vote up
/**
 *
 * 对文件进行分词
 * @param input 输入文件
 * @param output 输出文件
 * @param removeStopWords 是否移除停用词
 * @param segmentationAlgorithm 分词算法
 * @param fileSegmentationCallback 分词结果回调
 * @throws Exception
 */
public static void seg(File input, File output, boolean removeStopWords, SegmentationAlgorithm segmentationAlgorithm, FileSegmentationCallback fileSegmentationCallback) throws Exception{
    LOGGER.info("开始对文件进行分词:"+input.toString());
    Segmentation segmentation = SegmentationFactory.getSegmentation(segmentationAlgorithm);
    float max=(float)Runtime.getRuntime().maxMemory()/1000000;
    float total=(float)Runtime.getRuntime().totalMemory()/1000000;
    float free=(float)Runtime.getRuntime().freeMemory()/1000000;
    String pre="执行之前剩余内存:"+max+"-"+total+"+"+free+"="+(max-total+free);
    //准备输出目录
    if(!output.getParentFile().exists()){
        output.getParentFile().mkdirs();
    }
    try(BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(input),"utf-8"));
        BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(output),"utf-8"))){
        long size = Files.size(input.toPath());
        LOGGER.info("size:"+size);
        LOGGER.info("文件大小:"+(float)size/1024/1024+" MB");
        int textLength=0;
        int progress=0;
        long start = System.currentTimeMillis();
        String line = null;
        while((line = reader.readLine()) != null){
            if("".equals(line.trim())){
                writer.write("\n");
                continue;
            }
            textLength += line.length();
            List<Word> words = segmentation.seg(line);
            if(removeStopWords){
                //停用词过滤
                StopWord.filterStopWords(words);
            }
            if(words == null){
                continue;
            }
            for(Word word : words){
                if(fileSegmentationCallback != null) {
                    fileSegmentationCallback.callback(word);
                }
                writer.write(word.getText()+" ");
            }
            writer.write("\n");
            progress += line.length();
            if( progress > 500000){
                progress = 0;
                LOGGER.info("分词进度:"+(int)((float)textLength*2/size*100)+"%");
            }
        }
        long cost = System.currentTimeMillis() - start;
        float rate = textLength/cost;
        LOGGER.info("字符数目:"+textLength);
        LOGGER.info("分词耗时:"+getTimeDes(cost)+" 毫秒");
        LOGGER.info("分词速度:"+rate+" 字符/毫秒");
    }
    max=(float)Runtime.getRuntime().maxMemory()/1000000;
    total=(float)Runtime.getRuntime().totalMemory()/1000000;
    free=(float)Runtime.getRuntime().freeMemory()/1000000;
    String post="执行之后剩余内存:"+max+"-"+total+"+"+free+"="+(max-total+free);
    LOGGER.info(pre);
    LOGGER.info(post);
    LOGGER.info("将文件 "+input.toString()+" 的分词结果保存到文件 "+output);
}
 
Example #14
Source File: ChineseWordTokenizer.java    From word with Apache License 2.0 4 votes vote down vote up
public ChineseWordTokenizer(Segmentation segmentation) {
    this.segmentation = segmentation;
}
 
Example #15
Source File: ChineseWordAnalyzer.java    From word with Apache License 2.0 4 votes vote down vote up
public ChineseWordAnalyzer(Segmentation segmentation) {
    this.segmentation = segmentation;
}
 
Example #16
Source File: PureEnglish.java    From word with Apache License 2.0 4 votes vote down vote up
public static void main(String[] args) {
    Segmentation segmentation = new PureEnglish();
    System.out.println(segmentation.seg("Your function may also be added permanently to Hive, however this requires a small modification to a Hive Java file and then rebuilding Hive."));
}
 
Example #17
Source File: WordTokenizer.java    From jstarcraft-nlp with Apache License 2.0 4 votes vote down vote up
public WordTokenizer(Segmentation segmentation) {
    this.segmentation = segmentation;
}
 
Example #18
Source File: WordAnalyzer.java    From jstarcraft-nlp with Apache License 2.0 4 votes vote down vote up
public WordAnalyzer(Segmentation segmentation) {
    this.segmentation = segmentation;
}