使用 TensorFlow 進行文字和自然語言處理

在文字資料上訓練模型之前,您通常需要處理 (或預先處理) 文字。在許多情況下,文字需要經過權杖化和向量化處理,才能饋送至模型,而在某些情況下,文字還需要額外的預先處理步驟,例如正規化和特徵選取。

將文字處理成合適的格式後,您就可以在自然語言處理 (NLP) 工作流程中使用,例如文字分類、文字生成、摘要和翻譯。

TensorFlow 提供兩個用於文字和自然語言處理的程式庫:KerasNLP (GitHub) 和 TensorFlow Text (GitHub)。

KerasNLP 是一個高階自然語言處理模型程式庫,包含所有最新的 Transformer 架構模型,以及較低階的權杖化公用程式。這是大多數自然語言處理使用案例的建議解決方案。KerasNLP 以 TensorFlow Text 為基礎建構,將低階文字處理運算抽象化為易於使用的 API。但是,如果您不想使用 Keras API,或是需要存取較低階的文字處理運算,則可以直接使用 TensorFlow Text。

KerasNLP

開始在 TensorFlow 中處理文字最簡單的方法是使用 KerasNLP。KerasNLP 是一個自然語言處理程式庫,支援從模組化元件建構的工作流程,這些元件具有最先進的預設權重和架構。您可以直接使用 KerasNLP 元件的預設配置。如果您需要更多控制權,可以輕鬆自訂元件。KerasNLP 為所有工作流程提供圖內運算,因此您可以預期使用 TensorFlow 生態系統能輕鬆實現生產化。

KerasNLP 包含熱門模型架構的端對端實作,例如 BERTFNet。使用 KerasNLP 模型、層和權杖產生器,您可以完成許多最先進的自然語言處理工作流程,包括機器翻譯文字生成文字分類Transformer 模型訓練

KerasNLP 是核心 Keras API 的延伸模組,而且每個高階 KerasNLP 模組都是 LayerModel。如果您熟悉 Keras,就已經瞭解 KerasNLP 的大部分內容。

TensorFlow Text

KerasNLP 提供可作為層或模型使用的高階文字處理模組。如果您需要存取較低階的工具,可以使用 TensorFlow Text。TensorFlow Text 提供各種運算和程式庫,協助您處理原始文字字串和文件。TensorFlow Text 可以執行以文字為基礎的模型經常需要的預先處理作業,並且還包含其他適用於序列建模的功能。

使用 TensorFlow Text,您可以執行下列操作:

  • 套用功能豐富的權杖產生器,這些產生器可以在空白字元上分割字串、分隔字詞和標點符號,並傳回含權杖的位元組偏移量,以便您瞭解字串在來源文字中的位置。
  • 檢查權杖是否符合指定的字串模式。您可以檢查大小寫、標點符號、數值資料和其他權杖特徵。
  • 將權杖組合成 n-gram。
  • 在 TensorFlow 圖表中處理文字,使訓練期間的權杖化與推論時的權杖化相符。

從哪裡開始

下列資源將協助您開始使用 TensorFlow 文字處理