本文整理汇总了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);
}
}
示例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);
}
}
示例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对象切分任意文本,不需要任何线程同步的措施,每个线程都可以得到正确的结果。
}