ディクショナリー(辞書)について(プログラム解説) ( 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();
|
|