File size: 1,743 Bytes
c0705cc
 
 
 
1aaee5a
c0705cc
5eaf1fe
e7b9eb6
 
 
 
 
5eaf1fe
1da642d
 
 
 
 
5eaf1fe
 
 
1da642d
2d69ee0
 
5eaf1fe
2d69ee0
5eaf1fe
 
2d69ee0
 
 
 
 
 
 
 
 
 
87b49a9
 
 
50a1512
 
 
 
 
 
5b8fe7a
 
 
 
 
 
 
50a1512
5eaf1fe
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
---
language: zh
tags:
- roformer
inference: false
---
## 介绍
### tf版本 
https://github.com/ZhuiyiTechnology/roformer

### pytorch版本 
https://github.com/JunnYu/RoFormer_pytorch

## 安装
```bash
pip install git+https://github.com/JunnYu/RoFormer_pytorch.git
```

## 使用
```python
import torch
from roformer import RoFormerForMaskedLM, RoFormerTokenizer

text = "今天[MASK]很好,我[MASK]去公园玩。"
tokenizer = RoFormerTokenizer.from_pretrained("junnyu/roformer_chinese_base")
model = RoFormerForMaskedLM.from_pretrained("junnyu/roformer_chinese_base")
inputs = tokenizer(text, return_tensors="pt")
with torch.no_grad():
    outputs = model(**inputs).logits[0]
outputs_sentence = ""
for i, id in enumerate(tokenizer.encode(text)):
    if id == tokenizer.mask_token_id:
        tokens = tokenizer.convert_ids_to_tokens(outputs[i].topk(k=5)[1])
        outputs_sentence += "[" + "||".join(tokens) + "]"
    else:
        outputs_sentence += "".join(
            tokenizer.convert_ids_to_tokens([id], skip_special_tokens=True))
print(outputs_sentence)
# RoFormer    今天[天气||天||心情||阳光||空气]很好,我[想||要||打算||准备||喜欢]去公园玩。
# PLUS WoBERT 今天[天气||阳光||天||心情||空气]很好,我[想||要||打算||准备||就]去公园玩。
# WoBERT      今天[天气||阳光||天||心情||空气]很好,我[想||要||就||准备||也]去公园玩。
```
## 引用

Bibtex:

```tex
@misc{su2021roformer,
      title={RoFormer: Enhanced Transformer with Rotary Position Embedding}, 
      author={Jianlin Su and Yu Lu and Shengfeng Pan and Bo Wen and Yunfeng Liu},
      year={2021},
      eprint={2104.09864},
      archivePrefix={arXiv},
      primaryClass={cs.CL}
}
```