Beispiel #1
0
    def __init__(self):
        self.__segmentor = Segmentor()
        self.__postagger = Postagger()
        self.__parser = Parser()  # 初始化实例
        self.__labeller = SementicRoleLabeller()  # 初始化实例

        self.__segmentor.load_with_lexicon(
            os.path.join(LTP_MODEL_DIR, "cws.model"),
            os.path.join(DICTIONARY_DIR, "custom_lexicon.model"))
        self.__postagger.load(os.path.join(LTP_MODEL_DIR, "pos.model"))
        self.__parser.load(os.path.join(LTP_MODEL_DIR, "parser.model"))  # 加载模型
        self.__labeller.load(os.path.join(LTP_MODEL_DIR,
                                          "pisrl.model"))  # 加载模型

        self.__adv_dict_list = self.__load_adverb_dictionary()
        self.__adv_list = self.__adv_dict_list.get("范围副词") + self.__adv_dict_list.get("频率副词") \
                          + self.__adv_dict_list.get("程度副词") + self.__adv_dict_list.get("时间副词") \
                          + self.__adv_dict_list.get("肯否副词") + self.__adv_dict_list.get("语气副词") \
                          + self.__adv_dict_list.get("情态副词")

        self.__pronoun_list = self.__load_pronoun_words()
        self.__vi_list = self.__load_intransitive_verb()
        self.__auxiliary_dict_list = self.__load_auxiliary_dictionary()
        self.__auxiliary_list = self.__auxiliary_dict_list.get(
            "语气助词") + self.__auxiliary_dict_list.get(
                "结构助词") + self.__auxiliary_dict_list.get("时态助词")

        self.__special_prefix_list = self.__load_special_prefix_words()
        self.__stopwords_list = self.__load_stopwords("之前", "是因为", "已经")
Beispiel #2
0
    def __init__(self):

        #initialize every ltp tool
        LTP_DIR = "/home/demo1/support_ltp"

        #分词器
        self.segmentor = Segmentor()
        self.segmentor.load(os.path.join(LTP_DIR, "cws.model"))

        #词性标注
        self.postagger = Postagger()
        self.postagger.load(os.path.join(LTP_DIR, "pos.model"))

        #依存句法分析
        self.parser = Parser()
        self.parser.load(os.path.join(LTP_DIR, "parser.model"))

        #命名实体识别
        #self.recognizer = NamedEntityRecognizer()
        #self.recognizer.load(os.path.join(LTP_DIR, "ner.model"))

        #语义角色标注模块
        self.labeller = SementicRoleLabeller()
        self.labeller.load(os.path.join(LTP_DIR, 'pisrl.model'))
        print('模型已全部加载')
