`

HanLP vs LTP 分词功能测试

 
阅读更多

 

 

文章摘自github,本次测试选用 HanLP 1.6.0 , LTP 3.4.0

 

测试思路

 

使用同一份语料训练两个分词库,同一份测试数据测试两个分词库的性能。

 

语料库选取1998年01月的人民日报语料库。199801人民日报语料

 

该词库带有词性标注,为了遵循LTP的训练数据集格式,需要处理掉词性标注。

 

测试数据选择SIGHan2005提供的开放测试集。

 

SIGHan2005的使用可以参见其附带的readme。

 

HanLP

 

java -cp libs/hanlp-1.6.0.jar com.hankcs.hanlp.model.perceptron.Main -task CWS -train -reference ../OpenCorpus/pku98/199801.txt -model cws.bin

 

mkdir -p data/model/perceptron/pku199801

 

mv -f cws.bin data/model/perceptron/pku199801/cws.bin

 

默认情况下,训练的迭代次数为5。

 

修改 src/main/resouces 文件:

 

root=../test-hanlp-ltp

 

打包命令:

 

gradle clean build

 

SIGHan2005的MSR测试集

 

执行命令:

 

java -cp build/libs/test-hanlp-ltp-1.0-SNAPSHOT.jar  com.zongwu33.test.TestForSIGHan2005 ../NLP/icwb2-data/testing/msr_test.utf8    segment-msr-result.txt

将分词的结果生成到segment-msr-result.txt文件里。 利用SIGHan2005的脚本生成分数:

 

perl ../NLP/icwb2-data/scripts/score ../NLP/icwb2-data/gold/msr_training_words.utf8 \

    ../NLP/icwb2-data/gold/msr_test_gold.utf8 segment-msr-result.txt > score-msr.ut8

可以得到 HanLP在MSR数据集上的测试结果:

 

=== TOTAL TRUE WORDS RECALL:0.870

=== TOTAL TEST WORDS PRECISION:0.848

=== F MEASURE:0.859

SIGHan2005的PKU测试集

 

java -cp build/libs/test-hanlp-ltp-1.0-SNAPSHOT.jar  com.zongwu33.test.TestForSIGHan2005 ../NLP/icwb2-data/testing/pku_test.utf8  segment-pku-result.txt

perl ../NLP/icwb2-data/scripts/score ../NLP/icwb2-data/gold/pku_training_words.utf8  ../NLP/icwb2-data/gold/pku_test_gold.utf8   segment-pku-result.txt > score-pku.utf8

结果:

 

=== TOTAL TRUE WORDS RECALL:0.894

=== TOTAL TEST WORDS PRECISION:0.915

=== F MEASURE:0.905

Docker安装 LTP

 

LTP

 

生成符合LTP训练格式的训练集文件:

 

java  -cp build/libs/test-hanlp-ltp-1.0-SNAPSHOT.jar  com.zongwu33.test.CreateSimpleCorpus ../OpenCorpus/pku98/199801.txt  simple-199801.txt

simple-199801.txt 即为结果。 训练集 和开发集都指定为这个文件:

 

../LTP/ltp-3.4.0/tools/train/otcws learn  --model model-test --reference simple-199801.txt --development simple-199801.txt  --max-iter  5

SIGHan2005的MSR测试集

 

测试:

 

../LTP/ltp-3.4.0/tools/train/otcws test  --model model-test  --input /data/testLTP/icwb2-data/testing/msr_test.utf8  > msr_result.txt

利用SIGHan2005的脚本生成分数:

 

perl icwb2-data/scripts/score icwb2-data/gold/msr_training_words.utf8 \

    icwb2-data/gold/msr_test_gold.utf8 msr_result.txt > ltp-msr-score.utf8

查看ltp-msr-score.utf8 :

 

=== TOTAL TRUE WORDS RECALL:0.886

=== TOTAL TEST WORDS PRECISION:0.854

=== F MEASURE:0.870

SIGHan2005的PKU测试集

 

../LTP/ltp-3.4.0/tools/train/otcws test  --model model-test  --input /data/testLTP/icwb2-data/testing/pku_test.utf8  > pku_result.txt

perl icwb2-data/scripts/score icwb2-data/gold/pku_training_words.utf8  \

    icwb2-data/gold/pku_test_gold.utf8  pku_result.txt > ltp-pku-score.ut8

=== TOTAL TRUE WORDS RECALL:0.928

=== TOTAL TEST WORDS PRECISION:0.939

=== F MEASURE:0.934

对比

 

MSR测试集:

 



 

1

 

性能测试

 

阿里云ECS机器配置:

 

机器配置:Intel Xeon CPU *4 2.50GHz,内存16G

 

测试数据集 20M的网络小说,约140315句(不含空行)。

 

HanLP

 

java -cp test-hanlp-ltp-1.0-SNAPSHOT.jar com.zongwu33.test.PerformanceTest  ../NLP/strict-utf8-booken.txt  

init model: 313 ms

total time:15677 ms

total num:140315

需要15.677 s,可以计算得到处理速度 1375k/s 。

 

LTP

 

 

../LTP/ltp-3.4.0/tools/train/otcws test  --model model-test  --input  strict-utf8-booken.txt  > /dev/null

 

[INFO] 2018-03-26 17:04:19 ||| ltp segmentor, testing ...

[INFO] 2018-03-26 17:04:19 report: input file = strict-utf8-booken.txt

[INFO] 2018-03-26 17:04:19 report: model file = model-test

[INFO] 2018-03-26 17:04:19 report: evaluate = false

[INFO] 2018-03-26 17:04:19 report: sequence probability = false

[INFO] 2018-03-26 17:04:19 report: marginal probability = false

[INFO] 2018-03-26 17:04:19 report: number of labels = 4

[INFO] 2018-03-26 17:04:19 report: number of features = 491820

[INFO] 2018-03-26 17:04:19 report: number of dimension = 1967296

[INFO] 2018-03-26 17:05:13 Elapsed time 53.680000

需要53s。处理速度389k/s。

 

对比



 

2

 

开源协议

 

Apache License Version 2.0

  • 大小: 44.1 KB
  • 大小: 10.1 KB
分享到:
评论

相关推荐

    11款开放中文分词引擎测试数据

    2. 分词测试:使用各引擎对预处理后的文本进行分词。 3. 结果评估:对比各引擎的分词结果,采用标准的评价指标,如F1值、准确率、召回率等。 4. 性能分析:记录各引擎的运行时间和内存消耗,分析其效率和资源占用。 ...

    solr中文分词器

    2. HanLP:由百度开源的自然语言处理工具包,提供了强大的中文分词、词性标注等功能,准确度较高,尤其适合复杂语境下的分词。 3. SmartChinese Analyzer:专为Solr和Lucene设计的中文分词器,支持停用词、自定义...

    实验2-中文分词实验.zip

    除此之外,还有THULAC、HanLP、LTP等开源库,它们在性能和功能上各有特色,能满足不同场景的需求。 六、挑战与未来趋势 随着互联网的快速发展,中文分词面临着大量网络新词、缩写、混合语言等问题。未来的研究方向...

    C# 中文分词 词性标注

    在C#中,我们可以利用开源库,如HanLP、ICTCLAS、jieba.NET等,来实现分词功能。这些库通常提供API接口,开发者只需简单调用即可完成分词任务。 其次,词性标注是在分词的基础上,为每个词语赋予对应的词性,如名词...

    nlp数据包 用于分词,n-gram模型,情感分析等

    常见的中文分词工具有jieba、HanLP和LTP等,它们利用词典和统计方法来确定最佳的分词结果。分词的准确度直接影响后续的文本处理任务,例如情感分析和信息抽取。 其次,**n-gram模型**是一种统计语言模型,用于预测...

    中文分词、词性标注、实体识别的工具整理;相关数据集整理与预处理;通用评测脚本脚本.zip

    压缩包中的"lac_tools_benchment-master"可能是一个包含多种中文NLP工具的基准测试平台,可能包括上述提到的分词、词性标注和实体识别工具,并且提供了一套统一的评估标准和脚本,方便用户对比不同工具的性能,优化...

    宠物聊天机器人

    例如,nltk库在英文语境下提供这些功能,而对于中文,可以使用HanLP、LTP等库。 二、对话管理 1. 对话状态跟踪:聊天机器人需要记录对话历史,理解当前对话的上下文。这通常通过对话状态机或基于规则的方法实现,...

    MiD

    此外,像THULAC、HanLP、LTP等也是处理中文语言的工具,它们提供了词性标注、命名实体识别等功能,对于自然语言处理(NLP)项目尤其重要。 在Python中,处理压缩文件通常会用到内置的`zipfile`库。例如,如果你有一个...

    裁判文书提取import的一些文件

    这需要应用命名实体识别(NER)技术,可以使用`spaCy`、`HanLP`、`LTP`(语言技术平台)等工具。 4. **关键信息抽取**:根据法律条款和司法实践,定义特定的规则或使用机器学习模型来抽取如案由、判决结果、赔偿...

    Awesome-Chinese-NLP:精选的中文NLP资源列表中文自然语言处理相关资料

    2. **工具库**:提供中文分词、词性标注、命名实体识别、句法分析等功能的Python库,如`jieba`、`HanLP`、`LTP`(语言技术平台)等。这些工具库大大简化了开发者的预处理工作,提高了工作效率。 3. **模型与算法**...

Global site tag (gtag.js) - Google Analytics