当前位置: 首页>>代码示例>>Java>>正文


Java Segment.enableMultithreading方法代码示例

本文整理汇总了Java中com.hankcs.hanlp.seg.Segment.enableMultithreading方法的典型用法代码示例。如果您正苦于以下问题:Java Segment.enableMultithreading方法的具体用法?Java Segment.enableMultithreading怎么用?Java Segment.enableMultithreading使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在com.hankcs.hanlp.seg.Segment的用法示例。


在下文中一共展示了Segment.enableMultithreading方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: testMultiThreading

import com.hankcs.hanlp.seg.Segment; //导入方法依赖的package包/类
public void testMultiThreading() throws Exception
{
    Segment segment = BasicTokenizer.SEGMENT;
    // 测个速度
    String text = "江西鄱阳湖干枯,中国最大淡水湖变成大草原。";
    System.out.println(segment.seg(text));
    int pressure = 100000;
    StringBuilder sbBigText = new StringBuilder(text.length() * pressure);
    for (int i = 0; i < pressure; i++)
    {
        sbBigText.append(text);
    }
    text = sbBigText.toString();
    long start = System.currentTimeMillis();
    List<Term> termList1 = segment.seg(text);
    double costTime = (System.currentTimeMillis() - start) / (double) 1000;
    System.out.printf("单线程分词速度:%.2f字每秒\n", text.length() / costTime);

    segment.enableMultithreading(4);
    start = System.currentTimeMillis();
    List<Term> termList2 = segment.seg(text);
    costTime = (System.currentTimeMillis() - start) / (double) 1000;
    System.out.printf("四线程分词速度:%.2f字每秒\n", text.length() / costTime);

    assertEquals(termList1.size(), termList2.size());
    Iterator<Term> iterator1 = termList1.iterator();
    Iterator<Term> iterator2 = termList2.iterator();
    while (iterator1.hasNext())
    {
        Term term1 = iterator1.next();
        Term term2 = iterator2.next();
        assertEquals(term1.word, term2.word);
        assertEquals(term1.nature, term2.nature);
        assertEquals(term1.offset, term2.offset);
    }
}
 
开发者ID:priester,项目名称:hanlpStudy,代码行数:37,代码来源:TestSegment.java

示例2: testMultiThreading

import com.hankcs.hanlp.seg.Segment; //导入方法依赖的package包/类
public void testMultiThreading() throws Exception
{
    Segment segment = BasicTokenizer.SEGMENT;
    // 测个速度
    String text = "江西鄱阳湖干枯,中国最大淡水湖变成大草原。";
    System.out.println(segment.seg(text));
    int pressure = 100000;
    StringBuilder sbBigText = new StringBuilder(text.length() * pressure);
    for (int i = 0; i < pressure; i++)
    {
        sbBigText.append(text);
    }
    text = sbBigText.toString();
    long start = System.currentTimeMillis();
    List<Term> termList1 = segment.seg(text);
    double costTime = (System.currentTimeMillis() - start) / (double)1000;
    System.out.printf("单线程分词速度:%.2f字每秒\n", text.length() / costTime);

    segment.enableMultithreading(4);
    start = System.currentTimeMillis();
    List<Term> termList2 = segment.seg(text);
    costTime = (System.currentTimeMillis() - start) / (double)1000;
    System.out.printf("四线程分词速度:%.2f字每秒\n", text.length() / costTime);

    assertEquals(termList1.size(), termList2.size());
    Iterator<Term> iterator1 = termList1.iterator();
    Iterator<Term> iterator2 = termList2.iterator();
    while (iterator1.hasNext())
    {
        Term term1 = iterator1.next();
        Term term2 = iterator2.next();
        assertEquals(term1.word, term2.word);
        assertEquals(term1.nature, term2.nature);
        assertEquals(term1.offset, term2.offset);
    }
}
 
开发者ID:ml-distribution,项目名称:HanLP,代码行数:37,代码来源:TestSegment.java

示例3: main

import com.hankcs.hanlp.seg.Segment; //导入方法依赖的package包/类
public static void main(String[] args)
{
    Segment segment = new CRFSegment(); // CRF分词器效果好,速度慢,并行化之后可以提高一些速度

    String text = "举办纪念活动铭记二战历史,不忘战争带给人类的深重灾难,是为了防止悲剧重演,确保和平永驻;" +
            "铭记二战历史,更是为了提醒国际社会,需要共同捍卫二战胜利成果和国际公平正义," +
            "必须警惕和抵制在历史认知和维护战后国际秩序问题上的倒行逆施。";
    HanLP.Config.ShowTermNature = false;
    System.out.println(segment.seg(text));
    int pressure = 10000;
    StringBuilder sbBigText = new StringBuilder(text.length() * pressure);
    for (int i = 0; i < pressure; i++)
    {
        sbBigText.append(text);
    }
    text = sbBigText.toString();
    System.gc();

    long start;
    double costTime;
    // 测个速度

    segment.enableMultithreading(false);
    start = System.currentTimeMillis();
    segment.seg(text);
    costTime = (System.currentTimeMillis() - start) / (double) 1000;
    System.out.printf("单线程分词速度:%.2f字每秒\n", text.length() / costTime);
    System.gc();

    segment.enableMultithreading(true); // 或者 segment.enableMultithreading(4);
    start = System.currentTimeMillis();
    segment.seg(text);
    costTime = (System.currentTimeMillis() - start) / (double) 1000;
    System.out.printf("多线程分词速度:%.2f字每秒\n", text.length() / costTime);
    System.gc();

    // Note:
    // 内部的并行化机制可以对1万字以上的大文本开启多线程分词
    // 另一方面,HanLP中的任何Segment本身都是线程安全的。
    // 你可以开10个线程用同一个CRFSegment对象切分任意文本,不需要任何线程同步的措施,每个线程都可以得到正确的结果。
}
 
开发者ID:priester,项目名称:hanlpStudy,代码行数:42,代码来源:DemoMultithreadingSegment.java


注:本文中的com.hankcs.hanlp.seg.Segment.enableMultithreading方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。