2016年10月11日火曜日

TreeTagger を使ってソースコード中の単語をリストアップしてみた

ちょっと入用で、ソースコード中の単語をリストアップしてみました。
お仕事で 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

※ 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 件のコメント:

コメントを投稿