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

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 を使用することで、日本語の文章を手軽に単語として分解することができました。

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








関連記事

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

同じラベルの記事を読み込み中...
Related Posts Plugin for WordPress, Blogger...