222wan

导航

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)

测试文件怎么着都能调用成功:

上面的全路径文件是在另一个文件中调用函数:

 

posted on 2024-06-04 15:30  角落的蘑菇  阅读(11)  评论(0编辑  收藏  举报