Building prefix dict from the default dictionary ...
[2019-06-10 10:16:13] [111] Building prefix dict from the default dictionary ...
Loading model from cache /tmp/jieba.cache
[2019-06-10 10:16:13] [131] Loading model from cache /tmp/jieba.cache
Dumping model to file cache /tmp/jieba.cache
[2019-06-10 10:16:14] [145] Dumping model to file cache /tmp/jieba.cache
Dump cache file failed.
Traceback (most recent call last):
File "/usr/local/bin/python3/lib/python3.6/site-packages/jieba/__init__.py", line 152, in initialize
_replace_file(fpath, cache_file)
PermissionError: [Errno 1] Operation not permitted: '/tmp/tmpmhs1wfzg' -> '/tmp/jieba.cache'
[2019-06-10 10:16:14] [154] Dump cache file failed.
Traceback (most recent call last):
File "/usr/local/bin/python3/lib/python3.6/site-packages/jieba/__init__.py", line 152, in initialize
_replace_file(fpath, cache_file)
PermissionError: [Errno 1] Operation not permitted: '/tmp/tmpmhs1wfzg' -> '/tmp/jieba.cache'
Loading model cost 1.095 seconds.
这是由于jieba在系统根目录下创建缓存文件/temp/jieba.cache来存储模型,但用户权限不够。
解决方法是修改默认缓存文件的目录,把缓存文件放在用户目录下。
在源码line64把self.tmp_dir赋值为用户目录下的任意目录,self.cache_file不需要修改。
vim /usr/local/bin/python3/lib/python3.6/site-packages/jieba/init.py
class Tokenizer(object):
def __init__(self, dictionary=DEFAULT_DICT):
self.lock = threading.RLock()
if dictionary == DEFAULT_DICT:
self.dictionary = dictionary
else:
self.dictionary = _get_abs_path(dictionary)
self.FREQ = {}
self.total = 0
self.user_word_tag_tab = {}
self.initialized = False
self.tmp_dir = None
self.cache_file = None
改成:
class Tokenizer(object):
def __init__(self, dictionary=DEFAULT_DICT):
self.lock = threading.RLock()
if dictionary == DEFAULT_DICT:
self.dictionary = dictionary
else:
self.dictionary = _get_abs_path(dictionary)
self.FREQ = {}
self.total = 0
self.user_word_tag_tab = {}
self.initialized = False
self.tmp_dir ="/home/admin/"
self.cache_file = None