Crates.io | tf-idf-vectorizer |
lib.rs | tf-idf-vectorizer |
version | |
source | src |
created_at | 2025-02-08 17:59:46.822612+00 |
updated_at | 2025-04-15 15:54:55.987016+00 |
description | A simple search and analyze engine |
homepage | |
repository | https://github.com/371tti/tf-idf-vectorizer |
max_upload_size | |
id | 1548252 |
Cargo.toml error: | TOML parse error at line 17, column 1 | 17 | autolib = false | ^^^^^^^ unknown field `autolib`, expected one of `name`, `version`, `edition`, `authors`, `description`, `readme`, `license`, `repository`, `homepage`, `documentation`, `build`, `resolver`, `links`, `default-run`, `default_dash_run`, `rust-version`, `rust_dash_version`, `rust_version`, `license-file`, `license_dash_file`, `license_file`, `licenseFile`, `license_capital_file`, `forced-target`, `forced_dash_target`, `autobins`, `autotests`, `autoexamples`, `autobenches`, `publish`, `metadata`, `keywords`, `categories`, `exclude`, `include` |
size | 0 |
このライブラリは、Rustで実装されたTF-IDFベクトライザーです。
TF-IDF (Term Frequency-Inverse Document Frequency) は、文書中の各単語の重要度を評価するための有力な手法で、情報検索やテキストマイニング、自然言語処理の分野で広く利用されています。
本ライブラリは、高速な並列処理と効率的なアルゴリズムにより、大規模なコーパスに対しても実用的なパフォーマンスを提供します。
ライブラリは以下のプロセスでTF-IDFを算出します:
内部実装では TokenFrequency
によりこれらの計算が管理され、Rayon ライブラリを用いた並列処理で高速かつスケーラブルに動作します。
Cargo.tomlに以下の依存関係を追加してください:
[dependencies]
tf-idf-vectorizer = "0.1.0"
下記は、インデックス作成とドキュメントの追加、検索クエリの生成例です。
use tf_idf_vectorizer::vectorizer::index::Index;
fn main() {
// インデックスを初期化
let mut index = Index::new();
// 例: フルーツに関するドキュメントを追加
index.add_doc("doc1".to_string(), &["apple", "banana", "orange"]);
// 検索クエリの生成例("apple" と "banana" を含む文書を検索)
let query = index.generate_query(&["apple", "banana"]);
let results = index.search_cosine_similarity_parallel(&query, 16);
println!("検索結果: {:?}", results);
}
TokenFrequency
は、各ドキュメント内の単語の出現情報を管理し、TF/IDFの計算を行います。
use tf_idf_vectorizer::vectorizer::token::TokenFrequency;
fn main() {
// TokenFrequency の初期化
let mut tf = TokenFrequency::new();
// ドキュメント内の単語を登録
tf.add_tokens(&["apple", "banana", "apple", "orange"]);
// "apple" の出現頻度 (TF) を取得
println!("apple の頻度: {}", tf.tf_token("apple"));
// 仮に全ドキュメント数を10としてIDFを計算
for (token, idf) in tf.idf_vector_ref_str(10) {
println!("Token: {}, IDF: {:.4}", token, idf);
}
}
以下のコード例は、TFIDFVectorizer の基本的な利用方法を示しています。
各文書からコーパスを構築し、特定の単語リストに対して TF-IDF ベクトルを算出する手順を確認できます。
use tf_idf_vectorizer::vectorizer::tfidf::TFIDFVectorizer;
fn main() {
// TFIDFVectorizer の新規作成
let mut vectorizer = TFIDFVectorizer::new();
// サンプルのコーパス(各文書は単語のスライス)
let documents = vec![
vec!["rust", "高速", "パフォーマンス", "並列処理"],
vec!["tf-idf", "ベクトライザー", "テキストマイニング"],
vec!["rust", "tf-idf", "アルゴリズム", "効率的"],
];
// 各文書からトークンを追加してコーパスを構築
for doc in &documents {
vectorizer.add_corpus(doc);
}
// 特定の単語リストに対してTF-IDFベクトルを算出
let tokens = vec!["rust", "tf-idf", "並列処理"];
let tfidf_vector = vectorizer.tf_idf_vector(&tokens);
println!("TF-IDF Vector: {:?}", tfidf_vector);
}
TFIDFVectorizer::new()
新規のベクトライザーを生成します。
add_corpus(tokens: &[&str])
渡されたトークンをコーパスに追加し、内部の頻度データを更新します。
tf_idf_vector(tokens: &[&str]) -> Vec<(&str, f64)>
指定されたトークンリストからTF-IDFベクトルを算出し、得点順にソートして返します。
TokenFrequency::new()
新しい TokenFrequency のインスタンスを生成します。
add_tokens(tokens: &[&str])
ドキュメント内のトークンを登録し、出現カウントを更新します。
tf_token(token: &str) -> f64
指定したトークンの正規化された出現頻度 (TF) を計算して返します。
idf_vector_ref_str(total_doc_count: u64) -> Vec<(&str, f64)>
コーパス全体に基づき、各トークンの逆文書頻度 (IDF) を算出して返します。
主要なコンポーネントは以下の通りです:
Index
):
TokenFrequency
):
各コンポーネントはモジュールごとに分離されており、拡張や機能のカスタマイズも容易に行えます。
このプロジェクトは MIT ライセンスの下で提供されています。