ltp模型报错 model no loded
打印了一下路径。莫名奇妙的路径,在网上找了很久的答案,丢是说这个路径的符号有问题改一下试试吧
后面有查到说的是不能中文路径,我觉得很奇怪,因为我新建了一个test文件来测试,那个文件中的模型路径采用的是当前的文件路径:并且运行成功了
但是我在想,他会不会因为我这个项目里面有中文,所以不成功,但是我的测试文件也在项目里面,两个路径用的是一模一样,然后我想着算了吧弄个心得没有中文的路径试试看
然后我又重新把模型解压到心得文件里面,这下算是成功了,虽然成功了但是我还是没想明白,不过还是奉劝大家,在另一个文件里面调用的时候最好给每个函数里面都加上模型路径,因为其他文件调用的是函数,不过上面定义的是全局变量啊哭,搞不明白了我真的好乱,家人们有明白的能给我讲讲吗哭:
我把代码放下面:
这个是被调用的,使用绝对路径的:
# -*- coding: utf-8 -*- import pyltp import os def cut_words(words): from pyltp import Segmentor import os LTP_DATA_DIR = '..\itp\ltp_data_v3.4.0' # ltp模型目录的路径 # cws_model_path = os.path.join(LTP_DATA_DIR, 'cws.model') # 分词模型路径,模型名称为`cws.model` cws_model_path = 'D:/python/ltp_data_v3.4.0/cws.model' print(cws_model_path) # segmentor = Segmentor(seg_model_path) # words = segmentor.segment(words) # segmentor.release() # print("words:", words) segmentor = Segmentor(cws_model_path) # 初始化实例 # segmentor.load(cws_model_path) # 加载模型 words = segmentor.segment(words) # 分词 # print(list(words)) # print(words) return words def words_mark(array): import os from pyltp import Postagger LTP_DATA_DIR = '..\itp\ltp_data_v3.4.0' # ltp模型目录的路径 # pos_model_path = os.path.join(LTP_DATA_DIR, 'pos.model') # 词性标注模型路径,模型名称为`pos.model` pos_model_path = 'D:/python/ltp_data_v3.4.0/pos.model' print(pos_model_path) postagger = Postagger(pos_model_path) # 初始化实例 # postagger.load(pos_model_path) # 加载模型 postags = postagger.postag(array) # 词性标注 pos_str = ' '.join(postags) pos_array = pos_str.split(" ") postagger.release() # 释放模型 print("pos_array:", pos_array) return pos_array def get_target_array(words): import os target_pos = ['nh', 'n'] target_array = [] seg_array = cut_words(words) print("seg_array:", seg_array) pos_array = words_mark(seg_array) for i in range(len(pos_array)): if pos_array[i] in target_pos: target_array.append(seg_array[i]) return target_array
这个是我用来测试的文件:
1 # -*- coding: utf-8 -*- 2 import os 3 4 5 6 # print(os.getcwd()) 7 LTP_DATA_DIR = 'D:\python\ltp_data_v3.4.0' # ltp模型目录的路径 8 cws_model_path = os.path.join(LTP_DATA_DIR, 'cws.model') # 分词模型路径,模型名称为`cws.model` 9 pos_model_path = os.path.join(LTP_DATA_DIR, 'pos.model') 10 print(cws_model_path) 11 print(pos_model_path) 12 13 from pyltp import Segmentor, Postagger 14 15 def test1(): 16 segmentor = Segmentor(cws_model_path) # 初始化实例 17 words = segmentor.segment('王熙凤的爸爸是谁') # 分词 18 19 print(words) 20 print('\t'.join(words)) 21 22 segmentor.release() # 释放模型 23 postagger = Postagger(pos_model_path) # 初始化实例 24 postags = postagger.postag(words) # 词性标注 25 pos_str = ' '.join(postags) 26 pos_array = pos_str.split(" ") 27 postagger.release() # 释放模型 28 print(pos_array)
测试文件怎么着都能调用成功:
上面的全路径文件是在另一个文件中调用函数: