美文网首页自然语言处理
基于LTP的分句、分词、POS和依存句法分析

基于LTP的分句、分词、POS和依存句法分析

作者: 京漂的小程序媛儿 | 来源:发表于2019-01-04 15:24 被阅读0次

    分句

    #分句

    from pyltpimport SentenceSplitter

    sentence = SentenceSplitter.split('我是逗号,我是句号。我是问号?我是感叹号!')

    print('\n'.join(sentence))

    分词+自定义词典

    没加入自定义词典之前的结果如下:

    火箭|少女|是|国内|新生|少女|组合|。

    新建词典文件lexicon(自定义),每个自定义词一行。如下:

    自定义词典

    加入自定义词典之后的分词结果:

    火箭少女|是|国内|新生|少女|组合|。

    参考代码:

    #分词

    import os

    LTP_DATA_DIR ='/Users/***/ltp_data'  # ltp模型目录的路径

    cws_model_path = os.path.join(LTP_DATA_DIR, 'cws.model')# 分词模型路径,模型名称为`cws.model`

    lexicon_path = os.path.join(LTP_DATA_DIR, 'lexicon')# 分词词典lexicon

    from pyltpimport Segmentor

    segmentor = Segmentor()# 初始化实例

    # segmentor.load(cws_model_path)  # 加载模型,如果不想自定义词典,就用这一句load模型即可

    segmentor.load_with_lexicon(cws_model_path,lexicon_path)# 加载模型,参数lexicon是自定义词典的文件路径

    words = segmentor.segment('火箭少女是国内新生少女组合。')# 分词

    print('|'.join(words))#打印分词结果

    segmentor.release()# 释放模型

    词性标注POS

    结果:

    火箭少女|是|国内|新生|少女|组合|。

    n | v | nl | n | n | v | wp

    代码:

    #词性标注

    pos_model_path = os.path.join(LTP_DATA_DIR, 'pos.model')# 词性标注模型路径,模型名称为`pos.model`

    from pyltpimport Postagger

    postagger = Postagger()# 初始化实例

    postagger.load(pos_model_path)# 加载模型

    postags = postagger.postag(words)# 词性标注,这里words是分词后的list

    print(' | '.join(postags))

    postagger.release()# 释放模型

    更多词性标注结果,见下图,截图自LTP

    词性标注解释

    命名实体识别

    LTP提供最基本的三种实体类型人名、地名、机构名的识别。 

    代码:

    #命名实体识别

    ner_model_path = os.path.join(LTP_DATA_DIR, 'ner.model')# 命名实体识别模型路径,模型名称为`ner.model`

    from pyltpimport NamedEntityRecognizer

    recognizer = NamedEntityRecognizer()# 初始化实例

    recognizer.load(ner_model_path)# 加载模型

    nertags = recognizer.recognize(words, postags)# 命名实体识别,其中words, postags分别是分词和词性标注的结果List

    print(' | '.join(nertags))

    recognizer.release()# 释放模型

    依存句法分析

    依存句法分析结果

    代码:

    #依存句法分析

    par_model_path = os.path.join(LTP_DATA_DIR, 'parser.model')# 依存句法分析模型路径,模型名称为`parser.model`

    from pyltpimport Parser

    parser = Parser()# 初始化实例

    parser.load(par_model_path)# 加载模型

    arcs = parser.parse(words, postags)# 句法分析

    #信息提取,结果展示

    rely_id = [arc.headfor arcin arcs]# 提取依存父节点id

    relation = [arc.relationfor arcin arcs]# 提取依存关系

    heads = ['Root' if id ==0 else words[id-1]for idin rely_id]# 匹配依存父节点词语

    for iin range(len(words)):

    print(relation[i] +'(' + words[i] +', ' + heads[i] +')')

    parser.release()# 释放模型

    更多依存句法分析标注结果,见下图,截图自LTP

    依存句法分析参考

    LTP还提供了语义角色标注和语义依存分词,项目中暂时不用,稍后再学习。

    相关文章

      网友评论

        本文标题:基于LTP的分句、分词、POS和依存句法分析

        本文链接:https://www.haomeiwen.com/subject/guahrqtx.html