Skip to main content

a simple LTP service implemented in Python based on FastAPI

Project description

ltp_server

基于Python的用FastAPI简单封装的LTP服务

安装

pip install ltp_server

服务端

使用方式

方式一:Python库引用

示例:

from ltp_server import Server
if __name__ == '__main__':
    model_path = r"/root/Data/NLP/Model/LTP"
    # server = Server(model_path=model_path)
    # server.run()
    Server(model_path).run()

方式二:shell命令

示例:

ltp_server --model_path=/root/Data/NLP/Model/LTP

可用选项

参数名 是否可选 默认值 说明
model_path LTP模型路径(绝对路径)
dict_path None 用户词表路径(绝对路径)
max_window 4 前向分词最大窗口
host 127.0.0.1 服务主机名
port 8000 服务监听端口

服务概览

服务功能 服务路由 请求方式
分句 /sent_split POST
增加自定义词语 /add_words POST
分词 /seg POST
词性标注 /pos POST
命名实体识别 /ner POST
语义角色标注 /srl POST
依存句法分析 /dep POST
语义依存分析(树) /sdp POST
语义依存分析(图) /sdpg POST

请求示例

分句

### sent_split
POST http://localhost:8000/sent_split
Content-Type: application/json

{
  "texts": ["曹操和司马懿去赶集,中途遇上关羽,一起吃了个饭。"]
}

返回值:

{
  "texts": [
    "曹操和司马懿去赶集,中途遇上关羽,一起吃了个饭。"
  ],
  "sents": [
    "曹操和司马懿去赶集,中途遇上关羽,一起吃了个饭。"
  ],
  "status": 0
}

增加自定义词语

### add_words
POST http://localhost:8000/add_words
Content-Type: application/json

{
  "words": ["江大桥"]
}

返回值

{
  "status": 0
}

分词

### seg
POST http://localhost:8000/seg
Content-Type: application/json

{
  "texts": ["曹操和司马懿去赶集,中途遇上关羽,一起吃了个饭。"]
}

返回值

{
  "status": 0,
  "texts": [
    "曹操和司马懿去赶集,中途遇上关羽,一起吃了个饭。"
  ],
  "res": [
    [
      "曹操",
      "和",
      "司马懿",
      "去",
      "赶集",
      ",",
      "中途",
      "遇",
      "上",
      "关羽",
      ",",
      "一起",
      "吃",
      "了",
      "个",
      "饭",
      "。"
    ]
  ]
}

词性标注

### pos
POST http://localhost:8000/pos
Content-Type: application/json

{
"texts": ["南京市长江大桥"]
}

返回值

{
  "status": 0,
  "texts": [
    "南京市长江大桥"
  ],
  "res": [
    [
      [
        "南京市",
        "ns"
      ],
      [
        "长江",
        "ns"
      ],
      [
        "大桥",
        "n"
      ]
    ]
  ],
  "seg": [
    [
      "南京市",
      "长江",
      "大桥"
    ]
  ]
}

命名实体识别

### ner
POST http://localhost:8000/ner
Content-Type: application/json

{
"texts": ["曹操和司马懿去赶集,中途遇上关羽,一起吃了个饭。"]
}

返回值

{
  "status": 0,
  "texts": [
    "乔丹是一位出生在纽约的美国职业篮球运动员。"
  ],
  "res": [
    [
      [
        "乔丹",
        "Nh",
        0,
        0
      ],
      [
        "纽约",
        "Ns",
        6,
        6
      ],
      [
        "美国",
        "Ns",
        8,
        8
      ]
    ]
  ],
  "seg": [
    [
      "乔丹",
      "是",
      "一",
      "位",
      "出生",
      "在",
      "纽约",
      "的",
      "美国",
      "职业",
      "篮球",
      "运动员",
      "。"
    ]
  ]
}

语义角色标注

### srl
POST http://localhost:8000/srl
Content-Type: application/json

{
  "texts": ["曹操和司马懿去赶集,中途遇上关羽,一起吃了个饭。"]
}

返回值

