File size: 5,739 Bytes
cdd2f8b
5dfaf44
 
 
cdd2f8b
5dfaf44
 
 
cdd2f8b
5dfaf44
cdd2f8b
 
5dfaf44
cdd2f8b
 
 
 
b16fa16
cdd2f8b
b16fa16
cdd2f8b
a3040b1
 
cdd2f8b
 
 
 
f1aa805
 
cdd2f8b
 
5dfaf44
cdd2f8b
 
5dfaf44
 
cdd2f8b
 
 
5dfaf44
cdd2f8b
 
 
 
 
 
 
5dfaf44
cdd2f8b
5dfaf44
cdd2f8b
5dfaf44
 
 
cdd2f8b
 
 
 
 
 
 
 
 
 
 
5dfaf44
cdd2f8b
 
5dfaf44
cdd2f8b
65af2a9
 
5dfaf44
 
 
 
 
cdd2f8b
 
 
5dfaf44
 
cdd2f8b
 
 
 
 
 
5dfaf44
cdd2f8b
 
 
 
 
 
5dfaf44
cdd2f8b
 
 
 
 
 
5dfaf44
cdd2f8b
 
 
 
 
 
5dfaf44
cdd2f8b
 
 
 
 
 
5dfaf44
cdd2f8b
 
 
7b2890d
 
 
 
 
 
 
 
 
 
 
 
 
 
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
---
language: 
- en
- zh
tags:
- GENIUS
- conditional text generation
- sketch-based text generation
- data augmentation

license: apache-2.0
datasets:
- c4
- beyond/chinese_clean_passages_80m


widget:
- text: "[MASK]酸菜鱼火锅[MASK]很美味,味道绝了[MASK]周末真开心[MASK]"
  example_title: "草稿1"
- text: "自然语言处理[MASK]谷歌公司[MASK]通用人工智能[MASK]"
  example_title: "草稿2"
- text: "[MASK]疫情[MASK]公园[MASK]散步[MASK]"
  example_title: "草稿3"

inference:
  parameters:
    max_length: 100
    num_beams: 3
    do_sample: True
---

# GENIUS: generating text using sketches!


