日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

paddlenlp 任务清单 中文分词、中文纠错、文本相似度、情感分析、词性标注等一键

發布時間:2024/7/5 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 paddlenlp 任务清单 中文分词、中文纠错、文本相似度、情感分析、词性标注等一键 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

PaddleNLP Taskflow https://github.com/PaddlePaddle/PaddleNLP/blob/develop/docs/model_zoo/taskflow.md#paddlenlp-taskflow

PaddleNLP Taskflow

  • PaddleNLP Taskflow
    • 介紹
      • 任務清單
    • 用法
      • 查看使用示例
      • 中文分詞
      • 詞性標注
      • 命名實體識別
      • 文本糾錯
      • 句法分析
      • 情感分析
      • 文本相似度
      • 『解語』-詞類知識標注
      • 『解語』-名詞短語標注
      • 生成式問答
      • 智能寫詩
      • 開放域對話
    • 自定義任務
    • FAQ

介紹

paddlenlp.Taskflow提供開箱即用的NLP預置任務,覆蓋自然語言理解與自然語言生成兩大核心應用,在中文場景上提供產業級的效果與極致的預測性能。

任務清單

自然語言理解任務自然語言生成任務
中文分詞生成式問答
詞性標注智能寫詩
命名實體識別開放域對話
文本糾錯文本翻譯(TODO)
句法分析自動對聯(TODO)
情感分析
文本相似度
『解語』-詞類知識標注
『解語』-名詞短語標注

隨著版本迭代會持續開放更多的應用場景。

安裝

環境依賴

  • 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("第十四屆全運會在西安舉辦")'''['第十四屆', '全運會', '在', '西安', '舉辦']'''seg(["第十四屆全運會在西安舉辦", "三亞是一個美麗的城市"])'''[['第十四屆', '全運會', '在', '西安', '舉辦'], ['三亞', '是', '一個', '美麗', '的', '城市']]'''

中文分詞

  • 支持三種模式分詞

    • Base模式(默認)
    from paddlenlp import Taskflowseg = Taskflow("word_segmentation") seg("第十四屆全運會在西安舉辦") >>> ['第十四屆', '全運會', '在', '西安', '舉辦']seg(["第十四屆全運會在西安舉辦", "三亞是一個美麗的城市"]) >>> [['第十四屆', '全運會', '在', '西安', '舉辦'], ['三亞', '是', '一個', '美麗', '的', '城市']]
    • 快速模式

    利用『結巴』中文分詞工具,實現文本快速切分。

    from paddlenlp import Taskflowseg = Taskflow("word_segmentation", mode="fast") seg("第十四屆全運會在西安舉辦") >>> ['第十四屆', '全運會', '在', '西安', '舉辦']
    • 精確模式

    試圖將句子中的實體詞完整切分,分詞精確度高。

    seg = Taskflow("word_segmentation", mode="accurate") seg("李偉拿出具有科學性、可操作性的《陜西省高校管理體制改革實施方案》") >>> ['李偉', '拿出', '具有', '科學性', '、', '可操作性', '的', '《', '陜西省高校管理體制改革實施方案', '》']
  • 自定義詞典

    • 快速模式詞典載入方式:

      用戶可以在詞典文件每一行有兩個部分:詞語、詞頻(可省略),用空格隔開。詞頻省略則自動計算能保證分出該詞的詞頻。

      詞典文件user_dict.txt示例:

      新冠肺炎 8 國家衛健委

      "國家衛健委修訂完成了新冠肺炎診療方案"原本的輸出結果為:

      ['國家', '衛健委', '修訂', '完成', '了', '新冠', '肺炎', '診療', '方案']

      裝載自定義詞典及輸出結果示例:

      from paddlenlp import Taskflowmy_seg = Taskflow("word_segmentation", mode="fast", user_dict="user_dict.txt") my_seg("國家衛健委修訂完成了新冠肺炎診療方案") >>> ['國家衛健委', '修訂', '完成', '了', '新冠肺炎', '診療', '方案']
    • Base、精確模式詞典載入方式:

      詞典文件每一行表示一個自定義item。

      詞典文件user_dict.txt示例:

      平原上的火焰 年 末

      以默認模型為例,"平原上的火焰計劃于年末上映"原本的輸出結果為:

      ['平原', '上', '的', '火焰', '計劃', '于', '年末', '上映']

      裝載自定義詞典及輸出結果示例:

      from paddlenlp import Taskflowmy_seg = Taskflow("word_segmentation", user_dict="user_dict.txt") my_seg("平原上的火焰計劃于年末上映") >>> ['平原上的火焰', '計劃', '于', '年', '末', '上映']

