日々のコンピュータ情報の集積と整理

Dr.ウーパのコンピュータ備忘録

2015年4月1日水曜日

VBA:Wordを使って、日本語を単語に分解できる!これは便利だ!

イントロダクション

日本語を単語に分解するのは、かなり面倒くさいです。
英語であれば、アルファベットがスペースによって区切られているので、単語に分解するのは簡単です。

しかし日本語の場合には、文章を解析しなければ単語の区切りが分かりません。
そのため、日本語の文章を単語に分解するのはかなり大変です。

もし、プログラムで日本語の文章を単語に分解するには、

  • 独自に解析するプログラムコードを作成する
  • 既存の日本語解析用ライブラリを利用する
  • Windowsの機能を利用する(Windows 2000以降)
  • 外部のサービスで分解してもらう

といった方法があります。(*1)

*1:
詳しくは、以下のページが参考になります。

日本語の文章を単語に分割する(分かち書きをする) - DoboWiki
http://wiki.dobon.net/index.php?.NET%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0%B8%A6%B5%E6%2F98


しかしながら、独自に解析するプログラムコードを作成するのはかなり大変です。
既存のライブラリを利用する場合や外部サービスを利用する場合には、それぞれを調査する必要があります。

何か手軽に日本語を単語に分解できる手段はないのでしょうか?
その方法の一つとして、日々慣れ親しんでいる Microsoft Word を使用する方法があります。


Wordを使って、日本語を単語に分解できる!


Word では、Word 内の要素に対して様々な処理を実行することが出来る VBA(Visual Basic for Application) を利用することができます。

そして、日本語を単語に分解するには VBA で利用できる、「Words コレクション オブジェクト」を使用します。

単語のオブジェクト (Word)(機械翻訳)
https://msdn.microsoft.com/ja-jp/library/office/ff835816.aspx


VBA コード

以下の VBA コードを、Word の Visual Basic Editor にて、標準モジュールとして記載しました。

Option Explicit

Sub ShowWords()

    Dim text As String
    
    ' Word のドキュメント内の文章の単語を列挙する
    Dim i As Integer
    For i = 1 To ActiveDocument.Words.Count
        
        text = text & i & " : " & ActiveDocument.Words(i).text & vbNewLine
    
    Next i
    
    ' メッセージボックスで表示
    MsgBox text


End Sub



Word のドキュメントに入力されている文章

VBA プログラムの実行テストのために、以下の文章を Word のドキュメントに入力した状態とします。

これはテスト用の文字列です。Hello World!

Word のドキュメントに入力されている文章(テスト用)
Word のドキュメントに入力されている文章(テスト用)


実行結果

上記の Word ドキュメントに対して、VBA のプログラムコードを実行すると、次のメッセージボックスが表示されます。

Word ドキュメント本文の文章を単語に分解した結果
Word ドキュメント本文の文章を単語に分解した結果

---------------------------
Microsoft Word
---------------------------
1 : これ
2 : は
3 : テスト用
4 : の
5 : 文字列
6 : です
7 : 。
8 : Hello
9 : World
10 : !
11 :

---------------------------
OK
---------------------------


解説

ActiveDocument.Words に、 Word のドキュメント内の文章の単語が複数納められています。

そこで、ループカウンタ i を用いて、最初の要素(1) から、最後の要素(ActiveDocument.Words.Count) まで、1 つずつカウントしてその納められている単語(ActiveDocument.Words(i).text)を取り出しています。

そして、text に対して、要素の番号と単語を改行つき(vbNewLine)で加えていっています。

最後に、すべての単語のデータをテキスト化した text  をメッセージボックス(MsgBox)で画面上に表示しています。


実行環境

なお、上記のテストを行ったのは以下の環境です。

Windows Vista Business 64bit
Microsoft Word 2010


注意点

日本語の文章がどのように単語に分割されるのかは、Microsoft Word の動作(仕様)によります。

そのため、思った通りの単語として分割されないかもしれません。

事前にいろいろな日本語の文章のパターンを入力して、テストしてみてください。


まとめ

以上のように、Word と簡単な VBA を使用することで、日本語の文章を手軽に単語として分解することができました。

使い方次第では、様々なことを行うことが出来そうです。








関連記事

関連記事を読み込み中...

同じラベルの記事を読み込み中...