Fioneで日付文字列と構造化IDをAutoMLに渡す

Fione v2の開発版で、日時が文字列のまま入ったCSVや、区切り記号を含む識別子を扱う処理が変わりました。

日付とIDの列を残して学習する

4桁の年を含む日付文字列を入力に入れると、列単位で日付として判定します。最初の数値が12を超える行があり、2番目が12を超える行がなければ日を先に読みます。年が先に来る形式は年を起点に読み、曖昧なデータは年月日の順序が明確な形式にそろえてから渡します。時刻を含む列の「時」は基本特徴量です。

group_12 のような値が95%以上で同じ2〜4項目に分かれる文字列は、最大2列まで、グループの学習行数や項目の頻度などを作る候補になります。学習画面の派生特徴量(feature_engineering、初期値は有効)を使い、評価で改善した候補が採用されます。ほぼ一意な項目は除外され、学習時に見ていないIDの項目は欠損になることがあります。一方、通常の頻度特徴量では未観測値を最もまれな学習時の出現割合として扱います。変更前に保存したモデルの頻度処理は従来のままなので、新しい処理は再学習で確認します。

分析画面と学習条件の提案では、非負の回帰目的列の歪度が1.0以上で log1p を提案します。これは提案のしきい値です。相対誤差を重視する場合と絶対的な誤差を重視する場合では結果が異なるため、適用前後を使う評価指標で比べます。

Fione #40 / Fione #41 / Fione #42 / Fione #43

FioneのAutoMLで文章を扱うTextLinearを試す

問い合わせ文などを分類や回帰の入力にすると、Fioneの開発版では線形モデルのTextLinearも探索します。文章列の判定は語数の中央値が5語以上です。前回紹介した話題特徴量が文章を少数の数値に圧縮するのに対し、TextLinearは単語と隣接2語のTF-IDFを他の列と組み合わせ、分類はロジスティック回帰、回帰はリッジ回帰で学習します。語彙は交差検証の各学習分割で作ります。

学習結果で候補を確認する

文章列を入力に含めてAutoMLを実行します。標準の探索で条件を満たした列があれば候補に入ります。基本の語彙上限は列ごとに3万で、固定値です。探索時間が足りる場合は、最大10万語彙の版、文字の2〜5グラムを加える版、派生特徴量を外す版も候補になります。後段の配分は探索時間の15%で、文字版は空白で区切れない列や推定500万文字を超える列が対象外です。

時間やモデルサイズの制限で候補が試されないことがあります。疎な線形モデルの学習ではBLASのスレッド数を内部で制限します。学習結果にどの候補が出たかを確認し、採用後の性能は学習に使っていない文章でも評価します。これらはFione v2の開発変更です。

Fione #39 / Fione #44 / Fione #46

Fess 15.10に向けて検索画面の設定取得とログイン状態を確認する

Fessのv2 APIで独自の検索画面を作っている場合は、画面の初期設定を取得するリクエストと、利用者のお気に入りや履歴を扱うリクエストを分けて確認すると、認証状態ごとの違いが分かります。Fess 15.10に向けた開発で、画面の言語タグと利用者コードの扱いが修正されました。アクセストークンでテーマ設定を取得する変更は確認時点で提案段階です。

テーマ設定を取得する

GET /api/v2/ui/config の theme_settings には、管理画面の「システム」→「全般」→「テーマ設定」の内容が入ります。 login.required の初期値は false です。 true にした環境でもエンドポイント自体は呼び出せますが、ゲストにはテーマ設定として空のオブジェクト {} が返ります。

提案中の変更では、ログインセッションを持たないクライアントも、登録済みで有効期限内のFessアクセストークンを Authorization: Bearer … で送ればテーマ設定を取得できます。トークンが無効または期限切れの呼び出しは、テーマ設定の判定ではゲストとして扱われます。対応ビルドで確認する際は、管理画面に値を1件入れたうえで、セッションあり・有効なトークンのみ・期限切れ・どちらもなしの応答を比較します。

お気に入りと履歴はログインセッションで扱う

マージ済みの変更では、ログインユーザーのものと判定した userCode を未ログインのリクエストがパラメーターやCookieで送っても、Fessはそのコードを利用者の識別に使いません。ログイン中の利用者はセッションから識別され、ゲストは匿名利用者向けのIDで扱われます。ユーザーごとのお気に入りや履歴を引き継ぐ画面では、ログイン時に得たコードを別の匿名リクエストに渡す実装から、ログインセッションを維持する実装に切り替えます。テーマ設定を取得できるトークンで、利用者のログインセッションが作られるわけではありません。

表示言語のタグをそのまま使う

Tomcat 11.0.27で Accept-Language: sr-Latn などを受けたとき、 ui_locale が sr-x-lvariant-LATN になるケースも修正されています。セッションに保存したロケールも対象です。画面で言語を切り替える場合は、セッションに別の言語が保存されていない状態で sr-Latn や zh-Hant-TW を送り、表記体系を含むタグが返ることを確認します。

関連PR

  • 表示言語タグの補正 Fess #3745
  • ログインユーザーの利用者コードをセッションから取得 Fess #3748
  • 有効なトークンへのテーマ設定の返却を提案 Fess #3749
  • 15.10のAPI変更を移行ガイドに追記する提案 fess-docs #632