Beispiel #3
0
    def __init__(self):
        LTP_DIR = "D:\python\ltp_data_v3.4.0"
        Segmentor_lexicon = 'D:\python\ltp_data_v3.4.0\lexicon'
        Segmentor_label_lexicon = 'D:\python\ltp_data_v3.4.0\lexicon_label'
        Postagger_lexicon = 'D:\python\ltp_data_v3.4.0\lexicon_1'
        Postagger_label_lexicon = 'D:\python\ltp_data_v3.4.0\lexicon_label_1'
        self.segmentor = Segmentor()
        self.segmentor_label = Segmentor()
        cws_model_path = os.path.join(LTP_DIR, "cws.model")
        self.segmentor.load_with_lexicon(
            cws_model_path, Segmentor_lexicon)  # 加载模型,第二个参数是您的外部词典文件路径
        self.segmentor_label.load_with_lexicon(
            cws_model_path, Segmentor_label_lexicon)  # 加载模型,第二个参数是您的外部词典文件路径

        self.postagger = Postagger()
        self.postagger_label = Postagger()
        pos_model_path = os.path.join(LTP_DIR, "pos.model")
        self.postagger.load_with_lexicon(pos_model_path, Postagger_lexicon)
        self.postagger_label.load_with_lexicon(pos_model_path,
                                               Postagger_label_lexicon)

        self.parser = Parser()
        self.parser.load(os.path.join(LTP_DIR, "parser.model"))

        self.recognizer = NamedEntityRecognizer()
        self.recognizer.load(os.path.join(LTP_DIR, "ner.model"))

        self.labeller = SementicRoleLabeller()
        self.labeller.load(os.path.join(LTP_DIR, 'pisrl_win.model'))
    def __init__(self, MODELDIR, exword_path=None):
        self.MODELDIR = MODELDIR
        self.output = {}
        self.words = None
        self.postags = None
        self.netags = None
        self.arcs = None
        self.exword_path = exword_path  # e.x: '/data1/research/matt/ltp/exwords.txt'
        # 分词
        self.segmentor = Segmentor()
        if not self.exword_path:
            # 是否加载额外词典
            self.segmentor.load(os.path.join(self.MODELDIR, "cws.model"))
        else:
            self.segmentor.load_with_lexicon(
                os.path.join(self.MODELDIR, "cws.model"), self.exword_path)

        # 词性标注
        self.postagger = Postagger()
        self.postagger.load(os.path.join(self.MODELDIR, "pos.model"))
        # 依存句法
        self.parser = Parser()
        self.parser.load(os.path.join(self.MODELDIR, "parser.model"))
        # 命名实体识别
        self.recognizer = NamedEntityRecognizer()
        self.recognizer.load(os.path.join(self.MODELDIR, "ner.model"))
        # 语义角色
        self.labeller = SementicRoleLabeller()
        self.labeller.load(os.path.join(MODELDIR, "pisrl.model"))
Beispiel #5
0
    def load(self, index=[1, 1, 1, 1, 1]):
        """分词 词性标注 命名实体识别 句法分析 语义角色分析"""
        if index[0]:
            cws_model_path = os.path.join(self.LTP_DATA_DIR, 'cws.model')
            self.segmentor = Segmentor()
            self.segmentor.load(cws_model_path)

        if index[1]:
            pos_model_path = os.path.join(self.LTP_DATA_DIR, 'pos.model')
            self.postagger = Postagger()
            self.postagger.load(pos_model_path)

        if index[2]:
            ner_model_path = os.path.join(self.LTP_DATA_DIR, 'ner.model')
            self.recognizer = NamedEntityRecognizer()
            self.recognizer.load(ner_model_path)

        if index[3]:
            par_model_path = os.path.join(self.LTP_DATA_DIR, 'parser.model')
            self.parser = Parser()
            self.parser.load(par_model_path)

        if index[4]:
            srl_model_path = os.path.join(self.LTP_DATA_DIR, 'pisrl_win.model')
            self.labeller = SementicRoleLabeller()
            self.labeller.load(srl_model_path)
class ModelLoader:
    __instance = None

    def __new__(cls):
        if cls.__instance is None:
            cls.__instance = super(ModelLoader, cls).__new__(cls)
            cls.__instance.__initialized = False
        return cls.__instance

    def __init__(self):
        if (self.__initialized): return
        self.__initialized = True
        LTP_DIR = "./ltp_data"
        #客製化分詞,並且後處理更改詞性
        self.segmentor = Segmentor()
        self.segmentor.load_with_lexicon(
            os.path.join(LTP_DIR, "cws.model"),
            os.path.join(LTP_DIR, 'customized.txt'))

        self.postagger = Postagger()
        self.postagger.load(os.path.join(LTP_DIR, "pos.model"))

        self.parser = Parser()
        self.parser.load(os.path.join(LTP_DIR, "parser.model"))

        self.recognizer = NamedEntityRecognizer()
        self.recognizer.load(os.path.join(LTP_DIR, "ner.model"))

        self.labeller = SementicRoleLabeller()
        self.labeller.load(os.path.join(LTP_DIR, 'pisrl.model'))

        self.sentenceSplitter = SentenceSplitter()
