https://github.com/a-tokyo/ai-zero-shot-classifier
🧠 leverage advanced AI embeddings to perform multilingual zero-shot text classification. Whether you're dealing with unlabelled data or seeking to classify text against dynamic and user-defined labels, this library provides a seamless and efficient solution.
https://github.com/a-tokyo/ai-zero-shot-classifier
ai artificial-intelligence classifier deep-learning groq llama llm machine-learning multilingual nlp no-fine-tuning nodejs ollama openai react react-native vector-similarity vue zero-shot
Last synced: about 1 year ago
JSON representation
🧠 leverage advanced AI embeddings to perform multilingual zero-shot text classification. Whether you're dealing with unlabelled data or seeking to classify text against dynamic and user-defined labels, this library provides a seamless and efficient solution.
- Host: GitHub
- URL: https://github.com/a-tokyo/ai-zero-shot-classifier
- Owner: a-tokyo
- License: mit
- Created: 2024-12-07T18:32:33.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-04-11T00:39:26.000Z (about 1 year ago)
- Last Synced: 2025-04-11T01:30:38.916Z (about 1 year ago)
- Topics: ai, artificial-intelligence, classifier, deep-learning, groq, llama, llm, machine-learning, multilingual, nlp, no-fine-tuning, nodejs, ollama, openai, react, react-native, vector-similarity, vue, zero-shot
- Language: TypeScript
- Homepage: https://a-tokyo.github.io/ai-zero-shot-classifier
- Size: 1.11 MB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: .github/CODE_OF_CONDUCT.md
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README
# ai-zero-shot-classifier
[Checkout the demo for a quick start!](https://a-tokyo.github.io/ai-zero-shot-classifier)
---
## 🚀 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
```bash
npm install ai-zero-shot-classifier
```
or
```bash
yarn add ai-zero-shot-classifier
```
---
## 🚀 Usage
### Basic Example with classify Function
```javascript
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
```javascript
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.'
];
// Create an instance of the classifier
const classifier = new ZeroShotClassifier({
provider: 'openai', // Specify the provider
model: 'text-embedding-3-small', // Specify the model
apiKey: 'your-api-key', // API key for authentication
labels, // Provide labels for classification
dimensions: undefined, // Pass dimensions as a number here to configure vector dimensions
});
(async () => {
try {
const results = await classifier.classify(data, {
similarity: 'cosine', // Choose the similarity metric
});
// perform more classification
console.log('Classification Results:', results);
} catch (error) {
console.error('Error during classification:', error);
}
})();
```
---
## ⚙️ Configuration Options
| Option | Description | Default |
|----------------------------|---------------------------------------------------|------------------|
| `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:
```bash
git clone https://github.com/a-tokyo/ai-zero-shot-classifier.git
```
Install dependencies:
```bash
yarn install
```
Run the development server:
```bash
yarn start
```
Run tests:
```bash
yarn test
```
---
## 🤝 Contributing
Contributions are welcome! Feel free to open issues or submit pull requests.