ai-zero-shot-classifier
Checkout the demo for a quick start!
🚀 Introduction
ai-zero-shot-classifier is a powerful, flexible JavaScript library designed to perform zero-shot text classification using pre-trained AI embeddings. The library supports multiple providers and models, enabling you to choose the best AI tools for your project, whether it's OpenAI's models or alternative providers like Groq.
🧐 Why ai-zero-shot-classifier?
The Problem
Traditional text classification requires extensive labeled data and retraining models to adapt to new categories. This process can be costly, time-consuming, and impractical when dealing with constantly evolving datasets or dynamic categories.
The Innovation
ai-zero-shot-classifier eliminates the need for labeled datasets by leveraging pre-trained AI embeddings. It allows for dynamic and task-specific labels, enabling real-time classification across various domains without retraining models. It supports multiple providers and their respective models, making it adaptable to diverse use cases.
✨ Features
- Multi-Provider Support: Works with providers like OpenAI and Groq, enabling integration with models such as GPT, Llama, and others.
- Dynamic Labels: Define your labels dynamically for each classification task.
- Multiple Similarity Functions: Supports cosine similarity, dot product, and Euclidean distance for flexible classification needs.
- Batch Processing: Efficiently handles large datasets with customizable batch sizes and concurrency.
- Highly Configurable: Adjustable settings for embeddings, similarity calculations, and more.
- Seamless Integration: Simple API designed for easy use in Node.js and browser environments.
📦 Installation
npm install ai-zero-shot-classifier
or
yarn add ai-zero-shot-classifier
🚀 Usage
Basic Example with classify Function
import { classify } from 'ai-zero-shot-classifier';
const labels = ['Technology', 'Health', 'Finance'];
const data = [
'Artificial Intelligence is transforming industries.',
'The stock market has seen unprecedented growth.',
'Healthcare advancements are improving lives.'
];
classify({ labels, data, config: { similarity: 'cosine' } })
.then((results) => {
console.log(results);
})
.catch((error) => {
console.error(error);
});
Example with ZeroShotClassifier Class
import ZeroShotClassifier from 'ai-zero-shot-classifier';
const labels = ['Technology', 'Health', 'Finance'];
const data = [
'Artificial Intelligence is transforming industries.',
'The stock market has seen unprecedented growth.',
'Healthcare advancements are improving lives.'
];
const classifier = new ZeroShotClassifier({
provider: 'openai',
model: 'text-embedding-3-small',
apiKey: 'your-api-key',
labels,
dimensions: undefined,
});
(async () => {
try {
const results = await classifier.classify(data, {
similarity: 'cosine',
});
console.log('Classification Results:', results);
} catch (error) {
console.error('Error during classification:', error);
}
})();
⚙️ Configuration Options
similarity | Similarity function to use (cosine, dot, euclidean) | cosine |
embeddingBatchSizeData | Batch size for data embeddings | 50 |
embeddingBatchSizeLabels | Batch size for label embeddings | 50 |
embeddingConcurrencyData | Concurrency for data embeddings | 5 |
embeddingConcurrencyLabels | Concurrency for label embeddings | 5 |
comparingConcurrencyTop | Concurrency for top-level comparisons | 10 |
comparingConcurrencyBottom | Concurrency for bottom-level comparisons | 10 |
🛠️ Development
Clone the repository:
git clone https://github.com/a-tokyo/ai-zero-shot-classifier.git
Install dependencies:
npm install
Run the development server:
npm start
Run tests:
npm test
Checkout the demo for a quick start!
Fallback Demo!
🤝 Contributing
Contributions are welcome! Feel free to open issues or submit pull requests.