WinkNLP 是一個用於自然語言處理 (NLP) 的 JavaScript 函式庫。 winkNLP 專為使 NLP 應用程式的開發更輕鬆、更快捷而設計,並針對效能和準確性的適當平衡進行了最佳化。
其詞嵌入支援可解鎖更深入的文本分析。輕鬆將單字和文字表示為數值向量,從而在語義相似性、文字分類等任務中帶來更高的準確性 - 即使在瀏覽器中也是如此。
它是在沒有外部依賴的情況下建構的,並且具有約 10Kb 壓縮和壓縮的精益程式碼庫。約 100% 的測試覆蓋率並符合開源安全基金會最佳實踐,使 winkNLP 成為充滿信心地建立生產級系統的理想工具。
WinkNLP 具有完整的 Typescript 支持,可在 Node.js、Web 瀏覽器和 Deno 上運行。
維基百科文章時間軸 | 上下文感知詞雲 | 關鍵句子偵測 |
---|---|---|
前往實例進行進一步探索。
WinkNLP 可以在 M1 Macbook Pro 的瀏覽器和 Node.js 環境中以超過650,000 個令牌/秒的速度輕鬆處理大量原始文字。它甚至可以在低階智慧型手機的瀏覽器上流暢運行。
環境 | 基準測試命令 |
---|---|
Node.js | 節點基準測試/運行 |
瀏覽器 | 如何測量winkNLP在瀏覽器上的速度? |
WinkNLP 擁有全面的自然語言處理 (NLP) 管道,涵蓋標記化、句子邊界檢測 (sbd)、否定處理、情緒分析、詞性 (pos) 標記、命名實體識別 (ner)、自訂實體識別 (cer) 。它提供了豐富的功能集:
?快速、無損和多語言分詞器 | 例如,多語言文本字串"¡Hola! नमस्कार! Hi! Bonjour chéri" 標記為["¡", "Hola", "!", "नमस्कार", "!", "Hi", "!", "Bonjour", "chéri"] 。標記器在 M1 MBP 瀏覽器上以接近400 萬個標記/秒的速度處理文字。 |
開發人員友好且直覺的 API | 借助 winkNLP,使用簡單的聲明性語法處理任何文本;大多數實例都有30-40行程式碼。 |
?一流的文本視覺化 | 使用 HTML 標記或您選擇的任何其他標記以程式設計方式標記標記、句子、實體等。 |
♻️ 廣泛的文字處理功能 | 刪除和/或保留具有特定屬性的標記,例如詞性、命名實體類型、標記類型、停用詞、形狀等等;計算 Flesch 閱讀難度分數;生成 n 元語法;標準化、詞形還原或詞幹化。看看如何透過正確類型的文字預處理,即使樸素貝葉斯分類器也能在情緒分析和聊天機器人意圖分類任務中實現令人印象深刻的(≥90%)準確度。 |
?預訓練語言模型 | 尺寸緊湊,從約 1MB 開始(縮小和壓縮)——在 4G 網路上將模型加載時間大幅縮短至約 1 秒。 |
超過 35 萬個英語單字的 100 維英語單字嵌入,針對 winkNLP 進行了最佳化。允許輕鬆計算句子或文件嵌入。 |
使用 npm 安裝:
npm install wink-nlp --save
為了在安裝後使用winkNLP,您還需要根據所使用的節點版本安裝語言模型。下表概述了特定於版本的安裝命令:
Node.js 版本 | 安裝 |
---|---|
16 或 18 | npm install wink-eng-lite-web-model --save |
14 或 12 | node -e "require('wink-nlp/models/install')" |
wink-eng-lite-web-model 設計用於與 Node.js 版本 16 或 18 搭配使用。這是推薦型號。
第二個指令安裝 wink-eng-lite-model,它適用於 Node.js 版本 14 或 12。
在tsconfig.json
檔案中啟用esModuleInterop
和allowSyntheticDefaultImports
:
"compilerOptions": {
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
...
}
如果您在瀏覽器中使用 winkNLP,請使用 wink-eng-lite-web-model。請參閱我們在瀏覽器中使用 winkNLP 的指南,以了解其安裝和使用情況。探索 Observable 上的winkNLP 配方,以了解基於即時瀏覽器的範例。
請按照 replit 上的範例進行操作。
這是“你好世界!” winkNLP 的:
// Load wink-nlp package.
const winkNLP = require ( 'wink-nlp' ) ;
// Load english language model.
const model = require ( 'wink-eng-lite-web-model' ) ;
// Instantiate winkNLP.
const nlp = winkNLP ( model ) ;
// Obtain "its" helper to extract item properties.
const its = nlp . its ;
// Obtain "as" reducer helper to reduce a collection.
const as = nlp . as ;
// NLP Code.
const text = 'Hello World?! How are you?' ;
const doc = nlp . readDoc ( text ) ;
console . log ( doc . out ( ) ) ;
// -> Hello World?! How are you?
console . log ( doc . sentences ( ) . out ( ) ) ;
// -> [ 'Hello World?!', 'How are you?' ]
console . log ( doc . entities ( ) . out ( its . detail ) ) ;
// -> [ { value: '?', type: 'EMOJI' } ]
console . log ( doc . tokens ( ) . out ( ) ) ;
// -> [ 'Hello', 'World', '?', '!', 'How', 'are', 'you', '?' ]
console . log ( doc . tokens ( ) . out ( its . type , as . freqTable ) ) ;
// -> [ [ 'word', 5 ], [ 'punctuation', 2 ], [ 'emoji', 1 ] ]
在 RunKit 上嘗試 winkNLP。
在具有 16GB RAM 的 M1 Macbook Pro 機器上使用「James Joyce 的《尤利西斯》第 13 章」進行基準測試時,winkNLP 透過其 wink-eng-lite-web-model 以每秒約 650,000 個標記的速度處理原始文字。處理過程包括整個 NLP 流程——標記化、句子邊界檢測、否定處理、情緒分析、詞性標記和命名實體提取。這個速度遠遠領先現行的速度基準。
此基準測試是在 Node.js 版本 16 和 18 上進行的。
它對《華爾街日報》語料庫的子集進行 pos 標記,準確度約為95% ——這包括在進行 pos 標記之前對原始文本進行標記化。目前最先進的精度約為 97%,但速度較低,並且通常使用黃金標準預標記語料庫進行計算。
使用 UCI 機器學習儲存庫中的亞馬遜產品評論情緒標記句子資料集進行驗證時,其通用情緒分析的 f 分數約為 84.5% 。目前經過專門訓練的模型的基準準確度可達 95% 左右。
Wink NLP 以最小的 RAM 負載提供此效能。例如,它處理整個《印度歷史》第一卷,總峰值記憶體需求低於80MB 。該書約有 350 頁,相當於 125,000 多個標記。
請在 Stack Overflow 提問或在 Wink JS GitHub 討論中討論或在 Wink JS Gitter Lobby 與我們聊天。
如果您發現錯誤且尚未報告該錯誤,請提出新問題或考慮修復該錯誤並傳送 PR。
尋找新功能,請透過新功能和想法討論論壇請求或考慮成為貢獻者。
WinkJS 是一系列用於 NodeJS 中的自然語言處理、機器學習和統計分析的開源套件。程式碼經過完整記錄,易於人類理解,且測試覆蓋率約為 100%,可確保建置生產級解決方案的可靠性。
Wink NLP版權所有 2017-24 GRAYPE Systems Private Limited。
它根據 MIT 許可證條款獲得許可。