VBAやVBScriptで形態素解析を行う方法

Table of Content

このドキュメントではVBAやVBScriptを使用して形態素解析を行う方法について説明します。

単語の分割だけでいい場合は下記を参考。

VBScriptで分かち書きを実行(MS標準機能のみで実装)
http://qiita.com/nezuq/items/2e4e0cc63316474b630d

NMeCab

NMeCabは形態素解析エンジンMeCabの解析処理部分を、.NETライブラリとして移植したものであり、下記からダウンロードできます。

http://sourceforge.jp/projects/nmecab/releases/p11745

今回は、NMecabをCOMでラッパーするNMecabComを作成し、そこを経由してVBA,VBScriptから形態素解析を行います。

b0232065_21104163.png

具体的な作成方法については下記を参考の事。
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が追加されるのでチェックを入れてください。

1w04banj.png

その後以下のような実装をします。


    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

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です