SAE部署jieba分词模块提升加载速度

jieba中文分词模块(github项目地址:https://github.com/fxsjy/jieba)是一款实用Python实现的中文分词组件。

由于jieba中文分词模块在首次加载时需要生成字典树(Trie树)缓存文件(jieba.cache),导致其处理速度会受到一定的影响。

要解决这个问题,可以将jieba.cache缓存文件预先生成完毕,上传至SAE的代码空间。

运行jieba分词时直接读取缓存文件即可,不必每次重新生成,从而提升jieba分词的模块加载速度。

下面以jieba分词(v3.1)为例讲解修改方法的具体步骤。

  • 1. 在本地环境使用jieba分词模块,生成jieba.cache文件(默认生成在本地环境的临时目录下),将该文件拷贝至jieba/目录下
  • 2. 修改jieba/__init__.py文件,在代码前部增加导入: import sae.core
  • 3. 修改jieba/__init__.py文件,找到代码片段:
if abs_path == os.path.join(_curpath,"dict.txt"): #defautl dictionary
  cache_file = os.path.join(tempfile.gettempdir(),"jieba.cache")
else: #customer dictionary
  cache_file = os.path.join(tempfile.gettempdir(),"jieba.user."+str(hash(abs_path))+".cache")

load_from_cache_fail = True
if os.path.exists(cache_file) and os.path.getmtime(cache_file)>os.path.getmtime(abs_path):
  • 4. 将如上代码修改为:
temp_dir = None
if 'SERVER_SOFTWARE' in os.environ:
  temp_dir = sae.core.get_tmp_dir()
else:
  temp_dir = tempfile.gettempdir()
if abs_path == os.path.join(_curpath,"dict.txt"): #defautl dictionary
  cache_file = os.path.join(_curpath,"jieba.cache")
else: #customer dictionary
  cache_file = os.path.join(_curpath,"jieba.user."+str(hash(abs_path))+".cache")
print temp_dir

load_from_cache_fail = True
if os.path.exists(cache_file):

 

本文链接:http://bookshadow.com/weblog/2014/09/18/sae-jieba-speed-up/
请尊重作者的劳动成果,转载请注明出处!书影博客保留对文章的所有权利。

如果您喜欢这篇博文,欢迎您捐赠书影博客: ,查看支付宝二维码