q19’s diary

日本語教育能力検定試験、エスペラント検定、HSKなどに言及するblogです。

HSK6級に合格(?)した。

目次

結果発表

先日受けたHSK6級の結果が発表されました。

f:id:q19:20211101210029j:plain
7割いってました。

5級と同様、6割 (= 180 / 300) 取れば6級相当の実力を持っていると見做されるらしいので、合格ということにしてください。

听力の感触は悪かったものの蓋を開けてみたら過去問演習のときよりもいい点だった一方、阅读は8割にすら届かず無念。

书写は何も対策せず挑んだので、自分の答案が何点もらえるのか全く予想がつきませんでしたが、案外点数をくれるものなのだと分かりました。

やはり、当日の様子を書き溜めていたので、転記しておきます。

当日の様子

HSK6級を受けに赤坂・六本木の多元文化会館に行った。雨天決行。

f:id:q19:20211101210217j:plain
どことなく異国情緒漂うビルでした。

6級は初受験であり、HSKネット試験も初受験だったので、色々と新鮮だった。

気づいたこと

  • 受験票によれば9:30試験開始かつ試験開始30分前集合なので、要するに9:00集合なのだが、平然と9:20くらいに来て普通に入場している人もいた。
  • 二人がけの長机に二人がけのスタイル。間隔も狭いので画面を覗き見されやすいと思ったけど、覗き見する価値のない戦いぶりだったので杞憂である。
  • 試験が始まる前にテスト画面の説明があり、分かりやすかった。
  • 听力の間、听力の全ての問題の選択肢が見放題、戻って回答、見直しも可能。
  • 選択肢を先に見てからスクリプトを聴く、という戦法が成立する環境だった。
  • 持参したイヤホンを使えた。聴こえにくいということが発生しないので安心。
  • 书写は拼音を打ち変換候補に上がった漢字を選択する入力方式で、手書き入力は不可。
  • 子音だけ入力して変換することも可能だった。例えば"rbr → 日本人"のような変換が可能。
  • 言うまでもなく漢字は全角なのだが、spaceが半角だった。新しい段落の書き始めは2マス空ける、というルールを遵守するにあたり、半角spaceを2つ置くべきなのか、はたまた (2 / 0.5 =) 4つ置くべきなのか分からずうろたえた。とりあえず4つ置いた。
  • 同様に題名もspaceを何個置くべきかわからず、とりあえず題名が真ん中らへんになるように10個くらい置いた気がする。会社でやったら総スカン喰らいそうな中央揃えである。

感想

听力

  • 第二、第三部分が難しかった。雑魚いのでとりあえずスクリプトで読み上げられていた単語を含む選択肢を脳死で選択するスタイルなのだが、読まれた単語が見つからない事態が多発して悲惨な感じになった。
  • 感触、40点台。

阅读

  • いつも通り第一部分の病句は適当な選択肢連打してスキップ。
  • 第二部分の語句選択が比較的優しかったのだが、第三部分の文章並び替えが異様に難しかった。過去問では満点を確保していたので、普通に萎える。
  • 第四部分は普段通りの難易度で、4問くらい落としてそう。
  • 感触、70点台。

书写

  • 杨芳兰という中卒のママとその娘杨正果が日記を書きはじめた結果 、ママは作家に、娘は高学歴になりました、みたいな内容だった。
  • 400字前後で要約しろ、という指示なので、410字くらい書いた。自己採点もタコ採点もしたことがないので感触がない。
  • 写日记改变杨芳兰和杨正果的人生、みたいな題名にした。ほぼ対策していない(しそもそも独学なので対策できる環境にない)ので相場とか温度感とかが分からない。
  • 60点ないと恐らくtotal 6割行かないので、頼むから60点欲しい。

その他

  • 帰りに中国語講座の案内みたいなのをスタッフのお姉さんから貰えた。平日朝8:30-9:30に中国語会話を練習できるらしい。赤坂在勤でも学生でもないので参加できなさそうだった。
  • "人類みな夢をのせて"とかいう二郎系ラーメンを発見したので帰りに食べた。チャーシューが思いの外美味くてほっこりした。

f:id:q19:20211101210445j:plain
見てこのチャーシュー。

HSK5級に合格(?)した。

結果発表

先日受けたHSK5級の結果が発表されました。

f:id:q19:20210519184611j:plain
判定は「 - 」

合否が明記されなくなっただけで、6割 (= 180 / 300) とれれば5級相当の実力を持っていると見做されるらしいので、合格ということにしてください。
試験当日に記録しておいた当日の様子を後述しますが、受けた感触と結果が全然違いました。
予想以上に听力が悪い。
びっくりです。
8割で合格したかったので、些か悔いが残る結果になりました。

以下、書き溜めていた当日の様子です。

