正如我們在本章中所見,Transformer 模型有三種主要架構:編碼器、解碼器和編碼器-解碼器。早期 Transformer 模型的成功引發了模型開發的寒武紀大爆發,研究人員在不同規模和性質的各種資料集上構建模型,使用新的預訓練目標,並調整架構以進一步提高效能。

雖然模型的種類別仍在快速增長,但它們仍然可以分為這三類別。讓我們簡要概述一下每個類別中最重要的 Transformer 模型。

Transformer 生命之樹

隨著時間的推移,三種主要架構各自經歷了演變。這反映在 Transformer 家族樹中,展示了一些最著名的模型及其後代。

編碼器分支

根據 Transformer 架構的第一個僅編碼器模型是 BERT。在發布時,它在衡量自然語言理解(NLU)的流行基準 GLUE 上表現優於所有最先進的模型。隨後,BERT 的預訓練目標和架構被調整,以進一步提高效能。

僅編碼器模型在文字分類別、命名實體識別和問答等 NLU 任務的研究和工業應用中仍佔主導地位。讓我們簡要了解 BERT 模型及其變體:

BERT

BERT 透過預測文字中的遮罩標記和確定一個文欄位落是否可能跟隨另一個段落來進行預訓練。前者稱為遮罩語言建模(MLM),後者稱為下一句預測(NSP)。

DistilBERT

雖然 BERT 提供了很好的結果,但其大小可能使其難以在需要低延遲的環境中佈署。透過在預訓練期間使用稱為知識蒸餾的技術,DistilBERT 實作了 BERT 97% 的效能,同時使用的記憶體減少 40%,速度提高 60%。

RoBERTa

BERT 發布後的一項研究表明,透過修改預訓練方案可以進一步提高其效能。RoBERTa 訓練時間更長,使用更大的批次和更多資料,並移除了 NSP 目標。

這些編碼器模型的演變清楚地表明,即使是微小的架構調整和訓練策略變化也能導致效能的顯著提升。在實際應用中,選擇合適的模型需要考慮效能、計算資源和特定任務需求之間的平衡。

解碼器與編碼器-解碼器模型的演進

除了編碼器模型外,解碼器和編碼器-解碼器架構也有其獨特的發展路線。解碼器模型如 GPT 系列主要用於生成任務,而編碼器-解碼器模型如 T5 和 BART 則在需要理解和生成能力的任務中表現出色。

每個架構都有其優勢和適用場景。在選擇模型時,需要考慮任務性質、可用資源和效能要求。隨著研究的不斷深入,我們可以期待看到更多創新的 Transformer 變體出現,進一步推動自然語言處理技術的發展。

深入理解 Transformer 的實際應用

理解 Transformer 的內部工作原理對於有效應用這些模型至關重要。無論是微調現有模型還是設計新架構,對編碼器和解碼器如何工作以及它們如何互動的深入理解都能幫助我們做出更明智的決策。

在實踐中,我發現許多挑戰源於對這些元件功能的誤解。例如,在設計一個需要理解長文字並生成摘要的系統時,瞭解遮罩自注意力如何防止訊息洩漏對於避免常見的生成偏差至關重要。

同樣,當處理跨語言任務時,理解編碼器-解碼器注意力如何橋接不同語言之間的差距能夠幫助我們更好地解釋模型行為並改進結果。這些洞察不僅有助於技術實作,還能指導我們在實際應用中做出更好的架構選擇。

隨著 Transformer 技術的不斷發展,保持對基本原理的清晰理解將使我們能夠更好地利用這些強大的工具,並為未來的創新做出貢獻。

Transformer 架構的美妙之處在於其靈活性和可擴充套件性。透過深入理解其核心元件,我們能夠更好地適應和創新,以應對自然語言處理領域的各種挑戰。無論是改進現有模型還是開發全新的架構,對編碼器和解碼器工作原理的透徹理解都是成功的基礎。

Transformer 家族的多元演化:從 BERT 到 GPT 的技術突破

在自然語言處理領域,Transformer 架構的出現徹底改變了模型設計和效能的標準。隨著研究的深入,這一架構衍生出多種強大的變種,各自針對不同問題和應用場景進行了最佳化。這些模型可以分為三大類別:專注於理解的編碼器模型、生成文字的解碼器模型,以及結合兩者優勢的編碼器-解碼器模型。

RoBERTa:重新思考 BERT 的訓練方法

