之前在处理 QA 语料库的时候,在分词和去停止词的时候消耗时间很长,所以专门搜了一些资料针对这个问题进行了一次优化,总结如下。
文本分词
使用 jieba 自带的并行分词
在分词前添加 jieba.enable_parallel(4)
就行了。但是我这里并没有这么做,主要是怕分词顺序出错了。
使用 jieba_fast
这是一个 cpython 的库,使用方法和 jieba 一致,Github 官网。官网的描述如下:
使用 cpython 重写了 jieba 分词库中计算 DAG 和 HMM 中的 vitrebi 函数,速度得到大幅提升。
去停止词
构建字典加速
我最开始使用的是把停止词读成列表,然后去列表里面查找,速度很慢。原先的代码如下:
1 | def get_stopwords(self,stopwords_path): |
改进之后,构建了停止词字典,速度提高了一倍左右。代码如下:
1 | def get_stopwords(self,stopwords_path): |
总结
经过以上改进,代码加速了 4 倍左右,提升还是很明显的。