2012-01-01から1年間の記事一覧

Webページのネームを作成

ActionScriptによるFlash作りを少し勉強しましたが、Flashのページはモバイル端末では見れないことを始め、利用者にプラグインのインストールを強いることになって良くないなと感じ、またFlashの再生にCPUリソースを割くことになるのも嫌なので、今回は見送…

Webページ作成予定

技術開発部用のWebページを作ろうと思っていて、まずどのようなデザインにするか考えました。 Javascriptも考えましたが、クリックの度に新たなブラウザウィンドウが開くのがあれなので、もっと自由度の高い表示を目指す為にActionScriptでFlash作成をしてみ…

グラフ図のオプション調査

ポスター相関図をGvizを用いて出力する際、画像をpngとして出力していましたが、画像中のノードをクリックして、ある動作をさせるといった機能をpng画像ファイルに埋め込むのは難しそうなので、今回、別の形式に出力して以上の機能を持たせられないか調査し…

相関スコアからグラフ図作成

さて、マージして得られたポスターの相関スコアから、各ポスターを中心にした相関グラフを作成しました。今回はポスターの相関ごとに異なるスコアが与えられているので、上位n位までを出力するという前回のアルゴリズムは使えないので、スコアを利用する場合…

gackelくんとのスコアマージ

ポスターのアブストラクトを使って、私とは別の方法でgackelくん(ブログ:鳴いて血を吐く時鳥)がポスター間の相関度を計算したので、お互いの相関度をスコアとしてマージすることを考えました。 まず、彼が計算した相関度は全ポスターの総当たりで0〜1の値…

ポスター相関図のデザイン

ポスター相関図の作成方法は決定しましたが、できた図をパッと見て「中心はどこか」とか「周りのノードは中心からどのくらい離れているのか」といった情報が直感的に分かるように、ノードのスタイル、色等をいじってみました。 まず中心となるポスターのノー…

ポスター相関図の作成方法の転換

今までポスター相関図を作るのに、あるポスターを中心にして相関度の高いもの10個を選択、などとしてきましたが、それで出力された相関図が人によってノード数が異なるなど見栄えが異なり、またそれだけみても良い情報が見やすくなっているとは思えないもの…

新しいポスター情報から単語解析&相関図出力の並列化

今回ポスター内容が更新されたとのことなので、csvファイルをいただいてパースするところからやり直しました。 まず今まで自分でファイルから一行ずつ読込んでsplice(',')を使って調べていましたが、これをすると英文中のコンマでも区切れてしまうので、Ruby…

全種類のポスター作成

昨日の修正によって単語頻度が変わってしまったので、アルファベットを含む単語については出現頻度に重み付けを行うことにしました。これにより単語の長さ×4の初期スコアがその単語には与えられます。この状態でもう一度単語頻度を計算させていますが、数が…

単語頻度の取り直し&ポスター相関計算し直し

今まで英単語が完全マッチであるかどうかはチェックせず、たとえばRNAにNAがヒットしてしまったりしていて、関係のない単語・ポスターが集計されてしまっていたので、今回はそれをまず直しました。 正規表現で英数字以外の文字は"\W"のメタ記号が使えるので…

ポスター発表者を中心に相関図を作成

全てのポスターの関連の様子を一度に表示するのも良いですが、特定のポスターをその中から検索したり、そのポスターに関連するもののみ見れるようにしたいと考えました。今回はその為の検索プログラムと、クエリを投げるためのHTMLによるインターフェースを…

Graphvizを用いたポスター間相関図の作成

いろいろ調べてみましたがGraphvizを用いたグラフ作成が便利そうなので使ってみることにしました。また、Rubyで対応するフォーマットに出力してくれるライブラリとして、コメントでご紹介いただいたGvizを使ってみることにしました。 いままでファイルに相関…

グラフ作成ソフト再考

エッジの数やノードの数からみて、ただ相関の様子を図示しただけでは全体がぐちゃっと表示されるだけなので、部分的に拡大して相関関係をみることができるような図を作りたいと思いました。 これについて、エッジの距離やクラスタを図示してくれるプログラム…

単語を使った文章間相関計算&ネットワーク図表示

ファイルに出力する際に文字化けしていたのは、Stringを含むRubyの配列をフォーマット等何も書かずにそのまま出力させていたかららしく、配列の中身に順番にアクセスしながら出力形式を指定して書き込んだら問題なくUTF-8で読めるように出力されました。 さ…

単語リストの取得&相関解析開始

ポスターから単語リストを取得するプログラムですが、今回まず生テキストから山括弧でくくられたタグを消去することにし、その後MeCabに渡すことにしました。String.gsub!を使って正規表現マッチしたものを空白に変更しました。 MeCabに渡した後に返ってきた…

