Эта статья является частью серии учебников на TXTAI платформа семантической поисковой платформы AI.
TXTAI API – это веб-сервис, поддерживаемый Fastapi. . Все функциональные возможности TXTAI, включая поиск сходства, добывающую маркировку QA и нулевую съемку, доступны через API.
Эта статья устанавливает TXTAI API и показывает пример, используя каждый из поддерживаемых языковых привязки для TXTAI.
Установить TXTAI
и все зависимости. Поскольку эта статья использует API, нам нужно установить пакет API дополнений.
pip install txtai[api]
Первый метод, который мы попробуем – это прямой доступ через Python. Мы будем использовать маркировку с нулевым ударом для всех примеров здесь. См. Эта статья для более подробной информации о классификации с нулевой выстрелом.
import os from IPython.core.display import display, HTML from txtai.pipeline import Labels def table(rows): html = """ """ html += "
Text | Label |
---|---|
%s | %s |
Примените этикетки для текста
data = ["Wears a red suit and says ho ho", "Pulls a flying sleigh", "This is cut down and decorated", "Santa puts these under the tree", "Best way to spend the holidays"] # List of labels tags = ["🎅 Santa Clause", "🦌 Reindeer", "🍪 Cookies", "🎄 Christmas Tree", "🎁 Gifts", "👪 Family"] # Render output to table table([(text, tags[labels(text, tags)[0][0]]) for text in data])
Носит красный костюм и говорит холди | 🎅 Santa Prose. |
Тянет летающие сани | 🦌 оленей |
Это сокращено и украшено | 🎄 Рождественская елка |
Санта кладет эти под дерево | 🎁 подарки |
Лучший способ провести праздники | 👪 семья |
Еще раз мы видим силу маркировки с нулевым выстрелом. Модель не обучалась любым данным, специфичным для этого примера. Еще поражен тем, сколько знаний хранится в больших моделях NLP.
Теперь мы начнем экземпляр API для запуска оставшихся примеров. API нужен файл конфигурации для запуска. Пример ниже упрощена только для включения маркировки. Посмотреть эта ссылка Для более подробного примера конфигурации.
Экземпляр API запускается на заднем плане.
CONFIG=index.yml nohup uvicorn "txtai.api:app" &> api.log & sleep 90
TXTAI.JS доступен через NPM и может быть установлен следующим образом.
npm install txtai
Для этого примера мы будем клонировать проект TXTAI.JS для импорта конфигурации примерной сборки.
git clone https://github.com/neuml/txtai.js
Создать labels.js.
Следующий файл представляет собой JavaScript версию примера этикеток.
import {Labels} from "txtai"; import {sprintf} from "sprintf-js"; const run = async () => { try { let labels = new Labels("http://localhost:8000"); let data = ["Wears a red suit and says ho ho", "Pulls a flying sleigh", "This is cut down and decorated", "Santa puts these under the tree", "Best way to spend the holidays"]; // List of labels let tags = ["🎅 Santa Clause", "🦌 Reindeer", "🍪 Cookies", "🎄 Christmas Tree", "🎁 Gifts", "👪 Family"]; console.log(sprintf("%-40s %s", "Text", "Label")); console.log("-".repeat(75)) for (let text of data) { let label = await labels.label(text, tags); label = tags[label[0].id]; console.log(sprintf("%-40s %s", text, label)); } } catch (e) { console.trace(e); } }; run();
Пример накладки и запуска
cd txtai.js/examples/node npm install npm run build
node dist/labels.js
Text Label --------------------------------------------------------------------------- Wears a red suit and says ho ho 🎅 Santa Clause Pulls a flying sleigh 🦌 Reindeer This is cut down and decorated 🎄 Christmas Tree Santa puts these under the tree 🎁 Gifts Best way to spend the holidays 👪 Family
Программа JavaScript показывает те же результаты, что и при наклонности бега через Python!
txtai.java объединяет со стандартными инструментами сборки Java (Richle, Maven, SBT). Ниже показано, как добавить TXTAI в качестве зависимости до серии.
implementation 'com.github.neuml:txtai.java:v2.0.0'
Для этого примера мы клонируем проект Txtai.java для импорта примерной конфигурации сборки.
git clone https://github.com/neuml/txtai.java
Создать labelsdemo.java
Следующий файл представляет собой Java версию примера этикеток.
import java.util.Arrays; import java.util.ArrayList; import java.util.List; import txtai.API.IndexResult; import txtai.Labels; public class LabelsDemo { public static void main(String[] args) { try { Labels labels = new Labels("http://localhost:8000"); Listdata = Arrays.asList("Wears a red suit and says ho ho", "Pulls a flying sleigh", "This is cut down and decorated", "Santa puts these under the tree", "Best way to spend the holidays"); // List of labels List tags = Arrays.asList("🎅 Santa Clause", "🦌 Reindeer", "🍪 Cookies", "🎄 Christmas Tree", "🎁 Gifts", "👪 Family"); System.out.printf("%-40s %s%n", "Text", "Label"); System.out.println(new String(new char[75]).replace("\0", "-")); for (String text: data) { List label = labels.label(text, tags); System.out.printf("%-40s %s%n", text, tags.get(label.get(0).id)); } } catch (Exception ex) { ex.printStackTrace(); } } }
cd txtai.java/examples ../gradlew -q --console=plain labels 2> /dev/null
Text Label --------------------------------------------------------------------------- Wears a red suit and says ho ho 🎅 Santa Clause Pulls a flying sleigh 🦌 Reindeer This is cut down and decorated 🎄 Christmas Tree Santa puts these under the tree 🎁 Gifts Best way to spend the holidays 👪 Family
Программа Java демонстрирует те же результаты, что и при наклонности бега через Python!
TXTAI.RS доступен через CRATES.IO и может быть установлен, добавив следующее в свой файл Cargo.toml.
[dependencies] txtai = { version = "2.0" } tokio = { version = "0.2", features = ["full"] }
Для этого примера мы клонируем проект TXTAI.RS для импорта конфигурации примерной сборки. Сначала нам нужно установить ржавчину.
apt-get install rustc git clone https://github.com/neuml/txtai.rs
Создать labels.rs.
Следующий файл представляет собой форму ржавчины примера этикеток.
use std::error::Error; use txtai::labels::Labels; pub async fn labels() -> Result<(), Box> { let labels = Labels::new("http://localhost:8000"); let data = ["Wears a red suit and says ho ho", "Pulls a flying sleigh", "This is cut down and decorated", "Santa puts these under the tree", "Best way to spend the holidays"]; println!("{:<40} {}", "Text", "Label"); println!("{}", "-".repeat(75)); for text in data.iter() { let tags = vec!["🎅 Santa Clause", "🦌 Reindeer", "🍪 Cookies", "🎄 Christmas Tree", "🎁 Gifts", "👪 Family"]; let label = labels.label(text, &tags).await?[0].id; println!("{:<40} {}", text, tags[label]); } Ok(()) }
Пример накладки и запуска
cd txtai.rs/examples/demo cargo build
cargo run labels
Text Label -------------------------------------------------------------------------------- Wears a red suit and says ho ho 🎅 Santa Clause Pulls a flying sleigh 🦌 Reindeer This is cut down and decorated 🎄 Christmas Tree Santa puts these under the tree 🎁 Gifts Best way to spend the holidays 👪 Family
Программа ржавчины показывает те же результаты, что и при наклонности бега через Python!
TXTAI.GO может быть установлен путем добавления следующего оператора импорта. При использовании модулей TXTAI.GO будет автоматически установлен. В противном случае используйте Go Get
Отказ
import "github.com/neuml/txtai.go"
Для этого примера мы создадим автономный процесс для маркировки. Сначала нам нужно установить Go.
apt install golang-go go get "github.com/neuml/txtai.go"
Создать label.go.go.
Следующий файл – это версия этикеток.
package main import ( "fmt" "strings" "github.com/neuml/txtai.go" ) func main() { labels := txtai.Labels("http://localhost:8000") data := []string{"Wears a red suit and says ho ho", "Pulls a flying sleigh", "This is cut down and decorated", "Santa puts these under the tree", "Best way to spend the holidays"} // List of labels tags := []string{"🎅 Santa Clause", "🦌 Reindeer", "🍪 Cookies", "🎄 Christmas Tree", "🎁 Gifts", "👪 Family"} fmt.Printf("%-40s %s\n", "Text", "Label") fmt.Println(strings.Repeat("-", 75)) for _, text := range data { label := labels.Label(text, tags) fmt.Printf("%-40s %s\n", text, tags[label[0].Id]) } }
go run labels.go
Text Label -------------------------------------------------------------------------------- Wears a red suit and says ho ho 🎅 Santa Clause Pulls a flying sleigh 🦌 Reindeer This is cut down and decorated 🎄 Christmas Tree Santa puts these under the tree 🎁 Gifts Best way to spend the holidays 👪 Family
Программа GO показывает те же результаты, что и при наклонности бега через Python!
Оригинал: “https://dev.to/neuml/txtai-api-gallery-20f8”