README.md 3.6 KB
Newer Older
K
kinghuin 已提交
1 2 3 4 5 6 7 8
# 命令行预测

```shell
$ hub run ddparser --input_text="百度是一家高科技公司"
```

# API

9
## parse(texts=[], return\_visual=False)
K
kinghuin 已提交
10 11 12 13 14

依存分析接口,输入文本,输出依存关系。

**参数**

15 16
* texts(list\[list\[str\] or list\[str\]]): 待预测数据。各元素可以是未分词的字符串,也可以是已分词的token列表。
* return\_visual(bool): 是否返回依存分析可视化结果。如果为True,返回结果中将包含'visual'字段。
K
kinghuin 已提交
17 18 19

**返回**

20
* results(list\[dict\]): 依存分析结果。每个元素都是dict类型,包含以下信息:  
K
kinghuin 已提交
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
```python
  {
      'word': list[str], 分词结果
      'head': list[int], 当前成分其支配者的id
      'deprel': list[str], 当前成分与支配者的依存关系
      'prob': list[float], 从属者和支配者依存的概率
      'postag': list[str], 词性标签只有当texts的元素是未分词的字符串时包含这个键
      'visual': 图像数组可以使用cv2.imshow显示图像或cv2.imwrite保存图像
  }
```

## visualize(word, head, deprel)

可视化接口,输入依存分析接口得到的信息,输出依存图形数组。

**参数**

38 39 40
* word(list\[list\[str\]\): 分词信息。
* head(list\[int\]): 当前成分其支配者的id。
* deprel(list\[str\]): 当前成分与支配者的依存关系。
K
kinghuin 已提交
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58

**返回**

* data(numpy.array): 图像数组。可以使用cv2.imshow显示图像或cv2.imwrite保存图像。

**代码示例**

```python
import cv2
import paddlehub as hub

module = hub.Module(name="ddparser")

test_text = ["百度是一家高科技公司"]
results = module.parse(texts=test_text)
print(results)

test_tokens = [['百度', '是', '一家', '高科技', '公司']]
59
results = module.parse(texts=test_text, return_visual = True)
K
kinghuin 已提交
60 61 62 63
print(results)

result = results[0]
data = module.visualize(result['word'],result['head'],result['deprel'])
64
# or data = result['visual']
K
kinghuin 已提交
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
cv2.imwrite('test.jpg',data)
```

# DependencyParser 服务部署

PaddleHub Serving可以部署一个在线情感分析服务,可以将此接口用于在线web应用。

## 第一步:启动PaddleHub Serving

运行启动命令:
```shell
$ hub serving start -m ddparser
```

启动时会显示加载模型过程,启动成功后显示
```shell
Loading ddparser successful.
```

这样就完成了服务化API的部署,默认端口号为8866。

86
**NOTE:** 如使用GPU预测,则需要在启动服务之前,请设置CUDA\_VISIBLE\_DEVICES环境变量,否则不用设置。
K
kinghuin 已提交
87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109

## 第二步:发送预测请求

配置好服务端,以下数行代码即可实现发送预测请求,获取预测结果

```python
import requests
import json

import numpy as np
import cv2

# 待预测数据
text = ["百度是一家高科技公司"]

# 设置运行配置
return_visual = True
data = {"texts": text, "return_visual": return_visual}

# 指定预测方法为DuDepParser并发送post请求,content-type类型应指定json方式
url = "http://0.0.0.0:8866/predict/ddparser"
headers = {"Content-Type": "application/json"}
r = requests.post(url=url, headers=headers, data=json.dumps(data))
110
results = r.json()['results']
K
kinghuin 已提交
111 112

for i in range(len(results)):
113
  print(results[i]['word'])
K
kinghuin 已提交
114
  # 不同于本地调用parse接口,serving返回的图像是list类型的,需要先用numpy加载再显示或保存。
115
  cv2.imwrite('%s.jpg'%i, np.array(results[i]['visual']))
K
kinghuin 已提交
116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
```

关于PaddleHub Serving更多信息参考[服务部署](https://github.com/PaddlePaddle/PaddleHub/blob/release/v1.6/docs/tutorial/serving.md)


### 依赖

paddlepaddle >= 1.8.2

paddlehub >= 1.7.0


## 更新历史

* 1.0.0

  初始发布