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)
测试文件怎么着都能调用成功:
上面的全路径文件是在另一个文件中调用函数:

浙公网安备 33010602011771号