{
  "status": 0,
  "texts": [
    "乔丹是一位出生在纽约的美国职业篮球运动员。"
  ],
  "res": [
    [
      [
        "是",
        1,
        [
          [
            "A0",
            [
              "乔丹"
            ],
            0,
            0
          ],
          [
            "A1",
            [
              "一",
              "位",
              "出生",
              "在",
              "纽约",
              "的",
              "美国",
              "职业",
              "篮球",
              "运动员"
            ],
            2,
            11
          ]
        ]
      ],
      [
        "出生",
        4,
        [
          [
            "A1",
            [
              "在",
              "纽约"
            ],
            5,
            6
          ],
          [
            "A0",
            [
              "职业",
              "篮球",
              "运动员"
            ],
            9,
            11
          ]
        ]
      ]
    ]
  ],
  "seg": [
    [
      "乔丹",
      "是",
      "一",
      "位",
      "出生",
      "在",
      "纽约",
      "的",
      "美国",
      "职业",
      "篮球",
      "运动员",
      "。"
    ]
  ]
}

依存句法分析

### dep
POST http://localhost:8000/dep
Content-Type: application/json

{
  "texts": ["曹操和司马懿去赶集,中途遇上关羽,一起吃了个饭。"]
}

返回值

{
  "status": 0,
  "texts": [
    "乔丹是一位出生在纽约的美国职业篮球运动员。"
  ],
  "res": [
    [
      [
        1,
        "乔丹",
        2,
        "是",
        "SBV"
      ],
      [
        2,
        "是",
        0,
        "ROOT",
        "HED"
      ],
      [
        3,
        "一",
        4,
        "位",
        "ATT"
      ],
      [
        4,
        "位",
        12,
        "运动员",
        "ATT"
      ],
      [
        5,
        "出生",
        12,
        "运动员",
        "ATT"
      ],
      [
        6,
        "在",
        5,
        "出生",
        "CMP"
      ],
      [
        7,
        "纽约",
        6,
        "在",
        "POB"
      ],
      [
        8,
        "的",
        5,
        "出生",
        "RAD"
      ],
      [
        9,
        "美国",
        12,
        "运动员",
        "ATT"
      ],
      [
        10,
        "职业",
        12,
        "运动员",
        "ATT"
      ],
      [
        11,
        "篮球",
        12,
        "运动员",
        "ATT"
      ],
      [
        12,
        "运动员",
        2,
        "是",
        "VOB"
      ],
      [
        13,
        "。",
        2,
        "是",
        "WP"
      ]
    ]
  ],
  "seg": [
    [
      "乔丹",
      "是",
      "一",
      "位",
      "出生",
      "在",
      "纽约",
      "的",
      "美国",
      "职业",
      "篮球",
      "运动员",
      "。"
    ]
  ]
}

语义依存分析(树)

### sdp
POST http://localhost:8000/sdp
Content-Type: application/json

{
  "texts": ["曹操和司马懿去赶集,中途遇上关羽,一起吃了个饭。"]
}

返回值

{
  "status": 0,
  "texts": [
    "曹操和司马懿去赶集,中途遇上关羽,一起吃了个饭。"
  ],
  "res": [
    [
      [
        1,
        "曹操",
        4,
        "去",
        "AGT"
      ],
      [
        1,
        "曹操",
        5,
        "赶集",
        "AGT"
      ],
      [
        2,
        "和",
        3,
        "司马懿",
        "mRELA"
      ],
      [
        3,
        "司马懿",
        4,
        "去",
        "AGT"
      ],
      [
        4,
        "去",
        0,
        "ROOT",
        "Root"
      ],
      [
        5,
        "赶集",
        4,
        "去",
        "eSUCC"
      ],
      [
        6,
        ",",
        5,
        "赶集",
        "mPUNC"
      ],
      [
        7,
        "中途",
        8,
        "遇",
        "MANN"
      ],
      [
        8,
        "遇",
        5,
        "赶集",
        "eSUCC"
      ],
      [
        9,
        "上",
        8,
        "遇",
        "mDEPD"
      ],
      [
        10,
        "关羽",
        8,
        "遇",
        "DATV"
      ],
      [
        11,
        ",",
        8,
        "遇",
        "mPUNC"
      ],
      [
        12,
        "一起",
        13,
        "吃",
        "MANN"
      ],
      [
        13,
        "吃",
        8,
        "遇",
        "eSUCC"
      ],
      [
        14,
        "了",
        13,
        "吃",
        "mDEPD"
      ],
      [
        15,
        "个",
        16,
        "饭",
        "MEAS"
      ],
      [
        16,
        "饭",
        13,
        "吃",
        "PAT"
      ],
      [
        17,
        "。",
        13,
        "吃",
        "mPUNC"
      ]
    ]
  ],
  "seg": [
    [
      "曹操",
      "和",
      "司马懿",
      "去",
      "赶集",
      ",",
      "中途",
      "遇",
      "上",
      "关羽",
      ",",
      "一起",
      "吃",
      "了",
      "个",
      "饭",
      "。"
    ]
  ]
}