RoBERTa(Robustly Optimized BERT Approach)透過重新審視 BERT 的訓練過程,證明原始 BERT 模型的潛力遠未被充分發揮。我在研究這個模型時,發現它引入了幾項關鍵改進:

  1. 移除了下一句預測(NSP)任務,專注於掩碼語言建模(MLM)
  2. 動態掩碼策略取代了靜態掩碼,使模型能夠接觸到更多樣化的掩碼模式
  3. 使用更大的批次大小進行訓練
  4. 在更多的資料上訓練更長時間

這些看似簡單的調整卻帶來了顯著的效能提升。RoBERTa 的成功告訴我們,在深度學習中,訓練方法的最佳化有時比模型架構的改進更為重要。這也是為什麼在設計新模型時,我總是建議先充分挖掘現有架構的潛力,再考慮引入結構性變化。

XLM:跨越語言的鴻溝

跨語言模型(XLM)探索了構建多語言模型的多種預訓練目標。這個模型結合了兩種主要技術:

  1. 來自 GPT 的自迴歸語言建模
  2. 來自 BERT 的掩碼語言建模(MLM)

XLM 的一個重要創新是引入了翻譯語言建模(TLM),這是 MLM 在多語言輸入上的擴充套件。在實際應用中,TLM 讓模型能夠同時處理多種語言的輸入,建立跨語言的語義連線。

透過這些預訓練任務的實驗,XLM 在多語言自然語言理解基準測試和翻譯任務上都取得了當時最先進的結果。這種方法對於需要處理多語言內容的應用特別有價值。

XLM-RoBERTa:規模化的多語言預訓練

XLM-RoBERTa(簡稱 XLM-R)將多語言預訓練推向了一個新高度,主要透過大幅增加訓練資料的規模。這個模型使用了 Common Crawl 語料函式庫,建立了一個包含 2.5 TB 文字的資料集,然後在此基礎上使用 MLM 訓練編碼器。

由於資料集僅包含沒有平行文字(即翻譯)的資料,XLM-R 放棄了 XLM 中的 TLM 目標。這種方法在效能上大幅超越了 XLM 和多語言 BERT 變體,特別是在資源稀缺的語言上。

從技術角度看,XLM-R 的成功再次證明瞭在 NLP 中,資料規模往往是決定性因素。當我們面對多語言處理問題時,收集足夠大與多樣化的語料函式庫可能比精心設計模型架構更為關鍵。

ALBERT:輕量高效的 BERT 變體

ALBERT 模型引入了三項變化,使編碼器架構更加高效:

  1. 解耦詞元嵌入維度和隱藏維度:這允許嵌入維度較小,從而節省引數,尤其是在詞彙量較大時效果明顯。

  2. 層引數分享:所有層分享相同的引數,進一步降低了有效引數的數量。

  3. 替換 NSP 目標:用句子排序預測取代下一句預測,模型需要預測兩個連續句子的順序是否被調換,而不是預測它們是否屬於一起。

ALBERT 的設計理念反映了一個重要思考:引數量並不總是與模型效能成正比。透過引數分享,ALBERT 實際上是在強制模型的不同層學習相互補充的特徵,而非重複的表示。這種設計在減少計算資源需求的同時,也起到了某種形式的正則化作用,有助於防止過擬合。

在實踐中,ALBERT 讓我們能夠訓練更大的模型,同時使用更少的引數,並在自然語言理解任務上達到優越的效能。這對於資源受限環境中的佈署尤為重要。

ELECTRA:更高效的預訓練方法

標準 MLM 預訓練目標的一個限制是,在每個訓練步驟中,只有被掩碼的詞元的表示被更新,而其他輸入詞元則不會。為瞭解決這個問題,ELECTRA 使用了一種雙模型方法:

# ELECTRA 訓練過程的簡化範例
class ELECTRA(nn.Module):
    def __init__(self):
        super().__init__()
        # 生成器:標準掩碼語言模型
        self.generator = MaskedLanguageModel(hidden_size=256)  # 較小的模型
        # 判別器:預測哪些詞元被替換
        self.discriminator = TokenDetector(hidden_size=768)    # 較大的模型
        
    def forward(self, inputs, masked_positions):
        # 1. 生成器預測被掩碼的詞元
        generated_tokens = self.generator(inputs, masked_positions)
        
        # 2. 用生成的詞元替換原始輸入中的掩碼位置
        replaced_inputs = replace_masked_tokens(inputs, masked_positions, generated_tokens)
        
        # 3. 判別器預測每個位置的詞元是原始的還是被替換的
        is_replaced = self.discriminator(replaced_inputs)
        
        return is_replaced