Beispiel #7
0
    def __init__(self, ):
        LTP_DATA_DIR = SETTINGS.LTP_DATA_DIR  # ltp模型目录的路径
        cws_model_path = os.path.join(LTP_DATA_DIR,
                                      'cws.model')  # 分词模型路径,模型名称为`cws.model`
        pos_model_path = os.path.join(LTP_DATA_DIR,
                                      'pos.model')  # 词性标注模型路径,模型名称为`pos.model`
        par_model_path = os.path.join(
            LTP_DATA_DIR, 'parser.model')  # 依存句法分析模型路径,模型名称为`parser.model`
        srl_model_path = os.path.join(
            LTP_DATA_DIR,
            'srl')  # 语义角色标注模型目录路径,模型目录为`srl`。注意该模型路径是一个目录,而不是一个文件。
        ner_model_path = os.path.join(
            LTP_DATA_DIR, 'ner.model')  # 命名实体识别模型路径,模型名称为`pos.model`

        self.segmentor = Segmentor()  # 初始化实例
        self.segmentor.load_with_lexicon(cws_model_path, './segName')  # 加载模型
        self.postagger = Postagger()  # 初始化实例
        self.postagger.load_with_lexicon(pos_model_path,
                                         './postagName')  # 加载模型
        self.parser = Parser()  # 初始化实例
        self.parser.load(par_model_path)  # 加载模型
        self.labeller = SementicRoleLabeller()  # 初始化实例
        self.labeller.load(srl_model_path)  # 加载模型
        self.recognizer = NamedEntityRecognizer()  # 初始化实例
        self.recognizer.load(ner_model_path)  # 加载模型
Beispiel #8
0
class LTP_word():
    """docstring for parser_word
    deal处理文本,返回词表、词性及依存关系,语义,命名实体五个值
    release释放缓存"""
    def __init__(self, model_path):
        self.model_path = model_path
        self.segmentor = Segmentor()  # 分词初始化实例
        self.segmentor.load_with_lexicon(path.join(self.model_path, 'cws.model'), path.join(self.model_path, 'dictionary_kfc.txt'))
        self.postagger = Postagger() # 词性标注初始化实例
        self.postagger.load(path.join(self.model_path, 'pos.model') ) # 加载模型
        self.recognizer = NamedEntityRecognizer() # 命名实体识别初始化实例
        self.recognizer.load(path.join(self.model_path, 'ner.model'))
        self.parser = Parser() # 依存句法初始化实例 s
        self.parser.load(path.join(self.model_path, 'parser.model'))  # 加载模型
        self.labeller = SementicRoleLabeller() # 语义角色标注初始化实例
        self.labeller.load(path.join(self.model_path, 'srl'))
    def deal (self, text):  #把所有该要使用的东西都提取出来
        words =self.segmentor.segment(text)    # 分词 
        postags = self.postagger.postag(words)  # 词性标注
        netags = self.recognizer.recognize(words, postags)	#命名实体
        arcs = self.parser.parse(words, postags)  # 句法分析
        roles = self.labeller.label(words, postags, netags, arcs)  # 语义角色标注
        return words,postags,arcs,roles,netags
    def release(self):
        self.segmentor.release()
        self.postagger.release()
        self.recognizer.release()
        self.parser.release()
        self.labeller.release()
Beispiel #9
0
    def __init__(self):
        # ltp 模型路径
        LTP_DATA_DIR = './ltp_data'

        # 分词模型
        self.segmentor = Segmentor()
        self.segmentor.load_with_lexicon(
            os.path.join(LTP_DATA_DIR, 'cws.model'), 'ltp_data/lexicon.txt')
        # self.segmentor.load(os.path.join(LTP_DATA_DIR,'cws.model'))

        # 词性标注模型
        self.postagger = Postagger()
        self.postagger.load(os.path.join(LTP_DATA_DIR, 'pos.model'))

        # 依存句法分析
        self.parser = Parser()
        self.parser.load(os.path.join(LTP_DATA_DIR, 'parser.model'))

        # 命名实体识别
        self.recognizer = NamedEntityRecognizer()
        self.recognizer.load(os.path.join(LTP_DATA_DIR, 'ner.model'))

        # 语义角色标注
        self.labeller = SementicRoleLabeller()
        self.labeller.load(os.path.join(LTP_DATA_DIR, 'pisrl_win.model'))
