2012-01-01から1年間の記事一覧
今までに作成してきた行の属性推定プログラムについて、g86サーバにアップロードして、新たな文節リストをつかった属性推定と、属性推定に使えそうな文節を新たに追加するプログラムが外部からでも実行できるようにしました。 今後単語解析プログラムのペー…
今までは属性推定に用いるチャンクは、私が目で見て使えそうだと判断したものをファイルに書き込んでおき、プログラム実行時にそれを読み出して使っていましたが、大体行の属性推定が上手く行くようになってきたので、まだ使用していないチャンクも属性推定…
前回に続き、精製チャンクを利用するためChromHMMプログラムの修正を行いました。今までは過去形の文章しか対象にしていませんでしたが、チャンクを精製したのでそのチャンクを含む場合は現在形の文章も推定対象に含めることにしました。if line[0] =~ /た$|…
Wikipediaから得たチャンクリストを使って、新着論文レビューから得たチャンクリストから無意味なチャンクを除いたので、今回はそれらが実際に論文レビューでどのように出現しているのかを確かめながら、チャンクを行属性推定に用いるために属性ごとに分類し…
前回Wikipediaから一般文章のチャンク頻度リストを作成したので、今回はそれと新着論文レビューのチャンクリストを比較し、同じチャンクは無意味と考えて除いていくプログラムを作成しました。 「この」とか「その」といったチャンクは、そのソースによらず…
前回のWikipediaページの文字コードバグについて原因を調べたところ、前にも引っかかったHTML特殊文字の変換失敗が悪さをしているようでした。今回はRubyを使用しているので、RubyでHTML特殊文字を正しく変換してくれるものを探したところ、CGI.unescape()を…
新着論文レビューから得られたチャンク頻度解析のなかから、あまり意味の無いチャンクを除くため、一般的な文章でチャンク頻度解析を行って重なる部分を除こうと考えました。 一般的な文章のソースとして、今回もWikipediaを利用することにしました。RubyでW…
前回論文レビューを読んでみて知識だと思われる文章をチェックする作業を行ったので、今回は実際にその各行にどのようなチャンクが含まれているのかを調査してみました。 調査にあたっては、いちいち行内のチャンクをチャンクリストで検索するのは面倒なので…
論文レビュー間でのチャンクの出現頻度が得られているので、実際にレビューを読んでみて新規知識だと思われる行を探し、その行とチャンクとの共起・相関を調べてみようと思いました。 最近登録されたレビュー2本を私が実際に読んでみて、そのレビューから得…
前回作成した全レビューについてのチャンク出現頻度を使って、まずは累積頻度解析を行ってみました。Libreoffice Calcを用いて散布図を作成した見たところ、100回よりも出現回数が少ないチャンクが全体の約99.9%を占めていることが分かり、とりあえず100回以…
今まで作成してきたRubyプログラムの中で、日本語の一文を切り出してくる際、文頭に全角スペースや改行が含まれていることがあって、取り除く作業を行っていなかったので、今回それを正しく取り除くようにスクリプトを改良しました。 Rubyには文頭のスペース…
前回までに作成した、チャンク頻度計算プログラムを走らせるため、統合牧場のクラスタマシンに必要なライブラリをインストールする作業を行いました。使用するのはMeCabとCaboCha、それにCaboChaをRubyから呼び出すためのバンドルで、これらを全て管理者権限…
一つのレビュー内でチャンク頻度を計算するクラスは完成したので、今回は続いて新着論文レビューのページで公開されている全レビューについて、チャンク頻度を足し合わせるという部分をプログラムしました。 まずは新着論文レビューのホームページの右に表示…
前回CaboChaのRubyバインディングのインストール・使用が上手く行ったので、今回はこれを使ってFirstAuthorsの各文章を、意味の通る最小の単位=チャンクに分割する部分をプログラムしてみました。 CaboChaインストールフォルダに付属していたクラスリストを…
今まで各行の属性示唆に使っていた辞書の単語は私が恣意的に選んでいたものだったので、これを計算的に求めようと考え、今回はMeCabではなくCaboChaを使って、レビューの各行の言語解析を行っていこうと思っています。 まずはRubyでCaboChaを使えるようにす…
前回完成させたレビュー文章内容分類のRubyスクリプトをブラウザから呼び出せるようにするため、CGIにしてパラメータを読込んで動くように改善して、g86のサーバにアップロードしました。 RubyでCGIとして起動したときに渡されるパラメータを解析する部分は…
前回に引き続き、HTMLの特定の行にハイライトを追加する部分をコーディングしました。 NokogiriでHTMLをパースしたら、以前に行の中身だけ取り出したときと同じように、不要な部分をremoveして、必要な部分を今回はHTMLタグを残すように、innner_htmlメソッ…
前回の続きのハイライト追加部分を書き上げましたが、まだ正しく実行されませんでした。まず文章の属性推定部分でいくつかバグが見つかりました。 Rubyのfor文で配列の中身を順番に参照しながら進むというように書いた場合、for文を抜けたときにfor文で使っ…
前回に引き続きRuby移植を行いました。まずPerlで用意していた、行の属性を決めるのに手がかりとなった単語を強調表示するメソッドですが、Rubyへの移植の際に、外部関数として実装すると辞書を読込むコストがもったいないので、前回作ったクラスのメンバ関…
前回はHTMLのパースの部分で詰まってしまいましたが、Nokogiriを何とかインストールすることに成功し、libxml2なども最新版をインストールして正しく使うことができるようになりました。特定のタグを出現順番に取り出すには、(content.xpath("h1|p|h2")).eac…
最近ちょっとPerlでのスクレイピングに限界を感じてきたので、オブジェクト指向がもっと簡単に使えるRubyを使ってみることにしました。 HTMLパーサとして使えそうなので、「Nokogiri」というモジュールがあったのでコレをインストールしてみようと思っていま…
今回も新たな論文レビューについて行属性判断プログラムを走らせてみて、その結果を見ながら想定どおりに示唆ベクトルが出なかった行を見つけてきて、その行に特徴的な単語を探して辞書に追加する作業を行いました。 そこで、この示唆辞書も大きくなってきて…
前回に引き続き、プログラムがそれぞれの行がどの属性であるかを推測するするための単語群を見直し、いくつか単語を追加しました。 まず、どの示唆ベクトルの値も0になってしまう行は無くなってほしいので、とりあえずその行を狙って修正をかけるようにしま…
今回は新たに追加された新着論文レビューに対し、文章解析が上手く行われるようにプログラム・パラメータの調整を行いました。 まずはHMMのプログラムの調整ですが、前回発見したバグは、Perlで配列のインデックスを「-1」にすると、配列の最後の要素を指し…
前回に引き続き、FABSのページの更新作業を行いました。今回はgackelさんの方の紹介ページも作成しつつ、ページの構成・文章の手直しなど、公開されているプログラムをどうやって使うのかがすぐに分かるようにしました。トップページから二つのプロジェクト…
FABSのトップページにプログラム紹介を置くのはごちゃごちゃして見づらいので、プログラムの使い方や紹介のページは別にもうけることにして、トップページはシンプルにすることにしました。 まずはプログラムページの見方や使い方を作るページを作成しました…
プログラム公開ベージFABSを見直すことにして、前回インストールしたWebページエディタのKompoZerを使い倒してみました。このソフトだけでWebページを見ながら中身を直接編集、細かいHTMLソースを手直し、CSSの自動追加・編集などの機能が全て使え、割とさく…
だいたいプログラムが形になってきたので、現状をWebブラウザから確認できるようにCGIとしてプログラムを組み直しました。FABSのページからレビューを確認し、「文章解析ハイライト(仮)別枠表示」というリンクを増やしておいたので、それをクリックしてもら…
ChromHMMにより隠れ状態を推定するPerlスクリプトですが、変数の受取りや参照の仕方があまり上手くなく、コードが汚くなってきてしまったので、Perlのサブルーチン引数まわりを調べてきれいにしました。@配列や%ハッシュについては変数名間をイコールでつな…
前回から苦戦していた、HTMLの特定の行にハイライトを入れるプログラムですが、今回も実装の続きを行いました。 HTML::TreeBuilderを利用することはとりあえず諦め、直接HTMLを出力しながらハイライトの為のタグを挿入していく形を取りました。まずは"conten…