お疲れ様です。たなしょです。
今回は形態素解析使用してもう少しカノジョとの会話のバリエーションを増やしたいと思います。
今回はその導入です。
MeCab
MeCabという形態素解析を行ってくれるツールを導入します。
MeCabの説明はこちらになります。
形態素解析の説明はこちらになります。
英語の場合は品詞でスペースが空きますが、日本語は品詞がつながっているのでMeCabで品詞ごとに取り出して判別させるためにMeCabを使います。
形態素解析するクラスをつくる
形態素解析するクラスを作成します。
1.形態素と品詞情報を分割してを格納しています。
tagger.ParseToNodes(input)
は形態素解析を実行して、形態素オブジェクトを取り出しています。
形態素解析では割と公式みたいな感じで出てきます。
public static List<string[]> Analyze(string input)
{
var tagger = MeCabTagger.Create();
List<string[]> result = new();
foreach (var node in tagger.ParseToNodes(input))
{
if (node.CharType > 0)
{
string[] surface_feature = new string[] {
node.Surface,
node.Feature
};
result.Add(surface_feature);
}
}
return result;
}
2.名詞でかつ[一般、固有名詞、サ変接続、形容動詞語幹]の品詞が出現したらパターンマッチしたとします。
public static Match KeyWordCHeck(string part)
{
Regex rgx = new("名詞,(一般|固有名詞|サ変接続|形容動詞語幹)");
Match m = rgx.Match(part);
return m;
}
最後に
今日は短いですがここで終わりしたいと思います。
明日は本日作ったAnalyzerクラスを使ってパターン辞書に登録していく処理を作っていきます。