Beispiel #10
0
class LTP:
    def __init__(self):
        self.segmentor = Segmentor()  # 分词器
        self.segmentor.load_with_lexicon(
            Config.SEGMENTOR_PATH, Config.PERSONAL_SEGMENTOR_PATH)  # 加载模型
        self.postagger = Postagger()  # 词性分析器
        self.postagger.load(Config.POSTAGGER_PATH)  # 加载模型
        self.parser = Parser()  # 句法分析器
        self.recognizer = NamedEntityRecognizer()
        self.recognizer.load(Config.NAMED_ENTITY_RECONGNTION_PATH)
        self.parser.load(Config.PARSER_PATH)  # 加载模型
        self.labeller = SementicRoleLabeller()  # 语义角色分析器
        self.labeller.load(Config.LABELLER_PATH)  # 加载模型
        self.negative_list = get_negative_list()
        self.no_list = get_no_list()
        self.limit_list = get_limit_list()
        self.special_list = get_special_list()
        self.key_sentences = []

    def __del__(self):
        """
        资源释放
        """
        self.segmentor.release()
        self.postagger.release()
        self.parser.release()
        self.labeller.release()
class LtpParser:
    def __init__(self):
        LTP_DIR = "./ltp_data_v3.4.0"
        self.segmentor = Segmentor()
        self.segmentor.load(os.path.join(LTP_DIR, "cws.model"))

        self.postagger = Postagger()
        self.postagger.load(os.path.join(LTP_DIR, "pos.model"))

        self.parser = Parser()
        self.parser.load(os.path.join(LTP_DIR, "parser.model"))

        self.recognizer = NamedEntityRecognizer()
        self.recognizer.load(os.path.join(LTP_DIR, "ner.model"))

        self.labeller = SementicRoleLabeller()
        self.labeller.load(os.path.join(LTP_DIR, 'pisrl.model'))

    '''语义角色标注'''
    def format_labelrole(self, words, postags):
        arcs = self.parser.parse(words, postags)
        roles = self.labeller.label(words, postags, arcs)
        roles_dict = {}
        for role in roles:
            roles_dict[role.index] = {arg.name:[arg.name,arg.range.start, arg.range.end] for arg in role.arguments}
        return roles_dict

    '''句法分析---为句子中的每个词语维护一个保存句法依存儿子节点的字典'''
    def build_parse_child_dict(self, words, postags, arcs):
        child_dict_list = []
        format_parse_list = []
        for index in range(len(words)):
            child_dict = dict()
            for arc_index in range(len(arcs)):
                if arcs[arc_index].head == index+1:   #arcs的索引从1开始
                    if arcs[arc_index].relation in child_dict:
                        child_dict[arcs[arc_index].relation].append(arc_index)
                    else:
                        child_dict[arcs[arc_index].relation] = []
                        child_dict[arcs[arc_index].relation].append(arc_index)
            child_dict_list.append(child_dict)
        rely_id = [arc.head for arc in arcs]  # 提取依存父节点id
        relation = [arc.relation for arc in arcs]  # 提取依存关系
        heads = ['Root' if id == 0 else words[id - 1] for id in rely_id]  # 匹配依存父节点词语
        for i in range(len(words)):
            # ['ATT', '李克强', 0, 'nh', '总理', 1, 'n']
            a = [relation[i], words[i], i, postags[i], heads[i], rely_id[i]-1, postags[rely_id[i]-1]]
            format_parse_list.append(a)

        return child_dict_list, format_parse_list

    '''parser主函数'''
    def parser_main(self, sentence):
        words = list(self.segmentor.segment(sentence))
        postags = list(self.postagger.postag(words))
        arcs = self.parser.parse(words, postags)
        child_dict_list, format_parse_list = self.build_parse_child_dict(words, postags, arcs)
        roles_dict = self.format_labelrole(words, postags)
        return words, postags, child_dict_list, roles_dict, format_parse_list
