WinkNLP es una biblioteca de JavaScript para el procesamiento del lenguaje natural (NLP). Diseñado específicamente para hacer que el desarrollo de aplicaciones de PNL sea más fácil y rápido , winkNLP está optimizado para lograr el equilibrio adecuado entre rendimiento y precisión.
Su soporte para incrustar palabras desbloquea un análisis de texto más profundo. Representa palabras y texto como vectores numéricos con facilidad, lo que brinda mayor precisión en tareas como similitud semántica, clasificación de texto y más, incluso dentro de un navegador .
Está construido desde cero sin dependencia externa y tiene una base de código optimizada de ~10 KB minificada y comprimida con gzip. Una cobertura de prueba de ~100% y el cumplimiento de las mejores prácticas de Open Source Security Foundation hacen de winkNLP la herramienta ideal para construir sistemas de producción con confianza.
WinkNLP con soporte completo de Typecript, se ejecuta en Node.js, navegadores web y Deno.
Cronología del artículo de Wikipedia | Nube de palabras consciente del contexto | Detección de frases clave |
---|---|---|
Dirígete a ejemplos en vivo para explorar más a fondo.
WinkNLP puede procesar fácilmente una gran cantidad de texto sin formato a velocidades superiores a 650.000 tokens/segundo en una Macbook Pro M1 tanto en entornos de navegador como de Node.js. Incluso funciona sin problemas en el navegador de un teléfono inteligente de gama baja.
Ambiente | Comando de evaluación comparativa |
---|---|
Nodo.js | evaluación comparativa/ejecución del nodo |
Navegador | ¿Cómo medir la velocidad de winkNLP en los navegadores? |
WinkNLP tiene un proceso integral de procesamiento del lenguaje natural (NLP) que cubre tokenización, detección de límites de oraciones (sbd), manejo de negaciones, análisis de sentimientos, etiquetado de partes del discurso (pos), reconocimiento de entidades nombradas (ner), reconocimiento de entidades personalizadas (cer). . Ofrece un rico conjunto de funciones:
? Tokenizador rápido, sin pérdidas y multilingüe | Por ejemplo, la cadena de texto multilingüe "¡Hola! नमस्कार! Hi! Bonjour chéri" se tokeniza como ["¡", "Hola", "!", "नमस्कार", "!", "Hi", "!", "Bonjour", "chéri"] . El tokenizador procesa texto a una velocidad cercana a los 4 millones de tokens/segundo en el navegador de un MBP M1. |
API intuitiva y fácil de usar para desarrolladores | Con winkNLP, procese cualquier texto utilizando una sintaxis declarativa simple; la mayoría de los ejemplos en vivo tienen entre 30 y 40 líneas de código. |
? La mejor visualización de texto de su clase | Marque mediante programación tokens, oraciones, entidades, etc. utilizando una marca HTML o cualquier otra etiqueta de su elección. |
♻️ Amplias funciones de procesamiento de texto | Eliminar y/o conservar tokens con atributos específicos como parte del discurso, tipo de entidad con nombre, tipo de token, palabra vacía, forma y muchos más; calcular la puntuación de facilidad de lectura de Flesch; generar n-gramas; normalizar, lematizar o derivar. Vea cómo, con el tipo correcto de preprocesamiento de texto, incluso el clasificador Naive Bayes logra una precisión impresionante (≥90 %) en el análisis de sentimientos y en las tareas de clasificación de intenciones del chatbot. |
? Modelos de lenguaje previamente entrenados | Tamaños compactos a partir de ~1 MB (minimificado y comprimido con gzip): reduzca drásticamente el tiempo de carga del modelo hasta ~1 segundo en una red 4G. |
Incrustaciones de palabras en inglés de 100 dimensiones para más de 350.000 palabras en inglés, que están optimizadas para winkNLP. Permite un fácil cálculo de incrustaciones de oraciones o documentos. |
Utilice la instalación npm:
npm install wink-nlp --save
Para poder utilizar winkNLP después de su instalación, también es necesario instalar un modelo de lenguaje según la versión del nodo utilizado. La siguiente tabla describe el comando de instalación específico de la versión:
Versión de Node.js | Instalación |
---|---|
16 o 18 | npm install wink-eng-lite-web-model --save |
14 o 12 | node -e "require('wink-nlp/models/install')" |
El modelo web wink-eng-lite-web-model está diseñado para funcionar con Node.js versión 16 o 18. También puede funcionar en navegadores como se describe en la siguiente sección. Este es el modelo recomendado .
El segundo comando instala wink-eng-lite-model, que funciona con Node.js versión 14 o 12.
Habilite esModuleInterop
y allowSyntheticDefaultImports
en el archivo tsconfig.json
:
"compilerOptions": {
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
...
}
Si está utilizando winkNLP en el navegador, utilice el modelo web wink-eng-lite. Conozca su instalación y uso en nuestra guía para usar winkNLP en el navegador. Explore las recetas de winkNLP en Observable para ver ejemplos en vivo basados en navegador.
Siga el ejemplo en réplica.
Aquí está el mensaje "¡Hola mundo!" de guiñoNLP:
// 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 con winkNLP en RunKit.
WinkNLP procesa texto sin formato a ~650.000 tokens por segundo con su modelo web wink-eng-lite, cuando se compara con el "Capítulo 13 de Ulises de James Joyce" en una máquina Macbook Pro M1 con 16 GB de RAM. El procesamiento incluyó todo el proceso de PNL: tokenización, detección de límites de oraciones, manejo de negaciones, análisis de sentimientos, etiquetado de partes del discurso y extracción de entidades nombradas. Esta velocidad está muy por delante de los puntos de referencia de velocidad vigentes.
La prueba comparativa se realizó en las versiones 16 y 18 de Node.js.
Publica etiquetas de un subconjunto de corpus de WSJ con una precisión de ~95 % ; esto incluye la tokenización del texto sin formato antes del etiquetado posterior . El estado actual de la técnica tiene una precisión de ~97 % pero a velocidades más bajas y generalmente se calcula utilizando un corpus pre-tokenizado estándar de oro.
Su análisis de sentimiento de propósito general ofrece una puntuación f de ~84,5 % , cuando se valida utilizando el conjunto de datos de frases etiquetadas de sentimiento de revisión de productos de Amazon en el repositorio de aprendizaje automático de UCI. La precisión de referencia actual para modelos específicamente entrenados puede oscilar alrededor del 95%.
Wink NLP ofrece este rendimiento con una carga mínima de RAM. Por ejemplo, procesa todo el Volumen I de Historia de la India con un requisito máximo de memoria total de menos de 80 MB . El libro tiene alrededor de 350 páginas, lo que se traduce en más de 125.000 tokens.
Pregunte en Stack Overflow o comente en Wink JS GitHub Discussions o charle con nosotros en Wink JS Gitter Lobby.
Si detecta un error y aún no se ha informado del mismo, plantee un nuevo problema o considere solucionarlo y enviar un PR.
Si busca una nueva función, solicítela a través del foro de discusión de nuevas funciones e ideas o considere convertirse en colaborador.
WinkJS es una familia de paquetes de código abierto para procesamiento de lenguaje natural , aprendizaje automático y análisis estadístico en NodeJS. El código está minuciosamente documentado para facilitar la comprensión humana y tiene una cobertura de prueba de ~100 % para garantizar la confiabilidad para crear soluciones de nivel de producción.
Wink NLP tiene derechos de autor 2017-24 GRAYPE Systems Private Limited.
Tiene licencia según los términos de la Licencia MIT.