LoginSignup
23

More than 3 years have passed since last update.

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

Last updated at Posted at 2014-07-12

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

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

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

NMeCab

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

今回は、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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
23