可配置參數說明

  • batch_size:批處理大小,請結合機器情況進行調整,默認為1。
  • user_dict:用戶自定義詞典文件,默認為None。
  • task_path:自定義任務路徑,默認為None。

詞性標注

from paddlenlp import Taskflowtag = Taskflow("pos_tagging") tag("第十四屆全運會在西安舉辦") >>>[('第十四屆', 'm'), ('全運會', 'nz'), ('在', 'p'), ('西安', 'LOC'), ('舉辦', 'v')]tag(["第十四屆全運會在西安舉辦", "三亞是一個美麗的城市"]) >>> [[('第十四屆', 'm'), ('全運會', 'nz'), ('在', 'p'), ('西安', 'LOC'), ('舉辦', 'v')], [('三亞', 'LOC'), ('是', 'v'), ('一個', 'm'), ('美麗', 'a'), ('的', 'u'), ('城市', 'n')]]
  • 標簽集合:
標簽含義標簽含義標簽含義標簽含義
n普通名詞f方位名詞s處所名詞t時間
nr人名ns地名nt機構名nw作品名
nz其他專名v普通動詞vd動副詞vn名動詞
a形容詞ad副形詞an名形詞d副詞
m數量詞q量詞r代詞p介詞
c連詞u助詞xc其他虛詞w標點符號
PER人名LOC地名ORG機構名TIME時間
  • 自定義詞典

    用戶可以通過裝載自定義詞典來定制化分詞和詞性標注結果。詞典文件每一行表示一個自定義item,可以由一個單詞或者多個單詞組成,單詞后面可以添加自定義標簽,格式為item/tag,如果不添加自定義標簽,則使用模型默認標簽。

    詞典文件user_dict.txt示例:

    賽里木湖/LAKE 高/a 山/n 海拔最高 湖 泊

    以"賽里木湖是新疆海拔最高的高山湖泊"為例,原本的輸出結果為:

    [('賽里木湖', 'LOC'), ('是', 'v'), ('新疆', 'LOC'), ('海拔', 'n'), ('最高', 'a'), ('的', 'u'), ('高山', 'n'), ('湖泊', 'n')]

    裝載自定義詞典及輸出結果示例:

    from paddlenlp import Taskflowmy_tag = Taskflow("pos_tagging", user_dict="user_dict.txt") my_tag("賽里木湖是新疆海拔最高的高山湖泊") >>> [('賽里木湖', 'LAKE'), ('是', 'v'), ('新疆', 'LOC'), ('海拔最高', 'n'), ('的', 'u'), ('高', 'a'), ('山', 'n'), ('湖', 'n'), ('泊', 'n')]

可配置參數說明

  • batch_size:批處理大小,請結合機器情況進行調整,默認為1。
  • user_dict:用戶自定義詞典文件,默認為None。
  • task_path:自定義任務路徑,默認為None。

