README.md 5.3 KB
Newer Older
S
shinichiye 已提交
1
# DDParser
K
kinghuin 已提交
2

S
shinichiye 已提交
3 4 5 6 7 8 9 10 11
|模型名称|DDParser|
| :--- | :---: | 
|类别|文本-句法分析|
|网络|LSTM|
|数据集|搜索query、网页文本、语音输入等数据|
|是否支持Fine-tuning|否|
|模型大小|33MB|
|最新更新日期|2021-02-26|
|数据指标|-|
K
kinghuin 已提交
12 13 14



S
shinichiye 已提交
15
## 一、模型基本信息
K
kinghuin 已提交
16

S
shinichiye 已提交
17
- ### 模型介绍
K
kinghuin 已提交
18

S
shinichiye 已提交
19 20
  - DDParser(Baidu Dependency Parser)是百度NLP基于大规模标注数据和深度学习平台飞桨研发的中文依存句法分析工具,可帮助用户直接获取输入文本中的关联词对、长距离依赖词对等。
  
K
kinghuin 已提交
21 22


S
shinichiye 已提交
23
## 二、安装
K
kinghuin 已提交
24

S
shinichiye 已提交
25
- ### 1、环境依赖  
K
kinghuin 已提交
26

S
shinichiye 已提交
27 28 29
  - paddlepaddle >= 1.8.2
  
  - paddlehub >= 1.7.0    | [如何安装PaddleHub](../../../../docs/docs_ch/get_start/installation.rst)
K
kinghuin 已提交
30

S
shinichiye 已提交
31 32 33 34 35
  - 额外依赖ddparser
  
  - ```shell
    $ pip install ddparser
    ```    
K
kinghuin 已提交
36

S
shinichiye 已提交
37
- ### 2、安装
K
kinghuin 已提交
38

S
shinichiye 已提交
39 40 41 42 43
  - ```shell
    $ hub install ddparser
    ```
  - 如您安装时遇到问题,可参考:[零基础windows安装](../../../../docs/docs_ch/get_start/windows_quickstart.md)
 | [零基础Linux安装](../../../../docs/docs_ch/get_start/linux_quickstart.md) | [零基础MacOS安装](../../../../docs/docs_ch/get_start/mac_quickstart.md)
K
kinghuin 已提交
44 45 46 47




S
shinichiye 已提交
48
## 三、模型API预测
K
kinghuin 已提交
49

S
shinichiye 已提交
50
- ### 1、命令行预测
K
kinghuin 已提交
51

S
shinichiye 已提交
52 53 54 55
  - ```shell
    $ hub run ddparser --input_text="百度是一家高科技公司"
    ```
  - 通过命令行方式实现文字识别模型的调用,更多请见 [PaddleHub命令行指令](../../../../docs/docs_ch/tutorial/cmd_usage.rst)
K
kinghuin 已提交
56

S
shinichiye 已提交
57
- ### 2、预测代码示例
K
kinghuin 已提交
58

S
shinichiye 已提交
59 60 61
  - ```python
    import cv2
    import paddlehub as hub
K
kinghuin 已提交
62

S
shinichiye 已提交
63
    module = hub.Module(name="ddparser")
K
kinghuin 已提交
64

S
shinichiye 已提交
65 66 67
    test_text = ["百度是一家高科技公司"]
    results = module.parse(texts=test_text)
    print(results)
K
kinghuin 已提交
68

S
shinichiye 已提交
69 70 71
    test_tokens = [['百度', '是', '一家', '高科技', '公司']]
    results = module.parse(texts=test_text, return_visual = True)
    print(results)
K
kinghuin 已提交
72

S
shinichiye 已提交
73 74 75 76 77 78 79
    result = results[0]
    data = module.visualize(result['word'],result['head'],result['deprel'])
    # or data = result['visual']
    cv2.imwrite('test.jpg',data)
    ```
    
- ### 3、API
K
kinghuin 已提交
80

S
shinichiye 已提交
81 82 83 84
  - ```python
    def parse(texts=[], return\_visual=False)
    ```
    - 依存分析接口,输入文本,输出依存关系。
K
kinghuin 已提交
85

S
shinichiye 已提交
86
    - **参数**
K
kinghuin 已提交
87

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

S
shinichiye 已提交
91
    - **返回**
K
kinghuin 已提交
92

S
shinichiye 已提交
93 94 95 96 97 98 99 100 101 102 103
      - results(list\[dict\]): 依存分析结果。每个元素都是dict类型,包含以下信息:  
     
            {
                'word': list[str], 分词结果。
                'head': list[int], 当前成分其支配者的id。
                'deprel': list[str], 当前成分与支配者的依存关系。
                'prob': list[float], 从属者和支配者依存的概率。
                'postag': list[str], 词性标签,只有当texts的元素是未分词的字符串时包含这个键。
                'visual': 图像数组,可以使用cv2.imshow显示图像或cv2.imwrite保存图像。
            }
      
K
kinghuin 已提交
104

S
shinichiye 已提交
105 106 107
  - ```python
    def visualize(word, head, deprel)
    ```
K
kinghuin 已提交
108

S
shinichiye 已提交
109
    - 可视化接口,输入依存分析接口得到的信息,输出依存图形数组。
K
kinghuin 已提交
110

S
shinichiye 已提交
111
    - **参数**
K
kinghuin 已提交
112

S
shinichiye 已提交
113 114 115
      - word(list\[list\[str\]\): 分词信息。
      - head(list\[int\]): 当前成分其支配者的id。
      - deprel(list\[str\]): 当前成分与支配者的依存关系。
K
kinghuin 已提交
116

S
shinichiye 已提交
117
    - **返回**
K
kinghuin 已提交
118

S
shinichiye 已提交
119
      - data(numpy.array): 图像数组。可以使用cv2.imshow显示图像或cv2.imwrite保存图像。
K
kinghuin 已提交
120 121 122



S
shinichiye 已提交
123
## 四、服务部署
K
kinghuin 已提交
124

S
shinichiye 已提交
125
- PaddleHub Serving可以部署一个在线情感分析服务,可以将此接口用于在线web应用。
K
kinghuin 已提交
126

S
shinichiye 已提交
127
- ## 第一步:启动PaddleHub Serving
K
kinghuin 已提交
128

S
shinichiye 已提交
129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177
  - 运行启动命令:
    ```shell
    $ hub serving start -m ddparser
    ```

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

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

  - **NOTE:** 如使用GPU预测,则需要在启动服务之前,请设置CUDA\_VISIBLE\_DEVICES环境变量,否则不用设置。

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

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

    ```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))
    results = r.json()['results']

    for i in range(len(results)):
      print(results[i]['word'])
      # 不同于本地调用parse接口,serving返回的图像是list类型的,需要先用numpy加载再显示或保存。
      cv2.imwrite('%s.jpg'%i, np.array(results[i]['visual']))
    ```

  - 关于PaddleHub Serving更多信息参考:[服务部署](../../../../docs/docs_ch/tutorial/serving.md)



## 五、更新历史
K
kinghuin 已提交
178 179 180 181

* 1.0.0

  初始发布
S
shinichiye 已提交
182 183 184 185

  - ```shell
    $ hub install ddparser==1.0.0
    ```