ELECTRA 的核心創新在於將預訓練轉變為一個替換檢測任務。第一個模型(通常較小)像標準掩碼語言模型一樣工作,預測被掩碼的詞元。第二個模型(稱為判別器)則負責預測第一個模型輸出中哪些詞元原本被掩碼。

這種方法的優勢在於,判別器需要對每個詞元進行二元分類別,這使得訓練效率提高了約 30 倍。在下游任務中,判別器像標準 BERT 模型一樣進行微調。

從實踐角度看,ELECTRA 代表了一種更高效的預訓練正規化,特別適合資源有限的環境。這種方法也啟發了後續研究中的許多"對抗式"預訓練策略。

DeBERTa:解耦注意力機制

DeBERTa 模型引入了兩項架構變化,顯著提升了效能:

  1. 內容與位置的解耦表示:每個詞元由兩個向量表示,一個用於內容,另一個用於相對位置。透過將詞元的內容與它們的相對位置分離,自注意力層可以更好地建模相鄰詞元對之間的依賴關係。

  2. 絕對位置訊息的增強:在詞元解碼頭的 softmax 層之前增加絕對位置嵌入。這是因為詞的絕對位置也很重要,特別是對於解碼過程。

# DeBERTa 中解耦注意力的簡化實作
def disentangled_attention(query_content, key_content, query_pos, key_pos, values):
    # 內容到內容的注意力
    content_attention = torch.matmul(query_content, key_content.transpose(-1, -2))
    
    # 內容到位置的注意力
    content_pos_attention = torch.matmul(query_content, key_pos.transpose(-1, -2))
    
    # 位置到內容的注意力
    pos_content_attention = torch.matmul(query_pos, key_content.transpose(-1, -2))
    
    # 位置到位置的注意力(通常不使用)
    # pos_pos_attention = torch.matmul(query_pos, key_pos.transpose(-1, -2))
    
    # 組合不同型別的注意力
    attention_scores = content_attention + content_pos_attention + pos_content_attention
    
    # 應用 softmax 和值的加權
    attention_probs = F.softmax(attention_scores, dim=-1)
    context_layer = torch.matmul(attention_probs, values)
    
    return context_layer

DeBERTa 的解耦注意力機制是一項重要創新,它讓模型能夠分別處理詞元的語義內容和它們在序列中的相對位置。這種分離使模型能夠更精確地捕捉詞元之間的關係。

在上面的簡化程式碼中,我們可以看到 DeBERTa 如何計算三種不同型別的注意力:內容對內容、內容對位置和位置對內容。這種多維度的注意力計算使模型能夠更全面地理解序列中的依賴關係。

值得注意的是,DeBERTa(作為整合模型)是第一個在 SuperGLUE 基準測試上超越人類基準的模型,SuperGLUE 是一個比 GLUE 更困難的版本,由用於衡量自然語言理解效能的多個子任務組成。

解碼器模型的進化:GPT 系列的崛起

解碼器模型的進展很大程度上由 OpenAI 引領。這些模型在預測序列中的下一個詞方面表現異常出色,因此主要用於文字生成任務。它們的進步由更大的資料集和更大規模的語言模型推動。讓我們來看這些令人著迷的生成模型的演變:

GPT:轉換學習的先驅

GPT 的引入結合了 NLP 中的兩個關鍵理念:新穎高效的 transformer 解碼器架構和轉移學習。在這種設定中,模型透過根據前面的詞來預測下一個詞進行預訓練。

模型在 BookCorpus 上進行訓練,並在分類別等下游任務上取得了出色的結果。GPT 的成功證明瞭預訓練加微調的正規化在 NLP 中的有效性,為後續研究奠定了基礎。

GPT-2:規模化的文字生成

受到簡單與可擴充套件的預訓練方法成功的啟發,原始模型和訓練集被擴大以產生 GPT-2。這個模型能夠生成連貫的長文字序列。

由於對可能濫用的擔憂,該模型以分階段的方式發布,先發布較小的模型,然後再發布完整模型。GPT-2 展示了大規模語言模型的強大生成能力,引發了對 AI 生成內容的廣泛討論。