命名實體識別

  • 支持兩種模式

    • 快速模式
    from paddlenlp import Taskflowner = Taskflow("ner", mode="fast") ner("三亞是一個美麗的城市") >>> [('三亞', 'LOC'), ('是', 'v'), ('一個', 'm'), ('美麗', 'a'), ('的', 'u'), ('城市', 'n')]
    • 精確模式(默認)
    from paddlenlp import Taskflowner = Taskflow("ner") ner("《孤女》是2010年九州出版社出版的小說,作者是余兼羽") >>> [('《', 'w'), ('孤女', '作品類_實體'), ('》', 'w'), ('是', '肯定詞'), ('2010年', '時間類'), ('九州出版社', '組織機構類'), ('出版', '場景事件'), ('的', '助詞'), ('小說', '作品類_概念'), (',', 'w'), ('作者', '人物類_概念'), ('是', '肯定詞'), ('余兼羽', '人物類_實體')]ner(["熱梅茶是一道以梅子為主要原料制作的茶飲", "《孤女》是2010年九州出版社出版的小說,作者是余兼羽"]) >>> [[('熱梅茶', '飲食類_飲品'), ('是', '肯定詞'), ('一道', '數量詞'), ('以', '介詞'), ('梅子', '飲食類'), ('為', '肯定詞'), ('主要原料', '物體類'), ('制作', '場景事件'), ('的', '助詞'), ('茶飲', '飲食類_飲品')], [('《', 'w'), ('孤女', '作品類_實體'), ('》', 'w'), ('是', '肯定詞'), ('2010年', '時間類'), ('九州出版社', '組織機構類'), ('出版', '場景事件'), ('的', '助詞'), ('小說', '作品類_概念'), (',', 'w'), ('作者', '人物類_概念'), ('是', '肯定詞'), ('余兼羽', '人物類_實體')]]
  • 只返回實體/概念詞:

from paddlenlp import Taskflowner = Taskflow("ner", mode="accurate", entity_only=True) ner("《孤女》是2010年九州出版社出版的小說,作者是余兼羽") >>> [('孤女', '作品類_實體'), ('2010年', '時間類'), ('九州出版社', '組織機構類'), ('出版', '場景事件'), ('小說', '作品類_概念'), ('作者', '人物類_概念'), ('余兼羽', '人物類_實體')]
  • 自定義詞典

    用戶可以通過裝載自定義詞典來定制化分詞和詞性標注結果。詞典文件每一行表示一個自定義item,可以由一個單詞或者多個單詞組成,單詞后面可以添加自定義標簽,格式為item/tag,如果不添加自定義標簽,則使用模型默認標簽。

    詞典文件user_dict.txt示例:

    長津湖/電影類_實體 收/詞匯用語 尾/術語類 最 大 海外票倉

    以"《長津湖》收尾,北美是最大海外票倉"為例,原本的輸出結果為:

    [('《', 'w'), ('長津湖', '作品類_實體'), ('》', 'w'), ('收尾', '場景事件'), (',', 'w'), ('北美', '世界地區類'), ('是', '肯定詞'), ('最大', '修飾詞'), ('海外', '場所類'), ('票倉', '詞匯用語')]

    裝載自定義詞典及輸出結果示例:

    from paddlenlp import Taskflowmy_ner = Taskflow("ner", user_dict="user_dict.txt") my_ner("《長津湖》收尾,北美是最大海外票倉") >>> [('《', 'w'), ('長津湖', '電影類_實體'), ('》', 'w'), ('收', '詞匯用語'), ('尾', '術語類'), (',', 'w'), ('北美', '世界地區類'), ('是', '肯定詞'), ('最', '修飾詞'), ('大', '修飾詞'), ('海外票倉', '場所類')]

可配置參數說明

  • batch_size:批處理大小,請結合機器情況進行調整,默認為1。
  • user_dict:用戶自定義詞典文件,默認為None。
  • task_path:自定義任務路徑,默認為None。
  • entity_only:是否返回所有詞性標簽;若設置為True,則只返回實體/概念詞;默認為False。

文本糾錯

