特定のひらがなのみを含む単語を大量に用意する(2)単語の抽出

(1)では単語のリストを作成した。あとは、そこから特定のひらがなのみを含む単語を抽出するだけである。単語リストは次のような形になっている。

しまい
あやぎぬ
ようさい
くみうち
きない

このようになるように(1)で作ったNoun_yomi_a.csvを使っていく。

正規表現で抽出する

grepを使うことにする。awkでもなんでも正規表現が使えれば良い。

例えば、「あ行」「か行」「さ行」を含む文字のみから単語を取り出すには

grep -E "^[あいうえおかきくけこさしすせそ]+$" Noun_yomi_a.csv

とすれば良い。途中で見落としてたのは次の2点。

  1. ^(行頭)と$(行末)の記号をつけていないと余計なものがひっかかる(最初行末の記号が必要なことを見落としてはまった)
  2. [か-こ]などとすると「がぎぐげご」もヒットする。よって、あえて「かきくけこ」とべたに書いている。

ただ、これではあまりに文字数の短い単語や長い単語もヒットしてしまう。そこで、文字数に制限をかける。

grep -E "^[あいうえおかきくけこさしすせそ]{3,5}+$" Noun_yomi_a.csv

{3,5}は直前のパターンを3回以上5回以下の繰り返したものにマッチさせろということである。文字数を調整したければここをさわれば良い。

あとは、適当なファイルでリダイレクトで書き出してexcelに貼り付ける。オートコンプリートをオフにすれば、これで簡単な練習帳が完成する。

抽出したリストから特定の文字を含む単語を絞りこむ

スモールステップでやらせていると、例えば「今覚えたばかりの文字を必ず含む」+「これまで習った文字」のパターンで復習させたいと考えることがある。例えば、「あいうえお」を習得したと考えられる状態で、「かきくけこ」を教えたというときに、必ず「かきくけこ」を含む単語だけで練習させたいという状態である。

この場合、パイプで絞り込めば良い。例えば、「かきくけこ」を必ず含んで「あいうえおかきくけこ」だけを使った単語を抽出したいときは次のようにする。

grep -E "^[あいうえおかきくけこ]{3,5}$" Noun_yomi_a.csv | grep -E "[かきくけこ]"  

パイプの後の条件指定は^とか$をつけるとだめ。単語のどこかに「かきくけこ」が入っていればOKだからこの書き方。