前回はYahoo! JAPANの日本語形態素解析を使用しましたが、今回はMecabを使って形態素解析をおこないます。

まずMecabをインストールする必要があります。

http://taku910.github.io/mecab/#download

インストールするときに辞書の文字コードを設定することになりますが、このときはUTF-8を指定します。

Mecabを使うためには辞書を作成する必要があります。ここではmecab-ipadic-NEologd を使います。

mecab-ipadic-NEologd は形態素解析エンジン MeCab と共に使う単語分かち書き辞書です。また週2回以上更新されているため、新しい単語や固有表現に強いのが特徴です。

ここを参考にした。

WindowsでNEologd辞書を比較的簡単に入れる方法ーユーザー辞書編 – Qiita

git for Windows 64bitをインストールしたあと、コマンドプロンプト立ち上げ以下のコマンドでNEologd辞書をダウンロードします。

あとは、ダウンロードしたフォルダのなかにあるmecab-ipadic-neologd\seedフォルダの中にあるmecab-user-dict-seed.20200130.csv.xz(今回は2020年1月30日のものが最新だった)を解凍します。するとmecab-user-dict-seed.20200130.csvというファイルを得ることができます。

これをC:\Program Files (x86)\MeCab\dic\ipadicに移動させます。そしてファイル名をmecab-user-dict-seed-20200130.csvに変更します(mecab-user-dict-seed「.」20200130.csvをmecab-user-dict-seed「-」20200130.csvに変更する)。

そしてコマンドプロンプトで

するとc:\Program Files (x86)\MeCab\dic\ipadicフォルダのなかに、mecab-user-dict-seed-20200130.dicというファイルが作られます。

C#でMeCabを使うのであれば、NMeCabが便利です。これはMeCabの解析処理部分を、.NETライブラリとして移植したものです。 オリジナル版MeCabと同じ解析結果を得ることができます。

.NET形態素解析エンジンNMeCab プロジェクト日本語トップページ – OSDN

からダウンロードすることができます。解凍し、参照の追加でbinというフォルダのなかにあるLibNMeCab.dllを追加します。

まず単純な分かち書きの方法から。

これで左のRichTextBoxに入力された文が分かち書きされた状態で右側のRichTextBoxに出力されます。

ではコピペチェックをするにはどうすればいいでしょうか?

前回はこのようなクラスに単語情報を格納して比較していました。

Mecabが返した情報から原形を取得するには上記のコードのこの部分

node.Surfaceではなくnode.Featureに置き換えてみます。すると

node.Surfaceによって得られる文字列をカンマで区切って7つめを取り出せばよいということがわかります。ただ存在しない場合があるので、このときはnode.Surfaceをそのまま使います。

以下は品詞を取得するメソッドです。

これらを使って入力された文章からWordInfoのリストを作成します。

WordInfoのリストが作成されたら、2つの文章を比較して結果を表示します。

前回同様にコピペ判定をしてみましょう。

コピペ率は前回と同じくらいの値になりました。