今回のやることを説明してみる
前回の記事で MeCab で形態要素解析すると書いていましたが、その箇所の検証が抜けていました。
C# で MeCab を使用した実装をやってみたいと思います。
使用する環境を説明してみる
今回は、Microsoft Azure 上の仮想サーバではなく、私の Windows 8.1 Update1、64ビット 上で 動作している Visual Studio 2013 Update2 を使用します。
どんな部品を使うか紹介してみる
NMeCab ( エヌメカブ、エヌメカ ) というイケてる部品がありました。
NMeCabは、オープンソース形態素解析エンジンMeCabの解析処理部分を、.NETライブラリとして移植したものです。
オリジナル版MeCabと同じ辞書を使用し、同じ解析結果を得ることができます。
純粋なC#言語で作成されており、ラッパーではないため、インストールがシンプルで、高速性と安定性にも優れています。
C#化されているんですね。すばらしい。
早速、調査とかいろいろやってみる
早速使ってみましょう。2014-04-29 版を使用します。サンプルアプリケーションが格納されていますので、試してみましょう。きちんと解析できていますね。
次はソースコードの解析です。ソリューションファイルを開いてみましょう。どんな感じの構成なのか、コードマップを開いてみましょう。
コードマップ開くまでもありませんね。早速、解析しましょう。下記の箇所が参考になりますね。
1 2 |
private void DoAnalyzeButton_Click(object sender, EventArgs e) |
MeCabTagger クラスを見てみましょう。下記のようなクラス構造です。非常にシンプルですね。
まず、プロパティから調べてみましょう。
- AllMorphs
true:全出力
false:ベスト解のみ
※今回の要件では、false で十分です。 - LatticeLevel
0:最適解のみが出力可能なレベル (デフォルト, 高速)
1:N-best 解が出力可能なレベル (中速)
2:ソフトわかち書きが可能なレベル (低速) ※この辺りのパラメーターはよくわかりません... - OutPutFormatType
解析結果のフォーマット 『lattice』 『wakati』『dump』の何れかを指定する。今回の要件では、『lattice』で十分ですね。 - Partial
部分解析モード....うーん。 - Theta
ソフト分かち書きの温度パラメータ....これ、わかりません。
むぅ...難しい。細かいところは後で勉強することにしましょう。
次にメソッドを調べてみましょう。
- Parse
- ParseToNode
- ParseNBest
- ParseNBestToNode
N-Best 解は勉強しないといけないので、今回は ParseToNode メソッドをい使用することにします。
この適当な調査結果wwからできたサンプルソースは下記の通りです。『昨日から片頭痛がある』が『昨日 から 片 頭痛 が ある 。』と変更することができます。
1 2 |
var mt = MeCabTagger.Create(); |
終わりに何か一言いってみる
SQL Server が MeCab のように形態要素解析できる日は来るのでしょうか。
- 作者: Steven Bird,Ewan Klein,Edward Loper,萩原正人,中山敬広,水野貴明
- 出版社/メーカー: オライリージャパン
- 発売日: 2010/11/11
- メディア: 大型本
- 購入: 20人 クリック: 639回
- この商品を含むブログ (44件) を見る