Beispiel #12
0
def yuyijuese(words, postags, netags, arcs):
    """语义角色标注  """
    labeller = SementicRoleLabeller()
    labeller.load(os.path.join(MODELDIR, "srl/"))
    roles = labeller.label(words, postags, netags, arcs)

    for role in roles:
        print (role.index, "".join(
                ["%s:(%d,%d)" % (arg.name, arg.range.start, arg.range.end) for arg in role.arguments]))
Beispiel #13
0
 def __init__(self):
     self.postagger = Postagger()
     self.parser = Parser()
     self.parser.load(par_model_path)
     self.recognizer = NamedEntityRecognizer()
     self.recognizer.load(ner_model_path)
     self.labeller = SementicRoleLabeller()
     self.labeller.load(srl_model_path)
     self.postagger.load_with_lexicon(pos_model_path,
                                      '/home/wangwei/conf/posttags.txt')
Beispiel #14
0
 def __init__(self, data_dir: str):
     self.segmentor = Segmentor()
     self.segmentor.load(os.path.join(data_dir, "cws.model"))
     self.postagger = Postagger()
     self.postagger.load(os.path.join(data_dir, "pos.model"))
     self.recognizer = NamedEntityRecognizer()
     self.recognizer.load(os.path.join(data_dir, "ner.model"))
     self.parser = Parser()
     self.parser.load(os.path.join(data_dir, "parser.model"))
     self.labeller = SementicRoleLabeller()
     self.labeller.load(os.path.join(data_dir, "pisrl.model"))
Beispiel #15
0
 def __init__(self):
     self.__clause_list = []
     self.__subclause_dict = {}
     self.__triple_list = []
     self.__segmentor = Segmentor()
     self.__postagger = Postagger()
     self.__recognizer = NamedEntityRecognizer()
     self.__parser = Parser()
     self.__labeller = SementicRoleLabeller()
     self.__words_full_list = []
     self.__netags_full_list = []
Beispiel #16
0
 def ltp_labeller(self, sentence):
     if self._labeller is None:
         self._labeller = SementicRoleLabeller()
         self._labeller.load(os.path.join(self._MODELDIR, "pisrl.model"))
     arcs, words, postags = self.ltp_parser(sentence)
     output = []
     roles = self._labeller.label(words, postags, arcs)
     for role in roles:
         output.append([(role.index, arg.name, arg.range.start,
                         arg.range.end) for arg in role.arguments])
     return output
Beispiel #17
0
 def __init__(self):
     self.segmentor = Segmentor()
     self.segmentor.load('/home/student/project/project-01/Four-Little-Frogs/ltp_data_v3.4.0/cws.model')
     self.postagger = Postagger()
     self.postagger.load('/home/student/project/project-01/Four-Little-Frogs/ltp_data_v3.4.0/pos.model')
     self.parser = Parser()
     self.parser.load('/home/student/project/project-01/Four-Little-Frogs/ltp_data_v3.4.0/parser.model')
     self.recognizer = NamedEntityRecognizer()
     self.recognizer.load('/home/student/project/project-01/Four-Little-Frogs/ltp_data_v3.4.0/ner.model')
     self.labeller = SementicRoleLabeller()
     self.labeller.load('/home/student/project/project-01/Four-Little-Frogs/ltp_data_v3.4.0/pisrl.model')
