イントロダクション
日本語を単語に分解するのは、かなり面倒くさいです。英語であれば、アルファベットがスペースによって区切られているので、単語に分解するのは簡単です。
しかし日本語の場合には、文章を解析しなければ単語の区切りが分かりません。
そのため、日本語の文章を単語に分解するのはかなり大変です。
もし、プログラムで日本語の文章を単語に分解するには、
- 独自に解析するプログラムコードを作成する
- 既存の日本語解析用ライブラリを利用する
- 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
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
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 ドキュメントに対して、VBA のプログラムコードを実行すると、次のメッセージボックスが表示されます。
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 を使用することで、日本語の文章を手軽に単語として分解することができました。使い方次第では、様々なことを行うことが出来そうです。
コメントを投稿
コメント投稿機能について