サンプル・プログラム
解説:preg系関数を ereg系関数へ置き換え
解説:MeCabの扱い
ここでは、MeCab をインストールすることなく利用できるよう工夫している。
0013: var $MECAB = 'mecab\mecab.exe'; //MeCabの実行プログラム
0014: var $MECABRC = 'mecab\mecabrc'; //mecabrc
0015: var $FILE_UDIC_MECAB = 'mecab\dic\user_wiki.dic'; //ユーザー辞書
0016: var $FILE_SPECIAL = 'ini/special_table.txt'; //特殊文字変換テーブル
0041: /**
0042: * 実行プログラムのフルパスを取得
0043: * @paramなし
0044: * @return stringフルパス
0045: */
0046: function getExePath() {
0047: $path = wb_get_system_info('exepath');
0048: $path = trim($path);
0049: if ($path == '\\') $path = '';
0050: else $path = ereg_replace("^\"+", '', $path);
0051:
0052: return $path;
0053: }
PHPの定数や環境変数ではなく、winbinderが用意する関数 wb_get_system_info によって確実に絶対パスを取得できるようにした。
0119: if ($format == 1) {
0120: if (INTERNAL_ENCODING != 'SJIS') {
0121: $data = mb_convert_encoding($data, 'SJIS', INTERNAL_ENCODING);
0122: }
0123: }
解説:特殊文字の全角⇔半角相互変換
0016: define('SPECIALFILE', 'ini/special_table.txt'); //特殊文字変換テーブル
0017:
変換テーブルのファイル名は、定数 "SPECIALFILE" によって指定する。
変換テーブルを変更してプログラムを再起動すれば、変換条件の変更が反映される。
コンパイル
なお、ダウンロードした圧縮ファイルを解凍すると、フォルダ "mecab\" 以下に MeCab の必要ファイルが解凍される。そのままの位置で使うこと。
ユーザー辞書 "user_wiki.dic" はWikipediaの見出し語をそのまま引用した大きなものだが、「PHPでMeCabのユーザー辞書を作成する」で紹介したプログラムによって自由に変更することができる。
その他、クリップボードへのコピー機能は、「PHPでクリップボードにテキスト貼り付け(Windowsアプリ版)」で紹介したプログラムを流用している。
質疑応答
お世話になっております。
こちらから変換用のアプリをダウンロードし、使わせていただこうとしたのですが、変換ボタンを押すとアプリが終了してしまいます。使用環境はWindows10で間違いありません。
自前のデータだからだと思いましたが再ダウンロード、インストール、直接実行して、デフォルトの文章のままでも同じ現象です。
とても求めていた機能そのもののアプリなのでどうか使わせていただきたいです。
こちらの環境や管理人様のアプリ作成後のWindowsアップデートでの問題もあるかもしれません。
どうかよろしくお願いします。
【回答】
まず、ダウンロードしたファイルを解凍した状態で、下記のようなフォルダ構造になっているかご確認ください。
\normalizetextwin
│ normalizetextwin.bcp
│ normalizetextwin.exe
│
├─mecab
│ │ libmecab.dll
│ │ mecab.exe
│ │ mecabrc
│ │
│ └─dic
│ │ user_wiki.dic
│ │
│ └─ipadic
│ char.bin
│ char.def
│ dicrc
│ left-id.def
│ matrix.bin
│ matrix.def
│ pos-id.def
│ rewrite.def
│ right-id.def
│ sys.dic
│ unk.def
│ unk.dic
│
└─normalizetextwin
│ application.ico
│ normalizetextwin.phpw
│ normalizetextwin.rc
│ pahooNormalizeTextWin.php
│ php_mbstring.dll
│ php_winbinder.dll
│
├─icon
│ normalizetextwin.ico
│
├─include
│ │ wb_generic.inc.php
│ │ wb_resources.inc.php
│ │ wb_windows.inc.php
│ │ winbinder.php
│ │
│ ├─db
│ │ ChangeLog_DB.txt
│ │ db_common.inc.php
│ │ db_mysql.inc.php
│ │ db_sqlite.inc.php
│ │
│ └─fi
│ freeimage.inc.php
│
└─ini
special_table.txt
正常に解凍されており、それでも動かないようでしたら、Windowsイベントビューワで、Windowsログのアプリケーションを確認してください。DLLの呼び出しエラーなどが出ていませんか。もしエラーが出ているようであれば、エラーメッセージをお知らせください。
また、C++でWindowsでネイティブに動くプログラムが「C++ でテキストの正規化」からダウンロードできます。こちらもお試しください。
参考サイト
- PHPで日本語テキストを正規化:ぱふぅ家のホームページ
- C++ でテキストの正規化:ぱふぅ家のホームページ
- PHPで漢数字混じりのテキストを半角数字に統一する:ぱふぅ家のホームページ
- PHPで MeCabのユーザー辞書を作成する:ぱふぅ家のホームページ
- PHPでクリップボードにテキスト貼り付け(Windowsアプリ版):ぱふぅ家のホームページ
- MeCab: Yet Another Part-of-Speech and Morphological Analyzer
オフィス文書を作るときに、こういったツールがあると便利だろうと考え、今回はサーバやネットが無い環境でも動作するスタンドアロンなWindowsアプリとして移植する。
(2020年4月21日)制御文字削除,強制的に全角化する文字を追加した。
(2019年3月30日)コピー・ボタンと空白削除機能を追加し、不具合修正を行った。