File size: 6,678 Bytes
eded591 baffb14 eded591 baffb14 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 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 |
---
license: apache-2.0
language: zh
---
# uie-nano
## 介绍
* **[PaddlePaddle/uie-nano](https://huggingface.co/PaddlePaddle/uie-medium)** 的 Pytorch 实现
## 代码调用
### forward
> **Parameters**
> * `input_ids: Optional[torch.Tensor] = None`
> * `token_type_ids: Optional[torch.Tensor] = None`
> * `position_ids: Optional[torch.Tensor] = None`
> * `attention_mask: Optional[torch.Tensor] = None`
> * `head_mask: Optional[torch.Tensor] = None`
> * `inputs_embeds: Optional[torch.Tensor] = None`
> * `start_positions: Optional[torch.Tensor] = None`
> * `end_positions: Optional[torch.Tensor] = None`
> * `output_attentions: Optional[bool] = None`
> * `output_hidden_states: Optional[bool] = None`
> * `return_dict: Optional[bool] = None`
>
> **Returns** *UIEModelOutput or tuple(torch.FloatTensor)*
### predict
> **Parameters**
> * `schema: Union[Dict, List[str], str]`
> * `input_texts: Union[List[str], str]`
> * `tokenizer: PreTrainedTokenizerFast`
> * `max_length: int = 512`
> * `batch_size: int = 32`
> * `position_prob: int = 0.5`
> * `progress_hook=None`
>
> **Returns** * List[Dict]*
```python
from tqdm import tqdm
from transformers import AutoModel, AutoTokenizer
model = AutoModel.from_pretrained('Casually/uie-nano', trust_remote_code=True)
model.eval().to('cuda')
tokenizer = AutoTokenizer.from_pretrained('Casually/uie-nano')
hook = tqdm()
schema = {'地震触发词': ['地震强度', '时间', '震中位置', '震源深度']}
model.predict(schema=schema,
input_texts='中国地震台网正式测定:5月16日06时08分在云南临沧市凤庆县(北纬24.34度,东经99.98度)发生3.5级地震,震源深度10千米。',
tokenizer=tokenizer,
progress_hook=hook
)
```
```ipython
100%|██████████| 5/5 [00:00<00:00, 10.35it/s]
[{'地震触发词': [{'end': 58,
'probability': 0.9719620194304142,
'relations': {'地震强度': [{'end': 56,
'probability': 0.9345790644244119,
'start': 52,
'text': '3.5级'}],
'时间': [{'end': 22,
'probability': 0.9363583660080046,
'start': 11,
'text': '5月16日06时08分'}],
'震中位置': [{'end': 50,
'probability': 0.8117188157344657,
'start': 23,
'text': '云南临沧市凤庆县(北纬24.34度,东经99.98度)'}],
'震源深度': [{'end': 67,
'probability': 0.9900854956863228,
'start': 63,
'text': '10千米'}]},
'start': 56,
'text': '地震'}]}]
```
## 应用示例
### 实体抽取
```python
from transformers import AutoModel, AutoTokenizer
model = AutoModel.from_pretrained('Casually/uie-nano', trust_remote_code=True)
model.eval().to('cuda')
tokenizer = AutoTokenizer.from_pretrained('Casually/uie-nano')
schema = ['时间', '选手', '赛事名称']
res = model.predict(schema=schema,
input_texts="2月8日上午北京冬奥会自由式滑雪女子大跳台决赛中中国选手谷爱凌以188.25分获得金牌!",
tokenizer=tokenizer,
)
```
```ipython
>>> from pprint import pprint
>>> pprint(res)
[{'时间': [{'end': 6,
'probability': 0.6513584338899392,
'start': 0,
'text': '2月8日上午'}],
'赛事名称': [{'end': 23,
'probability': 0.4908133591440702,
'start': 6,
'text': '北京冬奥会自由式滑雪女子大跳台决赛'}],
'选手': [{'end': 31,
'probability': 0.9819330659468051,
'start': 28,
'text': '谷爱凌'}]}]
```
### 关系抽取
```python
from transformers import AutoModel, AutoTokenizer
model = AutoModel.from_pretrained('Casually/uie-nano', trust_remote_code=True)
model.eval().to('cuda')
tokenizer = AutoTokenizer.from_pretrained('Casually/uie-nano')
schema = {'竞赛名称': ['主办方', '承办方', '已举办次数']}
res = model.predict(schema=schema,
input_texts='2022语言与智能技术竞赛由中国中文信息学会和中国计算机学会联合主办,百度公司、中国中文信息学会评测工作委员会和中国计算机学会自然语言处理专委会承办,已连续举办4届,成为全球最热门的中文NLP赛事之一。',
tokenizer=tokenizer,
)
```
```ipython
>>> from pprint import pprint
>>> pprint(res)
[{}]
```
### 事件抽取
```python
from transformers import AutoModel, AutoTokenizer
model = AutoModel.from_pretrained('Casually/uie-nano', trust_remote_code=True)
model.eval().to('cuda')
tokenizer = AutoTokenizer.from_pretrained('Casually/uie-nano')
schema = {'地震触发词': ['地震强度', '时间', '震中位置', '震源深度']}
res = model.predict(schema=schema,
input_texts='中国地震台网正式测定:5月16日06时08分在云南临沧市凤庆县(北纬24.34度,东经99.98度)发生3.5级地震,震源深度10千米。',
tokenizer=tokenizer,
)
```
```ipython
>>> from pprint import pprint
>>> pprint(res)
[{'地震触发词': [{'end': 58,
'probability': 0.9719620194304142,
'relations': {'地震强度': [{'end': 56,
'probability': 0.9345790644244119,
'start': 52,
'text': '3.5级'}],
'时间': [{'end': 22,
'probability': 0.9363583660080046,
'start': 11,
'text': '5月16日06时08分'}],
'震中位置': [{'end': 50,
'probability': 0.8117188157344657,
'start': 23,
'text': '云南临沧市凤庆县(北纬24.34度,东经99.98度)'}],
'震源深度': [{'end': 67,
'probability': 0.9900854956863228,
'start': 63,
'text': '10千米'}]},
'start': 56,
'text': '地震'}]}]
``` |