CTRL:可控文字生成

像 GPT-2 這樣的模型可以繼續輸入序列(也稱為提示),但使用者對生成序列的風格控制有限。條件 Transformer 語言(CTRL)模型透過在序列開始時增加"控制標記"來解決這個問題,允許控制生成文字的風格,從而實作多樣化生成。

# CTRL 模型使用控制碼的範例
def generate_with_ctrl(control_code, prompt, model, tokenizer):
    """使用 CTRL 模型生成控制特定主題或風格的文字"""
    # 將控制碼增加到提示前面
    full_prompt = f"{control_code} {prompt}"
    
    # 編碼輸入
    input_ids = tokenizer.encode(full_prompt, return_tensors="pt")
    
    # 生成文字
    output = model.generate(
        input_ids,
        max_length=100,
        temperature=0.7,
        repetition_penalty=1.2,
        do_sample=True
    )
    
    # 解碼並回傳生成的文字
    generated_text = tokenizer.decode(output[0], skip_special_tokens=True)
    return generated_text

# 使用不同控制碼的範例
news_text = generate_with_ctrl("News", "Recent developments in AI", model, tokenizer)
sci_fi_text = generate_with_ctrl("Science Fiction", "The robot awakened", model, tokenizer)

CTRL 模型的關鍵創新在於引入了控制碼的概念,使用者能夠指定生成文字的風格或主題。在上面的程式碼中,我們可以看到如何將控制碼(如"News"或"Science Fiction")增加到提示的前面,從而影響生成的文字風格。

這種方法為生成模型增加了一層控制,使它們能夠產生更多樣化與符合特定需求的文字。在實際應用中,這種控制能力對於內容創作、輔助寫作和定製化文字生成非常有價值。

GPT-3:規模的力量

在將 GPT 擴充套件到 GPT-2 取得成功後,對不同規模的語言模型行為進行了徹底分析,揭示了存在簡單的冪律來管理計算能力、資料集大小、模型大小與語言模型效能之間的關係。

受這些見解的啟發,GPT-2 被放大了 100 倍,產生了擁有 1750 億引數的 GPT-3。除了能夠生成令人印象深刻的逼真文欄位落外,該模型還展示了少樣本學習能力:透過對新任務(如將文字翻譯為程式碼)的幾個例子,模型能夠在新例子上完成任務。

OpenAI 並未開放原始碼此模型,而是透過 OpenAI API 提供介面。GPT-3 的規模和能力代表了語言模型發展的一個重要里程碑,證明瞭大規模預訓練的強大潛力。

GPT-Neo/GPT-J-6B:開放原始碼的 GPT 替代品

GPT-Neo 和 GPT-J-6B 是由 EleutherAI 訓練的類別 GPT 模型,EleutherAI 是一個旨在重新建立並發布 GPT-3 規模型的研究者集體。

當前的模型是完整的 1750 億引數模型的較小變體,分別擁有 13 億、27 億和 60 億引數,與 OpenAI 提供的較小 GPT-3 模型相當。這些開放原始碼替代品為研究社群提供了寶貴的資源,使更多研究者能夠探索大規模語言模型的能力。

編碼器-解碼器模型:結合兩種架構的優勢

雖然使用單一編碼器或解碼器堆積積疊構建模型已經變得常見,但有幾種 Transformer 架構的編碼器-解碼器變體在自然語言理解和生成領域都有新穎的應用:

T5:統一的文字到文字轉換框架

T5 模型透過將所有任務轉換為文字到文字任務來統一所有自然語言理解和生成任務。所有任務都被框架為序列到序列任務,這使得採用編碼器-解碼器架構成為自然選擇。

例如,對於文字分類別問題,這意味著文字被用作編碼器輸入,而解碼器必須生成標籤作為普通文字,而不是作為類別。T5 架構使用原始 Transformer 架構,利用大規模爬取的 C4 資料集,模型透過掩碼語言建模和 SuperGLUE 任務進行預訓練。

