前提・実現したいこと
MeCabを使って、与えられた文字列から始まる文字列候補をすべて取得する処理をしたいと考えています。
たとえば、以下のような辞書があり、すでにMeCabによってTRIE木に変換済みとします。
txt
1アイ 2アイウ 3アイウエ 4アイウエオ 5イウ 6ウエ 7ウエオ
ここで「アイウエ」という文字列が与えられたとき、「アイウエ」「アイウエオ」「アイ + ウエ」「アイ + ウエオ」の4候補を取得するような処理をしたいと考えています。
現在、「アイウエ」という文字列を与えてラティスを生成し、「アイウエ」「アイ + ウエ」の2候補を取得するところまではできています(完全一致検索)。
今回やりたいことは、「アイウエ」「アイ + ウエ」に加えて「アイウエオ」「アイ + ウエオ」という候補も同時に得ることです(前方一致検索)。
原理としては、TRIE木を上から「ア→イ→ウ→エ」とたどってきたときの「エ」のノードに注目し、その直下にぶらさがっているすべての枝葉をスキャンすれば「アイウエ」が得られることは分かるのですが、MeCabではその操作を行うためにどの関数を使うことになっているのか分からず困っています。
以下のリファレンスに記載されているもののうち、どれとどれをどの順に使えばよいのかだけでも分かれば糸口をつかめそうなのですが、教えていただくことは可能でしょうか。
https://taku910.github.io/mecab/doxygen/annotated.html
試したこと
構造体mecab_node_tのノードが呼び出せるメンバを一通り試して、挙動を観察しながら試行錯誤したのですが、うまく枝葉をたどることができませんでした。
補足情報(FW/ツールのバージョンなど)
MeCabのC言語関数をラッパー経由でSwiftから呼び出して実装しています。
よろしくお願いいたします。
あなたの回答
tips
プレビュー