SlothLib.LinearAlgebra.FeatureVector 特徴ベクトル
SlothLib.LinearAlgebra.FeatureVector でできること ► 特徴ベクトル 次元は可変に増やすことができる 次元としてあらゆるデータ型が利用可能 ► string 型がよく使われる=文書の特徴ベクトル ► 特徴ベクトルの作成 配列を与えて出現回数を数える ► 特徴ベクトルの計算 特徴ベクトルの足し算、掛け算、 log の計算など コサイン類似度、ユークリッド距離計算など
特徴ベクトルのインターフェー ス ► IVector ► IVector 全ての特徴ベクトルクラスのインタフェース ► IVector ► IVector 次元が文字列の特徴ベクトル double this[string key] ► 次元 key のベクトルの重み string[] GetSortedKeyList() ► 重みが大きい順にソートされた次元の配列を取得
BasicVector クラス ► 基本となる特徴ベクトルのクラス ► 0 ベクトルを作るコンストラクタ IVector v = new BasicVector (); ► ある次元に値を設定 v[ “ 京都大学 ” ] = 5.0; ► ある次元の値を取得 double val = v[ “ 京都大学 ” ]; ► ベクトルのコピーを行うコンストラクタ IVector v2 = new BasicVector (v);
FrequencyVector クラス ► BasicVector を継承するクラス ► コンストラクタで配列を受け取り出現回数を数え る string[] array = { “ 京都 ”, “ 京都 ”, “ 東京 ”, “ 大阪 ” }; IVector v = new FrequencyVector (array); ► 「京都」は配列に 2 度出現 Console.Write(v[ “ 京都 ” ].ToString()); // 2 と表示 ► 「神戸」は配列に 2 度出現 Console.Write(v[ “ 神戸 ” ].ToString()); // 0 と表示
ベクトルの計算 ► 足し算 : AddVector クラス IVector va = new AddVector (v1, v2); IVector vb = new AddVector (v1, v2, v3); ► 掛け算 : MultiplyVector クラス IVector vc = new MultiplyVector (v1, v2); IVector vd = new MultiplyVector (5, v2, v3); ► 対数 : LogVector クラス IVector ve = new LogVector (v1);
ベクトルの正規化 ► 長さを 1 : CosNormVector クラス IVector vf = new CosNormVector (v1); ► 最大の重みを 1 : MaxNormVector クラス IVector vg = new MaxNormVector (v1); ► 重みの合計を 1 : SumNormVector クラ ス IVector vh = new SumNormVector (v1); ► 最大の重みを 1 、最小の重みを 0.5 : AugNormVector クラス IVector vi = new AugNormVector (v1);
DocumentFrequencyVector<T> ► 要するに文書頻度 (DF) を求める IDocumentFrequencyVector インターフェース ► VectorCount プロパティ : もとのベクトル数 ► IDF ベクトルの作成法 IDocumentFrequencyVector df = new DocumentFrequencyVector (vecList); IVector idf = new InverseDFVector(df); ► TF-IDF ベクトルの作成 IVector tfidf = new MultiplyVector(tf, idf);
距離や類似度 ► VectorOperator クラス 各種計算用のクラス ► GetEuclideanDistance : ユークリッド距離 ► GetCosine : コサイン類似度 ► その他 p- ノルム、 Max ノルム 内積、マンハッタン距離、 Jaccard 係数、 Dice 係数、 ベクトルの和、ベクトルの差 負 ベクトルの整数倍