Skip to content

Commit 86d9837

Browse files
authored
Update README.md and taskflow.md for UIE (#2217)
* Update README.md * Update README.md * Update README.md * Update README.md * Update README.md * Update README.md * Update README.md * Update README.md * Update README.md * Update README.md * Update README.md * Update README.md * Update README.md * Update README.md * Update README.md * Update README.md
1 parent bf811e1 commit 86d9837

File tree

3 files changed

+451
-106
lines changed

3 files changed

+451
-106
lines changed

docs/model_zoo/taskflow.md

Lines changed: 141 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -437,35 +437,105 @@ from paddlenlp import Taskflow
437437
'text': '谷爱凌'}]}]
438438
```
439439

440+
例如抽取的目标实体类型是"肿瘤的大小"、"肿瘤的个数"、"肝癌级别"和"脉管内癌栓分级", schema构造如下:
441+
442+
```text
443+
['肿瘤的大小', '肿瘤的个数', '肝癌级别', '脉管内癌栓分级']
444+
```
445+
446+
在上例中我们已经实例化了一个`Taskflow`对象,这里可以通过`set_schema`方法重置抽取目标。
447+
448+
预测:
449+
450+
```python
451+
>>> schema = ['肿瘤的大小', '肿瘤的个数', '肝癌级别', '脉管内癌栓分级']
452+
>>> ie.set_schema(schema)
453+
>>> pprint(ie("(右肝肿瘤)肝细胞性肝癌(II-III级,梁索型和假腺管型),肿瘤包膜不完整,紧邻肝被膜,侵及周围肝组织,未见脉管内癌栓(MVI分级:M0级)及卫星子灶形成。(肿物1个,大小4.2×4.0×2.8cm)。"))
454+
[{'肝癌级别': [{'end': 20,
455+
'probability': 0.9243267447402701,
456+
'start': 13,
457+
'text': 'II-III级'}],
458+
'肿瘤的个数': [{'end': 84,
459+
'probability': 0.7538413804059623,
460+
'start': 82,
461+
'text': '1个'}],
462+
'肿瘤的大小': [{'end': 100,
463+
'probability': 0.8341128043459491,
464+
'start': 87,
465+
'text': '4.2×4.0×2.8cm'}],
466+
'脉管内癌栓分级': [{'end': 70,
467+
'probability': 0.9083292325934664,
468+
'start': 67,
469+
'text': 'M0级'}]}]
470+
```
471+
440472
- 关系抽取
441473

442-
关系抽取(Relation Extraction,简称RE),是指从文本中识别实体并抽取实体之间的语义关系,即抽取三元组(entity1,关系类型,entity2)
474+
关系抽取(Relation Extraction,简称RE),是指从文本中识别实体并抽取实体之间的语义关系,进而获取三元组信息,即<主体,谓语,客体>
443475

444-
例如抽取的目标是"歌曲名"对应实体词的"歌手"、"所属专辑", schema构造如下:
476+
例如以"竞赛名称"作为抽取主体,抽取关系类型为"主办方"、"承办方"和"已举办次数", schema构造如下:
445477

446478
```text
447-
{'歌曲名称': ['歌手', '所属专辑']}
479+
{
480+
'竞赛名称': [
481+
'主办方',
482+
'承办方',
483+
'已举办次数'
484+
]
485+
}
448486
```
449487

450488
预测:
451489

452490
```python
453-
>>> schema = {'歌曲名称': ['歌手', '所属专辑']} # Define the schema for relation extraction
491+
>>> schema = {'竞赛名称': ['主办方', '承办方', '已举办次数']} # Define the schema for relation extraction
454492
>>> ie.set_schema(schema) # Reset schema
455-
>>> ie('《告别了》是孙耀威在专辑爱的故事里面的歌曲')
456-
[{'歌曲名称': [{'text': '告别了', 'start': 1, 'end': 4, 'probability': 0.7721050787207417, 'relations': {'歌手': [{'text': '孙耀威', 'start': 6, 'end': 9, 'probability': 0.9996328066160487}], '所属专辑': [{'text': '爱的故事', 'start': 12, 'end': 16, 'probability': 0.9981007942846247}]}}]}]
493+
>>> pprint(ie('2022语言与智能技术竞赛由中国中文信息学会和中国计算机学会联合主办,百度公司、中国中文信息学会评测工作委员会和中国计算机学会自然语言处理专委会承办,已连续举办4届,成为全球最热门的中文NLP赛事之一。'))
494+
[{'竞赛名称': [{'end': 13,
495+
'probability': 0.7825402622754041,
496+
'relations': {'主办方': [{'end': 22,
497+
'probability': 0.8421710521379353,
498+
'start': 14,
499+
'text': '中国中文信息学会'},
500+
{'end': 30,
501+
'probability': 0.7580801847701935,
502+
'start': 23,
503+
'text': '中国计算机学会'}],
504+
'已举办次数': [{'end': 82,
505+
'probability': 0.4671295049136148,
506+
'start': 80,
507+
'text': '4届'}],
508+
'承办方': [{'end': 39,
509+
'probability': 0.8292706618236352,
510+
'start': 35,
511+
'text': '百度公司'},
512+
{'end': 72,
513+
'probability': 0.6193477885474685,
514+
'start': 56,
515+
'text': '中国计算机学会自然语言处理专委会'},
516+
{'end': 55,
517+
'probability': 0.7000497331473241,
518+
'start': 40,
519+
'text': '中国中文信息学会评测工作委员会'}]},
520+
'start': 0,
521+
'text': '2022语言与智能技术竞赛'}]}]
457522
```
458523

459-
在实体抽取中我们已经实例化了一个`Taskflow`对象,这里可以通过`set_schema`方法重置抽取目标。
460-
461524
- 事件抽取
462525

463-
事件抽取 (Event Extraction, 简称EE),是指从自然语言文本中抽取事件并识别事件类型和事件论元的技术。UIE所包含的事件抽取任务,是指根据已知事件类型,抽取该事件所包含的事件论元
526+
事件抽取 (Event Extraction, 简称EE),是指从自然语言文本中抽取预定义的事件触发词和事件要素,组合为相应的结构化信息
464527

465528
例如抽取的目标是"地震"事件的"地震强度"、"时间"、"震中位置"和"震源深度"这些信息,schema构造如下:
466529

467530
```text
468-
{'地震触发词': ['地震强度', '时间', '震中位置', '震源深度']}
531+
{
532+
'地震触发词': [
533+
'地震强度',
534+
'时间',
535+
'震中位置',
536+
'震源深度'
537+
]
538+
}
469539
```
470540

471541
触发词的格式统一为`XX触发词``XX`表示具体事件类型,上例中的事件类型是`地震`,则对应触发词为`地震触发词`
@@ -486,48 +556,42 @@ from paddlenlp import Taskflow
486556
例如抽取的目标是文本中包含的评价维度及其对应的观点词和情感倾向,schema构造如下:
487557

488558
```text
489-
{'评价维度': ['观点词', '情感倾向[正向,负向]']}
559+
{
560+
'评价维度': [
561+
'观点词',
562+
'情感倾向[正向,负向]'
563+
]
564+
}
490565
```
491566

492567
预测:
493568

494569
```python
495570
>>> schema = {'评价维度': ['观点词', '情感倾向[正向,负向]']} # Define the schema for opinion extraction
496571
>>> ie.set_schema(schema) # Reset schema
497-
>>> pprint(ie("地址不错,服务一般,设施陈旧")) # Better print results using pprint
498-
[{'评价维度': [{'end': 2,
499-
'probability': 0.9888139270606509,
500-
'relations': {'情感倾向[正向,负向]': [{'probability': 0.998228967796706,
572+
>>> pprint(ie("店面干净,很清静,服务员服务热情,性价比很高,发现收银台有排队")) # Better print results using pprint
573+
[{'评价维度': [{'end': 20,
574+
'probability': 0.9817040258681473,
575+
'relations': {'情感倾向[正向,负向]': [{'probability': 0.9966142505350533,
576+
'text': '正向'}],
577+
'观点词': [{'end': 22,
578+
'probability': 0.957396472711558,
579+
'start': 21,
580+
'text': ''}]},
581+
'start': 17,
582+
'text': '性价比'},
583+
{'end': 2,
584+
'probability': 0.9696849569741168,
585+
'relations': {'情感倾向[正向,负向]': [{'probability': 0.9982153274927796,
501586
'text': '正向'}],
502587
'观点词': [{'end': 4,
503-
'probability': 0.9927847072459528,
588+
'probability': 0.9945318044652538,
504589
'start': 2,
505-
'text': '不错'}]},
590+
'text': '干净'}]},
506591
'start': 0,
507-
'text': '地址'},
508-
{'end': 12,
509-
'probability': 0.9588297379365116,
510-
'relations': {'情感倾向[正向,负向]': [{'probability': 0.9949389795770394,
511-
'text': '负向'}],
512-
'观点词': [{'end': 14,
513-
'probability': 0.9286753967902683,
514-
'start': 12,
515-
'text': '陈旧'}]},
516-
'start': 10,
517-
'text': '设施'},
518-
{'end': 7,
519-
'probability': 0.9592857070501211,
520-
'relations': {'情感倾向[正向,负向]': [{'probability': 0.9952498258302498,
521-
'text': '负向'}],
522-
'观点词': [{'end': 9,
523-
'probability': 0.9949359182521675,
524-
'start': 7,
525-
'text': '一般'}]},
526-
'start': 5,
527-
'text': '服务'}]}]
592+
'text': '店面'}]}]
528593
```
529594

530-
531595
- 情感倾向分类
532596

533597
句子级情感倾向分类,即判断句子的情感倾向是“正向”还是“负向”,schema构造如下:
@@ -545,32 +609,54 @@ from paddlenlp import Taskflow
545609
[{'情感倾向[正向,负向]': [{'text': '正向', 'probability': 0.9988661643929895}]}]
546610
```
547611