from paddlenlp import Taskflowcorrector = Taskflow("text_correction") corrector('遇到逆竟時,我們必須勇于面對,而且要愈挫愈勇,這樣我們才能朝著成功之路前進。') >>> [{'source': '遇到逆竟時,我們必須勇于面對,而且要愈挫愈勇,這樣我們才能朝著成功之路前進。', 'target': '遇到逆境時,我們必須勇于面對,而且要愈挫愈勇,這樣我們才能朝著成功之路前進。', 'errors': [{'position': 3, 'correction': {'竟': '境'}}]}]corrector(['遇到逆竟時,我們必須勇于面對,而且要愈挫愈勇,這樣我們才能朝著成功之路前進。','人生就是如此,經過磨練才能讓自己更加拙壯,才能使自己更加樂觀。']) >>> [{'source': '遇到逆竟時,我們必須勇于面對,而且要愈挫愈勇,這樣我們才能朝著成功之路前進。', 'target': '遇到逆境時,我們必須勇于面對,而且要愈挫愈勇,這樣我們才能朝著成功之路前進。', 'errors': [{'position': 3, 'correction': {'竟': '境'}}]}, {'source': '人生就是如此,經過磨練才能讓自己更加拙壯,才能使自己更加樂觀。', 'target': '人生就是如此,經過磨練才能讓自己更加茁壯,才能使自己更加樂觀。', 'errors': [{'position': 18, 'correction': {'拙': '茁'}}]}]

可配置參數說明

  • batch_size:批處理大小,請結合機器情況進行調整,默認為1。
  • task_path:自定義任務路徑,默認為None。

句法分析

from paddlenlp import Taskflowddp = Taskflow("dependency_parsing") ddp("9月9日上午納達爾在亞瑟·阿什球場擊敗俄羅斯球員梅德韋杰夫") >>> [{'word': ['9月9日', '上午', '納達爾', '在', '亞瑟·阿什球場', '擊敗', '俄羅斯', '球員', '梅德韋杰夫'], 'head': [2, 6, 6, 5, 6, 0, 8, 9, 6], 'deprel': ['ATT', 'ADV', 'SBV', 'MT', 'ADV', 'HED', 'ATT', 'ATT', 'VOB']}]ddp(["9月9日上午納達爾在亞瑟·阿什球場擊敗俄羅斯球員梅德韋杰夫", "他送了一本書"]) >>> [{'word': ['9月9日', '上午', '納達爾', '在', '亞瑟·阿什球場', '擊敗', '俄羅斯', '球員', '梅德韋杰夫'], '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']}]

輸出概率值和詞性標簽:

