ts-content-based-recommender
Version:
A TypeScript-based content-based recommender with multilingual support (Japanese & English). Forked from content-based-recommender.
151 lines • 4.25 kB
TypeScript
/**
* プロジェクト内で使用される型定義
*/
/**
* 文書データの基本インターフェース
*/
export interface Document {
/** 文書の一意識別子 */
id: string;
/** 文書の内容 */
content: string;
/** その他の任意プロパティ */
[key: string]: any;
}
/**
* ContentBasedRecommenderの設定オプション
*/
export interface RecommenderOptions {
/** 最大ベクトルサイズ(デフォルト: 100) */
maxVectorSize?: number;
/** 保持する類似文書の最大数 */
maxSimilarDocuments?: number;
/** 類似度の最小閾値(0-1) */
minScore?: number;
/** デバッグモードの有効化 */
debug?: boolean;
/** 使用する言語(デフォルト: 'en'、日本語: 'ja') */
language?: 'en' | 'ja';
/** トークンフィルターのオプション */
tokenFilterOptions?: TokenFilterOptions;
}
/**
* トークンフィルターの設定オプション
*/
export interface TokenFilterOptions {
/** 重複除去を行うかどうか(デフォルト: true) */
removeDuplicates?: boolean;
/** ストップワード除去を行うかどうか(デフォルト: true) */
removeStopwords?: boolean;
/** カスタムストップワードリスト */
customStopWords?: string[];
/** 最小トークン長(この長さ未満のトークンを除外) */
minTokenLength?: number;
/** 品詞フィルター(日本語のみ、指定した品詞のみを保持) */
allowedPos?: string[];
}
/**
* 類似文書の情報
*/
export interface SimilarDocument {
/** 文書ID */
id: string;
/** 類似度スコア */
score: number;
}
/**
* 学習済みモデルのエクスポートデータ
*/
export interface ExportedModel {
/** 設定オプション */
options: RecommenderOptions;
/** 類似度データ */
data: Record<string, SimilarDocument[]>;
}
/**
* プリプロセス済み文書データ
*/
export interface ProcessedDocument {
/** 文書ID */
id: string;
/** トークン化された単語の配列 */
tokens: string[];
/** 元の文書データ */
originalDocument: Document;
}
/**
* TF-IDFの計算結果
*/
export interface TfIdfResult {
/** 単語 */
term: string;
/** TF-IDF値 */
tfidf: number;
/** 文書ID */
documentId: string;
}
/**
* トークナイザーインターフェース
*/
export interface ITokenizer {
/**
* テキストをトークン化する
* @param text 対象テキスト
* @returns トークン配列
*/
tokenize(text: string): Promise<string[]>;
}
/**
* 日本語の詳細トークン情報
*/
export interface DetailedJapaneseToken {
/** 品詞 */
pos: string;
/** 表層形 */
surface_form: string;
/** 基本形 */
basic_form?: string;
}
/**
* トークンフィルターインターフェース
*/
export interface ITokenFilter {
/**
* トークン配列をフィルタリングする
* @param tokens フィルタリング対象のトークン配列
* @returns フィルタリング済みトークン配列
*/
filter(tokens: string[]): string[];
}
/**
* 英語専用トークンフィルターインターフェース
*/
export interface IEnglishTokenFilter extends ITokenFilter {
/**
* N-gram対応フィルタリング(英語用)
* @param tokens トークン配列
* @returns フィルタリング済みトークン配列
*/
filterWithNgrams(tokens: string[]): string[];
}
/**
* 日本語専用トークンフィルターインターフェース
*/
export interface IJapaneseTokenFilter extends ITokenFilter {
/**
* 品詞情報を使用したフィルタリング(日本語用)
* @param tokens 品詞情報付きトークン配列
* @returns フィルタリング済みトークン配列
*/
filterWithPos(tokens: DetailedJapaneseToken[]): string[];
}
/**
* 処理パイプライン
*/
export interface ProcessingPipeline {
/** トークナイザー */
tokenizer: ITokenizer;
/** トークンフィルター */
filter: ITokenFilter;
}
//# sourceMappingURL=index.d.ts.map