日本語の文章は、文法的に単語に分割できますが、本機能は、各単語の出現回数を集計して、 その多い順に、レポートウィンドウに表示します。 例えば、夏目漱石の「坊っちゃん」の全文に、本機能を適用すると、 次のような集計結果が表示されます。
914 する 動詞(自立) 472 おれ 名詞(代名詞,一般) 454 云う 動詞(自立) 264 ない 形容詞(自立) 246 なる 動詞(自立) 233 ある 動詞(自立) 193 思う 動詞(自立) 178 赤 名詞(一般) 173 一 名詞(数) 170 シャツ 名詞(一般) 155 山嵐 名詞(一般) 148 君 名詞(代名詞,一般) 147 出る 動詞(自立) 145 お 接頭詞(名詞接続) 144 見る 動詞(自立) 136 この 連体詞 136 何 名詞(代名詞,一般) 128 行く 動詞(自立) 121 二 名詞(数) 118 れる 動詞(接尾) : :
ここで、各行の書式は、
<出現回数> <単語の終止形> <単語の種類(詳細品詞)>
となっています。
活用のある単語は、その終止形(基本形)で集計されます。 助詞、助動詞等の非自立語や、句読点、空白、括弧等の記号類は、カウントされません。 英単語は、カウントされますが、名詞の複数形や動詞の変化形などへの配慮はなく、 とにかくスペルが異なれば、別の単語として扱われます。
なお、本機能は、将来において「執筆支援」や「文章解析」機能を実現するための 前段階的なものであって、現状ではあまり実用に供するものではない(わざわざ ヘルプで取り上げるほどのものではない)かもしれませんが、 あしからずご了承ください。
本機能は、JWordCount.mc というスクリプトで実現しています。
このスクリプトは、初期環境では、ツールボックス内
の「日本語文の単語カウント」という項目に、割り当てられています。
この項目の実行で、次のどれかのテキストを対象にして、日本語文の単語カウントが
行なわれます。
(1)現編集テキストの選択範囲のテキスト
(2)クリップボードのテキスト
(3)現カーソル行のテキスト
まず、現編集テキスト内に選択範囲があれば、その範囲のテキストが 対象になります。この場合、矩形範囲でも可能です。 一方、選択範囲が無ければ、クリップボードのテキストが対象になります。 もし、クリップボードにテキストが無ければ、現カーソル行のテキストが 対象になります。
テキストファイルを対象として、本機能を実行するには、 本スクリプトのコマンド引数に、そのファイル名を指定する必要があります。 その場合、「スクリプトの実行」ダイアログボックスから実行するか、 ツールボックスに、 それが行なえる項目を追加することになります。 また、それ以外でもいろいろな方法で行なえます。
なお、本スクリプトの実行には、MeCab(和布蕪)という形態素解析エンジンが 必要です。これに関しては、最後に説明します。
本スクリプトのコマンド形式は、次のようになっています。
本エディタでは、日本語の解析が必要な各種のスクリプトで、MeCab(和布蕪)という 形態素解析エンジンを使わせて頂いています。この実行環境を整えるには、次のようにします。
(1) | MeCab のホームページから、 MeCab の「Binary package for MS-Windows」(現時点での最新版は、mecab-0.996.exe )をダウンロードしてきます。 |
(2) | それを実行して、MeCab を適当なフォルダー(例えば、D:\Tools\MeCab\ )に インストールします。なお、このインストール中に、文字コードを選択するところがありますが、そこでは、 Shift-JIS コードを選んでください。 |
これで準備は完了です。なお、MeCab のインストールには、100 MB 程度のディスク容量が必要です。 ちなみに、このフォルダーには、幾多のファイルがありますが、スクリプトで使うのは、 libmecab.dll というファイルだけです。ただ、このDLLファイルは、その実行時に、 そのフォルダー内のいろいろなファイルを参照しているようなので、単にそのファイルさえあれば よいというものではなさそうです。
ところで、MeCab のインストール時には、HKEY_LOCAL_MACHINE\Software\MeCab という レジストリーが、作成されるようです。スクリプトで、MeCab にアクセスする際、MeCab が どこにインストールされているかを、知る必要がありますが、現状、このレジストリーを 参照して、その情報を得ています。
MikoScript のレジストリー関連の組み込み機能は、Ver.1.82 以降で搭載されたので、 それ以前のバージョンで、MeCab にアクセスするには、別の方法が必要です。 レジストリーを参照する現スクリプトでは正常に動作しないので、ご注意ください。