登録単語の削除

昨日設定した状態で牧場マシンで40分程度で単語リストの取得ができましたが、みてみると相変わらず「ミ」とか「ゼ」といった単語が登録されていました。なので、1文字しか無い単語について、他の単語と正規表現マッチするようならばそのエントリーを削除する…

単語リスト作成クラスのリファクタリング

牧場のマシンで全文章を使用した単語の頻度リストを作成させ、約4時間の計算の後に単語リストが得られました。しかしながら結果を見てみると、確かに「細胞」とか「遺伝子」といった単語の出現頻度は高くなりましたが、「al」とか「ゼ」とか「SUB」といった…

単語リストの作成プログラムを仮想端末で実行

単語リストに登録された各単語について、ある単語を内部に含む単語が無いか調べて頻度値を上げる部分が、リストの大きさのせいで時間がかかるので、先に文字列の長さが短い順に並べ替えておいてから、リストの単語を自身より後ろに登録しているものとだけ正…

単語の精製とデータベース作成

いくつかの文章を試しにプログラムに与えて単語リストを得てみたところ、斜体にしたり上付き文字にする為のタグがそのまま残ってしまっていることが分かったので、正規表現の判定文に山括弧を追加しておいて、中身のみ得られるようにしました。 また膨大なフ…

文章データ抽出と単語頻度解析

今回処理を行う生データは大量のタブ区切りの表なので、まずはここから今回関連解析を行う日本語文章を取り出すパーサを作成しました。 HTMLから取り出す訳ではないので、ファイルを一行ずつ読込み、タブをトークンにしてsplitを行い、特定の座標のものだけ…

新たな指令

トーゴーの日シンポジウムも無事に終わり、今度はもっと数多くのアブストラクトを用いて関連解析を行うことになりました。 今回用いるデータはフィールドの数が多いので、データの保持にデータベースを利用して、探索を速く行えるようにすることにしました。…

gackelさんとの結果マージ

gackelさんの動作指針で作られたエッジと、私が得られた結果を両方鑑みて、お互いのエッジの中から有効そうなもののみを残してマージするような方法を模索しました。 私の方の出力では共有単語数自体にあまり重要度は無く、あるポスターについて、共有単語数…

ポスター相関解析図の編集

gackelさんがいい感じにグラフの見た目をよくしてくれたので、私もそういう感じにノードの大きさや表示形式をいじってみました。 まずノードのラベルとしてポスター番号だけではなく発表者の名前も表示されるように、ポスター要旨の掲載ページから「発表者」…

相関解析の続き

トーゴーの日ポスター間から共通して使用される単語の数を元に相関判定をしますが、基準となる単語を選別して、より意味のある単語が共有されていることを相関の根拠にしようと考えました。 まず一般的な文章でもよく出現する単語の出力を抑制しようと考え、…

ポスター間の相関ネットワーク図作成

前回どのような単語がポスター間で使われているのかが分かったので、今回はそれを利用してポスター間の関係性をネットワーク図にしてみようとしました。 まずネットワーク図を表示するプログラムとして、Cytoscapeを利用することにしました。これは統合TVで…

ポスター要旨間で単語出現頻度解析

前回トーゴーの日のポスター要旨をパースするところまでできたので、今回はそれを利用して、MaCabに渡して単語ごとに分けてからそれぞれの出現頻度を解析するRubyモジュールを作成しました。 まずMeCabのRubyバインディングをまだインストールしていなかった…

チャンクリストの調整&トーゴーの日ポスター解析

行の属性推定プログラムはほぼ完成し、後はチャンクリストに登録してある行推定用のチャンクを選別するだけになりました。まずいくつかのレビューをプログラムに渡して結果を見てみて、結論の行だと思われるのに前提行として判別されているような場合につい…

取得した新規チャンクを推定用チャンクリストに追加

論文レビューの数を50〜70ぐらいに制限しながら、属性推定に使えそうなチャンクを自動回収させるプログラムを走らせてみました。これぐらいの数のとき、「今後、」とか「詳細に」といったチャンクが取得できていることが分かったので、今度はそれを属性推定…

新規チャンク取得の続き

前回、全論文レビューを対象にした新規チャンクの取得プログラムで、正規表現エラーなどの問題が残っていたので、今回はその修正から始めました。 この正規表現エラーについては、あるチャンクにエスケープが必要な記号が含まれることが原因だったので、Ruby…

新規チャンクの取得を全論文レビューを対象にする

前回作成した、現在のチャンクリストを利用して行の属性推定を行った後に、そこに使用されている未登録チャンクを抽出するというコードを拡張し、全ての論文レビューを巡回してきて、未登録チャンクを回収するというように、プログラムの作成と修正を行いま…