当日の様子

受験会場は東京外国語大学府中キャンパスで、多磨駅が最寄駅でした。

f:id:q19:20210519190145j:plain
遠かったけどのどかでいいところでした。

コロナ禍ということで、各テーブルには白色の仕切りがあり、その高さたるや立ち上がらないと前方の黒板が見えないほどでした。

听力,阅读,书写いずれも難易度が高かったように思います。

听力

難易度はいつも通りな感じ。
35 / 45くらい。

阅读

難しかった。
時間も2、3分程度しか余らなかった。 第二部分以降でもポロポロ落とした気がして、 35 - 40 / 45くらいの感触。
過去問では安定して41 - 44 / 45 だったので、 普通に落ち込んだ。

书写

しょっぱな、"球迷"の意味がわからずうろたえる。 1
結局、前半の並び替え問題が4/8程度しかとれず泣いた。

後半の作文は、

  1. 游览,风景,回忆,放松,とあとなんかもういっこ使って80字左右
  2. こどもが壁にらくがきをしているのを大人が見て呆れている様子の絵を見て、80字左右

みたいな感じでした。
いつも通り小学生みたいなこと書いて終了。

帰りはおそばを食べて帰りました。
美味しかったです。


  1. “球技のファン"という意味らしい。知らなかった。

Vectorにmax()やmin()をかませたかった

Rの話です。

Problem

同じ次元の2つのvectorを適当に用意します。

> n <- round(rnorm(8)) # 正規分布
> n
[1]  1 -1  0  1  2  1 -1  1
> u <- round(runif(8), 3) # 一様分布
> u
[1] 0.292 0.774 0.411 0.009 0.634 0.378 0.985 0.468

これら2つのvectorの各成分を比較して、大きい方の値をとるような3つ目のvectorを作りたくなりました。
つまり、各  i = 1, 2, ..., 8に対し  m_i = \max ( n_i, u_i) となるようなvector  mを作りたくなりました。

> max(n, u)
[1] 2

うまくいきませんでした。1

Solution

調べたら、pmax()とかいうのを使えばうまくいくことがわかりました。

> pmax(n, u)
[1] 1.000 0.774 0.411 1.000 2.000 1.000 0.985 1.000

このpmax()を使えば、vectorに対し正部分をとるような操作、すなわち、各成分の値が0以上ならその値を、0未満なら0をとるような操作も施せました。

> n
[1]  1 -1  0  1  2  1 -1  1
> pmax(n, 0)
[1] 1 0 0 1 2 1 0 1
> max(n, 0)
[1] 2

もちろんmin()やpmin()についても同様のことが言えます。


  1. 前回の記事よろしく、実際は8次元ではなく数百万〜数千万次元のvectorを扱っていたので、for文は避けたい、という気持ちがありました。

エスペラント検定を受験した

試験当日のことをまず述べ、続いて試験前日まで何をしたのかについて軽く触れ、最後に今後のことについて記す。

試験当日のこと

f:id:q19:20210327182435j:plain
エスペラント会館
試験会場はエスペラント会館。
東西線早稲田駅の1番出口から出て徒歩1分。
エスペラント会館、と書かれた大きな垂れ幕がビルにかかっていたので、分かりやすかった。

初めてエスペラント会館に入館した。
1Fに案内板があり、3Fが事務所と書いてあったので、3Fに向かった。
階段を登る途中、踊り場で女性とすれ違い、挨拶された。

“Saluton!”

咄嗟にesperantoが出てこず、こんにちは、と返してしまった。

f:id:q19:20210327182549j:plain
3F事務所
3Fに行くと、staffらしき男性がいたので、検定を受けに来た旨を伝えると、試験会場は4Fだと教えてくれた。
4Fに行くと、試験会場があった。
名前を告げると受験番号を告げられた。
座席表の通りに着席し受験票を記入した。

その日に集まった受験生は8名ほどで、1級から4級まで全員同じ部屋で同時に筆記試験を受けた。
全員集まったところで、以下の内容を含む簡単な説明があった:

  • (今回私が受験する)4級の試験時間は60分
  • 早く解き終わった場合は早期退出が可能
  • 早期退出のあと、(その瞬間に会話試験を受験している人がいない場合)すぐに会話試験を受験可能
  • 試験結果は1ヶ月以内に葉書で知らされる

筆記試験。
いくつか見たことがない単語があり、分からない部分は素直に空欄にした。
HPに載っていた例題よりも若干難しいと感じた。
体感、7割は取れたかな、という感触。
筆記試験は60分だったが10分程度で解き終わったので早期退出し、会話試験を受けに別室に向かった。1

