依存文法分析

依存文法分析核心思想为将一个线性描写的句子表述为成员之间的搭配与驱动关系。

依存文法分析引擎的依存具有如下 23 种关系:

名称 解释 举例
ROOT 核心词 警察*打击*犯罪。
SBJ 主语成分 *警察*打击犯罪。
OBJ 宾语成分 警察打击*犯罪*。
PU 标点符号 你好*!*
TMP 时间成分 *昨天下午*下雨了。
LOC 位置成分 我*在北京*开会。
MNR 方式成分 我*以最快的速度*冲向了终点。
POBJ 介宾成分 他*对客人*很热情。
PMOD 介词修饰 这个产品*直*到今天才完成。
NMOD 名词修饰 这是一个*大*错误。
VMOD 动词修饰 我*狠狠地*打*了*他。
VRD 动结式 (第二动词为第一动词结果) 福建省*涌现出*大批人才。
DEG 连接词“的”结构 *我*的妈妈是超人。
DEV “地”结构 他*狠狠*地看我一眼。
LC 位置词结构 我在*书房*里吃饭。
M 量词结构 我有*一*只小猪。
AMOD 副词修饰 一批*大*中企业折戟上海。
PRN 括号成分 北京(首都)很大。
VC 动词“是”修饰 我把你*看做*是妹妹。
COOR 并列关系 希望能*贯彻* *执行*该方针
CS 从属连词成分 如果*可行*,我们进行推广。
DEC 关系从句“的” 这是*以前不曾遇到过*的情况。
URL
http://api.bosonnlp.com/depparser/analysis
HTTP Method
POST
HTTP Header
Content-Type
application/json
Accept
application/json
X-Token
YOUR_API_TOKEN (需要替换成您自己的 Token)
HTTP 请求 Body

JSON 格式的需要做依存文法的分析的文本或者文本组成的列表。比如: ["\u6211\u4ee5\u6700\u5feb\u7684\u901f\u5ea6\u5403\u4e86\u5348\u996d"]

Note

我们限定了一次传入的文章数目不能超过100篇。

HTTP 返回 Body
JSON 格式的依存文法分析引擎返回的结果。

CURL 调用示例

$ curl -X POST \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -H "X-Token: YOUR_API_TOKEN" \
    --data "[\"\u6211\u4ee5\u6700\u5feb\u7684\u901f\u5ea6\u5403\u4e86\u5348\u996d\"]" \
    http://api.bosonnlp.com/depparser/analysis
[{"role": ["SBJ", "MNR", "VMOD", "DEC", "NMOD", "POBJ", "ROOT", "VMOD", "OBJ"],
  "head": [6, 6, 3, 4, 5, 1, -1, 6, 6],
  "tag": ["PN", "P", "AD", "VA", "DEC", "NN", "VV", "AS", "NN"],
  "word": ["\u6211", "\u4ee5", "\u6700", "\u5feb", "\u7684", "\u901f\u5ea6",
           "\u5403", "\u4e86", "\u5348\u996d"]}]

Python 调用示例

# -*- encoding: utf-8 -*-
from __future__ import print_function, unicode_literals
import json

import requests


DEPPARSER_URL = 'http://api.bosonnlp.com/depparser/analysis'


s = ['我以最快的速度吃了午饭']
data = json.dumps(s)
headers = {'X-Token': 'YOUR_API_TOKEN'}
resp = requests.post(DEPPARSER_URL, headers=headers, data=data.encode('utf-8'))


for item in resp.json():
    print(' '.join(item['word']))
    print(' '.join(item['tag']))
    print(item['head'])
    print(' '.join(item['role']))

运行

$ python depparser_api_example.py
我 以 最 快 的 速度 吃 了 午饭
PN P AD VA DEC NN VV AS NN
[6, 6, 3, 4, 5, 1, -1, 6, 6]
SBJ MNR VMOD DEC NMOD POBJ ROOT VMOD OBJ

Python SDK 调用示例

# -*- encoding: utf-8 -*-
from __future__ import print_function, unicode_literals
from bosonnlp import BosonNLP

# 注意:在测试时请更换为您的API Token
nlp = BosonNLP('YOUR_API_TOKEN')

s = ['我以最快的速度吃了午饭']

result = nlp.depparser(s)

print(' '.join(result[0]['word']))
print(' '.join(result[0]['tag']))
print(result[0]['head'])
print(' '.join(result[0]['role']))

详细的 Python SDK 依存文法分析文档请看 这里