Beispiel #18
0
 def __init__(self, model_path):
     self.model_path = model_path
     self.segmentor = Segmentor()  # 分词初始化实例
     self.segmentor.load_with_lexicon(path.join(self.model_path, 'cws.model'), path.join(self.model_path, 'dictionary_kfc.txt'))
     self.postagger = Postagger() # 词性标注初始化实例
     self.postagger.load(path.join(self.model_path, 'pos.model') ) # 加载模型
     self.recognizer = NamedEntityRecognizer() # 命名实体识别初始化实例
     self.recognizer.load(path.join(self.model_path, 'ner.model'))
     self.parser = Parser() # 依存句法初始化实例 s
     self.parser.load(path.join(self.model_path, 'parser.model'))  # 加载模型
     self.labeller = SementicRoleLabeller() # 语义角色标注初始化实例
     self.labeller.load(path.join(self.model_path, 'srl'))
Beispiel #19
0
    def __init__(self):
        LTP_DIR = "/home/lxl/Downloads/ltp_data"
        self.postagger = Postagger()
        self.postagger.load(os.path.join(LTP_DIR, "pos.model"))

        self.parser = Parser()
        self.parser.load(os.path.join(LTP_DIR, "parser.model"))

        self.recognizer = NamedEntityRecognizer()
        self.recognizer.load(os.path.join(LTP_DIR, "ner.model"))

        self.labeller = SementicRoleLabeller()
        self.labeller.load(os.path.join(LTP_DIR, 'pisrl.model'))
Beispiel #20
0
    def __init__(self):
        self.segmentor = Segmentor()
        # self.segmentor.load_with_lexicon(seg_model_path, LTP_DICT_DIR)
        self.segmentor.load(seg_model_path)

        self.postagger = Postagger()
        # self.postagger.load_with_lexicon(pos_model_path, LTP_POS_DICT_DIR)
        self.postagger.load(pos_model_path)

        self.parser = Parser()
        self.parser.load(par_model_path)

        self.labeller = SementicRoleLabeller()
        self.labeller.load(pisrl_model_path)
    def __init__(self, cws_model_path, pos_model_path, ner_model_path,
                 parser_model_path, srl_model_path):

        # 加载ltp模型
        self.segmentor = Segmentor()  # 分词
        self.segmentor.load(cws_model_path)
        self.postagger = Postagger()  # 词性标注
        self.postagger.load(pos_model_path)
        self.recognizer = NamedEntityRecognizer()  # 命名实体识别
        self.recognizer.load(ner_model_path)
        self.parser = Parser()  # 依存句法分析
        self.parser.load(parser_model_path)
        self.labeller = SementicRoleLabeller()  # 语义角色标注
        self.labeller.load(srl_model_path)
Beispiel #22
0
    def load(self):
        self.segmentor = Segmentor()
        self.segmentor.load(self.cws_model_path)

        self.postagger = Postagger()
        self.postagger.load(self.pos_model_path)

        self.parser = Parser()
        self.parser.load(self.parser_model_path)

        self.recognizer = NamedEntityRecognizer()
        self.recognizer.load(self.ner_model_path)

        self.labeller = SementicRoleLabeller()
        self.labeller.load(self.srl_model_path)
Beispiel #23
0
    def __init__(self):
        LTP_DIR = "/Users/benkangchen/pyltp/model"
        self.segmentor = Segmentor()
        self.segmentor.load(os.path.join(LTP_DIR, "cws.model"))

        self.postagger = Postagger()
        self.postagger.load(os.path.join(LTP_DIR, "pos.model"))

        self.parser = Parser()
        self.parser.load(os.path.join(LTP_DIR, "parser.model"))

        self.recognizer = NamedEntityRecognizer()
        self.recognizer.load(os.path.join(LTP_DIR, "ner.model"))

        self.labeller = SementicRoleLabeller()
        self.labeller.load(os.path.join(LTP_DIR, 'pisrl.model'))
Beispiel #24
0
    def __init__(self):
        LTP_DIR = "/Users/rilzob/PycharmProjects/SubjectKG/ltp_data_v3.4.0"
        self.segmentor = Segmentor()
        self.segmentor.load(os.path.join(LTP_DIR, "cws.model"))

        self.postagger = Postagger()
        self.postagger.load(os.path.join(LTP_DIR, "pos.model"))

        self.parser = Parser()
        self.parser.load(os.path.join(LTP_DIR, "parser.model"))

        self.recognizer = NamedEntityRecognizer()
        self.recognizer.load(os.path.join(LTP_DIR, "ner.model"))

        self.labeller = SementicRoleLabeller()
        self.labeller.load(os.path.join(LTP_DIR, 'pisrl.model'))
