File size: 1,443 Bytes
a895505
0a98a5f
2f5f670
e68a6b7
2f5f670
0a98a5f
a895505
0a98a5f
e91e11a
0a98a5f
720b49d
9ed0e00
d698516
eefa6fc
 
2f5f670
b4ec441
2f5f670
eefa6fc
2f5f670
 
 
6a9e65e
eefa6fc
2f5f670
 
f4a105c
9ed0e00
a58d18d
 
 
 
 
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
  CGRE is a generation-based relation extraction model

  ·a SOTA chinese end-to-end relation extraction model,using bart as backbone.

  ·using the Distant-supervised data from cndbpedia,pretrained from the checkpoint of fnlp/bart-base-chinese.
  
  ·can perform SOTA in many chinese relation extraction dataset,such as DuIE~1.0,DuIE~2.0,HacRED,etc.
  
  ·easy to use,just like normal generation task.
  
  ·input is sentence,and output is linearlize triples,such as input:姚明是一名NBA篮球运动员 output:[subj]姚明[obj]NBA[rel]公司[obj]篮球运动员[rel]职业


using model:

from transformers import BertTokenizer, BartForConditionalGeneration

model_name = 'fnlp/bart-base-chinese'

tokenizer_kwargs = {
    "use_fast": True,
    "additional_special_tokens": ['<rel>', '<obj>', '<subj>'],
} # if cannot see tokens in model card please open readme file

tokenizer = BertTokenizer.from_pretrained(model_name, **tokenizer_kwargs)

model = BartForConditionalGeneration.from_pretrained('./CGRE_CNDBPedia-Generative-Relation-Extraction')

inputs = tokenizer(sent, max_length=max_source_length, padding="max_length", truncation=True, return_tensors="pt")

params = {"decoder_start_token_id":0,"early_stopping":False,"no_repeat_ngram_size":0,"length_penalty": 0,"num_beams":20,"use_cache":True}

out_id = model.generate(inputs["input_ids"], attention_mask = inputs["attention_mask"], max_length=max_target_length, **params)