1
1
# LLM-NER
2
2
LLM for NER
3
3
4
- 本次尝试利用大模型做下NER任务,看看大模型在信息抽取上能达到什么水准。由于笔者资源有限,本次实验是在chatglm2 -6b+ptuning方式进行微调和测试的 ,数据集选择CLUEbenchmark。<br />
4
+ 本次尝试利用大模型做下NER任务,看看大模型在信息抽取上能达到什么水准。由于笔者资源有限,本次实验主要在chatglm2 -6b+ptuning,baichuan2-7b+lora方式进行微调和测试的 ,数据集选择CLUEbenchmark。<br />
5
5
6
6
## 1、数据集转化
7
7
首先,数据集中实体类型名称为英文,统一转为中文,对应为:<br />
@@ -21,17 +21,35 @@ LLM for NER
21
21
接着,将数据集转化成指令类,本次尝试两次instruction方式,分别为instruction1、instruction2:<br />
22
22
23
23
### instruction1
24
-
25
- { "text":"浙商银行企业信贷部叶老桂博士则从另一个角度对五道门槛进行了解读。叶老桂认为,对目前国内商业银行而言,", "instruction":"这是命名实体识别任务,请根据给定原文“浙商银行企业信贷部叶老桂博士则从另一个角度对五道门槛进行了解读。叶老桂认为,对目前国内商业银行而言,”,填写以下json:{'属于人名类实体有?': [], '属于组织机构类实体有?': [], '属于景点类实体有?': [], '属于企业类实体有?': [], '属于影视类实体有?': [], '属于书籍类实体有?': [], '属于政府类实体有?': [], '属于职位类实体有?': [], '属于地点类实体有?': [], '属于游戏类实体有?': []}", "output":"{'属于人名类实体有?': ['叶老桂'], '属于组织机构类实体有?': [], '属于景点类实体有?': [], '属于企业类实体有?': ['浙商银行'], '属于影视类实体有?': [], '属于书籍类实体有?': [], '属于政府类实体有?': [], '属于职位类实体有?': [], '属于地点类实体有?': [], '属于游戏类实体有?': []}", "task_type":"ner_cluener" }
24
+ ```
25
+ {
26
+ "text":"浙商银行企业信贷部叶老桂博士则从另一个角度对五道门槛进行了解读。叶老桂认为,对目前国内商业银行而言,",
27
+ "instruction":"这是命名实体识别任务,请根据给定原文“浙商银行企业信贷部叶老桂博士则从另一个角度对五道门槛进行了解读。叶老桂认为,对目前国内商业银行而言,”,填写以下json:{'属于人名类实体有?': [], '属于组织机构类实体有?': [], '属于景点类实体有?': [], '属于企业类实体有?': [], '属于影视类实体有?': [], '属于书籍类实体有?': [], '属于政府类实体有?': [], '属于职位类实体有?': [], '属于地点类实体有?': [], '属于游戏类实体有?': []}",
28
+ "output":"{'属于人名类实体有?': ['叶老桂'], '属于组织机构类实体有?': [], '属于景点类实体有?': [], '属于企业类实体有?': ['浙商银行'], '属于影视类实体有?': [], '属于书籍类实体有?': [], '属于政府类实体有?': [], '属于职位类实体有?': [], '属于地点类实体有?': [], '属于游戏类实体有?': []}",
29
+ "task_type":"ner_cluener"
30
+ }
31
+ ```
26
32
27
33
28
34
### instruction2
29
-
30
- { "text":"浙商银行企业信贷部叶老桂博士则从另一个角度对五道门槛进行了解读。叶老桂认为,对目前国内商业银行而言,", "instruction":"这是命名实体识别任务,其实体定义为:{'人名': '代表人名类实体,如:张三、刘德华、特朗普等', '组织机构': '代表组织机构类实体,如:中国足协、美国儿童基金会等', '景点': '代表景点类实体,如:故宫、西湖、敦煌莫高窟等', '企业': '代表企业类实体,如:京东、越南发展银行、杭州清风科技有限公司等', '影视': '代表影视类实体,如:《天下无贼》、英雄等', '书籍': '代表书籍类实体,如:红与黑、《活着》等', '政府': '代表政府类实体,如:印度外交部、发改委等', '职位': '代表职位类实体,如:老师、记者等', '地点': '代表地点类实体,如:北京、纽约、太平村等', '游戏': '代表游戏类实体,如:dota2、《使命召唤》等'},请根据给定原文“浙商银行企业信贷部叶老桂博士则从另一个角度对五道门槛进行了解读。叶老桂认为,对目前国内商业银行而言,”,填写以下json:{'属于人名类实体有?': [], '属于组织机构类实体有?': [], '属于景点类实体有?': [], '属于企业类实体有?': [], '属于影视类实体有?': [], '属于书籍类实体有?': [], '属于政府类实体有?': [], '属于职位类实体有?': [], '属于地点类实体有?': [], '属于游戏类实体有?': []}", "output":"{'属于人名类实体有?': ['叶老桂'], '属于组织机构类实体有?': [], '属于景点类实体有?': [], '属于企业类实体有?': ['浙商银行'], '属于影视类实体有?': [], '属于书籍类实体有?': [], '属于政府类实体有?': [], '属于职位类实体有?': [], '属于地点类实体有?': [], '属于游戏类实体有?': []}", "task_type":"ner_cluener" }
35
+ ```
36
+ {
37
+ "text":"浙商银行企业信贷部叶老桂博士则从另一个角度对五道门槛进行了解读。叶老桂认为,对目前国内商业银行而言,",
38
+ "instruction":"这是命名实体识别任务,其实体定义为:{'人名': '代表人名类实体,如:张三、刘德华、特朗普等', '组织机构': '代表组织机构类实体,如:中国足协、美国儿童基金会等', '景点': '代表景点类实体,如:故宫、西湖、敦煌莫高窟等', '企业': '代表企业类实体,如:京东、越南发展银行、杭州清风科技有限公司等', '影视': '代表影视类实体,如:《天下无贼》、英雄等', '书籍': '代表书籍类实体,如:红与黑、《活着》等', '政府': '代表政府类实体,如:印度外交部、发改委等', '职位': '代表职位类实体,如:老师、记者等', '地点': '代表地点类实体,如:北京、纽约、太平村等', '游戏': '代表游戏类实体,如:dota2、《使命召唤》等'},请根据给定原文“浙商银行企业信贷部叶老桂博士则从另一个角度对五道门槛进行了解读。叶老桂认为,对目前国内商业银行而言,”,填写以下json:{'属于人名类实体有?': [], '属于组织机构类实体有?': [], '属于景点类实体有?': [], '属于企业类实体有?': [], '属于影视类实体有?': [], '属于书籍类实体有?': [], '属于政府类实体有?': [], '属于职位类实体有?': [], '属于地点类实体有?': [], '属于游戏类实体有?': []}",
39
+ "output":"{'属于人名类实体有?': ['叶老桂'], '属于组织机构类实体有?': [], '属于景点类实体有?': [], '属于企业类实体有?': ['浙商银行'], '属于影视类实体有?': [], '属于书籍类实体有?': [], '属于政府类实体有?': [], '属于职位类实体有?': [], '属于地点类实体有?': [], '属于游戏类实体有?': []}",
40
+ "task_type":"ner_cluener"
41
+ }
42
+ ```
31
43
32
44
### instruction 3
33
-
34
- {"text": "浙商银行企业信贷部叶老桂博士则从另一个角度对五道门槛进行了解读。叶老桂认为,对目前国内商业银行而言,", "instruction": "这是命名实体识别任务,需要分两步来识别:1)先识别出文本中存在的实体词;2)再判断实体词属于什么类别;实体类别集合为:[ 'name', 'organization', 'scene', 'company', 'movie', 'book', 'government', 'position', 'address', 'game'] ,那么给定原文“浙商银行企业信贷部叶老桂博士则从另一个角度对五道门槛进行了解读。叶老桂认为,对目前国内商业银行而言,”,识别结果为:", "output": "{'mention': [ '浙商银行', '叶老桂'] , 'entity': [ 'company', 'name'] }", "task_type": "ner_cluener"}
45
+ ```
46
+ {
47
+ "text":"浙商银行企业信贷部叶老桂博士则从另一个角度对五道门槛进行了解读。叶老桂认为,对目前国内商业银行而言,",
48
+ "instruction":"这是命名实体识别任务,需要分两步来识别:1)先识别出文本中存在的实体词;2)再判断实体词属于什么类别;实体类别集合为:['name', 'organization', 'scene', 'company', 'movie', 'book', 'government', 'position', 'address', 'game'],那么给定原文“浙商银行企业信贷部叶老桂博士则从另一个角度对五道门槛进行了解读。叶老桂认为,对目前国内商业银行而言,”,识别结果为:",
49
+ "output":"{'mention': ['浙商银行', '叶老桂'], 'entity': ['company', 'name']}",
50
+ "task_type":"ner_cluener"
51
+ }
52
+ ```
35
53
36
54
### instruction 4
37
55
```
@@ -65,31 +83,34 @@ LLM for NER
65
83
3.输出形式参考<样例>中的输出
66
84
```
67
85
86
+ ### 设计四种指令形式:<br />
87
+
88
+ instruction1是一种问答的形式;<br />
89
+
90
+ instruction2是在instruction1的基础上加了实体类别的举例与说明;<br />
91
+
92
+ instruction3是采用COT形式,分两步来识别,先识别mention,再判断mention的类型;<br />
93
+
94
+ instruction4是采样序列标记的方式,将实体的标签<type ></type >嵌入文本中来标识实体,其更符合自回归生成的指令形式;<br />
95
+
96
+
68
97
## 2、微调过程与结果
98
+ 实验主要对比上述四种指令效果,其中_64,_ 128为p-tuning 中soft prompt设置超参数,chatgml是采样P-tuning方式,baichuan2是采样lora方式。我们可以看出:我们可以看出:
99
+
100
+ ![ image] ( https://github.com/cjymz886/LLM-NER/blob/main/data/llm-ner.png )
101
+
102
+ ### 结果分析 <br />
103
+
104
+ (1)新增指令4在chatgml,baichuan两个基座下,都是取得最佳结果,新增的最佳结果F1值达到80.46,超过roberta-wwm-large-ext 的80.42;<br />
105
+
106
+ (2)对比效果,#instruction 4 >#instruction 3>#instruction 1>#instruction 2,说明采用更符合自回归的生成方法(指令4)能更有利于信息抽取的任务,相对json的生成方式来说;<br />
107
+
108
+ (3)指令3比指令1、指令2好,说明采用COT的生成方式也能带来提升,而指令2中虽然增加实体的举例与说明,但并没有带来明显的提升,可能增加这些信息反而是一种误导的噪声信息;<br />
109
+
110
+ (4)基座中chatglm3比chatgm2,这其中是不是模型已经训练我们实验的数据集不得而知;另外,在p-tuning下,soft prompt参数越大,效果越好;<br />
111
+
112
+ (5)在本实验中,显示lora下的结果比p-tuning好,但实验中基座没有保持一致,但直接说lora方法就比p-tuning,还不能断定。<br />
69
113
70
- 两种指令差别在于对实体类型的解释与说明,instruction2对10类实体都做了举例说明,以期望这类先验信息对任务有帮助。两种指令下微调训练时主要参数为:<br />
71
- | 参数 | instruction1 | instruction2|
72
- | ------| ------| ------|
73
- | PRE_SEQ_LEN| 64/128| 64|
74
- | LR| 2e-2| 2e-2|
75
- | max_source_length| 350| 512|
76
- | max_target_length| 200| 200|
77
- | max_steps| 3000| 3000|
78
-
79
- 两种指令训练的结果在验证集上结果为:<br />
80
-
81
- | | F1 | Precision| Recall |
82
- | ------| ------| ------| ------|
83
- | instruction1_64| 76.6| 77.77| 75.45|
84
- | instruction2_64| 75.95| 77.87| 74.11|
85
- | instruction1_128| 78.69| 80.43| 77.03|
86
-
87
- 最好的结果(instruction1)对比之前抽取模型:<br />
88
- | model| F1|
89
- | ---| ---|
90
- | bilistm+crf| 70.0|
91
- | roberta-wwm-large-ext| 80.42|
92
- | LLM(chatglm2-6b+ptuning)| 78.69|
93
114
94
115
## 3、执行步骤
95
116
1.执行:python convert_prompt_data.py,转化指令数据<br />
0 commit comments