Beispiel #25
0
 def __init__(self):
     ROOTDIR = os.path.join(os.path.dirname(__file__), os.pardir)
     # sys.path = [os.path.join(ROOTDIR, "lib")] + sys.path
     # Set your own model path
     self.MODELDIR = os.path.join(ROOTDIR, "./ltp_data")
     # Init LTP Model
     self.segmentor = Segmentor()
     self.postagger = Postagger()
     self.parser = Parser()
     self.recognizer = NamedEntityRecognizer()
     self.labeller = SementicRoleLabeller()
     self.segmentor.load(os.path.join(self.MODELDIR, "cws.model"))
     self.postagger.load(os.path.join(self.MODELDIR, "pos.model"))
     self.parser.load(os.path.join(self.MODELDIR, "parser.model"))
     self.recognizer.load(os.path.join(self.MODELDIR, "ner.model"))
     self.labeller.load(os.path.join(self.MODELDIR, "pisrl.model"))
Beispiel #26
0
    def __init__(self):
        LTP_DIR = "F:\\LTP\\ltp_data_v3.4.0\\"
        self.segmentor = Segmentor()
        self.segmentor.load(os.path.join(LTP_DIR, "cws.model"))

        self.postagger = Postagger()
        self.postagger.load(os.path.join(LTP_DIR, "pos.model"))

        self.parser = Parser()
        self.parser.load(os.path.join(LTP_DIR, "parser.model"))

        self.recognizer = NamedEntityRecognizer()
        self.recognizer.load(os.path.join(LTP_DIR, "ner.model"))

        self.labeller = SementicRoleLabeller()
        self.labeller.load(os.path.join(LTP_DIR, 'pisrl_win.model'))
Beispiel #27
0
    def __init__(self):
        LTP_DIR = "../../ltp_data_v3.4.0"
        self.segmentor = Segmentor()
        self.segmentor.load(os.path.join(LTP_DIR, "cws.model"))  #分词

        self.postagger = Postagger()
        self.postagger.load(os.path.join(LTP_DIR, "pos.model"))  #词性标注

        self.parser = Parser()
        self.parser.load(os.path.join(LTP_DIR, "parser.model"))  #依存句法

        self.recognizer = NamedEntityRecognizer()
        self.recognizer.load(os.path.join(LTP_DIR, "ner.model"))  #实体命名

        self.labeller = SementicRoleLabeller()
        self.labeller.load(os.path.join(LTP_DIR, 'pisrl.model'))  #语义角色标注
Beispiel #28
0
    def __init__(self):
        LTP_DIR = 'D:\LTP\MODEL\ltp_data'  # ltp模型目录的路径
        self.segmentor = Segmentor()
        self.segmentor.load(os.path.join(LTP_DIR, "cws.model"))# 分词模型路径,模型名称为`cws.model`

        self.postagger = Postagger()
        self.postagger.load(os.path.join(LTP_DIR, "pos.model"))# 词性标注模型路径,模型名称为`pos.model`

        self.parser = Parser()
        self.parser.load(os.path.join(LTP_DIR, "parser.model"))# 依存句法分析模型路径,模型名称为`parser.model

        self.recognizer = NamedEntityRecognizer()
        self.recognizer.load(os.path.join(LTP_DIR, "ner.model"))# 命名实体识别模型路径,模型名称为`ner.model`

        self.labeller = SementicRoleLabeller()
        self.labeller.load(os.path.join(LTP_DIR, 'pisrl_win.model'))# 语义角色标注模型目录路径,模型目录为`srl`。注意该模型路径是一个目录,而不是一个文件。
