Fessの類似ドキュメントAPIで文書のコピーを探す

Fess 15.10の開発版に、検索結果と内容がほぼ同じ別URLの文書を調べるAPIが入りました。開発版の検索結果で取得した文書IDを使い、たとえば GET /api/v2/documents/a1b2c3/similar?num=5 を呼びます。テーマでリンクを出すには、テーマ側でこのAPIを呼び出す処理を追加します。

件数と空の結果を読み分ける

照合には既存の内容署名 content_minhash_bits を使います。署名が同じ候補をURL順で返し、元の文書と同じURLは除きます。内容を編集して署名が変わった文書や、話題だけが近い文書は対象外です。元の文書が見えない場合は404、内容や語がない場合や検索エンジンにCodeLibsプラグインがない場合は200で空の配列です。追加の再インデックスは不要です。

元文書と候補にロール、仮想ホスト、追加クエリの絞り込みがかかり、ログイン必須の設定も適用されます。検索APIと同じ方法でアクセストークンを使えます。 num の初期値は10、上限は20と paging.search.page.max.size の小さい方で、取得できるのは1ページです。呼び出し制限 api.search.similar.rate.limit.per.minute は初期値30、0で解除できます。429の場合は Retry-After に従います。

Fess #3734 / 15.10ドキュメント #626

FessのFileSearchでフォルダーツリーの起点を指定する

共有サーバー全体を展開せず、部門のフォルダーから探し始めたいときに使える設定です。Fess 15.10の開発版と、対応するFileSearchテーマのmainに変更が入りました。

テーマ設定にURLの接頭辞を入力する

管理画面の「システム → 全般 → テーマ設定」に、たとえば filesearch.roots=smb://server/share/Main Repository/Documents/|file:/data/My%20Docs/ と1行で入力します。区切りは | です。接頭辞は検索結果の url フィールドに合わせ、SMBの空白やファイルURLの %20 をそのまま使います。保存後に検索画面を開き直して確認します。Fessの再起動は不要です。初期値は未設定で、従来どおりホストが起点です。

ホームと検索結果のツリーが指定先から始まります。最大20件、各500文字、URLエンコード後の合計は2048バイトまでです。重複や親の起点に含まれる指定は整理され、検索条件が長すぎる指定も除外されます。検索結果の件数が0と判明した起点は表示されません。起点は表示の設定なので、検索の閲覧権限はロールで管理します。

Fess #3730 / fess-themes #97 / 15.10ドキュメント #626

FioneのAutoML改善案で複数シードと上位候補の平均化を確認する

FioneのAutoMLに、余った学習時間で乱数シードを変えて学習し直す処理と、同じアルゴリズムの上位3候補をアンサンブルへ渡す改善案が出ています。

余った時間で異なるシードのモデルを平均する

最終的な全データ再学習を終えた後、時間とモデルサイズに余裕があれば、ブースティングや森林モデルを別のシードで追加学習します。予測値だけでなく、重要度や寄与度も平均します。Linearはシードを変えても同じ結果になるため繰り返しません。DeepLearningも全データへの最終再学習を行わない既存の扱いで、この追加再学習の対象外です。

提案コードの初期値はBAG_EXTRA=4で、通常の1回に最大4回を追加します。BAG_TIME_FACTOR=2.0により、追加学習へ進むには最初の再学習時間の2倍以上の残り時間を必要とします。追加される回数は残り時間やサイズで変わり、必ず5モデルになるわけではありません。これらは内部定数で、学習画面やTrainConfigに新しい設定項目を追加したものではありません。

各アルゴリズムの上位3試行を候補にする

TOP_TRIALS=3として、それぞれの探索の上位3試行までをアンサンブル選択に渡します。内部の候補名はFamily、Family#2、Family#3となり、リーダーボードもアルゴリズムごとに最大3行になります。すべての候補が最終モデルへ採用されるとは限りません。

一方、keep_cv_modelsで保持する交差検証モデルは各アルゴリズムの最良試行だけです。表示される全候補のモデルを保存する設定ではありません。

精度だけでなく予測時間とサイズを比較する

この案を含むコードの検証では、同じデータ分割と学習時間を使い、学習から分離したテストデータで損失と予測時間を比較します。TrainConfigの既定値はmax_runtime_secs=3600、nfolds=5、seed=0、keep_cv_models=falseです。追加学習のために時間制限を必ず延ばす必要があるという意味ではありません。

追加モデルが増えると保存サイズと予測コストが増えます。追加分は各メンバー40MiB、メンバー合計90MiBの制限を実測でも満たす場合だけ保持します。ただし既存処理には小さい候補がないときに制限超過の1メンバーを通知付きで残す経路があり、出力ファイルの絶対的な上限保証ではありません。追加再学習が失敗した場合はrefit_error通知を確認します。

PRの15データセット・3分割の比較では、両変更を合わせた損失改善は平均約0.45%と小さく、すべてのデータで向上したわけではありません。交差検証の表示値だけで判断せず、予測APIの応答時間、メモリー、保存容量まで含めて採用を判断します。

関連PR