ディクショナリー(辞書)について(プログラム解説) ( No.51 )
日時: 2022/11/05 21:11
名前: REDCHEEKS

http://mediasp.kir.jp/img20220326/imgloglog-box/img20221025161732.png
とりあえず、上記の @ で書き込んだブログラムについて解説しよう。

var 変態英和辞典 = new Dictionary<string, string>();

これは、変態英和辞典を作成する処理だ。この時点では単語は全く登録されていない。
次に、変態英和辞典に単語を登録する。

変態英和辞典.Add("spank", "猿ビジネスたたく");
変態英和辞典.Add("me", "私愚かな");
変態英和辞典.Add("daddy", "とっつあん");
変態英和辞典.Add("please", "おねがい");

この例では、直接プログラム上に、"spank" とかの単語を書いているが、これはあくまでもプログラムを説明するための例であって、実際のシステムでは、エクセルなどのファイルから何千何万件のデータを読み込むようにするのが普通である。
以上で、辞書の準備はOK!

次は、辞書を使った翻訳処理である。
まず、テキストボックス1に入力された英文を、単語に分割し、さらに小文字に統一する

var tokens = textBox1.Text.Split(' ').Select(t => t.ToLower());

ここで、Split(' ')とは、空白で区切られた文字列を単語に分割する処理である。
さらに、Select(t => t.ToLower()) は、ばらばらに分割された単語それぞれを、小文字に統一する処理である。
※ Spank や spank など、大文字小文字が混じっていると、辞書が検索できないため、大文字小文字どちらかに統一する必要がある。

次に、変換した日本語の単語を、まとめて文章にしていくための作業領域を確保する。

var workBuf = new StringBuilder();

StringBuilder とは、文字列の編集を効率的に行うためのクラスである。

そして、すべての単語に対し繰り返すのが以下のプログラム

foreach (var english in tokens)

辞書に登録されているかのチェックも必要だ

if (変態英和辞典.ContainsKey(english))

そして、辞書を使い、実際に英語 ⇒ 日本語変換を行う。

var japanese = 変態英和辞典[english];

結果を追加して行き、文章としてまとめるのは、以下のプログラムである。

workBuf.Append(japanese);

最後に、翻訳内容をテキストボックス2に表示するわけだ。

textBox2.Text = workBuf.ToString();