# T5 模型處理不同 NLP 任務的範例
def t5_process_task(task_type, input_text, model, tokenizer):
    """使用 T5 模型處理不同型別的 NLP 任務"""
    
    # 根據任務型別構建輸入字首
    if task_type == "summarize":
        prefix = "summarize: "
    elif task_type == "translate":
        prefix = "translate English to German: "
    elif task_type == "classify":
        prefix = "classify sentiment: "
    else:
        prefix = ""
    
    # 增加字首到輸入文字
    input_with_prefix = prefix + input_text
    
    # 編碼輸入
    input_ids = tokenizer.encode(input_with_prefix, return_tensors="pt")
    
    # 生成輸出
    output_ids = model.generate(input_ids)
    
    # 解碼輸出
    output_text = tokenizer.decode(output_ids[0], skip_special_tokens=True)
    
    return output_text

T5 模型的關鍵創新在於將所有 NLP 任務統一為文字到文字的轉換正規化。在上面的程式碼中,我們可以看到如何使用不同的字首(如 “summarize:"、“translate English to German:” 或 “classify sentiment:")來指示模型執行不同型別的任務。

這種統一的框架使 T5 能夠在多種 NLP 任務上分享知識,從而提高整體效能。在實踐中,這種方法簡化了模型佈署和使用,因為同一個模型可以處理多種不同的任務,只需改變輸入字首即可。

T5 的成功證明瞭文字到文字正規化的強大潛力,為後續的多工語言模型研究指明瞭方向。

Transformer 家族的技術演進與啟示

回顧 Transformer 架構的各種變體,我們可以觀察到幾個明顯的技術演進趨勢:

  1. 預訓練目標的多樣化:從最初的掩碼語言建模和下一句預測,到後來的翻譯語言建模、句子排序預測和替換檢測等,模型設計者不斷探索更有效的預訓練目標。

  2. 規模的重要性:從 BERT 到 GPT-3,模型規模和訓練資料量的增加帶來了效能的顯著提升,證明瞭"規模即能力"的原則在 NLP 中的適用性。

  3. 效率與效能的平衡:ALBERT 和 ELECTRA 等模型透過創新的引數分享和訓練方法,在保持或提高效能的同時降低了計算需求。

  4. 多語言與跨語言能力:XLM 和 XLM-R 等模型的成功表明,Transformer 架構能夠有效地捕捉跨語言的共同特徵,為多語言 NLP 應用開闢了新途徑。

  5. 任務統一的趨勢:T5 模型將所有 NLP 任務統一為文字到文字的轉換,簡化了模型設計和應用,提高了知識分享效率。

在實際應用中,選擇合適的 Transformer 變體需要考慮具體任務需求、可用計算資源和模型佈署環境。編碼器模型(如 BERT 系列)通常在理解任務中表現優異;解碼器模型(如 GPT 系列)在生成任務中有明顯優勢;而編碼器-解碼器模型(如 T5)則在需要理解和生成的複雜任務中展現出色效能。

隨著研究的不斷深入,我們可以期待 Transformer 架構將繼續演化,產生更高效、更強大的變體,進一步推動自然語言處理技術的發展。理解這些模型的設計原理和技術特點,將幫助我們更好地應用它們解決實際問題,並為未來的創新奠定基礎。

突破語言藩籬:多語言命名實體識別的實踐與應用

在當今全球化的環境中,單一語言的自然語言處理系統已不足以滿足多語言應用的需求。特別是在瑞士這樣有四種官方語言的國家,或是在國際企業中處理多語言檔案時,傳統的單語言模型顯得捉襟見肘。這篇文章將探討如何利用XLM-RoBERTa這類別多語言Transformer模型,實作跨語言的命名實體識別(Named Entity Recognition,簡稱NER)。

多語言NLP的挑戰與機遇

處理多語言文字時,我們面臨兩個主要挑戰:一是如何為資源較少的語言建立有效模型,二是如何高效管理多語言環境中的多個模型。傳統方法可能需要為每種語言單獨訓練一個模型,這不僅耗費資源,也增加了維護成本。

幸運的是,多語言Transformer模型提供瞭解決方案。這些模型在預訓練階段同時學習上百種語言的表示,使它們能夠實作「零樣本跨語言遷移」(zero-shot cross-lingual transfer)—即在一種語言上微調的模型可以直接應用到其他語言,無需額外訓練。

這種能力特別適合處理「語碼轉換」(code-switching)情境,即説話者在同一對話中交替使用多種語言或方言的情況。在瑞士這樣的多語言國家,這種情況尤為常見。

XLM-RoBERTa:跨語言理解的關鍵技術