- **Paper: [GENIUS: Sketch-based Language Model Pre-training via Extreme and Selective Masking for Text Generation and Augmentation](https://arxiv.org/abs/2211.10330)**
- **GitHub: [GENIUS, Pre-training/Data Augmentation Tutorial](https://github.com/beyondguo/genius)**



**GENIUS中文版** 可以根据你给出的一个**草稿**进行填词造句扩写,草稿可以是:
- 关键词组合,例如“今天[MASK]篮球[MASK]学校[MASK]”
- 短语组合,例如“自然语言处理[MASK]谷歌[MASK]通用人工智能[MASK]”
- 短句子组合,例如“我昨天做了一个梦[MASK]又遇见了她[MASK]曾经那段时光让人怀恋[MASK]”
- 以上的混合

### How to use / 如何使用
```python
# genius-chinese
from transformers import BertTokenizer, BartForConditionalGeneration, Text2TextGenerationPipeline
checkpoint = 'beyond/genius-base-chinese'
tokenizer = BertTokenizer.from_pretrained(checkpoint)
genius_model = BartForConditionalGeneration.from_pretrained(checkpoint)
genius_generator = Text2TextGenerationPipeline(genius_model, tokenizer, device=0)
genius_generator

sketchs = [
    "今天[MASK]篮球[MASK]学校[MASK]",
    "自然语言处理[MASK]谷歌[MASK]通用人工智能[MASK]",
    "我昨天做了一个梦[MASK]又遇见了她[MASK]曾经那段时光让人怀恋[MASK]",
    "[MASK]疫情[MASK]公园[MASK]散步[MASK]",
    "[MASK]酸菜鱼火锅[MASK]很美味,味道绝了[MASK]周末真开心[MASK]"
    ""
]
for sketch in sketchs:
    print('input sketch:\n>>> ', sketch)
    print('genius-chinese output:\n>>> ',genius_generator(sketch, max_length=100, do_sample=True, num_beams=3)[0]['generated_text'].replace(' ',''),'\n')
```

## Model variations / GENIUS其他版本

| Model | #params | Language | comment|
|------------------------|--------------------------------|-------|---------|
| [`genius-large`](https://huggingface.co/beyond/genius-large) | 406M   | English | The version used in paper |
| [`genius-large-k2t`](https://huggingface.co/beyond/genius-large-k2t)  | 406M    | English | keywords-to-text |
| [`genius-base`](https://huggingface.co/beyond/genius-base)  | 139M    | English | smaller version |
| [`genius-base-ps`](https://huggingface.co/beyond/genius-base)  | 139M    | English | pre-trained both in paragraphs and short sentences |
| [`genius-base-chinese`](https://huggingface.co/beyond/genius-base-chinese) | 116M    | 中文 | 在一千万纯净中文段落上预训练|


## Comparison / 效果对比
The following comes the comparison between [BART-base-chinese](https://huggingface.co/fnlp/bart-base-chinese) and our proposed [GENIUS-base-chinese](https://huggingface.co/beyond/genius-base-chinese).\
下面对比了[BART-base-chinese](https://huggingface.co/fnlp/bart-base-chinese)和我们提出的**GENIUS-base-chinese**在填词造句方面的表现:

```
input sketch:
>>>  今天[MASK]篮球[MASK]上海财经大学[MASK]
BART-chinese output:
>>>  今天的篮球是上海财经大学篮球
GENIUS-chinese output:
>>>  今天,我们邀请到了中国篮球联盟主席、上海财经大学校长孙建国先生作为主题发言。 

input sketch:
>>>  自然语言处理[MASK]谷歌[MASK]通用人工智能[MASK]
BART-chinese output:
>>>  自然语言处理是谷歌的通用人工智能技术
GENIUS-chinese output:
>>>  自然语言处理是谷歌在通用人工智能领域的一个重要研究方向,其目的是为了促进人类智能的发展。 

input sketch:
>>>  我昨天做了一个梦[MASK]又遇见了她[MASK]曾经那段时光让人怀恋[MASK]
BART-chinese output:
>>>  我昨天做了一个梦今天又遇见了她我曾经那段时光让人怀恋不已
GENIUS-chinese output:
>>>  我昨天做了一个梦,梦见了我的妈妈,又遇见了她,我知道她曾经那段时光让人怀恋,但是现在,我不知道该怎么回事了,我只是想告诉她,不要再回去了。 

input sketch:
>>>  [MASK]疫情[MASK]公园[MASK]漫步[MASK]
BART-chinese output:
>>>  在疫情防控公园内漫步徜徉
GENIUS-chinese output:
>>>  为了防止疫情扩散,公园内还设置了漫步区。 

input sketch:
>>>  [MASK]酸菜鱼火锅[MASK]很美味,味道绝了[MASK]周末真开心[MASK]
BART-chinese output:
>>>  这酸菜鱼火锅真的很美味,味道绝了这周末真开心啊
GENIUS-chinese output:
>>>  这个酸菜鱼火锅真的很美味,味道绝了,吃的时间也长了,周末真开心,吃完以后就回家了,很满意的一次,很喜欢的一个品牌。 
```

可以看出,BART只能填补简单的一些词,无法对这些片段进行很连贯的连接,而GENIUS则可以扩写成连贯的句子甚至段落。


---

If you find our paper/code/demo useful, please cite our paper:
```
@article{guo2022genius,
  title={GENIUS: Sketch-based Language Model Pre-training via Extreme and Selective Masking for Text Generation and Augmentation},
  author={Guo, Biyang and Gong, Yeyun and Shen, Yelong and Han, Songqiao and Huang, Hailiang and Duan, Nan and Chen, Weizhu},
  journal={arXiv preprint arXiv:2211.10330},
  year={2022}
}
```