ddp = Taskflow("dependency_parsing", prob=True, use_pos=True) ddp("9月9日上午納達爾在亞瑟·阿什球場擊敗俄羅斯球員梅德韋杰夫") >>> [{'word': ['9月9日', '上午', '納達爾', '在', '亞瑟·阿什', '球場', '擊敗', '俄羅斯', '球員', '梅德韋杰夫'], '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進行預測:

ddp = Taskflow("dependency_parsing", model="ddparser-ernie-1.0") ddp("9月9日上午納達爾在亞瑟·阿什球場擊敗俄羅斯球員梅德韋杰夫") >>> [{'word': ['9月9日', '上午', '納達爾', '在', '亞瑟·阿什球場', '擊敗', '俄羅斯', '球員', '梅德韋杰夫'], 'head': [2, 6, 6, 5, 6, 0, 8, 9, 6], 'deprel': ['ATT', 'ADV', 'SBV', 'MT', 'ADV', 'HED', 'ATT', 'ATT', 'VOB']}]

使用分詞結果來輸入:

ddp = Taskflow("dependency_parsing") ddp.from_segments([['9月9日', '上午', '納達爾', '在', '亞瑟·阿什球場', '擊敗', '俄羅斯', '球員', '梅德韋杰夫']]) >>> [{'word': ['9月9日', '上午', '納達爾', '在', '亞瑟·阿什球場', '擊敗', '俄羅斯', '球員', '梅德韋杰夫'], 'head': [2, 6, 6, 5, 6, 0, 8, 9, 6], 'deprel': ['ATT', 'ADV', 'SBV', 'MT', 'ADV', 'HED', 'ATT', 'ATT', 'VOB']}]

依存關系可視化:

from paddlenlp import Taskflowddp = Taskflow("dependency_parsing", return_visual=True) result = ddp("9月9日上午納達爾在亞瑟·阿什球場擊敗俄羅斯球員梅德韋杰夫")[0]['visual'] import cv2 cv2.imwrite('test.png', result)
  • 標注關系說明:
Label關系類型說明示例
SBV主謂關系主語與謂詞間的關系他送了一本書(他<–送)
VOB動賓關系賓語與謂詞間的關系他送了一本書(送–>書)
POB介賓關系介詞與賓語間的關系我把書賣了(把–>書)
ADV狀中關系狀語與中心詞間的關系我昨天買書了(昨天<–買)
CMP動補關系補語與中心詞間的關系我都吃完了(吃–>完)
ATT定中關系定語與中心詞間的關系他送了一本書(一本<–書)
F方位關系方位詞與中心詞的關系在公園里玩耍(公園–>里)
COO并列關系同類型詞語間關系叔叔阿姨(叔叔–>阿姨)
DBL兼語結構主謂短語做賓語的結構他請我吃飯(請–>我,請–>吃飯)
DOB雙賓語結構謂語后出現兩個賓語他送我一本書(送–>我,送–>書)
VV連謂結構同主語的多個謂詞間關系他外出吃飯(外出–>吃飯)
IC子句結構兩個結構獨立或關聯的單句你好,書店怎么走?(你好<–走)
MT虛詞成分虛詞與中心詞間的關系他送了一本書(送–>了)
HED核心關系指整個句子的核心

可配置參數說明

  • batch_size:批處理大小,請結合機器情況進行調整,默認為1。
  • model:選擇任務使用的模型,可選有ddparser,ddparser-ernie-1.0和ddparser-ernie-gram-zh。
  • tree:確保輸出結果是正確的依存句法樹,默認為True。
  • prob:是否輸出每個弧對應的概率值,默認為False。
  • use_pos:是否返回詞性標簽,默認為False。
  • use_cuda:是否使用GPU進行切詞,默認為False。
  • return_visual:是否返回句法樹的可視化結果,默認為False。
  • task_path:自定義任務路徑,默認為None。

情感分析

使用BiLSTM模型:

from paddlenlp import Taskflowsenta = Taskflow("sentiment_analysis") senta("這個產品用起來真的很流暢,我非常喜歡") >>> [{'text': '這個產品用起來真的很流暢,我非常喜歡', 'label': 'positive', 'score': 0.9938690066337585}]senta(["這個產品用起來真的很流暢,我非常喜歡", "作為老的四星酒店,房間依然很整潔,相當不錯。機場接機服務很好,可以在車上辦理入住手續,節省時間"]) >>> [{'text': '這個產品用起來真的很流暢,我非常喜歡', 'label': 'positive', 'score': 0.9938690066337585}, {'text': '作為老的四星酒店,房間依然很整潔,相當不錯。機場接機服務很好,可以在車上辦理入住手續,節省時間', 'label': 'positive', 'score': 0.985750675201416}]

使用SKEP情感分析預訓練模型進行預測:

senta = Taskflow("sentiment_analysis", model="skep_ernie_1.0_large_ch") senta("作為老的四星酒店,房間依然很整潔,相當不錯。機場接機服務很好,可以在車上辦理入住手續,節省時間。") >>> [{'text': '作為老的四星酒店,房間依然很整潔,相當不錯。機場接機服務很好,可以在車上辦理入住手續,節省時間。', 'label': 'positive', 'score': 0.984320878982544}]

可配置參數說明

  • batch_size:批處理大小,請結合機器情況進行調整,默認為1。
  • model:選擇任務使用的模型,可選有bilstm和skep_ernie_1.0_large_ch。
  • task_path:自定義任務路徑,默認為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}]

可配置參數說明

  • batch_size:批處理大小,請結合機器情況進行調整,默認為1。
  • max_seq_len:最大序列長度,默認為128。
  • task_path:自定義任務路徑,默認為None。

知識挖掘-詞類知識標注

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': '組織機構類', 'length': 5, 'termid': '組織機構_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': '數量詞', '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': '組織機構類', 'length': 5, 'termid': '組織機構_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}]}]
  • 標簽集合:

