paddlenlp 任务清单 中文分词、中文纠错、文本相似度、情感分析、词性标注等一键
PaddleNLP Taskflow https://github.com/PaddlePaddle/PaddleNLP/blob/develop/docs/model_zoo/taskflow.md#paddlenlp-taskflow
PaddleNLP Taskflow
- PaddleNLP Taskflow
- 介紹
- 任務(wù)清單
- 用法
- 查看使用示例
- 中文分詞
- 詞性標(biāo)注
- 命名實體識別
- 文本糾錯
- 句法分析
- 情感分析
- 文本相似度
- 『解語』-詞類知識標(biāo)注
- 『解語』-名詞短語標(biāo)注
- 生成式問答
- 智能寫詩
- 開放域?qū)υ?/li>
- 自定義任務(wù)
- FAQ
- 介紹
介紹
paddlenlp.Taskflow提供開箱即用的NLP預(yù)置任務(wù),覆蓋自然語言理解與自然語言生成兩大核心應(yīng)用,在中文場景上提供產(chǎn)業(yè)級的效果與極致的預(yù)測性能。
任務(wù)清單
| 中文分詞 | 生成式問答 |
| 詞性標(biāo)注 | 智能寫詩 |
| 命名實體識別 | 開放域?qū)υ?/td> |
| 文本糾錯 | 文本翻譯(TODO) |
| 句法分析 | 自動對聯(lián)(TODO) |
| 情感分析 | |
| 文本相似度 | |
| 『解語』-詞類知識標(biāo)注 | |
| 『解語』-名詞短語標(biāo)注 |
隨著版本迭代會持續(xù)開放更多的應(yīng)用場景。
安裝
環(huán)境依賴
- python >= 3.6
- paddlepaddle >= 2.2.0
- paddlenlp >= 2.2.0
用法
查看使用示例
from paddlenlp import Taskflowseg = Taskflow("word_segmentation") seg.help() >>> Examples:from paddlenlp import Taskflowseg = Taskflow("word_segmentation")seg("第十四屆全運(yùn)會在西安舉辦")'''['第十四屆', '全運(yùn)會', '在', '西安', '舉辦']'''seg(["第十四屆全運(yùn)會在西安舉辦", "三亞是一個美麗的城市"])'''[['第十四屆', '全運(yùn)會', '在', '西安', '舉辦'], ['三亞', '是', '一個', '美麗', '的', '城市']]'''中文分詞
-
支持三種模式分詞
- Base模式(默認(rèn))
- 快速模式
利用『結(jié)巴』中文分詞工具,實現(xiàn)文本快速切分。
from paddlenlp import Taskflowseg = Taskflow("word_segmentation", mode="fast") seg("第十四屆全運(yùn)會在西安舉辦") >>> ['第十四屆', '全運(yùn)會', '在', '西安', '舉辦']- 精確模式
試圖將句子中的實體詞完整切分,分詞精確度高。
seg = Taskflow("word_segmentation", mode="accurate") seg("李偉拿出具有科學(xué)性、可操作性的《陜西省高校管理體制改革實施方案》") >>> ['李偉', '拿出', '具有', '科學(xué)性', '、', '可操作性', '的', '《', '陜西省高校管理體制改革實施方案', '》'] -
自定義詞典
-
快速模式詞典載入方式:
用戶可以在詞典文件每一行有兩個部分:詞語、詞頻(可省略),用空格隔開。詞頻省略則自動計算能保證分出該詞的詞頻。
詞典文件user_dict.txt示例:
新冠肺炎 8 國家衛(wèi)健委"國家衛(wèi)健委修訂完成了新冠肺炎診療方案"原本的輸出結(jié)果為:
['國家', '衛(wèi)健委', '修訂', '完成', '了', '新冠', '肺炎', '診療', '方案']裝載自定義詞典及輸出結(jié)果示例:
from paddlenlp import Taskflowmy_seg = Taskflow("word_segmentation", mode="fast", user_dict="user_dict.txt") my_seg("國家衛(wèi)健委修訂完成了新冠肺炎診療方案") >>> ['國家衛(wèi)健委', '修訂', '完成', '了', '新冠肺炎', '診療', '方案'] -
Base、精確模式詞典載入方式:
詞典文件每一行表示一個自定義item。
詞典文件user_dict.txt示例:
平原上的火焰 年 末以默認(rèn)模型為例,"平原上的火焰計劃于年末上映"原本的輸出結(jié)果為:
['平原', '上', '的', '火焰', '計劃', '于', '年末', '上映']裝載自定義詞典及輸出結(jié)果示例:
from paddlenlp import Taskflowmy_seg = Taskflow("word_segmentation", user_dict="user_dict.txt") my_seg("平原上的火焰計劃于年末上映") >>> ['平原上的火焰', '計劃', '于', '年', '末', '上映']
-
可配置參數(shù)說明
- batch_size:批處理大小,請結(jié)合機(jī)器情況進(jìn)行調(diào)整,默認(rèn)為1。
- user_dict:用戶自定義詞典文件,默認(rèn)為None。
- task_path:自定義任務(wù)路徑,默認(rèn)為None。
詞性標(biāo)注
from paddlenlp import Taskflowtag = Taskflow("pos_tagging") tag("第十四屆全運(yùn)會在西安舉辦") >>>[('第十四屆', 'm'), ('全運(yùn)會', 'nz'), ('在', 'p'), ('西安', 'LOC'), ('舉辦', 'v')]tag(["第十四屆全運(yùn)會在西安舉辦", "三亞是一個美麗的城市"]) >>> [[('第十四屆', 'm'), ('全運(yùn)會', 'nz'), ('在', 'p'), ('西安', 'LOC'), ('舉辦', 'v')], [('三亞', 'LOC'), ('是', 'v'), ('一個', 'm'), ('美麗', 'a'), ('的', 'u'), ('城市', 'n')]]- 標(biāo)簽集合:
| n | 普通名詞 | f | 方位名詞 | s | 處所名詞 | t | 時間 |
| nr | 人名 | ns | 地名 | nt | 機(jī)構(gòu)名 | nw | 作品名 |
| nz | 其他專名 | v | 普通動詞 | vd | 動副詞 | vn | 名動詞 |
| a | 形容詞 | ad | 副形詞 | an | 名形詞 | d | 副詞 |
| m | 數(shù)量詞 | q | 量詞 | r | 代詞 | p | 介詞 |
| c | 連詞 | u | 助詞 | xc | 其他虛詞 | w | 標(biāo)點符號 |
| PER | 人名 | LOC | 地名 | ORG | 機(jī)構(gòu)名 | TIME | 時間 |
-
自定義詞典
用戶可以通過裝載自定義詞典來定制化分詞和詞性標(biāo)注結(jié)果。詞典文件每一行表示一個自定義item,可以由一個單詞或者多個單詞組成,單詞后面可以添加自定義標(biāo)簽,格式為item/tag,如果不添加自定義標(biāo)簽,則使用模型默認(rèn)標(biāo)簽。
詞典文件user_dict.txt示例:
賽里木湖/LAKE 高/a 山/n 海拔最高 湖 泊以"賽里木湖是新疆海拔最高的高山湖泊"為例,原本的輸出結(jié)果為:
[('賽里木湖', 'LOC'), ('是', 'v'), ('新疆', 'LOC'), ('海拔', 'n'), ('最高', 'a'), ('的', 'u'), ('高山', 'n'), ('湖泊', 'n')]裝載自定義詞典及輸出結(jié)果示例:
from paddlenlp import Taskflowmy_tag = Taskflow("pos_tagging", user_dict="user_dict.txt") my_tag("賽里木湖是新疆海拔最高的高山湖泊") >>> [('賽里木湖', 'LAKE'), ('是', 'v'), ('新疆', 'LOC'), ('海拔最高', 'n'), ('的', 'u'), ('高', 'a'), ('山', 'n'), ('湖', 'n'), ('泊', 'n')]
可配置參數(shù)說明
- batch_size:批處理大小,請結(jié)合機(jī)器情況進(jìn)行調(diào)整,默認(rèn)為1。
- user_dict:用戶自定義詞典文件,默認(rèn)為None。
- task_path:自定義任務(wù)路徑,默認(rèn)為None。
命名實體識別
-
支持兩種模式
- 快速模式
- 精確模式(默認(rèn))
-
只返回實體/概念詞:
-
自定義詞典
用戶可以通過裝載自定義詞典來定制化分詞和詞性標(biāo)注結(jié)果。詞典文件每一行表示一個自定義item,可以由一個單詞或者多個單詞組成,單詞后面可以添加自定義標(biāo)簽,格式為item/tag,如果不添加自定義標(biāo)簽,則使用模型默認(rèn)標(biāo)簽。
詞典文件user_dict.txt示例:
長津湖/電影類_實體 收/詞匯用語 尾/術(shù)語類 最 大 海外票倉以"《長津湖》收尾,北美是最大海外票倉"為例,原本的輸出結(jié)果為:
[('《', 'w'), ('長津湖', '作品類_實體'), ('》', 'w'), ('收尾', '場景事件'), (',', 'w'), ('北美', '世界地區(qū)類'), ('是', '肯定詞'), ('最大', '修飾詞'), ('海外', '場所類'), ('票倉', '詞匯用語')]裝載自定義詞典及輸出結(jié)果示例:
from paddlenlp import Taskflowmy_ner = Taskflow("ner", user_dict="user_dict.txt") my_ner("《長津湖》收尾,北美是最大海外票倉") >>> [('《', 'w'), ('長津湖', '電影類_實體'), ('》', 'w'), ('收', '詞匯用語'), ('尾', '術(shù)語類'), (',', 'w'), ('北美', '世界地區(qū)類'), ('是', '肯定詞'), ('最', '修飾詞'), ('大', '修飾詞'), ('海外票倉', '場所類')]
可配置參數(shù)說明
- batch_size:批處理大小,請結(jié)合機(jī)器情況進(jìn)行調(diào)整,默認(rèn)為1。
- user_dict:用戶自定義詞典文件,默認(rèn)為None。
- task_path:自定義任務(wù)路徑,默認(rèn)為None。
- entity_only:是否返回所有詞性標(biāo)簽;若設(shè)置為True,則只返回實體/概念詞;默認(rèn)為False。
文本糾錯
from paddlenlp import Taskflowcorrector = Taskflow("text_correction") corrector('遇到逆竟時,我們必須勇于面對,而且要愈挫愈勇,這樣我們才能朝著成功之路前進(jìn)。') >>> [{'source': '遇到逆竟時,我們必須勇于面對,而且要愈挫愈勇,這樣我們才能朝著成功之路前進(jìn)。', 'target': '遇到逆境時,我們必須勇于面對,而且要愈挫愈勇,這樣我們才能朝著成功之路前進(jìn)。', 'errors': [{'position': 3, 'correction': {'竟': '境'}}]}]corrector(['遇到逆竟時,我們必須勇于面對,而且要愈挫愈勇,這樣我們才能朝著成功之路前進(jìn)。','人生就是如此,經(jīng)過磨練才能讓自己更加拙壯,才能使自己更加樂觀。']) >>> [{'source': '遇到逆竟時,我們必須勇于面對,而且要愈挫愈勇,這樣我們才能朝著成功之路前進(jìn)。', 'target': '遇到逆境時,我們必須勇于面對,而且要愈挫愈勇,這樣我們才能朝著成功之路前進(jìn)。', 'errors': [{'position': 3, 'correction': {'竟': '境'}}]}, {'source': '人生就是如此,經(jīng)過磨練才能讓自己更加拙壯,才能使自己更加樂觀。', 'target': '人生就是如此,經(jīng)過磨練才能讓自己更加茁壯,才能使自己更加樂觀。', 'errors': [{'position': 18, 'correction': {'拙': '茁'}}]}]可配置參數(shù)說明
- batch_size:批處理大小,請結(jié)合機(jī)器情況進(jìn)行調(diào)整,默認(rèn)為1。
- task_path:自定義任務(wù)路徑,默認(rèn)為None。
句法分析
from paddlenlp import Taskflowddp = Taskflow("dependency_parsing") ddp("9月9日上午納達(dá)爾在亞瑟·阿什球場擊敗俄羅斯球員梅德韋杰夫") >>> [{'word': ['9月9日', '上午', '納達(dá)爾', '在', '亞瑟·阿什球場', '擊敗', '俄羅斯', '球員', '梅德韋杰夫'], 'head': [2, 6, 6, 5, 6, 0, 8, 9, 6], 'deprel': ['ATT', 'ADV', 'SBV', 'MT', 'ADV', 'HED', 'ATT', 'ATT', 'VOB']}]ddp(["9月9日上午納達(dá)爾在亞瑟·阿什球場擊敗俄羅斯球員梅德韋杰夫", "他送了一本書"]) >>> [{'word': ['9月9日', '上午', '納達(dá)爾', '在', '亞瑟·阿什球場', '擊敗', '俄羅斯', '球員', '梅德韋杰夫'], 'head': [2, 6, 6, 5, 6, 0, 8, 9, 6], 'deprel': ['ATT', 'ADV', 'SBV', 'MT', 'ADV', 'HED', 'ATT', 'ATT', 'VOB']}, {'word': ['他', '送', '了', '一本', '書'], 'head': [2, 0, 2, 5, 2], 'deprel': ['SBV', 'HED', 'MT', 'ATT', 'VOB']}]輸出概率值和詞性標(biāo)簽:
ddp = Taskflow("dependency_parsing", prob=True, use_pos=True) ddp("9月9日上午納達(dá)爾在亞瑟·阿什球場擊敗俄羅斯球員梅德韋杰夫") >>> [{'word': ['9月9日', '上午', '納達(dá)爾', '在', '亞瑟·阿什', '球場', '擊敗', '俄羅斯', '球員', '梅德韋杰夫'], 'head': [2, 7, 7, 6, 6, 7, 0, 9, 10, 7], 'deprel': ['ATT', 'ADV', 'SBV', 'MT', 'ATT', 'ADV', 'HED', 'ATT', 'ATT', 'VOB'], 'postag': ['TIME', 'TIME', 'PER', 'p', 'PER', 'n', 'v', 'LOC', 'n', 'PER'], 'prob': [0.79, 0.98, 1.0, 0.49, 0.97, 0.86, 1.0, 0.85, 0.97, 0.99]}]使用ddparser-ernie-1.0進(jìn)行預(yù)測:
ddp = Taskflow("dependency_parsing", model="ddparser-ernie-1.0") ddp("9月9日上午納達(dá)爾在亞瑟·阿什球場擊敗俄羅斯球員梅德韋杰夫") >>> [{'word': ['9月9日', '上午', '納達(dá)爾', '在', '亞瑟·阿什球場', '擊敗', '俄羅斯', '球員', '梅德韋杰夫'], 'head': [2, 6, 6, 5, 6, 0, 8, 9, 6], 'deprel': ['ATT', 'ADV', 'SBV', 'MT', 'ADV', 'HED', 'ATT', 'ATT', 'VOB']}]使用分詞結(jié)果來輸入:
ddp = Taskflow("dependency_parsing") ddp.from_segments([['9月9日', '上午', '納達(dá)爾', '在', '亞瑟·阿什球場', '擊敗', '俄羅斯', '球員', '梅德韋杰夫']]) >>> [{'word': ['9月9日', '上午', '納達(dá)爾', '在', '亞瑟·阿什球場', '擊敗', '俄羅斯', '球員', '梅德韋杰夫'], 'head': [2, 6, 6, 5, 6, 0, 8, 9, 6], 'deprel': ['ATT', 'ADV', 'SBV', 'MT', 'ADV', 'HED', 'ATT', 'ATT', 'VOB']}]依存關(guān)系可視化:
from paddlenlp import Taskflowddp = Taskflow("dependency_parsing", return_visual=True) result = ddp("9月9日上午納達(dá)爾在亞瑟·阿什球場擊敗俄羅斯球員梅德韋杰夫")[0]['visual'] import cv2 cv2.imwrite('test.png', result)- 標(biāo)注關(guān)系說明:
| SBV | 主謂關(guān)系 | 主語與謂詞間的關(guān)系 | 他送了一本書(他<–送) |
| VOB | 動賓關(guān)系 | 賓語與謂詞間的關(guān)系 | 他送了一本書(送–>書) |
| POB | 介賓關(guān)系 | 介詞與賓語間的關(guān)系 | 我把書賣了(把–>書) |
| ADV | 狀中關(guān)系 | 狀語與中心詞間的關(guān)系 | 我昨天買書了(昨天<–買) |
| CMP | 動補(bǔ)關(guān)系 | 補(bǔ)語與中心詞間的關(guān)系 | 我都吃完了(吃–>完) |
| ATT | 定中關(guān)系 | 定語與中心詞間的關(guān)系 | 他送了一本書(一本<–書) |
| F | 方位關(guān)系 | 方位詞與中心詞的關(guān)系 | 在公園里玩耍(公園–>里) |
| COO | 并列關(guān)系 | 同類型詞語間關(guān)系 | 叔叔阿姨(叔叔–>阿姨) |
| DBL | 兼語結(jié)構(gòu) | 主謂短語做賓語的結(jié)構(gòu) | 他請我吃飯(請–>我,請–>吃飯) |
| DOB | 雙賓語結(jié)構(gòu) | 謂語后出現(xiàn)兩個賓語 | 他送我一本書(送–>我,送–>書) |
| VV | 連謂結(jié)構(gòu) | 同主語的多個謂詞間關(guān)系 | 他外出吃飯(外出–>吃飯) |
| IC | 子句結(jié)構(gòu) | 兩個結(jié)構(gòu)獨(dú)立或關(guān)聯(lián)的單句 | 你好,書店怎么走?(你好<–走) |
| MT | 虛詞成分 | 虛詞與中心詞間的關(guān)系 | 他送了一本書(送–>了) |
| HED | 核心關(guān)系 | 指整個句子的核心 |
可配置參數(shù)說明
- batch_size:批處理大小,請結(jié)合機(jī)器情況進(jìn)行調(diào)整,默認(rèn)為1。
- model:選擇任務(wù)使用的模型,可選有ddparser,ddparser-ernie-1.0和ddparser-ernie-gram-zh。
- tree:確保輸出結(jié)果是正確的依存句法樹,默認(rèn)為True。
- prob:是否輸出每個弧對應(yīng)的概率值,默認(rèn)為False。
- use_pos:是否返回詞性標(biāo)簽,默認(rèn)為False。
- use_cuda:是否使用GPU進(jìn)行切詞,默認(rèn)為False。
- return_visual:是否返回句法樹的可視化結(jié)果,默認(rèn)為False。
- task_path:自定義任務(wù)路徑,默認(rèn)為None。
情感分析
使用BiLSTM模型:
from paddlenlp import Taskflowsenta = Taskflow("sentiment_analysis") senta("這個產(chǎn)品用起來真的很流暢,我非常喜歡") >>> [{'text': '這個產(chǎn)品用起來真的很流暢,我非常喜歡', 'label': 'positive', 'score': 0.9938690066337585}]senta(["這個產(chǎn)品用起來真的很流暢,我非常喜歡", "作為老的四星酒店,房間依然很整潔,相當(dāng)不錯。機(jī)場接機(jī)服務(wù)很好,可以在車上辦理入住手續(xù),節(jié)省時間"]) >>> [{'text': '這個產(chǎn)品用起來真的很流暢,我非常喜歡', 'label': 'positive', 'score': 0.9938690066337585}, {'text': '作為老的四星酒店,房間依然很整潔,相當(dāng)不錯。機(jī)場接機(jī)服務(wù)很好,可以在車上辦理入住手續(xù),節(jié)省時間', 'label': 'positive', 'score': 0.985750675201416}]使用SKEP情感分析預(yù)訓(xùn)練模型進(jìn)行預(yù)測:
senta = Taskflow("sentiment_analysis", model="skep_ernie_1.0_large_ch") senta("作為老的四星酒店,房間依然很整潔,相當(dāng)不錯。機(jī)場接機(jī)服務(wù)很好,可以在車上辦理入住手續(xù),節(jié)省時間。") >>> [{'text': '作為老的四星酒店,房間依然很整潔,相當(dāng)不錯。機(jī)場接機(jī)服務(wù)很好,可以在車上辦理入住手續(xù),節(jié)省時間。', 'label': 'positive', 'score': 0.984320878982544}]可配置參數(shù)說明
- batch_size:批處理大小,請結(jié)合機(jī)器情況進(jìn)行調(diào)整,默認(rèn)為1。
- model:選擇任務(wù)使用的模型,可選有bilstm和skep_ernie_1.0_large_ch。
- task_path:自定義任務(wù)路徑,默認(rèn)為None。
文本相似度
from paddlenlp import Taskflowsimilarity = Taskflow("text_similarity") similarity([["世界上什么東西最小", "世界上什么東西最小?"]]) >>> [{'text1': '世界上什么東西最小', 'text2': '世界上什么東西最小?', 'similarity': 0.992725}]similarity([["光眼睛大就好看嗎", "眼睛好看嗎?"], ["小蝌蚪找媽媽怎么樣", "小蝌蚪找媽媽是誰畫的"]]) >>> [{'text1': '光眼睛大就好看嗎', 'text2': '眼睛好看嗎?', 'similarity': 0.74502707}, {'text1': '小蝌蚪找媽媽怎么樣', 'text2': '小蝌蚪找媽媽是誰畫的', 'similarity': 0.8192149}]可配置參數(shù)說明
- batch_size:批處理大小,請結(jié)合機(jī)器情況進(jìn)行調(diào)整,默認(rèn)為1。
- max_seq_len:最大序列長度,默認(rèn)為128。
- task_path:自定義任務(wù)路徑,默認(rèn)為None。
知識挖掘-詞類知識標(biāo)注
from paddlenlp import Taskflowwordtag = Taskflow("knowledge_mining") wordtag("《孤女》是2010年九州出版社出版的小說,作者是余兼羽") >>> [{'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, 'termid': '肯定否定詞_cb_是'}, {'item': '2010年', 'offset': 5, 'wordtag_label': '時間類', 'length': 5, 'termid': '時間階段_cb_2010年'}, {'item': '九州出版社', 'offset': 10, 'wordtag_label': '組織機(jī)構(gòu)類', 'length': 5, 'termid': '組織機(jī)構(gòu)_eb_九州出版社'}, {'item': '出版', 'offset': 15, 'wordtag_label': '場景事件', 'length': 2, 'termid': '場景事件_cb_出版'}, {'item': '的', 'offset': 17, 'wordtag_label': '助詞', 'length': 1, 'termid': '助詞_cb_的'}, {'item': '小說', 'offset': 18, 'wordtag_label': '作品類_概念', 'length': 2, 'termid': '小說_cb_小說'}, {'item': ',', 'offset': 20, 'wordtag_label': 'w', 'length': 1}, {'item': '作者', 'offset': 21, 'wordtag_label': '人物類_概念', 'length': 2, 'termid': '人物_cb_作者'}, {'item': '是', 'offset': 23, 'wordtag_label': '肯定詞', 'length': 1, 'termid': '肯定否定詞_cb_是'}, {'item': '余兼羽', 'offset': 24, 'wordtag_label': '人物類_實體', 'length': 3}]}]wordtag(["熱梅茶是一道以梅子為主要原料制作的茶飲","《孤女》是2010年九州出版社出版的小說,作者是余兼羽"]) >>> [{'text': '熱梅茶是一道以梅子為主要原料制作的茶飲', 'items': [{'item': '熱梅茶', 'offset': 0, 'wordtag_label': '飲食類_飲品', 'length': 3}, {'item': '是', 'offset': 3, 'wordtag_label': '肯定詞', 'length': 1, 'termid': '肯定否定詞_cb_是'}, {'item': '一道', 'offset': 4, 'wordtag_label': '數(shù)量詞', 'length': 2}, {'item': '以', 'offset': 6, 'wordtag_label': '介詞', 'length': 1, 'termid': '介詞_cb_以'}, {'item': '梅子', 'offset': 7, 'wordtag_label': '飲食類', 'length': 2, 'termid': '飲食_cb_梅'}, {'item': '為', 'offset': 9, 'wordtag_label': '肯定詞', 'length': 1, 'termid': '肯定否定詞_cb_為'}, {'item': '主要原料', 'offset': 10, 'wordtag_label': '物體類', 'length': 4, 'termid': '物品_cb_主要原料'}, {'item': '制作', 'offset': 14, 'wordtag_label': '場景事件', 'length': 2, 'termid': '場景事件_cb_制作'}, {'item': '的', 'offset': 16, 'wordtag_label': '助詞', 'length': 1, 'termid': '助詞_cb_的'}, {'item': '茶飲', 'offset': 17, 'wordtag_label': '飲食類_飲品', 'length': 2, 'termid': '飲品_cb_茶飲'}]}, {'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, 'termid': '肯定否定詞_cb_是'}, {'item': '2010年', 'offset': 5, 'wordtag_label': '時間類', 'length': 5, 'termid': '時間階段_cb_2010年'}, {'item': '九州出版社', 'offset': 10, 'wordtag_label': '組織機(jī)構(gòu)類', 'length': 5, 'termid': '組織機(jī)構(gòu)_eb_九州出版社'}, {'item': '出版', 'offset': 15, 'wordtag_label': '場景事件', 'length': 2, 'termid': '場景事件_cb_出版'}, {'item': '的', 'offset': 17, 'wordtag_label': '助詞', 'length': 1, 'termid': '助詞_cb_的'}, {'item': '小說', 'offset': 18, 'wordtag_label': '作品類_概念', 'length': 2, 'termid': '小說_cb_小說'}, {'item': ',', 'offset': 20, 'wordtag_label': 'w', 'length': 1}, {'item': '作者', 'offset': 21, 'wordtag_label': '人物類_概念', 'length': 2, 'termid': '人物_cb_作者'}, {'item': '是', 'offset': 23, 'wordtag_label': '肯定詞', 'length': 1, 'termid': '肯定否定詞_cb_是'}, {'item': '余兼羽', 'offset': 24, 'wordtag_label': '人物類_實體', 'length': 3}]}]- 標(biāo)簽集合:
知識挖掘-詞類知識標(biāo)注任務(wù)共包含66種詞性及專名類別標(biāo)簽,標(biāo)簽集合如下表
-
自定義詞典
用戶可以通過裝載自定義詞典來定制化分詞和詞性標(biāo)注結(jié)果。詞典文件每一行表示一個自定義item,可以由一個單詞或者多個單詞組成,單詞后面可以添加自定義標(biāo)簽,格式為item/tag,如果不添加自定義標(biāo)簽,則使用模型默認(rèn)標(biāo)簽。
詞典文件user_dict.txt示例:
長津湖/電影類_實體 收/詞匯用語 尾/術(shù)語類 最 大 海外票倉以"《長津湖》收尾,北美是最大海外票倉"為例,原本的輸出結(jié)果為:
[{'text': '《長津湖》收尾,北美是最大海外票倉', 'items': [{'item': '《', 'offset': 0, 'wordtag_label': 'w', 'length': 1}, {'item': '長津湖', 'offset': 1, 'wordtag_label': '作品類_實體', 'length': 3, 'termid': '影視作品_eb_長津湖'}, {'item': '》', 'offset': 4, 'wordtag_label': 'w', 'length': 1}, {'item': '收尾', 'offset': 5, 'wordtag_label': '場景事件', 'length': 2, 'termid': '場景事件_cb_收尾'}, {'item': ',', 'offset': 7, 'wordtag_label': 'w', 'length': 1}, {'item': '北美', 'offset': 8, 'wordtag_label': '世界地區(qū)類', 'length': 2, 'termid': '世界地區(qū)_cb_北美'}, {'item': '是', 'offset': 10, 'wordtag_label': '肯定詞', 'length': 1, 'termid': '肯定否定詞_cb_是'}, {'item': '最大', 'offset': 11, 'wordtag_label': '修飾詞', 'length': 2, 'termid': '修飾詞_cb_最大'}, {'item': '海外', 'offset': 13, 'wordtag_label': '場所類', 'length': 2, 'termid': '區(qū)域場所_cb_海外'}, {'item': '票倉', 'offset': 15, 'wordtag_label': '詞匯用語', 'length': 2}]}]裝載自定義詞典及輸出結(jié)果示例:
from paddlenlp import Taskflowmy_wordtag = Taskflow("knowledge_mining", user_dict="user_dict.txt") my_wordtag("《長津湖》收尾,北美是最大海外票倉") >>> [{'text': '《長津湖》收尾,北美是最大海外票倉', 'items': [{'item': '《', 'offset': 0, 'wordtag_label': 'w', 'length': 1}, {'item': '長津湖', 'offset': 1, 'wordtag_label': '電影類_實體', 'length': 3}, {'item': '》', 'offset': 4, 'wordtag_label': 'w', 'length': 1}, {'item': '收', 'offset': 5, 'wordtag_label': '詞匯用語', 'length': 1}, {'item': '尾', 'offset': 6, 'wordtag_label': '術(shù)語類', 'length': 1, 'termid': '動物體構(gòu)造_cb_動物尾巴'}, {'item': ',', 'offset': 7, 'wordtag_label': 'w', 'length': 1}, {'item': '北美', 'offset': 8, 'wordtag_label': '世界地區(qū)類', 'length': 2, 'termid': '世界地區(qū)_cb_北美'}, {'item': '是', 'offset': 10, 'wordtag_label': '肯定詞', 'length': 1, 'termid': '肯定否定詞_cb_是'}, {'item': '最', 'offset': 11, 'wordtag_label': '修飾詞', 'length': 1}, {'item': '大', 'offset': 12, 'wordtag_label': '修飾詞', 'length': 1, 'termid': '修飾詞_cb_大'}, {'item': '海外票倉', 'offset': 13, 'wordtag_label': '場所類', 'length': 4}]}]
可配置參數(shù)說明
- batch_size:批處理大小,請結(jié)合機(jī)器情況進(jìn)行調(diào)整,默認(rèn)為1。
- linking:實現(xiàn)基于詞類的linking,默認(rèn)為True。
- task_path:自定義任務(wù)路徑,默認(rèn)為None。
- user_dict:用戶自定義詞典文件,默認(rèn)為None。
知識挖掘-名詞短語標(biāo)注
from paddlenlp import Taskflownptag = Taskflow("knowledge_mining", model="nptag") nptag("糖醋排骨") >>> [{'text': '糖醋排骨', 'label': '菜品'}]nptag(["糖醋排骨", "紅曲霉菌"]) >>> [{'text': '糖醋排骨', 'label': '菜品'}, {'text': '紅曲霉菌', 'label': '微生物'}]# 使用`linking`輸出粗粒度類別標(biāo)簽`category`,即WordTag的詞匯標(biāo)簽。 nptag = Taskflow("knowledge_mining", model="nptag", linking=True) nptag(["糖醋排骨", "紅曲霉菌"]) >>> [{'text': '糖醋排骨', 'label': '菜品', 'category': '飲食類_菜品'}, {'text': '紅曲霉菌', 'label': '微生物', 'category': '生物類_微生物'}]可配置參數(shù)說明
- batch_size:批處理大小,請結(jié)合機(jī)器情況進(jìn)行調(diào)整,默認(rèn)為1。
- max_seq_len:最大序列長度,默認(rèn)為64。
- linking:實現(xiàn)與WordTag類別標(biāo)簽的linking,默認(rèn)為False。
- task_path:自定義任務(wù)路徑,默認(rèn)為None。
生成式問答
from paddlenlp import Taskflowqa = Taskflow("question_answering") qa("中國的國土面積有多大?") >>> [{'text': '中國的國土面積有多大?', 'answer': '960萬平方公里。'}]qa(["中國國土面積有多大?", "中國的首都在哪里?"]) >>> [{'text': '中國國土面積有多大?', 'answer': '960萬平方公里。'}, {'text': '中國的首都在哪里?', 'answer': '北京。'}]可配置參數(shù)說明
- batch_size:批處理大小,請結(jié)合機(jī)器情況進(jìn)行調(diào)整,默認(rèn)為1。
智能寫詩
from paddlenlp import Taskflowpoetry = Taskflow("poetry_generation") poetry("林密不見人") >>> [{'text': '林密不見人', 'answer': ',但聞人語響。'}]poetry(["林密不見人", "舉頭邀明月"]) >>> [{'text': '林密不見人', 'answer': ',但聞人語響。'}, {'text': '舉頭邀明月', 'answer': ',低頭思故鄉(xiāng)。'}]可配置參數(shù)說明
- batch_size:批處理大小,請結(jié)合機(jī)器情況進(jìn)行調(diào)整,默認(rèn)為1。
開放域?qū)υ?/h3>
-
支持兩種模式
- 非交互模式:
from paddlenlp import Taskflowdialogue = Taskflow("dialogue")
dialogue(["吃飯了嗎"])
>>> ['剛吃完飯,你在干什么呢?']dialogue(["你好", "吃飯了嗎"], ["你是誰?"])
>>> ['吃過了,你呢', '我是李明啊']
- 交互模式:
交互模式下,Taskflow具備多輪對話記憶功能。
from paddlenlp import Taskflowdialogue = Taskflow("dialogue")
# 輸入`exit`可退出交互模式
dialogue.interactive_mode(max_turn=3)'''
[Human]:你好
[Bot]:你好,很高興認(rèn)識你,我想問你一下,你喜歡運(yùn)動嗎?
[Human]:喜歡
[Bot]:那你喜歡什么運(yùn)動啊?
[Human]:籃球,你喜歡籃球嗎
[Bot]:當(dāng)然了,我很喜歡打籃球的
'''
可配置參數(shù)說明
- batch_size:批處理大小,請結(jié)合機(jī)器情況進(jìn)行調(diào)整,默認(rèn)為1。
- max_seq_len:最大序列長度,默認(rèn)為512。
- max_turn:僅在交互模式有效,表示任務(wù)能記憶的對話輪數(shù);當(dāng)max_turn為1時,模型只能記住當(dāng)前對話,無法獲知之前的對話內(nèi)容。
自定義任務(wù)
支持兩種模式
- 非交互模式:
- 交互模式:
交互模式下,Taskflow具備多輪對話記憶功能。
from paddlenlp import Taskflowdialogue = Taskflow("dialogue") # 輸入`exit`可退出交互模式 dialogue.interactive_mode(max_turn=3)''' [Human]:你好 [Bot]:你好,很高興認(rèn)識你,我想問你一下,你喜歡運(yùn)動嗎? [Human]:喜歡 [Bot]:那你喜歡什么運(yùn)動啊? [Human]:籃球,你喜歡籃球嗎 [Bot]:當(dāng)然了,我很喜歡打籃球的 '''Taskflow提供了定制接口來使用自己的數(shù)據(jù)對模型進(jìn)行微調(diào)/訓(xùn)練,適配任務(wù)如下:
| Taskflow("word_segmentation", mode="base") | $HOME/.paddlenlp/taskflow/word_segmentation/lac | 示例 |
| Taskflow("word_segmentation", mode="accurate") | $HOME/.paddlenlp/taskflow/word_segmentation/wordtag | 示例 |
| Taskflow("ner", mode="fast") | $HOME/.paddlenlp/taskflow/ner/lac | 示例 |
| Taskflow("ner", mode="accurate") | $HOME/.paddlenlp/taskflow/ner/wordtag | 示例 |
| Taskflow("text_correction", model="csc-ernie-1.0") | $HOME/.paddlenlp/taskflow/text_correction/csc-ernie-1.0 | 示例 |
| Taskflow("dependency_parsing", model="ddparser") | $HOME/.paddlenlp/taskflow/dependency_parsing/ddparser | 示例 |
| Taskflow("dependency_parsing", model="ddparser-ernie-1.0") | $HOME/.paddlenlp/taskflow/dependency_parsing/ddparser-ernie-1.0 | 示例 |
| Taskflow("dependency_parsing", model="ddparser-ernie-gram-zh") | $HOME/.paddlenlp/taskflow/dependency_parsing/ddparser-ernie-gram-zh | 示例 |
| Taskflow("sentiment_analysis", model="bilstm") | $HOME/.paddlenlp/taskflow/sentiment_analysis/bilstm | 暫無 |
| Taskflow("sentiment_analysis", model="skep_ernie_1.0_large_ch") | $HOME/.paddlenlp/taskflow/sentiment_analysis/skep_ernie_1.0_large_ch | 示例 |
| Taskflow("knowledge_mining", model="wordtag") | $HOME/.paddlenlp/taskflow/knowledge_mining/wordtag | 示例 |
| Taskflow("knowledge_mining", model="nptag") | $HOME/.paddlenlp/taskflow/knowledge_mining/nptag | 示例 |
定制任務(wù)示例
這里我們以命名實體識別Taskflow("ner", mode="accurate")為例,展示如何定制自己的模型。
任務(wù)的默認(rèn)路徑為$HOME/.paddlenlp/taskflow/ner/wordtag/,該默認(rèn)路徑包含以下文件:
$HOME/.paddlenlp/taskflow/ner/wordtag/ ├── model_state.pdparams # 默認(rèn)模型參數(shù)文件 ├── model_config.json # 默認(rèn)模型配置文件 └── tags.txt # 默認(rèn)標(biāo)簽文件-
參考表中對應(yīng)示例準(zhǔn)備數(shù)據(jù)集和標(biāo)簽文件tags.txt,執(zhí)行相應(yīng)訓(xùn)練腳本得到自己的model_state.pdparams和model_config.json。
-
通過task_path指定用戶自定義路徑,自定義路徑下的文件需要和默認(rèn)路徑的文件一致:
- 使用Taskflow加載自定義模型進(jìn)行一鍵預(yù)測:
FAQ
Q1 Taskflow如何修改任務(wù)保存路徑?
A: Taskflow默認(rèn)會將任務(wù)相關(guān)模型等文件保存到$HOME/.paddlenlp下,可以在任務(wù)初始化的時候通過home_path自定義修改保存路徑。
示例:
from paddlenlp import Taskflowner = Taskflow("ner", home_path="/workspace")通過以上方式即可將ner任務(wù)相關(guān)文件保存至/workspace路徑下。
參考資料
總結(jié)
以上是生活随笔為你收集整理的paddlenlp 任务清单 中文分词、中文纠错、文本相似度、情感分析、词性标注等一键的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于 CNN 的中文对话情感分析
- 下一篇: 机器学习常用的算法整理:线性回归、逻辑回