tf_idf_vectorizer/lib.rs
1/// This crate is a Document Analysis Engine using TF-IDF Vectorizer.
2pub mod vectorizer;
3pub mod utils;
4
5
6/// TF-IDF Vectorizer
7/// 本クレートの最上位構造体であり、TF-IDFベクトライザーの主要な機能を提供します。
8/// この構造体は、ドキュメント集合をTF-IDFベクトルに変換し、類似度計算や検索機能をサポートします。
9/// 内部に以下のデータを保持します:
10/// - コーパスのボキャブラリ
11/// - 各ドキュメントのスパースTFベクトル
12/// - TFベクトルの単語マップ
13/// - IDFベクトルのキャッシュ
14/// - TF-IDF計算エンジン
15/// - ドキュメントの逆Index
16///
17/// `TFIDFVectorizer<N, K, E>`は以下のジェネリックパラメータを持ちます:
18/// - `N`: ベクトルのパラメータ型(eg. f32, f64, u8, u16, u32)
19/// - `K`: ドキュメントキーの型(eg. String, usize)
20/// - `E`: TF-IDF計算エンジンの型(eg. DefaultTFIDFEngine)
21///
22/// インスタンス作成時に`Arc<Corpus>`としてコーパス参照を渡す必要があります。
23/// `Corpus`は任意で差し替えたり、複数の`TFIDFVectorizer`インスタンス間で共有できます。
24///
25/// # Serialization
26/// サポートしています。
27/// このとき、`Corpus`参照も同封されます。
28/// シリアライズ可能なデータ構造として`TFIDFData`を使用することもできます。
29/// `TFIDFData`は`Corpus`参照を持たないため、`Corpus`と分離して保存したりできます。
30///
31/// # Deserialization
32/// サポートされています。データの展開処理が含まれます。
33pub use vectorizer::TFIDFVectorizer;
34
35/// TF-IDF Vectorizer Data Structure for Serialization
36/// この構造体は、`TFIDFVectorizer`で`Corpus`参照を持たないシリアライズ可能なデータ構造を提供します。
37/// `into_tf_idf_vectorizer`メソッドを使用して`Arc<Corpus>`を渡し、`TFIDFVectorizer`に変換できます。
38///
39/// `TFIDFVectorizer`と比べて容量が小さくなります。
40///
41/// # Serialization
42/// サポートされています。
43///
44/// # Deserialization
45/// サポートされています。データの展開処理が含まれます。
46pub use vectorizer::serde::TFIDFData;
47
48/// Corpus for TF-IDF Vectorizer
49/// この構造体はドキュメント集合を管理します。
50/// ドキュメントの本文やIDは保持されず以下の情報のみを管理します:
51/// - ドキュメント数
52/// - コーパス全体での各トークンの出現ドキュメント数
53///
54/// IDF(逆文書頻度)計算の基礎データとして使用されます。
55///
56/// `TFIDFVectorizer`のインスタンス作成時に`Arc<Corpus>`として参照を渡す必要があります。
57/// Corpus`はスレッドセーフであり、複数の`TFIDFVectorizer`インスタンス間で共有できます。
58///
59/// 統計、解析では`TokenFrequency`のほうが良いです。
60/// 必要であれば`TokenFrequency`に変換できますが本質的に異なる意味をもつ統計データになることに注意してください。
61///
62/// # Thread Safety
63/// この構造体はスレッドセーフであり、複数のスレッドから同時にアクセスできます。
64/// DashMapとAtomicにより
65pub use vectorizer::corpus::Corpus;
66
67/// Token Frequency structure
68/// ドキュメント内のトークン出現頻度を解析・管理するための構造体です。
69/// 以下の情報を管理します:
70/// - 各トークンの出現回数
71/// - ドキュメント内の総トークン数
72///
73/// TF(Term Frequency)計算の基礎データとして使用されます。
74///
75/// トークンの追加、出現回数の設定、取得、統計情報の取得などの豊富な機能を提供します。
76pub use vectorizer::token::TokenFrequency;
77
78/// TF IDF Calculation Engine Trait
79/// TF-IDF計算エンジンの振る舞いを定義するためのトレイトです。
80///
81/// このトレイトを実装することで、異なるTF-IDF計算戦略を`TFIDFVectorizer<E>`に組み込むことができます。
82/// デフォルトの実装として`DefaultTFIDFEngine`が提供されており、教科書的なTF-IDF計算を行います。
83///
84/// デフォルトの実装では以下のパラメータ量子化が使用可能です:
85/// - f16
86/// - f32
87/// - f64
88/// - u8
89/// - u16
90/// - u32
91pub use vectorizer::tfidf::{DefaultTFIDFEngine, TFIDFEngine};
92
93/// Similarity Algorithm for TF-IDF Vectorizer
94/// SimilarityAlgorithm列挙型は、TF-IDFベクトライザーで使用される類似度計算アルゴリズムを定義します。
95/// 現在、以下のアルゴリズムがサポートされています:
96/// - Contains: 単純包含チェック 単語を含むかどうかを確認します
97/// - Dot: ドット積計算 長文検索に適しています
98/// - Cosine Similarity: コサイン類似度計算 固有名詞の検索に適しています
99/// - BM25 Like: BM25に類似したスコアリング 一般的な文書検索に適しています
100pub use vectorizer::evaluate::scoring::SimilarityAlgorithm;
101
102/// Query Structure for TF-IDF Vectorizer
103/// この構造体は、TF-IDFベクトライザーで使用される検索クエリを表現します。
104/// 複雑な論理条件を組み合わせてドキュメントをフィルタリングするための柔軟な手段を提供します。
105pub use vectorizer::evaluate::query::Query;
106
107/// Search Hits and Hit Entry structures
108/// 検索結果を管理するためのデータ構造です。
109/// - `Hits`: 検索結果のリストを保持し、スコアでソートする機能などを提供します。
110/// - `HitEntry`: 各検索結果エントリを表し、ドキュメントキーとスコアを含みます。
111pub use vectorizer::evaluate::scoring::{Hits, HitEntry};