会話試験は私と試験官1名の対面で行われた。2
詳細な試験内容をここで詳らかにするのは控えるが、エスペラント協会のHPに載っている例題と似ていた。
前半は渡された問題用紙を読み上げるのがほとんどで、後半は試験官からの質問に簡単なesperantoで答える形式だった。
試験官の説明は丁寧で、esperantoの発音も明瞭なのがありがたかった。

試験終了後、3Fの売店問題集を見つけたので、おみやげに購入。

Staffらしき方々や試験運営の方々は皆親切で、とても気持ちがいいと思った。

試験前日までのこと

3ヶ月くらい前からDuolingoesperantoを学び始めた。
一日に何分学習するか、目標を予め入力し、その目標を何日連続で達成できたかが表示されるので、motivationが維持される。
このDuolingoによる学習を毎日10分程度、3ヶ月に亙り行い、試験直前に例題を暗記して試験に臨んだ。
試験当日は語彙力と会話経験の不足を感じた。
自己紹介をesperantoでできるくらいにはしたほうが安心だと思った。

今後のこと

Duolingoによる学習は楽しいので継続するつもり。
ほかの資格試験との兼ね合いで、余力があれば上の級も受けたいけど、今回の結果が不合格だったらやる気無くなっちゃうかも。


  1. とあるblogで4級受験者が余った時間で3級を受けさせてもらえた例を見たが、試験終了後に3級受験の提案はなかった。

  2. 受験の様子をほかの受験者に聞かれることはなさそう。

Matrixの特定の要素を取り出しvectorに並べる

Rの話です。

Problem

Matrixから特定の要素を抜き出してvectorを作ろうとしたところ、なぜかmatrixが生成されて困ってしまいました。
たとえば、次のようなmatrixを考えます。

> mat <- matrix(1:100, 10, 10)
> mat
      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
 [1,]    1   11   21   31   41   51   61   71   81    91
 [2,]    2   12   22   32   42   52   62   72   82    92
 [3,]    3   13   23   33   43   53   63   73   83    93
 [4,]    4   14   24   34   44   54   64   74   84    94
 [5,]    5   15   25   35   45   55   65   75   85    95
 [6,]    6   16   26   36   46   56   66   76   86    96
 [7,]    7   17   27   37   47   57   67   77   87    97
 [8,]    8   18   28   38   48   58   68   78   88    98
 [9,]    9   19   29   39   49   59   69   79   89    99
[10,]   10   20   30   40   50   60   70   80   90   100

このmatの(1, 4), (2, 5), (3, 6)成分を取り出してvectorを作ろうと考えたのですが、vectorではなくmatrixが得られてしまいました。

> r <- c(1, 2, 3)
> c <- c(4, 5, 6)
> mat[r, c]
     [,1] [,2] [,3]
[1,]   31   41   51
[2,]   32   42   52
[3,]   33   43   53

Solution

調べると、cbind()という人がいい感じにやってくれることがわかりました。

> mat[cbind(r, c)]
[1] 31 42 53

すぐ思いつくような方法として、for文で地道に生成する方法

> dim <- length(r)
> vec <- numeric(dim)
> for(k in 1:dim)
+   vec[k] <- mat[r[k], c[k]]
> vec
[1] 31 42 53

や、diag()によりmatrixの対角成分だけ取り出す方法

> diag(mat[r, c])
[1] 31 42 53

がありますが、数万〜数千万次元の巨大なvectorを作りたかったので、計算時間の観点からfor文は避けたいという気持ちがありました。
実際、計算時間を計測してみると、cbind()の方法は0.035秒、for文の方法は1.6秒かかり、diag()の方法に至っては、実行するとRがフリーズしてしまい、最後まで計算を行えませんでした。

> r <- round(runif(10^6, min = 1, max = 10)) # 適当に10^6コ自然数生成
> c <- round(runif(10^6, min = 1, max = 10)) # 上に同じ
> dim <- length(r) # 10^6
> vec <- numeric(dim)

> start <- Sys.time()
> vec <- mat[cbind(r, c)]
> end <- Sys.time()
> end - start
Time difference of 0.03506589 secs

> start <- Sys.time()
> for(k in 1:dim)
+   vec[k] <- mat[r[k], c[k]]
> end <- Sys.time()
> end - start
Time difference of 1.6093 secs

> start <- Sys.time()
> vec <- diag(mat[r, c]) # ここでRがフリーズする

フリーズの原因は巨大な行列を生成したことっぽいですが、あんまり興味がわかないのでこの辺で。

Blog 開設

Twitterに投下するには文字数が多すぎる内容や、備忘録的な内容を投下するために、はてなブログのaccountを取得した。
記事を書くにあたって、編集方法の選択を要求された:

ググるMarkdownのほうが汎用性が高いそうなので、頑張ってMarkdownの記法に慣れようと思う。