WinkNLP é uma biblioteca JavaScript para processamento de linguagem natural (PNL). Projetado especificamente para tornar o desenvolvimento de aplicativos de PNL mais fácil e rápido , o winkNLP é otimizado para o equilíbrio certo entre desempenho e precisão.
Seu suporte para incorporação de palavras desbloqueia uma análise de texto mais profunda. Represente palavras e texto como vetores numéricos com facilidade, proporcionando maior precisão em tarefas como similaridade semântica, classificação de texto e muito mais, mesmo dentro de um navegador .
Ele é construído do zero, sem dependência externa e possui uma base de código enxuta de aproximadamente 10 KB, minificado e compactado. Uma cobertura de teste de aproximadamente 100% e conformidade com as práticas recomendadas da Open Source Security Foundation tornam o winkNLP a ferramenta ideal para construir sistemas de nível de produção com confiança.
WinkNLP com suporte completo a Typescript, roda em Node.js, navegadores da web e Deno.
Linha do tempo do artigo da Wikipédia | Nuvem de palavras com reconhecimento de contexto | Detecção de frases-chave |
---|---|---|
Acesse exemplos ao vivo para explorar mais.
WinkNLP pode processar facilmente grandes quantidades de texto bruto em velocidades superiores a 650.000 tokens/segundo em um Macbook Pro M1 em ambientes de navegador e Node.js. Ele ainda funciona perfeitamente no navegador de um smartphone de baixo custo.
Ambiente | Comando de benchmarking |
---|---|
Node.js | benchmark/execução de nó |
Navegador | Como medir a velocidade do winkNLP nos navegadores? |
WinkNLP tem um pipeline abrangente de processamento de linguagem natural (PNL) que cobre tokenização, detecção de limite de frase (sbd), tratamento de negação, análise de sentimento, marcação de classe gramatical (pos), reconhecimento de entidade nomeada (ner), reconhecimento de entidades personalizadas (cer) . Ele oferece um rico conjunto de recursos:
? Tokenizer rápido, sem perdas e multilíngue | Por exemplo, a string de texto multilíngue "¡Hola! नमस्कार! Hi! Bonjour chéri" é tokenizada como ["¡", "Hola", "!", "नमस्कार", "!", "Hi", "!", "Bonjour", "chéri"] . O tokenizer processa texto a uma velocidade próxima de 4 milhões de tokens/segundo em um navegador M1 MBP. |
API amigável e intuitiva para desenvolvedores | Com winkNLP, processe qualquer texto usando uma sintaxe simples e declarativa; a maioria dos exemplos ao vivo tem de 30 a 40 linhas de código. |
? A melhor visualização de texto da categoria | Marque programaticamente tokens, frases, entidades, etc. usando marca HTML ou qualquer outra tag de sua escolha. |
♻️ Extensos recursos de processamento de texto | Remova e/ou retenha tokens com atributos específicos, como classe gramatical, tipo de entidade nomeada, tipo de token, palavra de parada, forma e muito mais; calcular a pontuação de facilidade de leitura de Flesch; gerar n-gramas; normalizar, lematizar ou radicalizar. Veja como, com o tipo certo de pré-processamento de texto, até mesmo o classificador Naive Bayes atinge uma precisão impressionante (≥90%) em análises de sentimentos e tarefas de classificação de intenções do chatbot. |
? Modelos de linguagem pré-treinados | Tamanhos compactos a partir de aproximadamente 1 MB (minificados e compactados) – reduzem drasticamente o tempo de carregamento do modelo para aproximadamente 1 segundo em uma rede 4G. |
Incorporações de palavras em inglês de 100 dimensões para mais de 350 mil palavras em inglês, que são otimizadas para winkNLP. Permite fácil cálculo de incorporações de frases ou documentos. |
Use a instalação npm:
npm install wink-nlp --save
Para utilizar o winkNLP após sua instalação, também é necessário instalar um modelo de linguagem de acordo com a versão do nó utilizado. A tabela abaixo descreve o comando de instalação específico da versão:
Versão Node.js. | Instalação |
---|---|
16 ou 18 | npm install wink-eng-lite-web-model --save |
14 ou 12 | node -e "require('wink-nlp/models/install')" |
O wink-eng-lite-web-model foi projetado para funcionar com Node.js versão 16 ou 18. Ele também pode funcionar em navegadores conforme descrito na próxima seção. Este é o modelo recomendado .
O segundo comando instala o modelo wink-eng-lite, que funciona com Node.js versão 14 ou 12.
Habilite esModuleInterop
e allowSyntheticDefaultImports
no arquivo tsconfig.json
:
"compilerOptions": {
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
...
}
Se você estiver usando winkNLP no navegador, use o wink-eng-lite-web-model. Aprenda sobre sua instalação e uso em nosso guia de uso do winkNLP no navegador. Explore receitas winkNLP no Observable para exemplos ao vivo baseados em navegador.
Siga o exemplo na repetição.
Aqui está o "Olá, mundo!" do 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 ] ]
Experimente winkNLP no RunKit.
O winkNLP processa texto bruto a aproximadamente 650.000 tokens por segundo com seu modelo wink-eng-lite-web, quando comparado usando "Ch 13 of Ulysses by James Joyce" em uma máquina M1 Macbook Pro com 16 GB de RAM. O processamento incluiu todo o pipeline de PNL – tokenização, detecção de limites de frases, tratamento de negação, análise de sentimento, marcação de classe gramatical e extração de entidade nomeada. Esta velocidade está muito à frente dos benchmarks de velocidade prevalecentes.
O benchmark foi conduzido nas versões 16 e 18 do Node.js.
Ele pos marca um subconjunto do corpus do WSJ com uma precisão de aproximadamente 95% - isso inclui tokenização de texto bruto antes da pos tagging . O estado da arte atual tem precisão de aproximadamente 97%, mas em velocidades mais baixas e geralmente é calculado usando corpus pré-tokenizado padrão ouro.
Sua análise de sentimento de uso geral fornece uma pontuação f de aproximadamente 84,5% , quando validada usando o conjunto de dados de frases rotuladas de sentimento da Amazon Product Review no UCI Machine Learning Repository. A precisão atual do benchmark para modelos especificamente treinados pode variar em torno de 95%.
Wink NLP oferece esse desempenho com carga mínima de RAM. Por exemplo, ele processa toda a História da Índia, Volume I, com um requisito total de pico de memória inferior a 80 MB . O livro tem cerca de 350 páginas, o que se traduz em mais de 125.000 tokens.
Pergunte no Stack Overflow ou discuta em Wink JS GitHub Discussions ou converse conosco no Wink JS Gitter Lobby.
Se você detectar um bug e o mesmo ainda não tiver sido relatado, levante um novo problema ou considere corrigi-lo e enviar um PR.
Procurando um novo recurso, solicite-o por meio do fórum de discussão de novos recursos e ideias ou considere se tornar um colaborador.
WinkJS é uma família de pacotes de código aberto para processamento de linguagem natural , aprendizado de máquina e análise estatística em NodeJS. O código é totalmente documentado para facilitar a compreensão humana e tem uma cobertura de teste de aproximadamente 100% para confiabilidade na construção de soluções de nível de produção.
Wink NLP tem copyright 2017-24 GRAYPE Systems Private Limited.
É licenciado sob os termos da Licença MIT.