548-
- 跨任务跨领域抽取
612+
- 跨任务抽取
549613

550-
例如同时对文本进行实体抽取和关系抽取,schema可按照如下方式进行构造:
614+
例如在法律场景同时对文本进行实体抽取和关系抽取,schema可按照如下方式进行构造:
551615

552616
```text
553-
['寺庙', {'丈夫': '妻子'}]
617+
[
618+
"法院",
619+
{
620+
"原告": [
621+
"委托代理人",
622+
"法定代表人"
623+
]
624+
},
625+
{
626+
"被告": [
627+
"委托代理人",
628+
"法定代表人"
629+
]
630+
}
631+
]
554632
```
555633

556634
预测:
557635

558636
```python
559-
>>> schema = ['寺庙', {'丈夫': '妻子'}]
637+
>>> schema = ['法院', {'原告': '委托代理人'}, {'被告': '委托代理人'}]
560638
>>> ie.set_schema(schema)
561-
>>> pprint(ie('李治即位后,让身在感业寺的武则天续起头发,重新纳入后宫。')) # Better print results using pprint
562-
[{'丈夫': [{'end': 2,
563-
'probability': 0.989690572797457,
564-
'relations': {'妻子': [{'end': 16,
565-
'probability': 0.9987625986790256,
566-
'start': 13,
567-
'text': '武则天'}]},
639+
>>> pprint(ie("北京市海淀区人民法院\n民事判决书\n(199x)建初字第xxx号\n原告:张三。\n委托代理人李四,北京市 A律师事务所律师。\n被告:B公司,法定代表人王五,开发公司总经理。")) # Better print results using pprint
640+
[{'原告': [{'end': 37,
641+
'probability': 0.9955972637653154,
642+
'relations': {'委托代理人': [{'end': 46,
643+
'probability': 0.9835957661618089,
644+
'start': 44,
645+
'text': '李四'}]},
646+
'start': 35,
647+
'text': '张三'}],
648+
'法院': [{'end': 10,
649+
'probability': 0.9245885500450299,
568650
'start': 0,
569-
'text': '李治'}],
570-
'寺庙': [{'end': 12,
571-
'probability': 0.9888581774497425,
572-
'start': 9,
573-
'text': '感业寺'}]}]
651+
'text': '北京市海淀区人民法院'}],
652+
'被告': [{'end': 67,
653+
'probability': 0.9033652934762237,
654+
'relations': {'委托代理人': [{'end': 46,
655+
'probability': 0.3863244074945271,
656+
'start': 44,
657+
'text': '李四'}]},
658+
'start': 64,
659+
'text': 'B公司'}]}]
574660
```
575661

576662

0 commit comments

Comments
 (0)