お仕事で MeCab を使って日本語テキストを解析して、「とあること」の検出ができないかなーと試したことがあったのですが、今回はソースコードの単語を抽出して「とあること」をしようと思いついたので、やってみました。
ソースコードからの単語検出ということで、英語の形態素解析ツールを使うことにしました。
今回使ったのは TreeTagger です。
環境は Windows + TreeTagger + Python です。
参考:
TreeTagger のインストール
WIndows にインストールする場合の手順はこちら。tree-tagger-windows-X.X.zip (筆者ダウンロード時は 3.2)をダウンロードしたら展開し、INSTALL.txt に従ってインストールします。
要約すると、Perl のインストールと、必要なパラメーターファイルを .par 拡張子に変えて lib に置くことと、C:\TreeTagger に配置して bin フォルダを PATH に通せば OK。
※ C:\TreeTagger なのは bat ファイルにパスがベタ書きされているため。別にここである必要はないです。
※ Perl も今回は Python から呼び出すのでなくても問題ない
今回、言語は英語を使います。こちらからパラメーターファイル(English parameter file)をダウンロードしました。
http://www.cis.uni-muenchen.de/~schmid/tools/TreeTagger/#Linux
TreeTagger を Python から使う
検索して一番最初に出てきた treetaggerwrapper を使用することにしました。最初に書いた参考URLではダウンロードしてインストールしていましたが、pip からインストールできるようだったのでそちらでインストールしました。
pip install treetaggerwrapper
pip install six
pip install six
※ six は treetaggerwrapper が使ってるので、なければインストール
treetaggerwrapper.py は english.par を要求するので、TreeTagger のインストールでダウンロードしてきたパラメーターファイルをコピーリネームしておきます。
試しに以下のサンプルを実行します。
import treetaggerwrapper import os tagdir = os.getenv('TREETAGGER_ROOT') tagger = treetaggerwrapper.TreeTagger(TAGLANG='en',TAGDIR=tagdir) tags = tagger.TagText(u"Save the time of the reader. SAMPLETEST. SampleTest.") for tag in tags: print tag
TAGDIR には TreeTagger のインストールディレクトリを指定しますが、bin に PATH が通っていれば空で問題ないようです。
ソースコード中の単語のリストアップ
とりあえず、コメント行(// で始まる行、/**/ や行末コメントは非対応)除いてリストアップしてみました。対象のソースコードは iutest の実装全部入り(fused-src/iutest.hpp)です。
C++ のキーワードを除外するとこんな感じ。
圧倒的に iutest が多いですね。(当たり前か)
リストアップに使用したソースコードは github で公開しています。
https://github.com/srz-zumix/taggertool
0 件のコメント:
コメントを投稿