WinkNLP — это библиотека JavaScript для обработки естественного языка (NLP). WinkNLP, разработанный специально для упрощения и ускорения разработки приложений НЛП, оптимизирован для обеспечения правильного баланса производительности и точности.
Поддержка встраивания слов обеспечивает более глубокий анализ текста. С легкостью представляйте слова и текст в виде числовых векторов, обеспечивая более высокую точность в таких задачах, как семантическое сходство, классификация текста и т. д., даже в браузере .
Он создан с нуля, без каких-либо внешних зависимостей и имеет небольшую кодовую базу размером около 10 КБ, минифицированную и заархивированную. Примерно 100% тестовое покрытие и соответствие передовым практикам Open Source Security Foundation делают winkNLP идеальным инструментом для уверенного создания систем производственного уровня.
WinkNLP с полной поддержкой Typescript работает на Node.js, веб-браузерах и Deno.
Хронология статей в Википедии | Облако контекстно-зависимых слов | Обнаружение ключевых предложений |
---|---|---|
Перейдите к живым примерам для дальнейшего изучения.
WinkNLP может легко обрабатывать большие объемы необработанного текста со скоростью более 650 000 токенов в секунду на M1 Macbook Pro как в браузере, так и в среде Node.js. Он даже без проблем работает в браузере бюджетного смартфона.
Среда | Команда бенчмаркинга |
---|---|
Node.js | тест/запуск узла |
Браузер | Как измерить скорость winkNLP в браузерах? |
WinkNLP имеет комплексный конвейер обработки естественного языка (NLP), охватывающий токенизацию, обнаружение границ предложения (sbd), обработку отрицаний, анализ настроений, тегирование части речи (pos), распознавание именованных объектов (ner), распознавание пользовательских объектов (cer). . Он предлагает богатый набор функций:
? Быстрый, многоязычный токенизатор без потерь | Например, многоязычная текстовая строка "¡Hola! नमस्कार! Hi! Bonjour chéri" обозначается как ["¡", "Hola", "!", "नमस्कार", "!", "Hi", "!", "Bonjour", "chéri"] . Токенизатор обрабатывает текст со скоростью около 4 миллионов токенов в секунду в браузере M1 MBP. |
Удобный для разработчиков и интуитивно понятный API | С помощью winkNLP обрабатывайте любой текст, используя простой декларативный синтаксис; большинство живых примеров имеют 30-40 строк кода. |
? Лучшая в своем классе визуализация текста | Программно отмечайте токены, предложения, сущности и т. д., используя метку HTML или любой другой тег по вашему выбору. |
♻️ Широкие возможности обработки текста | Удалить и/или сохранить токены с определенными атрибутами, такими как часть речи, тип именованного объекта, тип токена, стоп-слово, форма и многое другое; вычислить показатель легкости чтения Флеша; генерировать n-граммы; нормализовать, лемматизировать или вычленить. Узнайте, как при правильной предварительной обработке текста даже наивный байесовский классификатор достигает впечатляющей (≥90%) точности в задачах анализа настроений и классификации намерений чат-ботов. |
? Предварительно обученные языковые модели | Компактные размеры, начиная с ~1 МБ (уменьшенные и сжатые) — значительно сокращают время загрузки модели до ~1 секунды в сети 4G. |
100-мерные встраивания английских слов для более чем 350 тысяч английских слов, оптимизированные для 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-модель предназначена для работы с Node.js версии 16 или 18. Она также может работать в браузерах, как описано в следующем разделе. Это рекомендуемая модель.
Вторая команда устанавливает модель wink-eng-lite-model, которая работает с Node.js версии 14 или 12.
Включите esModuleInterop
allowSyntheticDefaultImports
в файле tsconfig.json
:
"compilerOptions": {
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
...
}
Если вы используете winkNLP в браузере, используйте wink-eng-lite-web-модель. Узнайте о его установке и использовании в нашем руководстве по использованию winkNLP в браузере. Изучите рецепты winkNLP на Observable, чтобы увидеть живые примеры на основе браузера.
Следуйте примеру на replit.
Вот «Привет, мир!» из WinNLP:
// 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 ] ]
Поэкспериментируйте с winkNLP на RunKit.
WinkNLP обрабатывает необработанный текст со скоростью ~ 650 000 токенов в секунду с помощью своей веб-модели wink-eng-lite-web при тестировании с использованием «Главы 13 Улисса Джеймса Джойса» на компьютере M1 Macbook Pro с 16 ГБ оперативной памяти. Обработка включала в себя весь конвейер НЛП — токенизацию, определение границ предложения, обработку отрицаний, анализ настроений, маркировку частей речи и извлечение именованных сущностей. Эта скорость намного опережает существующие стандарты скорости.
Тестирование проводилось на Node.js версий 16 и 18.
Он pos помечает подмножество корпуса WSJ с точностью ~95 % — это включает в себя токенизацию необработанного текста перед pos-тегированием . Текущий уровень техники имеет точность ~ 97%, но на более низких скоростях и обычно рассчитывается с использованием предварительно токенизированного корпуса золотого стандарта.
Его анализ настроений общего назначения дает f-показатель ~ 84,5% при проверке с использованием набора данных предложений с маркировкой настроений Amazon Product Review в репозитории машинного обучения UCI. Текущая точность тестов для специально обученных моделей может составлять около 95%.
Wink NLP обеспечивает такую производительность при минимальной нагрузке на оперативную память. Например, он обрабатывает весь том I «Истории Индии» с общей пиковой потребностью в памяти менее 80 МБ . В книге около 350 страниц, что соответствует более чем 125 000 токенов.
Пожалуйста, задайте вопрос в Stack Overflow, обсудите в обсуждениях Wink JS GitHub или пообщайтесь с нами в Wink JS Gitter Lobby.
Если вы заметили ошибку, но о ней еще не сообщалось, поднимите новую проблему или рассмотрите возможность ее исправления и отправки PR.
Ищете новую функцию, запросите ее на форуме обсуждения новых функций и идей или рассмотрите возможность стать участником.
WinkJS — это семейство пакетов с открытым исходным кодом для обработки естественного языка , машинного обучения и статистического анализа в NodeJS. Код тщательно документирован для простоты понимания человеком и имеет примерно 100% тестовое покрытие, что обеспечивает надежность при создании решений промышленного уровня.
Авторские права Wink NLP принадлежат GRAYPE Systems Private Limited, 2017-24.
Он лицензируется в соответствии с условиями лицензии MIT.