Skip to content

多語言與低資源語言標註

用英語以外的語言進行標註:多樣性鴻溝、與母語者協作的參與式方法,以及如何通過從右到左支援、字型和翻譯標籤來本地化 Potato 介面。

用英語以外的語言進行標註,是同時面對兩個難題。科學層面:大多數 NLP 資源只覆蓋少數幾種語言,類別無法在文化之間乾淨地遷移,而要產出高品質標籤,你需要真正的母語者,而不只是雙語者。實踐層面:讓工具正確顯示該語言,包括從右到左的文字和非拉丁字型。Potato 通過配置解決後者;前者則要靠你自己。 本指南兩者兼顧。

多樣性鴻溝真實而巨大

世界上大約有 7000 種語言,而 NLP 真正服務的只有幾十種。Joshi et al. (2020) 對此做了量化:少數幾種語言擁有豐富的標註資料,而絕大多數被數十億人使用的語言幾乎一無所有,並且這一鴻溝會自我強化,因為資源總是流向那些已經擁有資源的語言。標註通常是瓶頸所在。如果你希望模型在某種低資源語言上執行,就必須有人用該語言為資料打標籤,而品質的高低正是在這一標註環節決定的。

與語言社群協作標註,而不只是用該語言標註

人們的本能是僱用廉價的雙語眾包工人,並翻譯一份英語指南。這兩點都很冒險。Bird (2020) 反對那種把語言社群當作資料來源的攫取式做法,而 Masakhane 項目的參與式模型 (Nekoto et al., 2020) 表明,另一種做法在非洲語言上能夠大規模奏效:母語者參與設計任務、撰寫指南並擁有標籤,而不是去追認在別處做出的決定。由此得出兩個實際結論:

  • 招募流利的使用者,最好是相應變體的使用者。 一種語言並非鐵板一塊;方言、地區和語域都很重要,某一變體的使用者可能會給另一變體貼錯標籤。雙語者不等於母語者。
  • 不要假設類別可以遷移。 情感、冒犯性、禮貌乃至命名實體的類型,都是因文化而異的。一份適用於英語禮貌的指南,在禮貌通過語法編碼的語言中可能會悄然失效。讓使用者去調整方案本身,而不只是翻譯文字。這是一項方案設計決策,而非翻譯任務。

本地化 Potato 介面

務實的另一半。Potato 通過配置本地化面向標註者的介面,無需改動程式碼,不過事先了解其邊界仍然值得。

介面文本。 ui_language 塊是介面外框部分的字串表。設定文件語言,並翻譯標註者所看到的按鈕和標題:

yaml
ui_language:
  html_lang: ar
  html_dir: rtl            # right-to-left for Arabic, Hebrew, etc.
  submit_button: "إرسال"
  instructions_heading: "التعليمات"

設定 html_dir: rtl 會利用瀏覽器原生的雙向文本處理,將整個文件翻轉以適配從右到左的文字。這裡有一個需要如實說明的侷限:ui_language 涵蓋核心的標註和登入介面,但管理端的若干頁面(儀表盤、裁定、訓練和登出介面)仍然只有英語,因此如果你的標註者會看到這些頁面,請提前做好準備。

非拉丁文字的字型。 瀏覽器未必自帶適合 CJK、阿拉伯或印度系文字的預設字型。可通過 base_css 用一份項目樣式表來載入字型:

yaml
base_css: "css/noto_font.css"

非英語資料。 Potato 預設以 UTF-8 讀取資料檔案,並在文本欄位中渲染任意 Unicode,因此非英語內容會照原樣顯示。如果某個檔案使用了不同的編碼,可按檔案(encoding:)或全域(data_directory_encoding:)進行覆蓋。

翻譯後的標籤。 這是唯一一個微妙的陷阱。Potato 預設會對標籤名稱進行“人性化”處理,即重新格式化並將首字母大寫,這可能會破壞非拉丁文字。請為你的資料保留機器可讀的英語 name,並用 displayed_label 向標註者展示翻譯後的標籤,同時關閉人性化處理:

yaml
annotation_schemes:
  - name: sentiment
    annotation_type: radio
    description: "ما هو شعور هذا النص؟"
    labels:
      - name: positive
        displayed_label: "إيجابي"
      - name: negative
        displayed_label: "سلبي"
      - name: neutral
        displayed_label: "محايد"

儲存的標註仍然是 positive,因此在標註者完全用阿拉伯語工作的同時,你的資料依舊保持整潔。

說明與知情同意。 直接用目標語言撰寫你的 surveyflow 知情同意頁和說明頁;它們是你自己編寫的 HTML 檔案,沒有任何東西強制使用英語。若要在多種語言上運行同一任務,Potato 附帶了一個 setup_multilingual_config.py 輔助指令碼,可從模板生成各語言的配置。

延伸閱讀