语义依存分析(图)

### sdpg
POST http://localhost:8000/sdpg
Content-Type: application/json

{
  "texts": ["曹操和司马懿去赶集,中途遇上关羽,一起吃了个饭。"]
}

返回值

{
  "status": 0,
  "texts": [
    "曹操和司马懿去赶集,中途遇上关羽,一起吃了个饭。"
  ],
  "res": [
    [
      [
        1,
        "曹操",
        4,
        "去",
        "AGT"
      ],
      [
        1,
        "曹操",
        5,
        "赶集",
        "AGT"
      ],
      [
        2,
        "和",
        3,
        "司马懿",
        "mRELA"
      ],
      [
        3,
        "司马懿",
        4,
        "去",
        "AGT"
      ],
      [
        4,
        "去",
        0,
        "ROOT",
        "Root"
      ],
      [
        5,
        "赶集",
        4,
        "去",
        "eSUCC"
      ],
      [
        6,
        ",",
        5,
        "赶集",
        "mPUNC"
      ],
      [
        7,
        "中途",
        8,
        "遇",
        "MANN"
      ],
      [
        8,
        "遇",
        5,
        "赶集",
        "eSUCC"
      ],
      [
        9,
        "上",
        8,
        "遇",
        "mDEPD"
      ],
      [
        10,
        "关羽",
        8,
        "遇",
        "DATV"
      ],
      [
        11,
        ",",
        8,
        "遇",
        "mPUNC"
      ],
      [
        12,
        "一起",
        13,
        "吃",
        "MANN"
      ],
      [
        13,
        "吃",
        8,
        "遇",
        "eSUCC"
      ],
      [
        14,
        "了",
        13,
        "吃",
        "mDEPD"
      ],
      [
        15,
        "个",
        16,
        "饭",
        "MEAS"
      ],
      [
        16,
        "饭",
        13,
        "吃",
        "PAT"
      ],
      [
        17,
        "。",
        13,
        "吃",
        "mPUNC"
      ]
    ]
  ],
  "seg": [
    [
      "曹操",
      "和",
      "司马懿",
      "去",
      "赶集",
      ",",
      "中途",
      "遇",
      "上",
      "关羽",
      ",",
      "一起",
      "吃",
      "了",
      "个",
      "饭",
      "。"
    ]
  ]
}

客户端

使用方式

方式一:Python库使用

示例如下:

from ltp_server import Client

if __name__ == '__main__':
    client = Client()
    texts = ["乔丹是一位出生在纽约的美国职业篮球运动员。"]

    print(client.sent_split(texts))
    print(client.seg(texts))
    print(client.pos(texts))
    print(client.ner(texts))
    print(client.srl(texts))
    print(client.dep(texts))
    print(client.sdp(texts))
    print(client.sdpg(texts))

请求结果:

