NMeCabの使い方に付いて記載します。
NMeCabは、形態素解析をするMeCabをライブラリ化したものなので、MeCabと同じような使い方になります。
・NMeCabをインポートします。
メソッド
- Parse
- ParseToNode
- ParseNBest
- ParseNBestToNode
プロパティ
・AllMorphs(該当する全ての形態素を出力)
- true:一致する可能性のある全ての形態素を出力
- false:ベスト解のみ
 
・LatticeLevel(索性レベルを指定する)
- 0 : 最適解のみが出力可能なレベル(デフォルト、高速)
- 1 : N-best解が出力可能なレベル(中速)
- 2 : ソフトわかち書きが可能なレベル(低速)
 
・OutPutFormatType(解析結果のフォーマット)
- “lattice”:(デファルト)
- ‘wakati”:分かち書き出力
- “dump”:全情報を出力
- “none” :何もしない
- “em”:?
 
・Partial(制約付き解析)
- MeCabでは、文章の中の「この部分は名詞として」、「この部分は動詞として」といった指定をした上で解析するはずですが、現在うまく動作しません。
 
・Theta(係数)
Parseメソッドによる解析
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim text = "庭に鶏が2羽います"
    Dim tagger = MeCabTagger.Create()
    TextBox1.Text = tagger.Parse(text)
End Sub
実行結果
庭 名詞,一般,*,*,*,*,庭,ニワ,ニワ に 助詞,格助詞,一般,*,*,*,に,ニ,ニ 鶏 名詞,一般,*,*,*,*,鶏,ニワトリ,ニワトリ が 助詞,格助詞,一般,*,*,*,が,ガ,ガ 2 名詞,数,*,*,*,*,2,ニ,ニ 羽 名詞,接尾,助数詞,*,*,*,羽,ワ,ワ い 動詞,自立,*,*,一段,連用形,いる,イ,イ ます 助動詞,*,*,*,特殊・マス,基本形,ます,マス,マス EOS
ParseToNodeメソッドによる解析
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim text = "庭に鶏が2羽います"
    Dim tagger = MeCabTagger.Create()
    Dim node = tagger.ParseToNode(text)
    While (node IsNot Nothing)
        ListBox1.Items.Add(node.Surface + ControlChars.Tab + node.Feature)
        node = node.Next
    End While
End Sub
実行結果
庭に鶏が2羽います BOS/EOS,*,*,*,*,*,*,*,* 庭 名詞,一般,*,*,*,*,庭,ニワ,ニワ に 助詞,格助詞,一般,*,*,*,に,ニ,ニ 鶏 名詞,一般,*,*,*,*,鶏,ニワトリ,ニワトリ が 助詞,格助詞,一般,*,*,*,が,ガ,ガ 2 名詞,数,*,*,*,*,2,ニ,ニ 羽 名詞,接尾,助数詞,*,*,*,羽,ワ,ワ い 動詞,自立,*,*,一段,連用形,いる,イ,イ ます 助動詞,*,*,*,特殊・マス,基本形,ます,マス,マス
ParseNBestメソッドによる解析
N-Best 解の出力
確からしいものから指定個解析結果を出力 します。
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
    Dim text = "庭に鶏が2羽います"
    Dim tagger = MeCabTagger.Create()
    tagger.LatticeLevel = NMeCab.MeCabLatticeLevel.One
    TextBox1.Text = tagger.ParseNBest(2, text)
End Sub
・LatticeLevelプロパティをOne、Twoにする必要があります。デファルトはZeroです。
実行結果
庭 名詞,一般,*,*,*,*,庭,ニワ,ニワ に 助詞,格助詞,一般,*,*,*,に,ニ,ニ 鶏 名詞,一般,*,*,*,*,鶏,ニワトリ,ニワトリ が 助詞,格助詞,一般,*,*,*,が,ガ,ガ 2 名詞,数,*,*,*,*,2,ニ,ニ 羽 名詞,接尾,助数詞,*,*,*,羽,ワ,ワ い 動詞,自立,*,*,一段,連用形,いる,イ,イ ます 助動詞,*,*,*,特殊・マス,基本形,ます,マス,マス EOS 庭 名詞,一般,*,*,*,*,庭,ニワ,ニワ に 助詞,格助詞,一般,*,*,*,に,ニ,ニ 鶏 名詞,一般,*,*,*,*,鶏,ニワトリ,ニワトリ が 助詞,格助詞,一般,*,*,*,が,ガ,ガ 2 名詞,数,*,*,*,*,2,ニ,ニ 羽 名詞,接尾,助数詞,*,*,*,羽,ワ,ワ い 動詞,非自立,*,*,一段,連用形,いる,イ,イ ます 助動詞,*,*,*,特殊・マス,基本形,ます,マス,マス EOS
ParseNBestToNodeメソッドによる解析
・このメソッドは通常使うことはないと思われます。
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim text = "庭に鶏が2羽います"
    Dim param As NMeCab.MeCabParam = New NMeCab.MeCabParam()
    param.LoadDicRC()
    param.LatticeLevel = NMeCab.MeCabLatticeLevel.One
    param.OutputFormatType = "lattice"
    Dim tagger = NMeCab.MeCabTagger.Create(param)
    Dim os As System.Text.StringBuilder = New System.Text.StringBuilder()
    Dim writer As NMeCab.Core.Writer = New NMeCab.Core.Writer()
    writer.OutputFormatType = param.OutputFormatType
    Dim cnt = 2                                 '必要な解析結果の個数
    For Each node As NMeCab.MeCabNode In tagger.ParseNBestToNode(text)
        writer.Write(os, node)
        cnt = cnt - 1
        If cnt = 0 Then Exit For
    Next
    TextBox1.Text = os.ToString
End Sub