XLM-RoBERTa是一種強大的多語言模型,它繼承了RoBERTa的架構優勢,同時在100多種語言的大規模語料函式庫上進行了預訓練。與BERT類別似,它使用遮罩語言建模(masked language modeling)作為預訓練目標,但其訓練方式使模型能同時理解多種語言的語義和語法結構。

這種多語言預訓練方法使XLM-RoBERTa能夠捕捉不同語言之間的共通模式,從而實作知識在語言間的遷移。這對於處理多語言環境特別有價值,尤其是當某些語言的訓練資料有限時。

跨語言遷移學習的工作原理

跨語言遷移學習的核心理念是利用語言間的共通結構和特徵,將一種語言學到的知識應用到另一種語言。在XLM-RoBERTa的情境中,這種遷移是透過分享的詞嵌入空間和深層Transformer架構實作的。

當模型在多語言語料上預訓練時,它學習到的表示能夠捕捉語言間的共通語義,使得在一種語言上微調後的模型能夠理解其他語言中的相似結構和概念。這種能力對於命名實體識別等任務尤為有效,因為實體類別(如人名、地點、組織)在不同語言中往往有相似的語境特徵。

命名實體識別與IOB2標記格式

命名實體識別是自然語言處理中的基礎任務,旨在識別文字中的特定實體型別,如人名、地點和組織等。這些識別出的實體可用於多種應用,如從公司檔案中取得洞見、提升搜尋引擎品質,或從語料函式庫中建立結構化資料函式庫。

在本文中,我們將使用「內-外-始」(Inside-Outside-Beginning,簡稱IOB2)格式來標記命名實體。在這種格式中:

  • B-字首表示實體的開始
  • I-字首表示實體的延續(與前一個標記屬於同一實體)
  • O標記表示該標記不屬於任何實體

例如,以下句子:

“Jeff Dean is a computer scientist at Google in California”

在IOB2格式中的標記如下:

標記JeffDeanisacomputerscientistatGoogleinCalifornia
標籤B-PERI-PEROOOOOB-ORGOB-LOC

這種標記方式使模型能夠準確識別實體的邊界和型別,特別是當多個實體連續出現時。

多語言資料集:XTREME與PAN-X

為了訓練和評估我們的多語言命名實體識別模型,我們需要一個包含多種語言的標記資料集。在這裡,我們使用XTREME(Cross-lingual TRansfer Evaluation of Multilingual Encoders)基準測試的子集WikiANN或PAN-X。

PAN-X資料集包含多種語言的維基百科文章,每篇文章都標記了LOC(地點)、PER(人物)和ORG(組織)等實體型別。對於我們的瑞士語言環境,我們將專注於德語(62.9%)、法語(22.9%)、義大利語(8.4%)和英語(5.9%)這四種最常用的語言。

載入多語言資料集

使用Hugging Face的datasets函式庫,我們可以輕鬆載入XTREME基準測試的不同設定。首先,讓我們看有哪些可用的設定:

from datasets import get_dataset_config_names
xtreme_subsets = get_dataset_config_names("xtreme")
print(f"XTREME有 {len(xtreme_subsets)} 種設定")

這段程式碼使用get_dataset_config_names()函式來取得XTREME資料集的所有可用設定。這是在處理具有多個領域或子集的資料集時常用的方法,可以幫助我們瞭解資料集的組織結構。列印出設定數量可以讓我們瞭解XTREME的規模和多樣性。

由於XTREME包含大量設定,我們需要縮小搜尋範圍,只查詢PAN-X相關的設定:

panx_subsets = [s for s in xtreme_subsets if s.startswith("PAN")]
panx_subsets[:3]  # 顯示前三個結果

這段程式碼使用列表推導式篩選出所有以"PAN"開頭的設定名稱,這些就是PAN-X資料集的子集。透過顯示前三個結果,我們可以瞭解PAN-X子集的命名模式,這有助於我們確定如何載入特定語言的資料。

從結果中我們可以看出,PAN-X的設定名稱遵循"PAN-X.xx"的格式,其中xx是ISO 639-1語言程式碼。例如,要載入德語料函式庫,我們可以使用以下程式碼:

from datasets import load_dataset
german_dataset = load_dataset("xtreme", name="PAN-X.de")

這段程式碼使用load_dataset()函式載入XTREME資料集的德語(de)子集。name引數指定了我們要載入的特定設定。這種方式使我們能夠針對特定語言載入資料,這對於多語言NLP任務非常有用。