zoukankan      html  css  js  c++  java
  • python3调用哈工大ltp

    运行环境ubuntu+python3

    安装pyltp
    sudo pip3 install pyltp 
    
    下载ltp_data_v3.4.0模型
    http://ltp.ai/
    
    分句
    from pyltp import SentenceSplitter #分句,对句子进行切分
    sentence = SentenceSplitter.split("我是逗号,我是句号。我是问好?我是感叹号!")
    print("
    ".join(sentence))
    打印结果:
    我是逗号,我是句号。
    我是问好?
    我是感叹号!
    
    分词
    import os
    
    LTP_DATA_DIR = "/home/lizhenlong/pyltp/ltp_data_v3.4.0/ltp_data_v3.4.0" #ltp模型目录的路径
    cws_model_path = os.path.join(LTP_DATA_DIR, "cws.model") #分词模型路径,模型名称为“cws.model”
    from pyltp import Segmentor #分词
    segmentor = Segmentor() #初始化实例
    segmentor.load(cws_model_path) #加载模型
    words = segmentor.segment("上海明天天气怎么样?") #进行分词
    print(type(words))
    print("  ".join(words))
    segmentor.release() #释放模型
    打印结果:
    <class 'pyltp.VectorOfString'>
    上海  明天  天气  怎么样  ?
    
    添加自定义词典

    自定义词典lexicon.txt

    苯丙胺
    亚硝酸盐
    
    import os
    LTP_DATA_DIR='/home/lizhenlong/pyltp/ltp_data_v3.4.0/ltp_data_v3.4.0'  # ltp模型目录的路径
    cws_model_path = os.path.join(LTP_DATA_DIR, 'cws.model')  # 分词模型路径,模型名称为`cws.model`
    
    from pyltp import Segmentor
    segmentor = Segmentor()  # 初始化实例
    segmentor.load_with_lexicon(cws_model_path, 'lexicon.txt') # 加载模型,第二个参数是您的外部词典文件路径
    words = segmentor.segment('亚硝酸盐是一种化学物质')
    print('	'.join(words))
    segmentor.release()
    打印结果:
    [INFO] 2018-08-16 19:18:03 loaded 2 lexicon entries
    亚硝酸盐        是      一      种      化学    物质
    
    词性标注
    import os
    LTP_DATA_DIR = "/home/lizhenlong/pyltp/ltp_data_v3.4.0/ltp_data_v3.4.0" #ltp模型目录的路径
    pos_model_path = os.path.join(LTP_DATA_DIR, "pos.model") # 词性标注模型路径,>模型名称为`pos.model`
    from pyltp import Postagger #词性标注
    
    postagger = Postagger() #初始化实例
    postagger.load(pos_model_path) #加载模型
    words = ['上海','明天','天气','怎么样'] #分词结果
    postages = postagger.postag(words) #词性标注
    print(" ".join(postages))
    postagger.release() #释放模型
    打印结果:
    ns nt n r
    
    命名实体识别
    import os
    LTP_DATA_DIR = "/home/lizhenlong/pyltp/ltp_data_v3.4.0/ltp_data_v3.4.0" #ltp模型目录的路径
    ner_model_path = os.path.join(LTP_DATA_DIR, 'ner.model')  # 命名实体识别模型路径,模型名称为`pos.model`
    
    from pyltp import NamedEntityRecognizer
    recognizer = NamedEntityRecognizer() # 初始化实例
    recognizer.load(ner_model_path)  # 加载模型
    
    words = ['元芳', '你', '怎么', '看']
    postags = ['nh', 'r', 'r', 'v']
    netags = recognizer.recognize(words, postags)  # 命名实体识别
    
    print('	'.join(netags))
    recognizer.release()  # 释放模型
    打印结果:
    S-Nh    O   O   O
    
    依存句法分析
    mport os
    LTP_DATA_DIR='/home/lizhenlong/pyltp/ltp_data_v3.4.0/ltp_data_v3.4.0'  # ltp模型目录的路径
    par_model_path = os.path.join(LTP_DATA_DIR, 'parser.model')  # 依存句法分析模型路径,模型名称为`parser.model`
    
    from pyltp import Parser
    parser = Parser() # 初始化实例
    parser.load(par_model_path)  # 加载模型
    
    words = ['元芳', '你', '怎么', '看']
    postags = ['nh', 'r', 'r', 'v']
    arcs = parser.parse(words, postags)  # 句法分析
    
    print(" ".join("%d:%s" % (arc.head, arc.relation) for arc in arcs))
    parser.release()  # 释放模型
    打印结果:
    4:SBV   4:SBV   4:ADV   0:HED
    
    语义角色标注
    import os
    LTP_DATA_DIR='/home/lizhenlong/pyltp/ltp_data_v3.4.0/ltp_data_v3.4.0'  # ltp模型目录的路径
    srl_model_path = os.path.join(LTP_DATA_DIR, 'pisrl_win.model')  # 语义角色标注模型目录路径,模型目录为`srl`。注意该模型路径是一个目录,而不是一个文件。
    
    from pyltp import SementicRoleLabeller
    labeller = SementicRoleLabeller() # 初始化实例
    labeller.load(srl_model_path)  # 加载模型
    
    words = ['元芳', '你', '怎么', '看']
    postags = ['nh', 'r', 'r', 'v']
    # arcs 使用依存句法分析的结果
    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]))
    labeller.release()  # 释放模型
    打印结果:
    [dynet] random seed: 1676210130
    [dynet] allocating memory: 2000MB
    [dynet] memory allocation done.
    3 A0:(1,1)ADV:(2,2)
    

    例如上面的例子,由于结果输出一行,所以“元芳你怎么看”有一组语义角色。 其谓词索引为3,即“看”。这个谓词有三个语义角色,范围分别是(0,0)即“元芳”,(1,1)即“你”,(2,2)即“怎么”,类型分别是A0、A0、ADV。

    角色关系参考:https://ltp.readthedocs.io/zh_CN/latest/appendix.html#id6

  • 相关阅读:
    【转】周杰伦在哪几届金曲奖中分别得的哪些奖?
    【转】Linux shell的&&和||
    【转】Ubuntu13.04配置:Vim+Syntastic+Vundle+YouCompleteMe
    【转】Notepad++中Windows,Unix,Mac三种格式之间的转换
    【转】vim环境设置和自动对齐
    【转】Vim自动补全插件----YouCompleteMe安装与配置
    【转】foxmail邮箱我已进清理了为什么还是说我的邮箱已满
    强化学习
    奇人有奇书(李渔、张岱、陈继儒、吴敬梓)
    奇人有奇书(李渔、张岱、陈继儒、吴敬梓)
  • 原文地址:https://www.cnblogs.com/spmt/p/12305791.html
Copyright © 2011-2022 走看看