知識挖掘-詞類知識標注任務共包含66種詞性及專名類別標簽,標簽集合如下表

WordTag標簽集合 人物類_實體物體類生物類_動物醫學術語類鏈接地址肯定詞 人物類_概念物體類_兵器品牌名術語類_生物體個性特征否定詞 作品類_實體物體類_化學物質場所類疾病損傷類感官特征數量詞 作品類_概念其他角色類場所類_交通場所疾病損傷類_植物病蟲害場景事件嘆詞 組織機構類文化類位置方位宇宙類介詞擬聲詞 組織機構類_企事業單位文化類_語言文字世界地區類事件類介詞_方位介詞修飾詞 組織機構類_醫療衛生機構文化類_獎項賽事活動飲食類時間類助詞外語單詞 組織機構類_國家機關文化類_制度政策協議飲食類_菜品時間類_特殊日代詞英語單詞 組織機構類_體育組織機構文化類_姓氏與人名飲食類_飲品術語類連詞漢語拼音 組織機構類_教育組織機構生物類藥物類術語類_符號指標類副詞詞匯用語 組織機構類_軍事組織機構生物類_植物藥物類_中藥信息資料疑問詞w(標點)
  • 自定義詞典

    用戶可以通過裝載自定義詞典來定制化分詞和詞性標注結果。詞典文件每一行表示一個自定義item,可以由一個單詞或者多個單詞組成,單詞后面可以添加自定義標簽,格式為item/tag,如果不添加自定義標簽,則使用模型默認標簽。

    詞典文件user_dict.txt示例:

    長津湖/電影類_實體 收/詞匯用語 尾/術語類 最 大 海外票倉

    以"《長津湖》收尾,北美是最大海外票倉"為例,原本的輸出結果為:

    [{'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': '世界地區類', 'length': 2, 'termid': '世界地區_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': '區域場所_cb_海外'}, {'item': '票倉', 'offset': 15, 'wordtag_label': '詞匯用語', 'length': 2}]}]

    裝載自定義詞典及輸出結果示例:

    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': '術語類', 'length': 1, 'termid': '動物體構造_cb_動物尾巴'}, {'item': ',', 'offset': 7, 'wordtag_label': 'w', 'length': 1}, {'item': '北美', 'offset': 8, 'wordtag_label': '世界地區類', 'length': 2, 'termid': '世界地區_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}]}]

可配置參數說明

  • batch_size:批處理大小,請結合機器情況進行調整,默認為1。
  • linking:實現基于詞類的linking,默認為True。
  • task_path:自定義任務路徑,默認為None。
  • user_dict:用戶自定義詞典文件,默認為None。

知識挖掘-名詞短語標注

from paddlenlp import Taskflownptag = Taskflow("knowledge_mining", model="nptag") nptag("糖醋排骨") >>> [{'text': '糖醋排骨', 'label': '菜品'}]nptag(["糖醋排骨", "紅曲霉菌"]) >>> [{'text': '糖醋排骨', 'label': '菜品'}, {'text': '紅曲霉菌', 'label': '微生物'}]# 使用`linking`輸出粗粒度類別標簽`category`,即WordTag的詞匯標簽。 nptag = Taskflow("knowledge_mining", model="nptag", linking=True) nptag(["糖醋排骨", "紅曲霉菌"]) >>> [{'text': '糖醋排骨', 'label': '菜品', 'category': '飲食類_菜品'}, {'text': '紅曲霉菌', 'label': '微生物', 'category': '生物類_微生物'}]

可配置參數說明

  • batch_size:批處理大小,請結合機器情況進行調整,默認為1。
  • max_seq_len:最大序列長度,默認為64。
  • linking:實現與WordTag類別標簽的linking,默認為False。
  • task_path:自定義任務路徑,默認為None。

生成式問答

