-
Notifications
You must be signed in to change notification settings - Fork 10.3k
数据结构
hankcs edited this page Mar 16, 2018
·
3 revisions
数据结构,特别是字符串上的结构,是影响一个NLP系统效率的瓶颈。目前HanLP中常用的有3种字符串容器,可以替代Map<String, V>
。
将感知机分词器的113
万特征作为键,随机shuffle键作为值,构造数据结构。然后分别查询每个键和值各一次(以此模拟真实环境下查询容器内外的元素),benchmark结果如下:
插入耗时(ms) | 查询耗时(ms) | 内存占用(MB) | |
---|---|---|---|
HashMap | 2533 | 87 | 88.65 |
TreeMap | 2428 | 203 | 89.94 |
DoubleArrayTrie | 3883 | 55 | 50.39 |
MutableDoubleArrayTrie | 2193 | 167 | 48.42 |
BinTrie | 1727 | 105 | 67.96 |
- 此处
DoubleArrayTrie
的插入指的是构造。 - 在值为
int
的场景下,MutableDoubleArrayTrieInteger
预计内存占用还会更少。
HanLP: Han Language Processing - Natural Language Processing for the next decade