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 details)

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

Details for the file ltp_server-0.2.1.tar.gz.

File metadata

  • Download URL: ltp_server-0.2.1.tar.gz
  • Upload date:
  • Size: 11.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.23.0 setuptools/46.4.0.post20200518 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.8.3

File hashes

Hashes for ltp_server-0.2.1.tar.gz
Algorithm Hash digest
SHA256 a0aa2973530aeb446afae52c6e3d668c168b38800b07999ecd0d8b94bb4fbba5
MD5 73549180436e3c49ab2263ac141d56f3
BLAKE2b-256 e5d399726f699336d665f1a02f71b56247eb06ad2a0d02445a2620381a35ea65

See more details on using hashes here.

File details

Details for the file ltp_server-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: ltp_server-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 8.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.23.0 setuptools/46.4.0.post20200518 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.8.3

File hashes

Hashes for ltp_server-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 78437acf2462b66487b574235bd1aed1522a3eadf62c94bae0e859bb60603755
MD5 f3891c662f3abfcb75cce107030a2c01
BLAKE2b-256 3bca044ffe38cd7b952c900281919edc95c6c3d6beaddc3a47440fdd86850a01

See more details on using hashes here.

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