Lingua:能準確檢測與辨識自然語言型別的Rust庫

banq發表於2022-04-09

它的任務很簡單:它會分辨除哪些文字資料是用哪種語言編寫的。
這在自然語言處理應用程式(例如文字分類和拼寫檢查)中作為語言資料的預處理步驟非常有用。例如,其他用例可能包括根據電子郵件的語言將電子郵件路由到地理位置正確的客戶服務部門。支援中文。
Lingua能夠報告每種支援的語言可用的一些捆綁測試資料的準確性統計資訊。每種語言的測試資料分為三部分:
  1. 最小長度為 5 個字元的單個單詞列表
  2. 最小長度為 10 個字元的單詞對列表
  3. 各種長度的完整語法句子列表


語言檢測通常是作為大型機器學習框架或自然語言處理應用程式的一部分進行的。在你不需要這些系統的全部功能或不想學習這些系統的繩索的情況下,一個小的靈活的庫就會很方便。

到目前為止,Rust生態系統中唯一能完成這一任務的綜合性開源庫是CLD2和Whatlang。不幸的是,它們有兩個主要的缺點。
  1. 檢測只適用於相當長的文字片段。對於非常短的文字片段,如Twitter訊息,它不能提供足夠的結果。
  2. 參與決策過程的語言越多,檢測結果就越不準確。

Lingua旨在消除這些問題。它幾乎不需要任何配置,對長短文都能產生相當準確的結果,甚至對單字和短語也是如此。它借鑑了基於規則的方法和統計方法,但不使用任何詞彙詞典。它也不需要連線到任何外部API或服務。一旦下載了該庫,它就可以完全離線使用。

該庫現在可以編譯為 WebAssembly,允許在任何基於 JavaScript 的專案中使用它,無論是在瀏覽器中還是在 Node.js 上執行的後端。

最簡單的編譯方法是使用wasm-pack. 安裝後,例如,您可以使用 web 目標構建庫,以便可以直接在瀏覽器中使用:
wasm-pack build --target web

在 HTML 檔案中,您可以像下面這樣呼叫Lingua,例如:

<script type="module">
    import init, { LanguageDetectorBuilder } from './pkg/lingua.js';

    init().then(_ => {
        const detector = LanguageDetectorBuilder.fromAllLanguages().build();
        console.log(
            detector.computeLanguageConfidenceValues("languages are awesome")
        ); 
    });
</script>


 

相關文章