|
| 1 | +# PaddleNLP Taskflow |
| 2 | + |
| 3 | +- [介绍](#介绍) |
| 4 | + * [任务清单](#任务清单) |
| 5 | +- [用法](#用法) |
| 6 | + * [中文分词](#中文分词) |
| 7 | + * [词性标注](#词性标注) |
| 8 | + * [命名实体识别](#命名实体识别) |
| 9 | + * [文本纠错](#文本纠错) |
| 10 | + * [句法分析](#句法分析) |
| 11 | + * [情感分类](#情感分类) |
| 12 | + * [生成式问答](#生成式问答) |
| 13 | + * [智能写诗](#智能写诗) |
| 14 | + |
| 15 | +## 介绍 |
| 16 | + |
| 17 | +`paddlenlp.Taskflow`是功能强大的自然语言处理库,旨在提供开箱即用的NLP预置任务,覆盖自然语言理解与自然语言生成两大核心应用,在中文场景上提供工业级的效果与极致的预测性能。 |
| 18 | + |
| 19 | +### 支持任务清单 |
| 20 | + |
| 21 | +| 自然语言理解任务 | 自然语言生成任务 | |
| 22 | +| :------------ | ---- | |
| 23 | +| 中文分词 | 生成式问答 | |
| 24 | +| 词性标注 | 智能写诗 | |
| 25 | +| 命名实体识别 | 文本翻译(TODO) | |
| 26 | +| 文本纠错 | 开放域对话(TODO) | |
| 27 | +| 句法分析 | 自动对联(TODO) | |
| 28 | +| 情感分类 | | |
| 29 | + |
| 30 | +随着版本迭代后续会持续开放更多的应用场景。 |
| 31 | + |
| 32 | +## 用法 |
| 33 | + |
| 34 | +### 中文分词 |
| 35 | + |
| 36 | +```python |
| 37 | +from paddlenlp import Taskflow |
| 38 | + |
| 39 | +seg = Taskflow("word_segmentation") |
| 40 | +seg("第十四届全运会在西安举办") |
| 41 | +>>> ['第十四届', '全运会', '在', '西安', '举办'] |
| 42 | + |
| 43 | +seg(["第十四届全运会在西安举办", "三亚是一个美丽的城市"]) |
| 44 | +>>> [['第十四届', '全运会', '在', '西安', '举办'], ['三亚', '是', '一个', '美丽', '的', '城市']] |
| 45 | +``` |
| 46 | + |
| 47 | +### 词性标注 |
| 48 | + |
| 49 | +```python |
| 50 | +from paddlenlp import Taskflow |
| 51 | + |
| 52 | +pos_tagging = Taskflow("pos_tagging") |
| 53 | +pos_tagging("第十四届全运会在西安举办") |
| 54 | +>>>[('第十四届', 'm'), ('全运会', 'nz'), ('在', 'p'), ('西安', 'LOC'), ('举办', 'v')] |
| 55 | + |
| 56 | +pos_tagging(["第十四届全运会在西安举办", "三亚是一个美丽的城市"]) |
| 57 | + |
| 58 | +>>> [[('第十四届', 'm'), ('全运会', 'nz'), ('在', 'p'), ('西安', 'LOC'), ('举办', 'v')], [('三亚', 'LOC'), ('是', 'v'), ('一个', 'm'), ('美丽', 'a'), ('的', 'u'), ('城市', 'n')]] |
| 59 | +``` |
| 60 | + |
| 61 | +### 命名实体识别 |
| 62 | + |
| 63 | +```python |
| 64 | +from paddlenlp import Taskflow |
| 65 | + |
| 66 | +ner = Taskflow("ner") |
| 67 | +ner("《孤女》是2010年九州出版社出版的小说,作者是余兼羽") |
| 68 | +>>> [{'text': '《孤女》是2010年九州出版社出版的小说,作者是余兼羽', 'items': [{'item': '《', 'offset': 0, 'wordtag_label': 'w', 'length': 1}, {'item': '孤女', 'offset': 1, 'wordtag_label': '作品类_实体', 'length': 2}, {'item': '》', 'offset': 3, 'wordtag_label': 'w', 'length': 1}, {'item': '是', 'offset': 4, 'wordtag_label': '肯定词', 'length': 1}, {'item': '2010年', 'offset': 5, 'wordtag_label': '时间类', 'length': 5}, {'item': '九州出版社', 'offset': 10, 'wordtag_label': '组织机构类', 'length': 5}, {'item': '出版', 'offset': 15, 'wordtag_label': '场景事件', 'length': 2}, {'item': '的', 'offset': 17, 'wordtag_label': '助词', 'length': 1}, {'item': '小说', 'offset': 18, 'wordtag_label': '作品类_概念', 'length': 2}, {'item': ',', 'offset': 20, 'wordtag_label': 'w', 'length': 1}, {'item': '作者', 'offset': 21, 'wordtag_label': '人物类_概念', 'length': 2}, {'item': '是', 'offset': 23, 'wordtag_label': '肯定词', 'length': 1}, {'item': '余兼羽', 'offset': 24, 'wordtag_label': '人物类_实体', 'length': 3}]}] |
| 69 | + |
| 70 | +ner = Taskflow("ner", batch_size=2) |
| 71 | +ner(["热梅茶是一道以梅子为主要原料制作的茶饮", |
| 72 | + "《孤女》是2010年九州出版社出版的小说,作者是余兼羽", |
| 73 | + "中山中环广场,位于广东省中山市东区,地址是东区兴政路1号", |
| 74 | + "宫之王是一款打发休闲时光的迷宫游戏"]) |
| 75 | +>>> [{'text': '热梅茶是一道以梅子为主要原料制作的茶饮', 'items': [{'item': '热梅茶', 'offset': 0, 'wordtag_label': '饮食类_饮品', 'length': 3}, {'item': '是', 'offset': 3, 'wordtag_label': '肯定词', 'length': 1}, {'item': '一道', 'offset': 4, 'wordtag_label': '数量词', 'length': 2}, {'item': '以', 'offset': 6, 'wordtag_label': '介词', 'length': 1}, {'item': '梅子', 'offset': 7, 'wordtag_label': '饮食类', 'length': 2}, {'item': '为', 'offset': 9, 'wordtag_label': '肯定词', 'length': 1}, {'item': '主要原料', 'offset': 10, 'wordtag_label': '物体类', 'length': 4}, {'item': '制作', 'offset': 14, 'wordtag_label': '场景事件', 'length': 2}, {'item': '的', 'offset': 16, 'wordtag_label': '助词', 'length': 1}, {'item': '茶饮', 'offset': 17, 'wordtag_label': '饮食类_饮品', 'length': 2}]}, {'text': '《孤女》是2010年九州出版社出版的小说,作者是余兼羽', 'items': [{'item': '《', 'offset': 0, 'wordtag_label': 'w', 'length': 1}, {'item': '孤女', 'offset': 1, 'wordtag_label': '作品类_实体', 'length': 2}, {'item': '》', 'offset': 3, 'wordtag_label': 'w', 'length': 1}, {'item': '是', 'offset': 4, 'wordtag_label': '肯定词', 'length': 1}, {'item': '2010年', 'offset': 5, 'wordtag_label': '时间类', 'length': 5}, {'item': '九州出版社', 'offset': 10, 'wordtag_label': '组织机构类', 'length': 5}, {'item': '出版', 'offset': 15, 'wordtag_label': '场景事件', 'length': 2}, {'item': '的', 'offset': 17, 'wordtag_label': '助词', 'length': 1}, {'item': '小说', 'offset': 18, 'wordtag_label': '作品类_概念', 'length': 2}, {'item': ',', 'offset': 20, 'wordtag_label': 'w', 'length': 1}, {'item': '作者', 'offset': 21, 'wordtag_label': '人物类_概念', 'length': 2}, {'item': '是', 'offset': 23, 'wordtag_label': '肯定词', 'length': 1}, {'item': '余兼羽', 'offset': 24, 'wordtag_label': '人物类_实体', 'length': 3}]}, {'text': '中山中环广场,位于广东省中山市东区,地址是东区兴政路1号', 'items': [{'item': '中山中环广场', 'offset': 0, 'wordtag_label': '场所类', 'length': 6}, {'item': ',', 'offset': 6, 'wordtag_label': 'w', 'length': 1}, {'item': '位于', 'offset': 7, 'wordtag_label': '场景事件', 'length': 2}, {'item': '广东省', 'offset': 9, 'wordtag_label': '世界地区类', 'length': 3}, {'item': '中山市东', 'offset': 12, 'wordtag_label': '世界地区类', 'length': 4}, {'item': '区', 'offset': 16, 'wordtag_label': '词汇用语', 'length': 1}, {'item': ',', 'offset': 17, 'wordtag_label': 'w', 'length': 1}, {'item': '地址', 'offset': 18, 'wordtag_label': '场所类', 'length': 2}, {'item': '是', 'offset': 20, 'wordtag_label': '肯定词', 'length': 1}, {'item': '东区', 'offset': 21, 'wordtag_label': '位置方位', 'length': 2}, {'item': '兴政路1号', 'offset': 23, 'wordtag_label': '世界地区类', 'length': 5}]}, {'text': '宫之王是一款打发休闲时光的迷宫游戏', 'items': [{'item': '宫之王', 'offset': 0, 'wordtag_label': '人物类_实体', 'length': 3}, {'item': '是', 'offset': 3, 'wordtag_label': '肯定词', 'length': 1}, {'item': '一款', 'offset': 4, 'wordtag_label': '数量词', 'length': 2}, {'item': '打发', 'offset': 6, 'wordtag_label': '场景事件', 'length': 2}, {'item': '休闲', 'offset': 8, 'wordtag_label': '场景事件', 'length': 2}, {'item': '时光', 'offset': 10, 'wordtag_label': '时间类', 'length': 2}, {'item': '的', 'offset': 12, 'wordtag_label': '助词', 'length': 1}, {'item': '迷宫游戏', 'offset': 13, 'wordtag_label': '作品类_概念', 'length': 4}]}] |
| 76 | +``` |
| 77 | + |
| 78 | +### 文本纠错 |
| 79 | + |
| 80 | +```python |
| 81 | +from paddlenlp import Taskflow |
| 82 | + |
| 83 | +text_correction = Taskflow("text_correction") |
| 84 | +text_correction('遇到逆竟时,我们必须勇于面对,而且要愈挫愈勇,这样我们才能朝著成功之路前进。') |
| 85 | +>>> [{'source': '遇到逆竟时,我们必须勇于面对,而且要愈挫愈勇,这样我们才能朝著成功之路前进。', |
| 86 | + 'target': '遇到逆境时,我们必须勇于面对,而且要愈挫愈勇,这样我们才能朝著成功之路前进。', |
| 87 | + 'errors': [{'position': 3, 'correction': {'竟': '境'}}]} |
| 88 | +] |
| 89 | + |
| 90 | +text_correction(['遇到逆竟时,我们必须勇于面对,而且要愈挫愈勇,这样我们才能朝著成功之路前进。', |
| 91 | + '人生就是如此,经过磨练才能让自己更加拙壮,才能使自己更加乐观。']) |
| 92 | +>>> [{'source': '遇到逆竟时,我们必须勇于面对,而且要愈挫愈勇,这样我们才能朝著成功之路前进。', |
| 93 | + 'target': '遇到逆境时,我们必须勇于面对,而且要愈挫愈勇,这样我们才能朝著成功之路前进。', |
| 94 | + 'errors': [{'position': 3, 'correction': {'竟': '境'}}]}, |
| 95 | +{'source': '人生就是如此,经过磨练才能让自己更加拙壮,才能使自己更加乐观。', |
| 96 | + 'target': '人生就是如此,经过磨练才能让自己更加茁壮,才能使自己更加乐观。', |
| 97 | + 'errors': [{'position': 18, 'correction': {'拙': '茁'}}]} |
| 98 | +] |
| 99 | +``` |
| 100 | + |
| 101 | +### 句法分析 |
| 102 | + |
| 103 | +```python |
| 104 | +from paddlenlp import Taskflow |
| 105 | + |
| 106 | +ddp = Taskflow("dependency_parsing") |
| 107 | +ddp("百度是一家高科技公司") |
| 108 | +>>> [{'word': ['百度', '是', '一家', '高科技', '公司'], 'head': ['2', '0', '5', '5', '2'], 'deprel': ['SBV', 'HED', 'ATT', 'ATT', 'VOB']}] |
| 109 | + |
| 110 | +ddp(["百度是一家高科技公司", "他送了一本书"]) |
| 111 | +>>> [{'word': ['百度', '是', '一家', '高科技', '公司'], 'head': ['2', '0', '5', '5', '2'], 'deprel': ['SBV', 'HED', 'ATT', 'ATT', 'VOB']}, {'word': ['他', '送', '了', '一本', '书'], 'head': ['2', '0', '2', '5', '2'], 'deprel': ['SBV', 'HED', 'MT', 'ATT', 'VOB']}] |
| 112 | + |
| 113 | +# 输出概率值和词性标签 |
| 114 | +ddp = Taskflow("dependency_parsing", prob=True, use_pos=True) |
| 115 | +ddp("百度是一家高科技公司") |
| 116 | +>>> [{'word': ['百度', '是', '一家', '高科技', '公司'], 'postag': ['ORG', 'v', 'm', 'n', 'n'], 'head': ['2', '0', '5', '5', '2'], 'deprel': ['SBV', 'HED', 'ATT', 'ATT', 'VOB'], 'prob': [1.0, 1.0, 1.0, 1.0, 1.0]}] |
| 117 | + |
| 118 | +# 使用ddparser-ernie-1.0进行预测 |
| 119 | +ddp = Taskflow("dependency_parsing",model="ddparser-ernie-1.0") |
| 120 | +ddp("百度是一家高科技公司") |
| 121 | +>>> [{'word': ['百度', '是', '一家', '高科技', '公司'], 'head': ['2', '0', '5', '5', '2'], 'deprel': ['SBV', 'HED', 'ATT', 'ATT', 'VOB']}] |
| 122 | +``` |
| 123 | + |
| 124 | +### 情感分类 |
| 125 | + |
| 126 | +```python |
| 127 | +from paddlenlp import Taskflow |
| 128 | + |
| 129 | +senta = Taskflow("sentiment_analysis") |
| 130 | +senta("怀着十分激动的心情放映,可是看着看着发现,在放映完毕后,出现一集米老鼠的动画片") |
| 131 | +>>> [{'text': '怀着十分激动的心情放映,可是看着看着发现,在放映完毕后,出现一集米老鼠的动画片', 'label': 'negative'}] |
| 132 | + |
| 133 | +senta(["怀着十分激动的心情放映,可是看着看着发现,在放映完毕后,出现一集米老鼠的动画片", |
| 134 | + "作为老的四星酒店,房间依然很整洁,相当不错。机场接机服务很好,可以在车上办理入住手续,节省时间"]) |
| 135 | +>>> [{'text': '怀着十分激动的心情放映,可是看着看着发现,在放映完毕后,出现一集米老鼠的动画片', 'label': 'negative'}, |
| 136 | +{'text': '作为老的四星酒店,房间依然很整洁,相当不错。机场接机服务很好,可以在车上办理入住手续,节省时间', 'label': 'positive'} |
| 137 | +] |
| 138 | + |
| 139 | +# 使用SKEP情感分析预训练模型进行预测 |
| 140 | +senta = Taskflow("sentiment_analysis", model="skep_ernie_1.0_large_ch") |
| 141 | +senta("作为老的四星酒店,房间依然很整洁,相当不错。机场接机服务很好,可以在车上办理入住手续,节省时间。") |
| 142 | +>>> [{'text': '作为老的四星酒店,房间依然很整洁,相当不错。机场接机服务很好,可以在车上办理入住手续,节省时间。', 'label': 'positive'}] |
| 143 | +``` |
| 144 | + |
| 145 | +### 生成式问答 |
| 146 | + |
| 147 | +```python |
| 148 | +from paddlenlp import Taskflow |
| 149 | + |
| 150 | +qa = Taskflow("question_answering") |
| 151 | +qa("中国的国土面积有多大?") |
| 152 | +>>> [{'text': '中国的国土面积有多大?', 'answer': '960万平方公里。'}] |
| 153 | + |
| 154 | +qa(["中国国土面积有多大?", "中国的首都在哪里?"]) |
| 155 | + |
| 156 | +>>> [{'text': '中国国土面积有多大?', 'answer': '960万平方公里。'}, {'text': '中国的首都在哪里?', 'answer': '北京。'}] |
| 157 | +``` |
| 158 | + |
| 159 | +### 智能写诗 |
| 160 | + |
| 161 | +```python |
| 162 | +from paddlenlp import Taskflow |
| 163 | + |
| 164 | +poetry = Taskflow("poetry_generation") |
| 165 | +poetry("林密不见人") |
| 166 | +>>> [{'text': '林密不见人', 'answer': ',但闻人语响。'}] |
| 167 | + |
| 168 | +poetry(["林密不见人", "举头邀明月"]) |
| 169 | +>>> [{'text': '林密不见人', 'answer': ',但闻人语响。'}, {'text': '举头邀明月', 'answer': ',低头思故乡。'}] |
| 170 | +``` |
0 commit comments