{'texts': ['乔丹是一位出生在纽约的美国职业篮球运动员。'], 'res': ['乔丹是一位出生在纽约的美国职业篮球运动员。'], 'status': 0}
{'status': 0, 'texts': ['乔丹是一位出生在纽约的美国职业篮球运动员。'], 'res': [['乔丹', '是', '一', '位', '出生', '在', '纽约', '的', '美国', '职业', '篮球', '运动员', '。']]}
{'status': 0, 'texts': ['乔丹是一位出生在纽约的美国职业篮球运动员。'], 'res': [[['乔丹', 'nh'], ['是', 'v'], ['一', 'm'], ['位', 'q'], ['出生', 'v'], ['在', 'p'], ['纽约', 'ns'], ['的', 'u'], ['美国', 'ns'], ['职业', 'n'], ['篮球', 'n'], ['运动员', 'n'], ['。', 'wp']]], 'seg': [['乔丹', '是', '一', '位', '出生', '在', '纽约', '的', '美国', '职业', '篮球', '运动员', '。']]}
{'status': 0, 'texts': ['乔丹是一位出生在纽约的美国职业篮球运动员。'], 'res': [[['乔丹', 'Nh', 0, 0], ['纽约', 'Ns', 6, 6], ['美国', 'Ns', 8, 8]]], 'seg': [['乔丹', '是', '一', '位', '出生', '在', '纽约', '的', '美国', '职业', '篮球', '运动员', '。']]}
{'status': 0, 'texts': ['乔丹是一位出生在纽约的美国职业篮球运动员。'], 'res': [[['是', 1, [['A0', ['乔丹'], 0, 0], ['A1', ['一', '位', '出生', '在', '纽约', '的', '美国', '职业', '篮球', '运动员'], 2, 11]]], ['出生', 4, [['A1', ['在', '纽约'], 5, 6], ['A0', ['职业', '篮球', '运动员'], 9, 11]]]]], 'seg': [['乔丹', '是', '一', '位', '出生', '在', '纽约', '的', '美国', '职业', '篮球', '运动员', '。']]}
{'status': 0, 'texts': ['乔丹是一位出生在纽约的美国职业篮球运动员。'], 'res': [[[1, '乔丹', 2, '是', 'SBV'], [2, '是', 0, 'ROOT', 'HED'], [3, '一', 4, '位', 'ATT'], [4, '位', 12, '运动员', 'ATT'], [5, '出生', 12, '运动员', 'ATT'], [6, '在', 5, '出生', 'CMP'], [7, '纽约', 6, '在', 'POB'], [8, '的', 5, '出生', 'RAD'], [9, '美国', 12, '运动员', 'ATT'], [10, '职业', 12, '运动员', 'ATT'], [11, '篮球', 12, '运动员', 'ATT'], [12, '运动员', 2, '是', 'VOB'], [13, '。', 2, '是', 'WP']]], 'seg': [['乔丹', '是', '一', '位', '出生', '在', '纽约', '的', '美国', '职业', '篮球', '运动员', '。']]}
{'status': 0, 'texts': ['乔丹是一位出生在纽约的美国职业篮球运动员。'], 'res': [[[1, '乔丹', 2, '是', 'EXP'], [2, '是', 0, 'ROOT', 'Root'], [3, '一', 4, '位', 'MEAS'], [4, '位', 12, '运动员', 'MEAS'], [5, '出生', 12, '运动员', 'rEXP'], [6, '在', 7, '纽约', 'mRELA'], [7, '纽约', 5, '出生', 'LOC'], [8, '的', 5, '出生', 'mDEPD'], [9, '美国', 12, '运动员', 'FEAT'], [10, '职业', 11, '篮球', 'FEAT'], [10, '职业', 12, '运动员', 'FEAT'], [11, '篮球', 12, '运动员', 'FEAT'], [12, '运动员', 2, '是', 'LINK'], [13, '。', 2, '是', 'mPUNC']]], 'seg': [['乔丹', '是', '一', '位', '出生', '在', '纽约', '的', '美国', '职业', '篮球', '运动员', '。']]}
{'status': 0, 'texts': ['乔丹是一位出生在纽约的美国职业篮球运动员。'], 'res': [[[1, '乔丹', 2, '是', 'EXP'], [2, '是', 0, 'ROOT', 'Root'], [3, '一', 4, '位', 'MEAS'], [4, '位', 12, '运动员', 'MEAS'], [5, '出生', 12, '运动员', 'rEXP'], [6, '在', 7, '纽约', 'mRELA'], [7, '纽约', 5, '出生', 'LOC'], [8, '的', 5, '出生', 'mDEPD'], [9, '美国', 12, '运动员', 'FEAT'], [10, '职业', 11, '篮球', 'FEAT'], [10, '职业', 12, '运动员', 'FEAT'], [11, '篮球', 12, '运动员', 'FEAT'], [12, '运动员', 2, '是', 'LINK'], [13, '。', 2, '是', 'mPUNC']]], 'seg': [['乔丹', '是', '一', '位', '出生', '在', '纽约', '的', '美国', '职业', '篮球', '运动员', '。']]}

方式二:自己通过http请求调用

参考

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ltp_server-0.2.1.tar.gz (11.1 kB view hashes)

Uploaded Source

Built Distribution

ltp_server-0.2.1-py3-none-any.whl (8.1 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page