from paddlenlp import Taskflowqa = Taskflow("question_answering") qa("中國的國土面積有多大?") >>> [{'text': '中國的國土面積有多大?', 'answer': '960萬平方公里。'}]qa(["中國國土面積有多大?", "中國的首都在哪里?"]) >>> [{'text': '中國國土面積有多大?', 'answer': '960萬平方公里。'}, {'text': '中國的首都在哪里?', 'answer': '北京。'}]

可配置參數說明

  • batch_size:批處理大小,請結合機器情況進行調整,默認為1。

智能寫詩

from paddlenlp import Taskflowpoetry = Taskflow("poetry_generation") poetry("林密不見人") >>> [{'text': '林密不見人', 'answer': ',但聞人語響。'}]poetry(["林密不見人", "舉頭邀明月"]) >>> [{'text': '林密不見人', 'answer': ',但聞人語響。'}, {'text': '舉頭邀明月', 'answer': ',低頭思故鄉。'}]

可配置參數說明

  • batch_size:批處理大小,請結合機器情況進行調整,默認為1。

開放域對話

  • 支持兩種模式

    • 非交互模式:
    from paddlenlp import Taskflowdialogue = Taskflow("dialogue") dialogue(["吃飯了嗎"]) >>> ['剛吃完飯,你在干什么呢?']dialogue(["你好", "吃飯了嗎"], ["你是誰?"]) >>> ['吃過了,你呢', '我是李明啊']
    • 交互模式:

    交互模式下,Taskflow具備多輪對話記憶功能。

    from paddlenlp import Taskflowdialogue = Taskflow("dialogue") # 輸入`exit`可退出交互模式 dialogue.interactive_mode(max_turn=3)''' [Human]:你好 [Bot]:你好,很高興認識你,我想問你一下,你喜歡運動嗎? [Human]:喜歡 [Bot]:那你喜歡什么運動啊? [Human]:籃球,你喜歡籃球嗎 [Bot]:當然了,我很喜歡打籃球的 '''

可配置參數說明

  • batch_size:批處理大小,請結合機器情況進行調整,默認為1。
  • max_seq_len:最大序列長度,默認為512。
  • max_turn:僅在交互模式有效,表示任務能記憶的對話輪數;當max_turn為1時,模型只能記住當前對話,無法獲知之前的對話內容。

自定義任務

Taskflow提供了定制接口來使用自己的數據對模型進行微調/訓練,適配任務如下:

任務名稱默認路徑
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示例

定制任務示例

這里我們以命名實體識別Taskflow("ner", mode="accurate")為例,展示如何定制自己的模型。

任務的默認路徑為$HOME/.paddlenlp/taskflow/ner/wordtag/,該默認路徑包含以下文件:

$HOME/.paddlenlp/taskflow/ner/wordtag/ ├── model_state.pdparams # 默認模型參數文件 ├── model_config.json # 默認模型配置文件 └── tags.txt # 默認標簽文件
  • 參考表中對應示例準備數據集和標簽文件tags.txt,執行相應訓練腳本得到自己的model_state.pdparams和model_config.json。

  • 通過task_path指定用戶自定義路徑,自定義路徑下的文件需要和默認路徑的文件一致:

custom_task_path/ ├── model_state.pdparams # 定制模型參數文件 ├── model_config.json # 定制模型配置文件 └── tags.txt # 定制標簽文件
  • 使用Taskflow加載自定義模型進行一鍵預測:
from paddlenlp import Taskflowmy_ner = Taskflow("ner", mode="accurate", task_path="./custom_task_path/")

FAQ

Q1 Taskflow如何修改任務保存路徑?

A: Taskflow默認會將任務相關模型等文件保存到$HOME/.paddlenlp下,可以在任務初始化的時候通過home_path自定義修改保存路徑。

示例:

from paddlenlp import Taskflowner = Taskflow("ner", home_path="/workspace")

通過以上方式即可將ner任務相關文件保存至/workspace路徑下。

參考資料

  • fxsjy/jieba
  • 總結

    以上是生活随笔為你收集整理的paddlenlp 任务清单 中文分词、中文纠错、文本相似度、情感分析、词性标注等一键的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。