フツーって言うなぁ!

フツーなサラリーマンのフツーな嘆き.

Mac OS X 10.9でParsCitを使ってみた

就活のツケが回ってきて,そろそろ本格的に修論やらないとやばいということで,研究用のアプリケーションを作っています.
今の感じだと,修論は学術論文を扱うことになりそうです.

その中で,ParsCitというツールを使うことになったので,インストール方法をメモしておきます.
OSはMac OS X 10.9(Marvericks).

ParsCitの概要

ParsCit: An open-source CRF Reference String and Logical Document Structure Parsing Package

ParsCitは,論文から書誌情報や引用情報を抽出したり,文書構造を解析したりするためのツールです.
内部でCRF(Conditional Random Field)という機械学習の手法を使っているみたいです.

基本的に英語論文にのみ対応していて,日本語には対応していません*1

公式サイトでは,Webインタフェースも用意されていて,論文の内容を記述したテキストファイルから書誌情報を抽出するなど,機能を試してみることもできます.*2

Webサービス版とクライアント版が存在するようで,今回はクライアント版をインストールすることにしました.

ダウンロードはこちらから.

インストール手順

ダウンロードしたディレクトリ直下のファイル,INSTALLを参考にしました.

1. Ruby, Perl, C++の実行環境を整える

インストールはHomebrewとかその辺で十分だと思います.

本筋ではないので省略.

2. Perlのライブラリのインストール

CPANを使う必要があります.
Perl使ったことないのであまり詳しくないですが,CPANを使うためのインタフェースとして,cpanmを利用するとよいらしいです.

cpanmについては,
cpanm - @bayashi Wiki
が詳しかったです.

必要なライブラリは,

  • Class::Struct
  • Getopt::Long
  • Getopt::Std
  • File::Basename
  • File::Spec
  • FindBin
  • HTML::Entities
  • IO::File
  • POSIX
  • XML::Parser
  • XML::Twig
  • XML::Writer
  • XML::Writer::String

の13個.

$ cpanm Class::Struct --sudo

てな感じですべてインストール.

いくつかのライブラリはすでにインストールされていたようで,スキップされました.

3. CRF++のインストール

CRF++は,書誌情報などの抽出時に使うCRFのライブラリで,ParsCit利用に必要みたいです.

デフォルトでParsCitにバンドルされているのですが,そのままでは使えず,再コンパイルと設定をする必要があります.

$ cd <path-to-parscit>
$ cd crfpp
$ rm -Rf CRF++-0.51
$ tar -xvzf crf++-0.51.tar.gz
$ cd CRF++-0.51
$ ./configure
$ make
$ make clean
$ make
$ sudo make install
$ cp crf_learn crf_test ..
$ cd .libs
$ cp -Rf * ../../.libs

Homebrewでインストールしてもいけるみたいなことが書いてあったので試したけど,なんかダメでした(なんじゃそりゃ

4. 必要に応じて,PerlスクリプトShebangを変更する

起動スクリプト(citeExtract.plとか)のShebang(1行目の#!で始まるアレ)を,自分の環境のPerlのパスに応じて変更します.

システムのPerlを使っているか,Homebrewでインストールしているならスルーでおkかと.

5. lib/ParsCit/Config.pmを編集する

crf_testの場所とかを指定するみたいです.

自分の環境では必要ありませんでした.


これでできたはず.

使ってみる

デモデータがあるみたいなのでそのまま使わせてもらいます.
demodata/sample2.txtが,入力となる論文のテキストデータです.

$ cd <path-to-parscit>
$ bin/citeExtract.pl -m extract_all demodata/sample2.txt
<?xml version="1.0" encoding="UTF-8"?>
<algorithms version="110505">
<algorithm name="SectLabel" version="110505">
<variant no="0" confidence="0.000415">
...

抽出したデータに対応するXMLが返ってきます.

mオプションでモード(入力論文からどの情報を抽出するか)を,iオプションで入力の形式を変更できます.
mオプションには,extract_citation, extract_header, extract_section, extract_meta, extract_allの5つが,iオプションには,rawとxmlの2つがあるみたいです.


結局インストールに半日潰してしまって,肝心の書誌情報抽出ができなかったのですが,環境構築は経験すればするほどうまくなっていく気がするので,意外と嫌いじゃないです(笑).

他にも設定しないといけないツールがあって,そっちの方が八方塞がりな感じなのですが,なんとか頑張っていこうと思います.

*1:論文データと正解データを学習させればいけるらしいです

*2:論文PDFからテキストを抽出するには,pdftotextなどの別のツールを使わないといけないみたいです