[1] [DFN[SuikaWiki4]] は、 [[SuikaWiki]] の4つ目のメジャー・バージョンでした。

* シェリング

** /i/$id;terms → ちゃんと実装したので消した

文書の tfidf データ & 転置索引データを更新する

要・ID ロック (文書 XML キャッシュデータ作成のため)

要・ID ロック (文書 tfidf データ更新のため)

要・転置索引ロック

ちょっと遅い

** /i/$id;related-$id2, /i/$id;unrelated-$id2

$id と $id2 は関係がある、またはないと学習させる

要・語重みロック (語重みベクトル更新のため)

** /g/$nid

** /g/id$id

要・ID ロック (グラフノード対応情報取得のため)

要・グラフロック (グラフノード追加のため)

** /n/$names;search → 本実装完了

$names を含む文書を表示する


** 目標

- 各 Wiki page (ID ベース) に関連 Wiki page (ID ベース) のリンクを出す
- 各 Wiki page (名前ベース) に含む Wiki page (名前ベース) のリンクを出す

** 表示 (ID ベース)

- Wiki page ID からノード ID を引く
- ノード ID から隣接ノード ID を引く
- 隣接ノード ID から Wiki page ID を引く

** 表示 (名前ベース) → 実装済み

- Wiki page 名から転置索引を開く
- 転置索引から Wiki page ID を得る

** 新規追加

- Wiki page ID に対応するノード ID を決定する (要・グラフロック)
-- 空きノードがあれば、その ID にする
-- 空きノードがなければ、グラフにノードを追加し、そのうちの1つの ID にする
- Wiki page 内容から文書 tfidf データを作成する (要・ID ロック) → 実装済み
- tfidf 転置索引を更新する (要・転置索引ロック) → 実装済み

(最後の2ステップは少し遅い)

** 文書更新

- Wiki page 内容から文書 tfidf データを更新する (要・ID ロック) → 実装済み
- tfidf 転置索引を更新する (要・転置索引ロック) → 実装済み

(少し遅い)

** シェリング更新

- ある Wiki page ID について
- Wiki page ID に対応するノード ID を決定する
-- ノード ID がなければ停止する
- ノードの満足値を決定する
-- 2ノード間の満足・不満足判定を行い、満足率を求める
- 満足値が閾値を下回らない場合、停止する
- ノード移動を行う (要・グラフロック、要・ID ロック)
-- 隣接ノード幅優先探索、最大 20 ノードくらい?、見つからなければ停止する
-- ID・ノード関連付け情報を更新する

** 満足判定学習

- ある 2 Wiki page IDs について、
- tfidf データを読み込み、学習を行い、
- 語重みベクトルを更新する (要・語重みロック)

* tfidf データベース → 本実装済み

$db->id_tfidf isa SWE::DB::IDText

CVS: なし

キーは文書 ID、値は SWE::Data::FeatureVector を直列化した文字列。

* 転置索引データベース → 本実装済み

$db->name_inverted_index isa SWE::DB::HashedIndex

CVS: なし

キーは語、値は文書 ID と文書の TF・IDF 値のハッシュ。

* メモ

[2] 
sw
sw4 ids 12956 + sw3 14175
= 27131
