このドキュメントではVBAやVBScriptを使用して形態素解析を行う方法について説明します。
単語の分割だけでいい場合は下記を参考。
VBScriptで分かち書きを実行(MS標準機能のみで実装)
http://qiita.com/nezuq/items/2e4e0cc63316474b630d
#NMeCab
NMeCabは形態素解析エンジンMeCabの解析処理部分を、.NETライブラリとして移植したものであり、下記からダウンロードできます。
今回は、NMecabをCOMでラッパーするNMecabComを作成し、そこを経由してVBA,VBScriptから形態素解析を行います。
具体的な作成方法については下記を参考の事。
VBAまたはVBSからCOM経由で使用できる.NETのライブラリの作成方法
作成したNMeCabComは下記からダウンロードできます。
http://needtec.sakura.ne.jp/release/NMeCabCom.zip
#環境
・Visual Studio2008 Pro
・.NET Framework 2.0 を対象とする。
・32ビットのOffice2010
#使用方法
##インストール方法
1.下記からファイルをダウンロードします
http://needtec.sakura.ne.jp/release/NMeCabCom.zip
2.NMeCabCom\binにあるsetup.batを管理者権限で実行してください。
もし、Excelの64ビットのプロセスで使用したい場合は、NMeCabCom.dllとLibNMeCab.dllを64ビットでビルドしなおしてください。
また、アンインストールを行い対場合はuninstall.batを管理者権限で実行してください。
##Excel VBAからの使用方法
インストールが適切に終了していれば、参照設定にNMecabComが追加されるのでチェックを入れてください。
その後以下のような実装をします。
Dim t As New NmcTagger
Dim c As NmcNodeCollection
Dim p As New NmcParam
p.dicdir = "C:\back\NMeCabCom\bin\ipadic"
Call t.Create(p)
Set c = t.Parse("私の名前はLです")
Dim i As Long
For i = 0 To c.Count - 1
Debug.Print c.GetItem(i).Surface & " " & c.GetItem(i).Feature
Next
##作成例
NmcTaggerに渡すNmcParamにはシステム辞書とユーザ辞書を指定できます。
ユーザー辞書の作成については、本家のMecabのホームページを参考に作成してください。
##VBScriptからの使用方法
CreateObjectで遅延バインディングする場合は以下のようになります。
dim t
dim ret
dim i
dim p
dim node
set t = CreateObject("NMeCabCom.NmcTagger")
WScript.Echo TypeName(t)
set p = CreateObject("NMeCabCom.NmcParam")
p.dicdir = "./ipadic"
p.userdic = ""
t.Create(p)
set ret = t.Parse("This is a pen.")
WScript.Echo TypeName(ret)
For i = 0 To ret.Count- 1
WScript.Echo TypeName(ret.GetItem(i))
WScript.Echo ret.GetItem(i).Surface
Next
##応用例
bin/NicoMsgAnalyze.xlsm はニコニコ動画のコメントを集計して解析するサンプルです。
ExcelVBA を使ったニコニコ動画のコメントの分析
http://www.nicovideo.jp/watch/sm22332042