6 个版本
新 0.3.3 | 2024 年 8 月 18 日 |
---|---|
0.3.2 | 2024 年 8 月 14 日 |
0.2.1 | 2024 年 2 月 28 日 |
0.1.0 | 2023 年 12 月 16 日 |
#936 在 机器学习 中排名
每月 415 次下载
在 3 个包中使用 (通过 kalosm-language)
175KB
3.5K SLoC
rbert
Rust 对 bert 句子转换器 的包装,由 Candle 实现
使用方法
use kalosm_language_model::Embedder;
use rbert::*;
#[tokio::main]
async fn main() -> anyhow::Result<()> {
let mut bert = Bert::new().await?;
let sentences = [
"Cats are cool",
"The geopolitical situation is dire",
"Pets are great",
"Napoleon was a tyrant",
"Napoleon was a great general",
];
let embeddings = bert.embed_batch(sentences).await?;
println!("embeddings {:?}", embeddings);
// Find the cosine similarity between the first two sentences
let mut similarities = vec![];
let n_sentences = sentences.len();
for (i, e_i) in embeddings.iter().enumerate() {
for j in (i + 1)..n_sentences {
let e_j = embeddings.get(j).unwrap();
let cosine_similarity = e_j.cosine_similarity(e_i);
similarities.push((cosine_similarity, i, j))
}
}
similarities.sort_by(|u, v| v.0.total_cmp(&u.0));
for &(score, i, j) in similarities.iter() {
println!("score: {score:.2} '{}' '{}'", sentences[i], sentences[j])
}
Ok(())
}
依赖项
~33–53MB
~1M SLoC