next up previous contents
Next: ベクトル空間法の実行と2値化処理 Up: データ整理 Previous: シラバスと用語の行列生成   目次


主成分数の導出と近似行列の生成

5.1.3 節で実験に必要なデータが整ったので、次はこれを用いてLSAを行う。これまではPerlを用いてプログラムを組んできたが、LSAに関する箇所ではR(Ver.2.7.1)を用いた。Rはベクトル処理を基本とするプログラミング言語であり、統計解析を始めとする計算処理に非常に強い。また多くの関数が用意されており、複雑な計算も少ない命令で実行してくれるという特徴がある。この言語はオークランド大学のR. Ihaka氏とR. Gentleman氏により作られ、オープンソースかつフリーのソフトウェアである。

このRをインストールしてLSAを行ったが、それにはまず主成分数を求めることから始まる。主成分数の求め方には3.1 項にいくつか示したが、どの方法が良いかは判別しがたく、2は他の方法よりも基準が曖昧であることから1と3を利用することにした。

1では固有値が必要となるので、これは主成分分析を行う関数prcompにより求めた。引数としてはCSVファイルに記述した表 5.4を与え、返り値として固有値・固有ベクトル・平均値・標準偏差・主成分得点を得る。ここで固有値(分散)が1を越えたものを採用したところ、複合語無・重要度有の時には主成分数は16個となった。

3では累積寄与率が必要となるので、prcompを適用した後にsummaryという関数を用いてこれを求めた。返り値はリスト型の標準偏差・寄与率・累積寄与率であり、この累積寄与率が80%を越える主成分までを用いることにした。その結果、複合語無・重要度有の時には主成分数は26個となった。

主成分数が求まったので、次はsvdという関数により特異値分解を実行した。ここではタームベクトル・特異値のベクトル・文書ベクトルが返り値として得られるが、式(3.13)の通り使用するのはタームベクトルだけなので、これを取り出して表 5.4の近似行列を生成した。



Deguchi Lab. 2011年3月4日