Beispiel #29
0
 def __init__(self):
     path = 'ltp_data_v3.4.0'
     self.par_model_path = os.path.join(path, 'parser.model')
     self.cws_model_path = os.path.join(path, 'cws.model')
     self.pos_model_path = os.path.join(path, 'pos.model')  # 词性标注模型路径,模型名称为`pos.model`
     self.ner_model_path = os.path.join(path, 'ner.model')
     self.srl_model_path = os.path.join(path, 'pisrl_win.model')
     self.recognizer = NamedEntityRecognizer() # 初始化实例
     self.postagger = Postagger() # 初始化实例
     self.segmentor = Segmentor()  # 初始化实例
     self.labeller = SementicRoleLabeller() # 初始化实例
     self.parser = Parser() # 初始化实例
     self.parser.load(self.par_model_path)  # 加载模型
     self.labeller.load(self.srl_model_path)  # 加载模型
     self.recognizer.load(self.ner_model_path)  # 加载模型
     self.postagger.load(self.pos_model_path)  # 加载模型
     self.segmentor.load(self.cws_model_path)  # 加载模型
Beispiel #30
0
def srl(words, postags, arcs):
    global labeller
    if labeller is None:
        srl_model_path = os.path.join(LTP_DATA_DIR, 'srl')  # 语义角色标注模型目录路径,模型目录为`srl`。注意该模型路径是一个目录,而不是一个文件。
        labeller = SementicRoleLabeller() # 初始化实例
        labeller.load(srl_model_path)  # 加载模型

    # arcs 使用依存句法分析的结果
    roles = labeller.label(words, postags, arcs)  # 语义角色标注

    # 打印结果
    role_list = []
    for role in roles:
        for arg in role.arguments:
            args = (role.index, arg.name, arg.range.start, arg.range.end)
            role_list.append(args)
    return role_list
Beispiel #31
0
postagger.load(os.path.join(MODELDIR, "pos.model"))
postags = postagger.postag(words)
# list-of-string parameter is support in 0.1.5
# postags = postagger.postag(["中国","进出口","银行","与","中国银行","加强","合作"])
print "\t".join(postags)

parser = Parser()
parser.load(os.path.join(MODELDIR, "parser.model"))
arcs = parser.parse(words, postags)

print "\t".join("%d:%s" % (arc.head, arc.relation) for arc in arcs)

recognizer = NamedEntityRecognizer()
recognizer.load(os.path.join(MODELDIR, "ner.model"))
netags = recognizer.recognize(words, postags)
print "\t".join(netags)

labeller = SementicRoleLabeller()
labeller.load(os.path.join(MODELDIR, "srl/"))
roles = labeller.label(words, postags, netags, arcs)

for role in roles:
    print role.index, "".join(
            ["%s:(%d,%d)" % (arg.name, arg.range.start, arg.range.end) for arg in role.arguments])

segmentor.release()
postagger.release()
parser.release()
recognizer.release()
labeller.release()
Beispiel #32
0
postagger.load(os.path.join(MODELDIR, "pos.model"))
postags = postagger.postag(words)
# list-of-string parameter is support in 0.1.5
# postags = postagger.postag(["中国","进出口","银行","与","中国银行","加强","合作"])
print("\t".join(postags))

parser = Parser()
parser.load(os.path.join(MODELDIR, "parser.model"))
arcs = parser.parse(words, postags)

print("\t".join("%d:%s" % (arc.head, arc.relation) for arc in arcs))

recognizer = NamedEntityRecognizer()
recognizer.load(os.path.join(MODELDIR, "ner.model"))
netags = recognizer.recognize(words, postags)
print("\t".join(netags))

labeller = SementicRoleLabeller()
labeller.load(os.path.join(MODELDIR, "pisrl.model"))
roles = labeller.label(words, postags, arcs)

for role in roles:
    print(role.index, "".join(
            ["%s:(%d,%d)" % (arg.name, arg.range.start, arg.range.end) for arg in role.arguments]))

segmentor.release()
postagger.release()
parser.release()
recognizer.release()
labeller.release()