カテゴリー別アーカイブ: 研究

11/6に連続公開講座「データサイエンス時代の言語教育」(2)で講演します

2021年11月6日土曜日に,名古屋大学大学院人文学研究科英語教育分野主催の連続公開講座『データサイエンス時代の英語教育』(2)で『一般化線形混合モデルの実践 — 気をつけたい三つのポイント』というタイトルの講演をします。

名古屋大学大学院人文学研究科は私が所属していた研究科ではありませんが,大学院の再編があり私がお世話になった先生方が所属している研究科であり,私の後輩にあたる院生も人文学研究科に所属しています。そういう縁もあってお話をいただきました。私が統計の話をするというのはかなりハードルが高い(統計の専門家ではないですし知識と技術に自信があるわけでも正直ない)と思ったのですが,こういう機会をいただくことでまた自分の知識を更新し,さらにレベルアップする機会にもなると思ったので,お引き受けすることにしました。

フライヤーに要旨も載っていますが,私が名古屋大学大学院国際開発研究科博士後期課程に進学した2014年にNagoya.Rというイベントで『一般化線形混合モデル入門の入門』というタイトルで発表をしました。

ちょうど2012年に下記のレビュー論文が出ていて,それをもとにRでどうやってやるかというのをただただ紹介したみたいな感じでした。

Cunnings, I. (2012). An overview of mixed-effects statistical models for second language researchers. Second Language Research, 28(3), 369–382. https://doi.org/10.1177/0267658312443651

一般化線形混合モデルという発表タイトルでしたが,実際は一般化ではなく線形混合モデルのやり方で,私はその後の院生生活で,反応時間を扱う研究ではガンマ分布や逆正規分布,容認性判断のような二値データを扱うデータでは二項分布を使った一般化線形混合モデルを扱うようになっていきました。

7年前はそこまでウェブ上でも特に日本語では資料が多くなかったこともあり,分野を問わず上記のスライドシェアの資料は結構閲覧されていて,D2で学振の申請書を書いたときには「Googleで一般化線形混合モデルというキーワードで検索すると上に来るのは私の資料です」みたいなことを書いたこともありました(笑)

2016年にはおもにロジスティック回帰に焦点をあてたテクニカルレポートを書きました。

田村祐(2016)「外国語教育研究における二値データの分析-ロジスティック回帰を例に-」『外国語教育メディア学会中部支部外国語教育基礎研究部会2015年度報告論集』29–82. [リンク]

そして,このテクニカルレポートで書いた内容をもとにして2019年には統計のワークショップ講師をしたこともありました。

https://github.com/tam07pb915/JACET-SIG_GLMM-Workshop

そういった流れのなかで,一般化線形混合モデルのレビュー論文のようなものもいくつか新しく出版されているので,そうしたものをまとめた内容にしようと思っています。今回はワークショップではなく「講演」なので,ハンズオンで実際に分析ができるようになるということを目指すわけではなく,(1) 分析の方法,(2) 分析結果の報告,(3) 再現性の確保,という3つの観点から一般化線形混合モデルという分析の手法について話すつもりです。(3)の再現性については,昨今の再現可能性という問題を意識してのものであり,特にこの分析手法だけに当てはまるものではありません。ただ,自分が特に強い関心を持っているのであえて今回の話に盛り込むことにしました。特に,国内の学会紀要などはこういったデータ・マテリアルの公開・共有に関してガイドラインの設定がされていません。このことは今後の研究の発展を大きく阻害すると思いますので,そういったメッセージも入っています(資料はまだアウトライン程度しかできていませんが)。

資料ができたらこの記事の最後に資料へのリンクを追記する予定です。

参加申込は下記のURLから可能で,申込みの締め切りというのは特に設けられていないということです。

https://forms.gle/Ez4GmQC2JpS4j2R49

興味のある方はぜひご参加ください。よろしくお願いします。

なにをゆう たむらゆう。

おしまい。


2021.11.07 追記

当日の資料です。

『外国語学習での暗示的・明示的知識の役割とはなにか』を読みました

Photo by Vanessa Garcia on Pexels.com

はじめに

大修館書店から発売されている,下記の書籍についての記事です。

まず一言でこの本の感想を言うと,多くの人にこの本は「そのまま」読まれるべきではないと感じました。したがって,忖度なしで書きます。

また,以下の記事では私が読んで考えたことに加え,私を含めた4名の研究者で行ったこの本の読書会で話題にあがったことも含めます。読書会で議論になったことは,その都度そのように言及しますので,そうでない限りは私の主張であると考えてもらって構いません。

ちなみに,私は過去にこの本で取り上げられている暗示的・明示的知識(英語ならimplicit/explicitだと思いますけど日本語だと明示的・暗示的という人のほうが多いような)についていくつか記事を書いています。

どれも院生時代の記事ですが,私のスタンスというか立場,見方はこれらの記事に現れていると思いますのでぜひお読みください。また,本記事の以下の内容は,自己批判を多く含んでいます。それは,私が初めて「論文」というものを発表した時期にやっていた研究(2014-2015あたり)は明示的知識や暗示的知識といったものを対象としていて,測定や構成概念に対する認識の点であまりにもナイーブすぎたと思っているからです。

初学者には非推奨

もしも,「暗示的・明示的知識ってなんだろう?」とか,帯に書いてあるような「規則を知っていても使えないのはなぜ?」という疑問を持っている人がこの本を読もうとしているのを見かけたら,私は止めたほうがいいとアドバイスすると思います。なぜなら,そういった疑問は解決されるどころか余計に頭の中がこんがらがってしまうからです(理由は後述)。

そういった意味で,この本は批判的に検討できる者のみが読むべきだと思います。初学者が読むと余計にわけわからなくなってしまって悩んでしまうか,または逆に誤った知識を身につけてしまう可能性すらあるかもしれません。よって,学部や大学院生レベル,または研究職に従事しない方が手に取るべき本だとはあまり思えません。

なにがこの本の価値を下げているか

この本に対して私が否定的な印象をいだく理由を端的に言えば,この本は「だからだめだよSLA」の典型例だと思うからです。帯に「第二言語習得研究×認知心理学×脳科学」というように,この本に書かれていることがいかにも「科学的である」ような装いがありますし,真理・真実が明らかになっているかのような書き方がされている部分もあります。しかしながら,実際には曖昧性を多分に含んでいて,その最たるものは明示的知識とはなにか,暗示的知識とはなにかについて執筆者全員の定義が一致しておらず,その測定方法も違うからです。このことについては後述します。

つい先日,

第二言語習得研究(者)はなぜ「誤解」されたか

という記事を書きましたが,この記事で批判したことのいくらかも当てはまっている本ではないかと思います。

さて,本題です。本の中で気になるポイントを一つ一つ指摘していくときりがないくらいたくさんありますが,以下ではいくつかの論点にしぼって書きます。

論点1: 全体を統一する視点に欠ける

この本が全体を通して非常に残念な仕上がりになってしまったと感じる最も大きな理由は,各章の独立した論考をまとめて統一感をもたせる構成になっていないことでしょう。「はじめに」と「終章」はありましたが,本の意義のアピールが多く,全体を俯瞰的にまとめきれていたようには感じませんでした。このことは,何もこの本に限ったことではないと思います。他の分野の本がどうかはよくわかりませんが,私がこれまでに自分の研究に関わる専門書をそれなりの数読んできた印象は,多くの執筆者が各章に独立した論考を書いているパターンの書籍は質があまり高くないことが多いというものです(特に洋書)。一冊の中で扱われるトピックに多様性をもたせようとした結果,一冊の本のまとまりを欠いてしまうというのはしばしば見かけます。この本もそういう系統だというのが私の印象で,それだけであればそういう本のうちのone of themだということでスルーしていたかもしれません。

ただし,この本のテーマは一つの「概念」(明示的・暗示的を別個にカウントすれば2つ)です。暗示的・明示的知識という目に見えない概念を扱っています。それがこの本の各章に通底するテーマであるわけです。だからこそ,編者はこの本で言う「暗示的・明示的知識」が指すものを冒頭で(操作的定義も含めて)定義するべきであり,その定義に沿って各章の執筆者に執筆を依頼するか,または原稿を受け取った時点で章の間の記述の齟齬を解消するような修正作業を行うべきだったと思います。この点は読書会に参加した全員が同じような印象でした。

そういう調整がなされていないのは,すべての章で著者が独自に概念的・操作的定義を述べていることからも明らかです。結果として,第3章では暗示的知識の測定具として適切ではないと言われていた文法性判断課題が第5章や第6章では暗示的知識の測定具だとして論じられています。

百歩譲って,それが不可能である,つまり,暗示的・明示的知識を定義することは不可能であるという態度でこの本を世に送り出すのであれば,そのことを正直に書くべきでした。私がもしもこの本の編者に入っていたらそうすると思います(終章の151ページに測定具の問題への言及はありますが,全部読み終わって最後にそれ言われると詐欺っぽいので本来であれば先に言及するべきで,その意味では終章を読んでから各章を読むほうが良いでしょう)。なぜなら,この記事を執筆している2021年現在でも,研究者間ですら,暗示的知識と明示的知識がどのような測定具を用いて測定されるものであるかについての合意には至っていないからです。例えば,以下の論文は第3章(第二言語環境で日本語の文法知識はどのように発達していくかー文法項目の特徴と学習者の個人差の影響)で提示されるような明示的・暗示的知識の測定方法の分類とは異なり,時間制限つきの文法性判断課題なども暗示的知識の測定具としています(よってどちらかというとRod Ellisの分類に近い)。

Godfroid, A., & Kim, K. (2021). THE CONTRIBUTIONS OF IMPLICIT-STATISTICAL LEARNING APTITUDE TO IMPLICIT SECOND-LANGUAGE KNOWLEDGE. Studies in Second Language Acquisition, 43(3), 606-634. doi:10.1017/S0272263121000085

最新の研究ですらそういった状態なわけですから,そもそも明示的知識とはなんなのか,暗示的知識とはなんなのか,そしてそういった2種類の知識をどうやって測定仕分けるのか(より大きな問題は,そういう知識2つの実在を仮定して良いかどうか)ということについては科学的な真実があると言える状態でも,その確信度が高いと言えるような状態でもないというのが現状というのが,この文法知識の二元性というトピックを研究を初めたときから追いかけている(とはいっても研究のキャリアは修士をスタートとしてまだ10年ほどですが)私の現状認識です。

にもかかわらず,この本の「はじめに」では,次のような記述があります。

(前略)明示的知識と暗示的知識の区別はSLAの中心的課題であるが,同時に,問題もいくつか抱えている。たとえば,日本人の英語習得を扱った研究が少ないこと,研究対象が文法習得に限られていること,個人差や情意に関する研究がほとんどないこと,近接領域(たとえば,認知心理学や脳科学)の最新の手法を取り入れた研究が少ないこと,などである。本書の目的は,これらの問題点を網羅し,科学的証明を行うことにある。

はじめに iv

このパラグラフだけでツッコミどころはたくさんあって,なぜ日本人の英語習得を扱った研究が少ないとそれがSLAの問題となるのか,とか近接領域の最新の手法を取り入れていないとSLAの何がどう良くない状態になるのか,とか色々思うところはあります。また,たかだが本一冊で解決できる問題ではないだろうとも思いますが,それはおいておきます。それよりも私が驚いたのは,「科学的証明を行う」という記述です。「科学的証明」という言い方は私は人文科学の中では非常に強い主張だと思います。しかし残念ながら,「科学的証明」には失敗していると思います。全員が同じ概念なり現象なりを同じ方法で測定するというのは科学の最も基本的かつ重要な部分であると思いますが,それが成立していないからです。

一方で,1万歩くらい譲ってもう一度この本のタイトルを思い出してください。そうなんです。この本のタイトルは,『外国語学習での暗示的・明示的知識の役割とはなにか』であって,「暗示的・明示的知識とはなにか」ではありません。よって,この本は暗示的・明示的知識とはなんなのかの答えを与えるものではないのですと言われたら,まあそういう解釈もありえますよね,とは思います。ただ,そういう政治家みたいなことばの使い方は読者に対して不誠実だと思います。そしてそのことは,本の中で一切語られていないからこそ罪が重いです。本の冒頭または最後で暗示的・明示的知識というのは非常にcontroversialなトピックである,ということが明示的に書いてあり,その整理をある程度の紙幅を割いて試みた上で(この役割が第2章だったのかもしれませんが)の各章の内容であれば,私のこの本に対する評価は変わっていたと思います。

論点2: 用語・定義がカオス

知識,処理,意識

論点1と関連しますが,まずもってこの本は各章でそれぞれの著者がそれぞれの概念的定義で暗示的・明示的知識という用語を使っています。また,類似する概念である宣言的知識(declarative knowledge),手続き的知識(procedural knowledge)であったり,「手続き化」(procedualization),「自動化」(automatization)といった用語も含めて,それが何を指すのかも章ごとにばらつきがあります。また,「意図的」(intentional)という用語が「意識的」(conscious)という用語と同じような意味で使われているのではと思う箇所(pp.52-53あたり)もありました(意識という用語関連の整理については福田(2018)がわかりやすいです)。

例えば,第4章では語彙の知識という観点から暗示的・明示的知識についての議論がされています。p.58に 「手続き的知識の習得を促す…」とありますが,ここまでの流れで読むと「手続き的知識=暗示的知識」と読めると思います。つまり,暗示的知識=手続き的知識であり,この2つはinterchangableであるという使い方になってると解釈できると思います。しかしながら,これは第2章2.3節の「明示的・暗示的知識と宣言的・手続き的知識の関係」の内容や第9章の「第二言語習得研究で言うところの暗示的・明示的知識の区分と,脳科学で言うところの手続き・宣言的記憶の説明に多少ずれがある」(p.137)という記述と矛盾することになるのではないかと思います。

こうした用語が意味するもののズレが生じてしまう大きな原因として,「知識」(つまり脳内に保存されている情報)と「処理」(保存されている情報へのアクセス)を分けて議論できていないことが大きな問題(これはSLA全体に言える問題)なのではないかという話も読書会でありました。そして,「処理の話」と「意識の話」を切り分けることも重要です。

SLAでは,暗示的知識というのは母語話者が言語使用に用いるものであるという理解があります。言語学者でなければ,ほとんどの人間は自分の持っている言語の知識について意識することもありませんし,その情報へのアクセスを意識的にすることもないわけです。そして,第二言語学習者と比較して圧倒的な速さで言語の処理ができます。このことから,暗示的知識の概念的定義に速いことと無意識であることが含まれるようになりました。この章(第4章)のpp.53-54の最後の段落の記述を見ると,「学習者はjunctionの意味的表象に素早くアクセスする能力を有しているとみなすことができるだろう」とあります。こういう部分に,速い=無意識,という前提があることが現れています。「処理の話と意識の話」が混ざってしまっているわけです。つまり,持っている知識に対して,そのことを意識しているかどうか(自分がその知識を有していることを自分が認識しているかどうか)と,その知識にどれくらいのスピードでアクセスできるのかどうかということを分けて議論できていないように感じました。Tamura et al. (2016)で主張したように,スピードが早い=無意識,スピードが遅い=意識という単純な関係ではありません。

小学生の暗示的知識?

話をまた「はじめに」に戻します。この本の最初のページはこのように書いてあります。

(前略)たとえば,多くの小学6年生は,英語の疑問文における倒置の規則を知らないのにもかかわらず,英会話で”What color do you like?”, “What would you like?”, “Do you like soccer?”と正しく発話することができる。(中略)また,明示的知識はないが暗示的知識があると考えられるため,小学生が正しく英語を使うことができるということになる。

はじめに iii

端的に言いましょう。小学生が疑問文生成に必要な倒置の規則の暗示的知識を持っているわけありません。これはただの模倣です。仮に知識として持っているとすれば,Do you like X?で「Xが好きですか」という意味をなすというくらいのものでしょう。

こういうのを読むと,言語を「使う」の意味も多義的でコミュニケーションを難しくしているなと思います。これと同じような意味で,第6章のp.83には 「小学校英語教育の第一義的な目標は英語表現を使えるようになること(強調は筆者)」とあります。もしも小学生が暗示的知識を持っていて英語が使えるのであれば,第2章の「『使える』文法知識」について考えなくてもいいんじゃないでしょうか,となります。だって小学生でもう暗示的知識あるのですから。たしかに,小学生の言語習得はその他の章の議論と噛み合いません。なぜなら,2章では前提として多くの学習者がたどるプロセスとして「知る」->「使える」のようになっているからです。そうであれば,そうしたケースと比較して小学生がどういった学習のプロセスをたどるのか,どういった文法知識を持っているのかは議論すべきポイントです。

そしてp.84を読むわけですが,そこに書かれている内容は首をかしげるものでした。そもそもこの著者の言っている「文法知識」なるものは他の著者の言っている文法知識と指しているものが異なるように感じました。例えば,What X do you like?のX部分を様々に入れ替えて質問ができる,質問の内容を理解して答えることができる,といったとき,この小学生はいったいどのような文法の知識を持っているということになるのでしょうか。Wh句が前置されて疑問文が生成されるという知識?do挿入の知識?Xの要素を引き連れてwhを前に移動させるという知識?そうではなく,似た構造のインプットをたくさんうけることによって,構造的な類似性をヒントに構文を構築していくというような用法基盤モデルのような考え方を採用しているのであれば,そういった説明が必要でしょう。

論点3: 言語・テストが良くない

これは特に第5, 第6章の内容に関連するものですが,知識測定の道具として使用される刺激文の質が悪く,これでは測定したい知識が測れているかどうかも怪しいと思いました。

読書会で挙げられたことを1つ出せば,81ページにある刺激文の一覧をみると,

  • 正文: I have a cat.
  • 誤文: *I like animal.

となっていて,この項目で測定したいのは「名詞の単数形・複数形」となっています。正しくはI like animals.と複数形形態素がついていないといけないということでしょう。問題は2つあります。まず,このときの複数形形態素が欠如していることというのは,*I have two car.のような誤りとは訳が違います。なぜなら,後者の文であれば,「名詞が表すモノが複数なら-sをつける」という知識があれば対応できるでしょうが,I like animalに-sをつけるというのは,「種類を表す場合は裸の名詞の複数形(bare plurals)である」という知識が求められるからです。これは,単に複数=-sの知識とは言えません(名詞周りの知識ではあるのでそれも含めて複数形の知識という点で誤りではないですが,それでも対になってるとは言い難いと思います)。catは具体物を表しますが,animalは動物というカテゴリの名詞ですから,そういう意味でもこの2つは対になっているとは言えません。

2つ目の問題は,「名詞の単数形」が正文であり,「名詞の複数形」が誤文になっていることです。本来であれば,名詞の単数形について正文と誤文をつくり,名詞の複数形について正文と誤文をつくるべきでしょう。この章では文法性判断課題の正文への反応は「暗示的知識」を測っていて,誤文への反応は「明示的知識」という立場をとっています。そうなると,「単数形の知識」は暗示的知識しか測っていないし,「複数形の知識」は明示的知識しか測っていないことになります。

第6章でもこうした問題が散見されます。例えば,pp.88-89では動詞フレーズの獲得状況についての調査をした浦田他(2014)という研究が紹介されています。p.89の表1をみると,*I can play piano.という英文があります。これ以外の誤文はすべてcanの後ろに動詞がない(*I can soccer),動詞とcanの語順が異なる(I play can kendama.)など,canと動詞に焦点が当てられているものの,play pianoは「playの後ろに楽器が来る場合はtheがくる」という知識です。それって全然違うことなのでは?というのが読書会でも話題になりました。元論文を読むとTomaselloが引用されていたりして,用法基盤モデルの考え方を採用しているのだなと思いながら読めば,can VPみたいなものを見ているのかなとか思ったりもしました(それでもこの章の説明だけでは違和感を覚える人は少なくないはず)。4.2節の物井他(2015)も,正答率の低かった問題について「最初に,問題2については,rhinocerosesという児童に聞き慣れない語がふくまれていたことが原因である」と書いていて,文法性判断課題で未知語が含まれていたらその影響が出るのは当然で,そうなると語順の知識は測定できないのではと思います。元論文を読むと,以下のような記述があります。

rhinoceroses(サイ)という児童に馴染みのない単語を挿入しており,未知の単語と遭遇した場合に,その意味を推測しながら文の正誤を判断できるかを確認する意図があった。(p.88)

物井尚子・矢部やよい・折原俊一(2015)『外国語活動を経験した児童の語順に関する理解度調査 ―SVOに焦点をあてて―』千葉大学教育学部紀要, 63, 85-94.

ちなみに,このことが書いてあるのは結果部分の88ページであり,テスト作成部分には,未知語が入っているという説明は出てこず,次のように書いてあるのみです。

使用する単語についてであるが,Sは1・2人称に限定しI,youのみ, Vは外国語活動で使用頻度が高いと考えられるhave, eat,play,likeの4動詞,Oに用いる名詞はapples, baseball,lunch,pen,soccer,tennisに上位語のcolor,sportの8語,句動詞としてgo to school,get upの2種, 時間を表す前置詞を含む表現としてat six,at eightを用いた。(p.87)

物井尚子・矢部やよい・折原俊一(2015)『外国語活動を経験した児童の語順に関する理解度調査 ―SVOに焦点をあてて―』千葉大学教育学部紀要, 63, 85-94.

私の感覚からすると,テスト作成の段階の記述と言ってることが違うというのはありえないです。これはまあ本の批判ではないんですが。

第5, 第6章で紹介されている研究すべてに当てはまる指摘ですが,テストに使われる刺激文だけではなく,そもそも問題数が少なすぎるという問題もあります。小中学生に大量の項目のテストを行うことの実行可能性などを考慮すれば,問題数を増やすことが難しい事情は理解できます。しかしながら,文法性判断課題とはテストである以上,なにかを測定するためには測ろうとする文法のターゲットについて1つや2つの項目だけでは学習者が安定して判定を行えているのかどうかを判断することはかなり難しいといえます。ましてや二択の問題であるからなおさらです。「文法知識」というからには,1つの事例にだけ適用ができるものではなく,複数の事例に適用可能な規則であるはずです。そういうものを測ろうとするのであれば,1つや2つの項目に正しい回答をしただけでは,単に「それとほとんど同じ文を聞いたこと(見たこと)があった」という記憶だけでも正答にたどり着く可能性も十分にあります。また,5, 6章で出てくる「正答率」とは,1人の学習者の正答率ではなく,参加者全体の中で正答した学習者の割合であることも注意が必要でしょう。つまり,ここでは学習者個人ではなく,集団の問題となっているということです。

このことは,結果の解釈とも関わります。第5章の結果の考察については,そもそも二択の問題で5割を切っている部分の「伸び」になにか有益なものがあるようにはあまり思えません。さらに言えば学習者個人ではなく集団の話であるわけで,正答できる学習者の人数が増えた事をもって,学習が進んだというように解釈するのは少し違和感があります。

第6章でも同様に,

全体の正答率は5年生が44.5%,6年生は51.6%で,6年生のほうが高く,この差は統計的に有意であった。つまり,物井らの研究と同様,5年生よりも6年生のほうが全体として暗示的知識をより多く持っていることが明らかになった」(p.95)

とあります。ところが,p.89では,

GJTの分析では,正答率をチャンスレベル(当て推量で解答した際に期待される確率)と比較する場合が多い。GJTは提示された文が文法的かどうかを判断する二者択一のテストであるため,チャンスレベルは50%,(中略)したがって,GJTはでは正答率が50%よりも高いかどうかが重要である

という旨の記述があるのです。こういうことを書いておきながら,50%を下回っている正答率や50%をわずかに上回る程度の正答率に対して,「知識がある」という判定を下している。これはあきらかに矛盾していないでしょうか。全体の結果から「GJTで語順の正答率が5年生でも高い(特に正文)ことから,5年生でも語順に関する暗示的知識は身についている児童は多いことがわかる」(p.96)という結論も同意できません。カッコ内の「特に正文」という部分が絶妙に不誠実だと思いました。なぜなら,p.95の表2を見れば,非文とされている(10)過去形, (2)be動詞, (4)語順, (6)can, (8)want toの5項目の5年生の正答率をみると,語順の正答率はたったの32.1%しかないからです。これは他の非文の正答率25.6%~48.8%と比較しても高くない上に,50%を大幅に下回っています。そして正答率が「高い」と解釈されている正文反応の方を見ても,2択で答えられる問題(しかもたったの1回の反応)で,66.1%の学習者が正解したことをもって,暗示的知識は身についている児童は多いと結論づけるのはあまりにもナイーブすぎないでしょうか。言語の暗示的知識をもつ母語話者は正文を正文と判断することも,非文を非文だと判断することも暗示的知識を使ってやっていると思います。よって,本文に明示的に書かれてはいませんが,もし仮にGutiérrez (2013)をもってきて,非文への反応は暗示的知識なので,明示的知識は持っていないが暗示的知識はあると考える,というように言われてもちょっと納得がいきません。

場外戦: そもそも明示・暗示は厳密には教育には役に立たない

終章の3節「教育的な示唆」には,明示的・暗示的知識の測定が教育・指導上役に立つとして以下の3点が挙げられています。

  1. 暗示的知識は学習者が気づかない(意識できない)知識であるが,この暗示的知識の習得こそが学習上のゴールであると考える教員や研究者が多いため,暗示的知識が測定可能になったことは重要
  2. 明示的・暗示的知識の測定方法が確立してきた事によって,教育場面でも応用可能
  3. 明示的・暗示的知識の習得プロセスにおける諸要因の役割がわかりつつあるため,教師がフォーカスすべきところが明確になってきた。

まず1について。そもそも,今のSLAで仮定される暗示的知識というものが実際に人間の頭の中に実在すると仮定して,心理学的な考え方でそれを測定することができるという意味でいうと,「測定可能」になっていると言い切れるほどではないと思います。まだまだ不確実なことが多い状況で,あまり確定的な記述をすることは逆に教育現場に誤った理解を広めたり,そのことが教育現場に余計な軋轢を生んでしまうかもしれない可能性を危惧しています。

暗示的知識の習得プロセスを学習者に示す事ができるということの例として第8章が言及されていますが,この章で紹介されている単語学習は,まず単語を見せて訳語を思い出してもらい,その上で正解を見て到達度を「良い」「もう少し」「だめ」「全然だめ」という4段階で評定するものです。単語を学習せよという指示はしていないから意図的学習ではなく,「潜在記憶レベルの語彙学習」と書いてありますが,この学習で単語を覚えようとしないわけがないと思います。意図的学習と偶発的学習を比較して,ここでフィーチャーされている学習が後者の学習だと論じられていますが(p.128),本来の偶発的学習(意味理解を目的とした言語処理時に未知語の知識を獲得するような学習)とは明らかに異なります。また,この評定値があがっていくことが語彙の暗示的知識であるとすれば,それは4章で議論されたようなアクセスのスピードの速さを暗示的知識とする理論的枠組みともずれます。

こういうズレは,教育場面でのテストや測定と,研究としてのテストや測定に求められる厳密さが異なるということを意味していると思います。このことは,2番目の論点にも関わります。

2の教育場面での応用については,時間制限付きの文法性判断課題を用いたりelicited imitation(誤りの含まれた英文を復唱させ,復唱の際に誤りを直すかどうかで知識の有無を判定するテスト)をすることだと書かれています。ところが,その前の節(p.151)では,これまでのSLA研究で用いられてきた課題は問題点も指摘されているという記述もあります。そういうのを読んだあとで,「測定方法が確立してきた」(p.152)と言われると,え?本当に「確立」しているのでしょうか?と読者は疑問に思わないでしょうか。私は思いました。さらに,終章第2節でもたびたび,暗示的知識の測定具は実際の言語使用とは大きく異なるものであるという問題点も指摘されています。この点については私も「明示・暗示の測定と指導法効果研究」という記事の中で指摘しました。であるならば,そうした実際の使用場面からかけ離れたテストをしてまで暗示的知識を測定する必要が教育現場にあるのかどうかということは問いたいです。そのことが,英語の授業や指導においてどういったメリットを持つかを考えずに持ち込もうとすることは,私はSLA研究者は避けるべきだと思います。私個人としては,明示的知識と暗示的知識という概念は純粋な認知科学としての第二言語習得研究でのみ追究されるべきであり,指導現場への導入は少なくとも今の段階ではメリットがないと思っています。第二言語習得研究では,母語話者と第二言語学習者の差が生まれる要因を解明することが研究の大きな目的ですから,厳密な暗示的知識の測定具を開発することは必要なことです。詳しくは過去記事をお読みください。

3については,明示・暗示という知識の二元論を導入するまでもなく,言語学習というのは非常に時間のかかるプロセスです。そのことは知識の二元論という余剰な概念を持ち出すことで初めて可能になることではありません。であれば,シンプルに「言語学習とは時間のかかるものである」といえばいいだけではないでしょうか。

科学的というような装いで,その内実が非常に曖昧なものに教育場面での有用性があるように断定的に研究者が言ってしまうことのリスクは研究者が考えるべきでしょう。「先週やったよね?」と教員が学習者に言わなくなったとしても,教員同士で「あなたの期末テストって暗示的知識を測定するものじゃありませんよね?」「これは明示的知識しか反映されていない問題ではないでしょうか」みたいなカオスが生まれてしまわないことを願うばかりです。

おわりに

この記事では,『外国語学習での暗示的・明示的知識の役割とは何か』という本の内容について,いくつかの観点から批判的に検討しました。私の記事の内容についても,批判的な検討をよろしくお願いいたします。

なにをゆう たむらゆう。

おしまい。


2021.09.22.03:24 更新

読解上やや不自然な部分や読みづらい部分などについて,軽微な文言の加筆修正等を行いました。最初に公開したものと内容的な変更はありません。

第二言語習得研究(者)はなぜ「誤解」されたか

Photo by Matheus Bertelli on Pexels.com

はじめに

今日は,「外国語教育研究の再現可能性2021」というオンライン開催のシンポジウムに参加しました。久しぶりに,集中して興味深く全ての話を聞けたなと思うイベントでした。開催にあたっては登壇者・発表者の皆様と,運営をされたプロジェクトメンバーの方々にまずお礼申し上げます。

さて,この記事では第二言語習得研究者を自称する者として感想がてらに,前半のシンポジウムで批判にあがっていたことについて私見を述べます。

私の質問の意図

私はシンポジウム後のディスカッションで,以下のような内容(書いた内容を保存していなかったので覚えている限りの内容)の質問を登壇者の一人である柳瀬先生宛にしました。

モデルが真実ではないというのはそのとおりだと思いますが,そのことはモデル自体が有用でないということを意味しませんし,モデルの精度をあげていくという営み自体を否定しないと個人的には思いますがいかがでしょうか。

柳瀬先生の答え(として私が受け取ったものは),受け取る側がモデルとして提示されたものを真実だと思っている(ように見えるのがよくない)。ということと,モデル構築の方法としてナラティブのほうが良いと思っている,という2点だったと記憶しています。

まず,2点目については,そういうアプローチもあっていいだろうと思います。また,非常に狭義の第二言語習得(SLA)研究者からすれば,そもそも大半の研究はモデルすら構築できてませんけどねって言われるような気もしますが,そこは一旦置いておきます。私がこの記事で焦点を当てたいのは1点目です。

私が上記のような質問をした意図は,柳瀬先生の発表を聞いて,モデルを作ることやモデルそのものを科学的に追求するという営み自体が否定されているというように感じてしまったことに起因しています。私としては,そもそも科学というのは絶対的な真理にたどり着くための永遠の営みのようなものだと思っています。草薙さんの言葉で言えば可謬主義を受け入れています。というか,人文社会系の研究者であれば(もっといえば自然科学の研究者であっても),研究によって世の中の真理が明らかになる,真実が一つに決まる,と思っている人ってほとんどいないのではないかと思っています。

それにも関わらず,モデル(研究の成果の結果として構築された現実の近似)を世の中の真理として受け取っている人がいる(あるいはそうやって広く受け入れられてしまっている),と研究者が考えてしまうのはなぜかということが重要な問題なのではないかと思いました。

ディスカッションで私の質問をとりあげていただく前だったかあるいは草薙さんの発表のときだったかは記憶が曖昧ですが,SLAの教科書と言われるような本にはすべて科学的事実かのように記述されているというような内容の発言があったかと思います。

よって,SLA研究者がどうやって自分たちのことを認識しているかは別として,「外から」はそう見られているということは間違いなさそうです。そして,それは柳瀬先生も草薙さんにしても(私は柳瀬先生の過去の研究のことは存じ上げておりませんで亘理先生の話を聞いて知ったわけですが)どちらかというと「そっち寄りだった」人からそう思われている,ということです(草薙さんは私が博士課程の2年間文字通り毎日一緒にいて共同研究もたくさんやったのでよくわかっているつもりです)。

研究者・実践者双方に研究に対しての態度を改める必要あり

上記のような問題,つまり研究の知見と言われるようなものをどう捉えるのか,という点についての私の意見は短くまとめれば以下のツイートのようなものです。

以下では,便宜的に「研究者視点」「実践者視点」に分けて良くなかった点を考察します。これはそれぞれが別の人物であることを必ずしも意味しない(一人の人間として研究者であり実践者である可能性も当然あるという認識がある)ことは言及しておきます。

研究者がやってしまったこと

上述の「SLAの教科書と言われるような本にはすべて科学的事実かのように記述されている」みたいな発言(実際にそうかは置いておいて他の研究者からそう思われてしまうこと)は,SLAという研究分野を立ち上げ,そしてそれを研究として他の分野と同等の価値があるものだということを社会に認識してもらわなくてはいけなかったという先人たちの苦労の結果として起きてしまった不幸なのではないかと思います。

SLAは学際領域だっていうことがよく言われますが,それは私は「表面」で,「裏面」は研究として確立することに非常に苦労したし,研究,または学問としての体をなすために試行錯誤してきたのがこれまでの歴史だというようにも思っています。

その結果として,私達のやっていることはscienceなんだ,ということを周りにアピールする必要がありました。そうではないと,研究として認めてもらえないからです。そういう苦労の結果として,様々な学会が立ち上がり,多くの学術雑誌が誕生し,そしてこれまでにたくさんの研究者を世に送り出すことに成功しました。一方で,そういった「アピール」が,意図的であるかどうかは別として誤解を生んでしまった面もあると思います。

世間に自分たちのやった研究の成果を発表する際に,本来であれば,そこまで確定的なことを言うべきではない,結果の解釈には慎重になるべきところを,研究ではこういうことが明らかになっている,というようにしてしまったこともあるのではないかと思っています。これはもちろん私自身も過去にそういった過ちをしている可能性も認識した上で言っています。メタ分析だろうが同じことです。研究の結果の解釈には必ず留保がつくべきはずなのに,そこをもし丁寧に説明しようとするとそもそも紙幅の関係で無理だし読者にも「結局何がわかったの?」と思われてしまう。だからわかりやすくしようとした。結果として,誤解を生んでしまうような知見が広まってしまった可能性もあるのではないかと思います。

余談ですが,いまや胡散臭い語学系広告にも「第二言語習得」という言葉が権威付け的に使われるようになってしまったことも,真摯に第二言語習得研究をしている人たちが望まない結果だと思います。もう一つ余談をすると,自分が先人の苦労に乗っかって今の職業的地位と安定を得ていることに最大限のリスペクトを払った上であえていうのは,英語教育「学」や外国語教育「学」という「学問」へのこだわりは,中身のほうが追いつかずにここまで来てしまったのではないかというのも思っているということです。私達世代(より下)の使命は,このことについて一度立ち止まって考えることだと思います。

実践者がやってしまったこと

研究の知見を解釈する側の実践者の視点からいうと,「科学的」ということばに過剰な信頼を置いてしまったことを反省する必要があるのではないかと思います(これは教育実践者のみならず一市民としての科学リテラシーも絡むでしょう)。

「あすの授業に役に立つ」というのは,実践者にとって有益であることを表すスローガンのように用いられている風潮があると思いますが,私としては少なくとも学会発表や一論文レベルで,それがそのまま「あすの授業に役に立つ」研究ということはほとんどないんじゃないかと思います。授業を考えるヒントになる可能性はたくさんあると思いますが。即効性をもって「あすの授業に役に立つ」のは研究ではなく,授業のアイデアレベルのことではないでしょうか。

再現可能性を思考したプロジェクトの先に研究の蓄積がなされたうえで,「あすの授業に役に立つ」のではなく,より広く授業を考える際のなにかのタイミングでの意思決定の基準の一つになりうるような研究の知見を出す,というのは可能だと思いますし,それこそがプロジェクト(の目標ではないと思いますがその先の)目標になっているのではないかと思っています。そのことについては賛同します。

ここで強調したいのは,私は実践者を責めているわけではないということです。実践者の方々の多くが置かれている環境に,余裕がない,これが最も重大な,そして喫緊の課題でしょう。余裕がないからこそ「あすの授業に役に立つ」ことを求めてしまうわけです。本来なら,1週間先,1ヶ月先,1年先,自分の教えている学習者が自分の所属している教育機関を離れるとき,まで見据えて授業は考えるべきです。ところが,それができない。そんな余裕がないからです。そういう状況まで追い込まれたら,藁にもすがる思いで何かを「信じたい」と思うことは当然のように思います。私も8ヶ月間という短い間で,なおかつ担任ももっていませんでしたが,公立の中学校教員として勤務していたことがありました。その時を振り返ってみると,あの時より忙しかったことはこれまでの人生でないし,この先の人生でもおそらくないだろう,と確信を持って言えるほどには激務でした。もちろん経験がゼロだったので非効率な働き方をしていたと思いますし,手の抜きどころも全くわかりませんでした。むしろ,手を抜いたら絶対にいけないという強迫観念で,自分という人間のあらゆるリソースをすべて仕事に振り向けていたとすら思います。悲劇的なことは,そこまでやっても自分にとって満足のいく授業に到底及ばない出来だったことです。

本当に辛かった。だから私は,教育実践者を責めるつもりはありません。そのうえで敢えてここで言わなければいけないのが,「研究」というものはたった一つの真実を教えてくれるものとは限らないということです。研究者が,わかりやすさを重視した部分がある。そしてそのわかりやすさが受け入れられる環境が実践者側にあったのではないかと。このことは,間接的にですが今回のシンポジウムが扱っていた再現可能性のテーマに非常に大きく関連していると思います。

不確実さへの不寛容

これはなにも英語教育の分野に限らないことかもしれません。人間ははっきりしないことをはっきりさせたがる生き物なんじゃないかと思います。曖昧なことや不確実さのあることを受け入れることが難しい。なぜなら,それでは自分がどうすべきかわからないからです。しかしながら,世界は不確実さに満ちあふれているわけです。そこで,その世界の不確実さを多少ましにする,人々の不安を和らげようとする営みが研究と言ってもいいかもしれません。「多少ましにする」とはつまり,研究が明らかにしたことには必ず確からしさのグラデーションがあるということです。今受け入れられていることがのちに否定されるというようなことは起こりえます。研究者がやっている営みは,その現時点での確からしさを高める努力をすることと,その努力を続けていくことだと思っています。そのことをいくら研究者が認識していたとしても,研究者が発信する情報を受け取る側とそういった合意形成が取れていなければミスコミュニケーションが起こってしまいます。この状況こそが,私は解決されるべき根本的問題だという認識を持っています。

わかりやすさの弊害

とはいえ,世間の風潮としても,わかりやすいことは人々が最も価値を置いていることの一つではないかと思えるほどに,この世の中は(人々は)わかりやすさを求めているように思います。その態度が,わかりやすくないものにたいしての否定的な感情や排除を生んでいるように思うのです。だからこそ,わかりやすくない研究というのは金の無駄だと言われ,意味がないと思われてしまう。そう言われると研究者は,無駄なことに意味がある,と反論します。ところが,これはそもそもの前提の部分でずれているのではないかと思います。わかりにくさは無駄ではない,というのが一つ。そもそも世の中はわかりづらいものです。人間が何年もかけて一生懸命時間とお金と労力を費やしても謎だらけなわけです。つまり,そもそもわかりにくいものなのだ,という認識を共有すべきだと思います。研究のブレイクスルーというのは,このわかりにくい状況を一瞬にしてわかりやすいものに変えるものなんじゃないかという気もします。しかしながら,それはそんなに頻繁に起こるものではありません。

また,私達は短期的なものを重視しがちです。中長期的なことは見えづらいし想像が及びづらいからです。だからこそ,すぐに得られる結果(「目に見える成果」)を重視します。研究もそういう枠組みに絡み取られてしまっています。多くの研究者が,自分が貢献できる部分はその研究分野のゴールから見てものすっっっっっっごくちっぽけなものであることを自覚しているはずです。自分が生きているうちにはまず解明されないだろうなぁという大きな課題を前に,それを切り分けて,切り分けて,切り分けて,その一部を多くの研究者で分担しながら明らかにしようと試みています。だから本当は,一つの研究で世の中を変えることなんて殆どの場合無理だし,一人の研究者が生涯で変えることのできることも,世間一般の人の感覚からすればよほど小さいわけです。このことを理解してもらうのがすごく難しいのではないでしょうか。

おわりに

思考を垂れ流すように書いていたらずいぶんと話が大きくなってしまいました。私が言いたかったのは,「科学」や「研究」ということばに対する認識をすり合わせていく必要がありそうですね,ということです。いちおう未熟ながら研究者の端くれですので研究者目線の記述になってしまい,それが自己保身のように解釈されてしまう面もあったかもしれません。私としては,研究者がのらりくらりしていて良いわけではないですし,研究の知見を世の中に伝える際にわかりやすさは度外視していいとも思いません。人生をかけたプロジェクトに挑みつつ,真摯な態度で,慎重に話をするべきだと思います。こういうのはおそらくサイエンス・コミュニケーションということばで語られるものだと思いますので,そういった本をいくつかAmazonで注文した次第です。

なにをゆう たむらゆう。

おしまい。

[R] mutateとacrossでデータの下処理を少しだけエレガントに

まえおき

私はdplyrは5年前くらいから使っていて,自分が扱うようなデータについて自分がやりたいことを(その表現方法のエレガントさは別として)表現することはできていました。ただ,近年dplyrはアップデートを重ねていました。昔覚えたやり方でやろうとしても,その関数は使えませんとか,その表記方法は違いますとか言われることが増えました。分析の下処理でやりたいことは基本的に研究が変わらないので同じです。よって,過去に自分が書いたスクリプトのコピペをすることが多いわけです。それができなくなっていたと。

特に,最近の更新でacross()という関数が導入されたことが変更として大きいなと思います。まだまだこのacross()に関する記事も少なかったので,自分が使うにあたって覚えたことをメモ代わりに書いておきます。ここでは,mutate関数と一緒に使うケースです。つまり,ある特定の列について,ある処理を施して,その処理を施した列をデータフレームに追加するという作業です。単純に列に対して処理を施すだけというのは結構記事があったんですが,列を追加することについては全部列挙するみたいな方法しか見つかりませんでした。そこでacross関数の出番というわけですね。

やりたいこと

例えば,今やってる研究のデータでは,データフレームの中に頻度のデータが入っています。これをログ変換したいとします。すると,これまでは以下のように書いていました。

log(dat$ColFreq)->dat$ColFreq_log #コロケーション頻度
log(dat$AdjFreq)->dat$AdjFreq_log #コロケーション内の形容詞の頻度
log(dat$NounFreq)->dat$NounFreq_log #コロケーション内の名詞の頻度
log(dat$MIScore)->dat$MIScore_log #Mutual Information Score

別にコピペ&書き換えみたいなことをしながらやればいいし,これでだめだってことはないんですけど,複数の列について

  1. 同じ関数を適用
  2. 列を追加する

という同じ動作をしているわけなので,これは一気にできたほうが応用可能性があがります。私は手作業でやるの無理みたいな列数のデータを扱うことはないんですが,もし仮にそういうデータを扱う場合には何十行も使うのは好ましくないし無駄な作業だといえます。そこで列に対して処理を施して追加するという機能があるmutate関数と,それを複数列に適用する際に便利なacross関数を組み合わせます。

やりかた

ちなみに,なんだかんだでdplyrのパッケージのPDFが一番わかりやすかったです(pp. 3-6のacross関数のセクションとpp. 43-46のmutate関数のセクション)。across関数の引数は,列(.cols),関数(.fns),追加する列の名前(.names)という3つの引数があります。よって,今回のケースで言えば列のところで頻度情報が入ってる列を選択し,関数はlogを選べばOKです。ただ,.namesがないと情報を上書きしてしまいます。.namesのところは手書きで全部列名指定してやらなかんのかと思いましたが,そんなことはありません。”{.col}”を使えば,もとの列名を使えます。これにあとは自分で好きなタグのようなものをつけてあげればいいですね。”{.fn}”というのも使えて,これは使った関数名が入ります。

ということで,以下のようにすれば頻度情報にログ変換して列追加という作業ができます。

dat%>%
  mutate(across(c(ColFreq, AdjFreq, NounFreq, MIScore),log,.names = "{.col}_log"))->dat

.namesの部分は”{.col}_log”としていますが,”{.col}_{.fn}”でも同じです。dat$ColFreq_log, dat$AdjFreq_log,dat$NounFreq_log,dat$MIScore_logという4つの列が追加されます。ちなみに,列指定の部分は列の数値(e.g., 1, 2)でも可能です。頻度の情報が5~8列目にあるなら,次のように書くこともできます。ある特定の文字列が含まれる列を選ぶcontains()関数starts_with()関数とかも使えるはずです(こういうのは調べれば結構例があります)。

dat%>%
  mutate(across(5:8,log,.names = "{.col}_log"))->dat

ちょっと応用

さて,mutate関数とacross関数でたいぶすっきりしたコードを書くことができました。そこでふと,私がもう一ついつも下処理で複数列に適用する作業を思い出しました。それは,変数の標準化です。いつもなら次のようにしてました。

dat$z.oqpt <-scale(dat$oqpt)[,1] #Oxford Placement Testの点数の中心化
dat$z.rating <-scale(dat$rating)[,1] #評定値の中心化

これも別に2行だけなので大したことないんですが,やってることは先ほどのログ変換と同じですので,これもmutate関数を使って書き直してみましょう。次のようになります。

dat%>%
  mutate(across(c(oqpt,rating),scale,.names = "z.{.col}"))->dat

これでうまくいっているようにも見えますが,実はscale関数って出力された結果がベクトルではありません(データ型を調べるとmatrix型なのがわかります)。よって,大抵の場合は分析に問題はありませんが,あとで(私の場合だと分析結果の図示とか)ベクトル形式が求められる関数に渡した際に問題が発生することがよくあります。データフレームをただ眺めるだけではそのことはわからないので,次のように工夫してあげる必要があります。

dat%>%
  mutate(across(c(oqpt,rating),~scale(.x)[,1],.names = "z.{.col}"))->dat

さきほどと関数部分の書き方が変わっているのがわかると思います。このように”~”をつける書記法はpurrr-styleと呼ばれるそうですが,これは一般的には関数内の引数を指定する場合によく用いられます。例えば,~mean(.x, na.rm=T) のように使います。”na.rm=T”は欠損値は外して関数を適用するという設定のようなものです。今回は引数の設定ではなく,~scale(.x)[,1]としています。”[,1]”とすることで,行列の1つ目の要素(つまりこれは標準化された数値のベクトル)だけを出力してくれます。ちなみに,この方法で.namesに{.fn}をつかって次のようにすると,出力される列名はoqpt_1, rating_1のようになりました(理由は不明)。

dat%>%
  mutate(across(c(oqpt,rating),~scale(.x)[,1],.names = "{.col}_{.fn}"))->dat

おわりに

というわけで,改良されているんだろうけれども前のやり方に慣れてるこっちからしたらアップデートたびにコードを書き換えるのまじで面倒…って思っていたのですが,調べてみるとやっぱり便利でしたというお話でした。

またこういう系のことで新しく覚えたことがあれば記事に書こうと思います。

なにをゆう たむらゆう。

おしまい。

【レビュー】タスク中のL1使用について

はじめに

超久しぶりに論文のレビュー記事。対象は以下の論文。メモ的なものです。

Xu, J., & Fan, Y. (2021). Task complexity, L2 proficiency and EFL learners’ L1 use in task-based peer interaction. Language Teaching Research, 13621688211004632. https://doi.org/10.1177/13621688211004633

概要

Task complexityの異なるinteractiveなタスクに取り組ませ,その中でのL1使用について,熟達度グループごとの比較をした研究です。上級グループでは複雑なタスクでL1の使用が増加しており,このL1使用はメタ認知的あるいは文法に関する会話の役割を担っていた。一方で,下級グループではそういった傾向は見られなかった。という話です。

本研究

RQ

  1. タスクの複雑さがL1使用に与える影響
  2. タスクの複雑さがL1使用に与える影響は熟達度によって異なるか
  3. タスクの複雑さはL1使用のどのような機能に影響を与えるか
  4. タスクの複雑さがL1使用の機能に与える影響は熟達度によって異なるか

参加者

  • 48人の中国語話者大学生
  • 大学一年生でレベルの違う2つの大学からリクルート(24ずつ)
  • レベルの高い方->high group, レベルの低い方-> low group

タスク

  • 複数コマのナレーションタスクで,Mr. Beanの動画の一部を10コマで表したものが2種類あって,それを二人で協力してナレーションするタイプの課題です(どっちの素材でもsimple/complexでやった)
  • 複雑さの操作
    • Robinsonのフレームワークの中で,+/- here and nowを選択
    • + here/now は絵を見ながら現在のこととして,-here/nowは写真を見ずに過去のこととしてという感じ(絵を見る時間は3分間でメモとかはなし)
    • expert ratingでも難しさの違いがあることは担保してる

手順

  • L1は使う必要があると感じたら使っても良いと言われている
  • within subject-designで同じ学習者が2つのタスクをやる

データコーディング

  • まずはL1の使用をコーディングして5つのカテゴリに分類
    – metacognitive talk(タスクのマネジメントなどについての発話)
    – grammar talk(文法について話す)
    – vocabulary talk(語彙について話す)
    – phatics(expressions such as ‘mmm, yeah, ok’みたいなものらしいです)
    – off-task talk(タスクとは直接関連しないもの)
  • L1使用の量については次の3つ
    • 全発話語のうちのL1の発話語
    • 全ターンのうちのL1のターン
    • predominant L1 turns(L2の語数と同じかそれよりもL1語数が多い)とminor L1 turnsに分類

結果

結果は以下の通り。

検定を何回もやるので有意水準を1%に設定
  • 語数とターンでは有意差あり(難しいほうがL1多め)
  • ただしpredominant L1 turnsでみると差はない
  • ただしSD広め
  • 一応RQ1はYES

熟達度別で見ると…

熟達度低いグループでは差がない->RQ2はYES

機能別では…


1%基準で有意なのはgrammarだけ


熟達度も入れてみてみると,高熟達度群でmetacognitive talkとgrammar talkだけsimple/complexの差が有意

議論

  • 以下の記述を見ると,そんなにL1使用が多かったとは著者たちは思ってないっぽい

Our results show that the participants did not use their shared L1 excessively, 27% in the simple tasks and 31% in the complex tasks. In other words, in spite of the fact that participants were allowed to use Chinese, students did not rely much on their L1,….

p.11
  • 先行研究よりは多かったということは言っているけど<-3割はさすがに多すぎでは?(今作っている教科書では,9割以上英語で話せたかというのを目安に自己評価をさせようということでいまのところやってます)
  • 意味中心のやりとりだとL1使用が多くなるとは言われているから,それが原因かも(Moore 2013, Tognini & Oliver 2012がそういうこと示したらしいけど,それどういうロジックなんだ?)<-読んでないです
  • more complex, more L1

熟達度に違いがあるL1使用例

論文中で会話のスクリプトが出てるんですがここでは要約だけ。

High group

  • complex task
    物語の詳細を描写しようとしたり,描写の質をあげるためにL1使ってる
  • simple task
    語彙を探しているときに使ってる

Low group

  • complex task
    – そもそも細かいとこまで描写しようとしてない
    – 過去形も使ってないし,それを修正しようともしない(low awareness towards linguistic forms)
  • simple task
    – こっちだと逆に細かいとこまで描写しようとする
    – でも能力的にそこまでできないのでL1を使う(主に語彙)
    – 結果的にどっちでもL1使用の量は変わらない

L1の機能

  • task management的な部分でL1使う(役割分担,どうやってナレーションするか,絵に含まれる情報,などについて話すときにL1使う)

なぜ高熟達度はL1使用多い?

  • 高熟達度群は,英語力にある程度自信があるので,より目標を高く設定して頑張ろうとする
  • その際にどうしたらうまくできるか試行錯誤する過程でL1が出てくるのではないか
  • 低熟達度群は,自分たちに自信がある内容自体とタスクを達成することに注力していた

感想

そもそも

complexなほうがL1多いと言うけれど,それはcomplexなタスクだからということではなく,学習者に与えるタスクとして(少なくともtaskを授業で使うという目的に照らして)間違っているということではないのかなというのが最初に思ったことです。機能をみたときにmetacognitive talkが他と比べてかなり多いというのは,タスクの進め方について十分な指示が与えられていなかったという解釈もできると思います。タスク遂行(今回であれば絵を描写すること)に必要なリソースは,タスク遂行についてのリソースとは異なるでしょう。pre-taskというとタスク遂行そのものへの準備に焦点がついつい向かってしまいますが,タスクをどう進めるかについても学習者はやり取りする必要が生じることはもっと認識されていいでしょう。そこでL1を使ってほしくないという思いがあるならば,task managementに必要な汎用性の高い表現は与えてしまって,それが使えるようにしてあげることはしても良いんじゃないかなと思います。そうでなければ,進め方を話し合わせなくてもタスクができるように具体的な指示を与えるべきでしょう。

そういったことまで含めて,大事なことはtask単体の複雑さどうこうの効果というよりも,授業の構成でそこをどうカバーするかだと思うし,授業の前後になにをやるかのほうがよっぽど授業内のL1使用に影響を与えるのではないかなと(それもtask complexityのmanipulationだと言われたらそうなんですけどね)。だとしたら,そうやっていろんな要因がある中で1つだけを取り上げてこういう形の研究やることって理論への貢献もあるのかないのかわからないし(いろんな要因の+/-を操作してL1の使用を調べた研究がたくさん集まったらメタ分析ですか?),実践の参考にもなりそうでそんなにならないですよね。

それタスクか?

あとは,ナレーションするタイプのタスクはいいとしてもそれを2人でやるっていうのは状況がかなり特殊だし,そもそもそれタスクとしてどうなん?という指摘もあると思います。インタラクティブなタスクをやらせるならもっとそれに適したタスクはあるはずだし,コマ使うなら10コマをバラバラに渡して,コマをストーリーの順番に並び替えるような情報合成型のタスクにすればよかったんじゃないかなとか思うところもあります。

もっと授業に関しての記述を

あとは,この論文は授業に関する記述が明らかに少なすぎだと思います。タスクをどう実施したかが5行だけです。通常の授業の中でやられたとは書かれていますが,そうだとしたら普段どのような授業をしているのか,授業と関連させているのか(授業の成績とは関係あるのかないのか),どういうビリーフの教師が普段教えているのか,等が決定的に重要ですし,実践に近いことをやるならそういうことを詳しく記述しなければ実践者が参照することも他の研究結果と比べることも難しいでしょう。実践に近いことをやればやるほどそういう要因で結果が容易に変動することは誰しもが想像できるわけですから。査読者もそういうのちゃんと指摘してほしいなと思います。

ペアの差の考慮

結果の表を見ると,SDがかなり広いですよね。だとしたら,それはペアで傾向がかなり異なっていることを示しているわけですから,こういうときこそマルチレベルの分析しないといけないんじゃないかなと思います。まああんまりテクニカルな分析に関しての指摘はしたくないので,あくまでsuggestionて感じですけど。

おわりに

面白そうかなと思って読んだら面白くなかったというオチでした。タスクのことは知識として持っておかないとなと思う一方で,こういう論文はそろそろ読むのがつらいです。

なにをゆう たむらゆう。

おしまい。

追記

Twitterで反応をもらったので追記します。やや複線化してますけど。

上のレビューでは先行研究のレビューの部分をがっつり端折ってしまっていますが,最初のイントロの部分で,インタラクション中のL1使用はL2 learningにポジティブなインパクトをもつという前提にいることを書いてはいます。

(前略)a growing body of research supports that students’ L1 use can be a social and cognitive tool (Alegría de la Colina & García Mayo, 2009; Antón & DiCamilla,1998; Storch & Aldosari, 2010; Thoms, Liao & Szustak, 2005). That is, judicious use of L1 can enhance L2 learning, giving full play to it as a mediating tool to analyse language and perform tasks. Specifically, L1 contributes to supporting peer interaction, helping learners’ negotiation of social identities and pro- moting the exchange of more meaningful and sophisticated ideas (Al Masaeed, 2016) (p.2)

で,このあとに,L1使用に影響を与える要因として熟達度があることを指摘し,それに加えてタスク要因もあるんじゃないかということで本研究がそこを見るよという流れですね。

ただ,そうであっても個人的にはタスクを用いる理由とその背後にある理論を考えれば,L2使用にこだわる理由があると考えるので上の「そもそも」に書いたようなことを思ったということになります。そういうバイアスで読んでいたので,「L1使ったからどうだっての?」という亘理先生の指摘は最もです。

とりあえず一旦ここまで。また加筆するかもしれないです(2021/04/28 19:15)。

J-SLA2020で共同発表します

Photo by Anna Tarazevich on Pexels.com

3月27-28日にオンライン開催される第20回 日本第二言語習得学会 国際年次大会(J-SLA2020)設立20周年記念大会で,共同研究の発表があります。

2020年度の終わりに,2020年度の初めての研究発表ということになりました。プログラム等の詳細は下記の大会のウェブページから閲覧できます。

第20回 日本第二言語習得学会 国際年次大会(J-SLA2020)設立20周年記念大会

発表の形式としては,発表自体はビデオ視聴で,質疑応答はzoomでリアルタイム実施ということになっています。参加するためには年会費の支払いが必要ですので,発表聞いてみようかなという方は会員登録をして頂く必要があります(参加費の徴収はありません)。

J-SLAはクレジットカードでの年会費納入もできます。詳しくは下記のページを御覧ください。2021年3月25日までに年会費を払わないと参加ができないようですので,ご注意ください。

入会・変更・問合わせ

私たちの発表は,27日の一番最終枠(17:10–17:45)で,17:10–17:30がビデオ視聴時間,7:30–17:45が質疑応答の時間となっています。

発表に関する情報は以下のとおりです。名古屋大学の後輩の寺井くんが第一著者の発表です。寺井くんは,彼がB4のときに,私個人あてに名大に進学を考えていると連絡してきたんですよね。それで,入学前に研究計画書を見たり,名古屋に彼が来て当時名大にいた他の院生と一緒に飲みに行ったりしたことがありました。残念ながら,私が関大に就職すると同時に名大の修士課程に入学したので,直接大学院で一緒だったわけではありません。ただ,それ以降も今回の発表メンバーの3人で毎週Skypeでゼミのようなことをやっていて,論文を読んだり,研究のアイデアを練ったりしていました。その中で出てきた研究のアイデアから生まれたのが今回の研究です。

正直言って寺井くんはまだまだ未熟なD生で,今回の研究発表に関してもアブストラクトも何回も修正のやりとりをしましたし,投影資料,発表のビデオについても何時間もかけて3人でやりとりしました。でも,彼は今後の名大を背負っていってほしい人材です(し実際に2022年度には彼が実質一番上になるはず)。学会発表や論文発表もいくつかしていると思いますが,J-SLAみたいな怖い人も結構来る学会での発表はないんじゃないかと思います。そういった意味でもここでしっかり発表をやりきってほしいなと(親心&プレッシャーをかける)。たくさんの方の参加をお待ちしています。よろしくお願いします。

タイトル

Learnability of L2 Collocation and L1 Activation in L2 Collocational Processing

発表者

Masato Terai (Nagoya University), Junya Fukuta (Chuo University), & Yu Tamura (Kansai University)

要旨

In the literature on L2 collocational processing, the influence of L1 activation has been subject to considerable discussion. Using an acceptability judgment task, this study assesses the effect of L1 activation in three different types of collocations: (a) English-only collocations that cannot be directly translated into Japanese (e.g., flat rate-??平らな割合), (b) congruent collocations (e.g., cold tea-冷たいお茶), (c) Japanized collocations (e.g., ??yellow voice-黄色い声援). The results indicated that L1 activation was evident regardless of both the proficiency level and the collocation types. The learners were more likely to accept collocations that they thought were easily translated into Japanese even for English-only collocations. Moreover, even highly-proficient Japanese learners of English did not properly reject the Japanized collocations, suggesting that those items are difficult to acquire without negative evidence that is not available in natural input.

【R】JSON形式で刺激リスト作成

はじめに

この記事では,よくある刺激のリストをJSON形式で保持するということをRを使ってやってみます。ただのデータフレームをJSON形式に変換するのはそれほど難しいことではありません。むしろ,Rを使わなくてもウェブ上で変換してくれるサービスがあります。
https://tableconvert.com/

こういうのを使うと,下記のようなテーブル形式のデータをcsvで持っていたとしたら,それをJSON形式に変換するのは一瞬です。

id name age gender
1 Roberta 39 M
2 Oliver 25 M
3 Shayna 18 F
4 Fechin 18 M
#JSON形式
[
    {"id":1,"name":"Roberta","age":39,"gender":"M"},
    {"id":2,"name":"Oliver","age":25,"gender":"M"},
    {"id":3,"name":"Shayna","age":18,"gender":"F"},
    {"id":4,"name":"Fechin","age":18,"gender":"M"}
]

問題の所在

じゃあ別にそのウェブサービスでいいじゃんということになるんですが,問題は少しこれより複雑です。というのも,私は今 jsPsychを使って実験ができるようにと勉強しています。jsPsychではJSON形式で刺激を読み込むのですが,その際に,データに階層性が必要になってくるようです。別に,反応の取得だけを目的とするなら必要ないのですが,のちのデータ分析を楽にすることを考えると,これは実験の前の段階でやっておきたいです1jsPsychのページでは以下のように例が示されています。

var test_stimuli = [
  { stimulus: "img/blue.png", data: {test_part: 'test', correct_response: 'f'}},
  { stimulus: "img/orange.png", data: {test_part: 'test', correct_response: 'j'}}
];

この例では,刺激として画像を提示するので,“stimulus”として画像ファイルが指定されています。そして,その後ろにdataという変数があって,要するに,実際に表示される刺激と,その刺激に付随する情報(正誤,刺激の種類等)が分かれていて,付随する情報は一つ階層が下のレベルに入っているということです。リストの中にリストがあるということですね。こうなると,ただのデータフレームからの変換というわけにはいかないので,先ほど紹介したようなウェブブラウザで変換というわけにもいきません。というわけで,Rを使って,できるだけ簡単にデータフレームから階層性のあるリストをゲットしましょう。というのが今回の目標です。実は,リスト->データフレームという話は,rlistパッケージ周りでやってる方が結構いらっしゃるようです(Googleで「rlist データフレーム 」と検索してみてください)。ところが,今回のようにデータフレーム->リストはあまり例が見つかりませんでした。ということでやってみましょう。結論から先にいうと,めちゃくちゃ単純でした。

1. データの準備

まずは,わかりやすい刺激リストの例として自分が最近実験で使った刺激リストを読み込みます。

dat<-read.csv("stimuli.csv")
head(dat)

一応,各列に何が入っているかを簡単にまとめると,以下のようになります。

  1. itemID: 刺激のID(かぶりがありますが,nonwordは分析から最初に外すのでとりあえずOK。ほんとは連番のがいいですけど)
  2. type: 刺激の種類
  3. word: ターゲットとなる英単語
  4. kana: 対応するカタカナ語
  5. pic: 提示する画像
  6. lang: 提示する言語
  7. prime: プライミング条件
  8. answer: 正答
  9. form: フォーム
  10. freq_J: カタカナ語の頻度
  11. freq_E: 英単語の頻度

この実験では,まずはじめに画像を提示して,参加者はその画像を見ます。画像を理解したら次に注視点が表示されます。その後に提示された文字列が実在語かどうかを判断する語彙性判断課題です。プライミングの条件がshare, spec, baseと3条件あります。さて,プログラム上では,

  1. 画像(pic)を提示
  2. 語(word)を提示

ということで,上で紹介した例と異なって,提示する刺激が2種類あります(ここでは,提示刺激は英単語のみとして進めます。カタカナ語の場合は英単語の部分をカタカナ語の列に置き換えれば良いと考えます)。つまり,

{ pic: "img/2_C_sh.jpg", word: "interview", data: {itemID: '2', kana: 'インタビュー', lang: 'eng', prime: 'share',answer: 'TRUE',form: 'A',freq_J: '29.5098', freq_E: '17.5744'}}

というのを読み込んだデータフレームのすべての行において作ることができれば成功となります。

2. パッケージの準備

とりあえず,これ入れとけばいいかなということでtidyverseパッケージと,最後にJSON形式に変換する際に使うjsonliteパッケージ。

install.packages("tidyverse")
install.packages("jsonlite")
library(tidyverse)
library(jsonlite)

3. データハンドリング

tibbleという比較的新しいデータ形式を使います。tidyrとかdplyrとか使うようになって,数年前からこのtibble形式がよく出てきてたんですが,私もいまいちよくわかってませんでした。というか,データフレームを扱うことがほとんどなので,データフレーム形式しか受け付けない関数にtibbleで出力された結果をうっかり渡してエラー吐くみたいなことが頻発したのでいちいちas.data.frame()でデータフレーム型に強制的に直すみたいなことをしてました。

ところが,今回みたいな階層性のある形については,tibble型が便利なようですね。tibbleでは,リスト型の列を持つことができるので,“data”の列に刺激の情報をまとめたリストを入れていけばいいということになります。そう考えて,次のようにやってみました。

tibble::tibble(
  pic=dat$pic,
  word=dat$word,
  data=list(dat[,c(1,2,4,6,7,8,9,10,11)])
)->dat2

ところが,これで中身を見てみると…

head(dat2)
## # A tibble: 6 x 3
##   pic         word        data             
##   <fct>       <fct>       <list>           
## 1 2_C_sh.jpg  interview   <df[,9] [48 × 9]>
## 2 3_C_sp.jpg  court       <df[,9] [48 × 9]>
## 3 6_C_sh.jpg  alien       <df[,9] [48 × 9]>
## 4 7_C_sp.jpg  appointment <df[,9] [48 × 9]>
## 5 10_C_sh.jpg stamp       <df[,9] [48 × 9]>
## 6 14_C_sh.jpg channel     <df[,9] [48 × 9]>
head(dat2$data,3)
## [[1]]
##    itemID    type               kana lang prime answer form   freq_J
## 1       2  target       インタビュー  eng share   TRUE    A  29.5098
## 2       3  target             コート  eng  spec   TRUE    A 100.7255
## 3       6  target         エイリアン  eng share   TRUE    A  17.4314
## 4       7  target   アポイントメント  eng  spec   TRUE    A  30.5686
## 5      10  target           スタンプ  eng share   TRUE    A   5.9216
## 6      14  target         チャンネル  eng share   TRUE    A  24.4118
## 7      15  target           クロール  eng  spec   TRUE    A  12.0392
## 8      18  target             センス  eng share   TRUE    A 131.8039
## 9      19  target             ベンチ  eng  spec   TRUE    A   9.6667
## 10     22  target     プロモーション  eng share   TRUE    A  10.9216
## 11     23  target               ツナ  eng  spec   TRUE    A   8.0000
## 12      1  target           アイロン  eng  base   TRUE    A  17.9412
## 13      4  target         グラウンド  eng  base   TRUE    A  72.4706
## 14      5  target           アドレス  eng  base   TRUE    A  52.2745
## 15      8  target       プレッシャー  eng  base   TRUE    A  53.1176
## 16      9  target         プロポーズ  eng  base   TRUE    A  13.0000
## 17     12  target         ボリューム  eng  base   TRUE    A   6.9412
## 18     13  target             ベース  eng  base   TRUE    A  35.3725
## 19     16  target       エクスプレス  eng  base   TRUE    A  17.9216
## 20     17  target           ストーブ  eng  base   TRUE    A   7.5882
## 21     20  target           リコール  eng  base   TRUE    A  19.6667
## 22     21  target             レター  eng  base   TRUE    A  82.6078
## 23     24  target             ガッツ  eng  base   TRUE    A  23.7451
## 24     25  target             バイク  eng  base   TRUE    A  25.8824
## 25     17 nonword     ドートレギング  eng  <NA>  FALSE <NA>       NA
## 26     18 nonword     フィスティレド  eng  <NA>  FALSE <NA>       NA
## 27     19 nonword       ストネヘンデ  eng  <NA>  FALSE <NA>       NA
## 28     20 nonword   ポリディフィエス  eng  <NA>  FALSE <NA>       NA
## 29     21 nonword   メストレイヤーズ  eng  <NA>  FALSE <NA>       NA
## 30     22 nonword         ドンスーン  eng  <NA>  FALSE <NA>       NA
## 31     23 nonword           スプラム  eng  <NA>  FALSE <NA>       NA
## 32     24 nonword ティソベディエント  eng  <NA>  FALSE <NA>       NA
## 33     25 nonword             ムイン  eng  <NA>  FALSE <NA>       NA
## 34     26 nonword           ドソーム  eng  <NA>  FALSE <NA>       NA
## 35     27 nonword             ヘイド  eng  <NA>  FALSE <NA>       NA
## 36     28 nonword         オンテナー  eng  <NA>  FALSE <NA>       NA
## 37     29 nonword         タンサック  eng  <NA>  FALSE <NA>       NA
## 38     30 nonword           フロール  eng  <NA>  FALSE <NA>       NA
## 39     31 nonword アンチヒスタモーネ  eng  <NA>  FALSE <NA>       NA
## 40     32 nonword         パラックス  eng  <NA>  FALSE <NA>       NA
## 41     33 nonword     ハイプノジスト  eng  <NA>  FALSE <NA>       NA
## 42     34 nonword       クロリエイジ  eng  <NA>  FALSE <NA>       NA
## 43     35 nonword         コラプソス  eng  <NA>  FALSE <NA>       NA
## 44     36 nonword             ビキナ  eng  <NA>  FALSE <NA>       NA
## 45     37 nonword スティメレーション  eng  <NA>  FALSE <NA>       NA
## 46     38 nonword         スキマッド  eng  <NA>  FALSE <NA>       NA
## 47     39 nonword     ディロクトネス  eng  <NA>  FALSE <NA>       NA
## 48     40 nonword         ケグファグ  eng  <NA>  FALSE <NA>       NA
##     freq_E
## 1  17.5744
## 2  21.4056
## 3   0.5272
## 4   0.5272
## 5   3.3743
## 6  20.8784
## 7   0.3163
## 8  11.7045
## 9  13.9541
## 10  2.4253
## 11  5.2020
## 12  3.6555
## 13  9.2793
## 14 31.5284
## 15  5.7292
## 16  2.2847
## 17 14.9382
## 18 40.7726
## 19  2.5307
## 20  3.5852
## 21  0.7030
## 22  3.5500
## 23  3.6906
## 24 13.8135
## 25      NA
## 26      NA
## 27      NA
## 28      NA
## 29      NA
## 30      NA
## 31      NA
## 32      NA
## 33      NA
## 34      NA
## 35      NA
## 36      NA
## 37      NA
## 38      NA
## 39      NA
## 40      NA
## 41      NA
## 42      NA
## 43      NA
## 44      NA
## 45      NA
## 46      NA
## 47      NA
## 48      NA
## 
## [[2]]
##    itemID    type               kana lang prime answer form   freq_J
## 1       2  target       インタビュー  eng share   TRUE    A  29.5098
## 2       3  target             コート  eng  spec   TRUE    A 100.7255
## 3       6  target         エイリアン  eng share   TRUE    A  17.4314
## 4       7  target   アポイントメント  eng  spec   TRUE    A  30.5686
## 5      10  target           スタンプ  eng share   TRUE    A   5.9216
## 6      14  target         チャンネル  eng share   TRUE    A  24.4118
## 7      15  target           クロール  eng  spec   TRUE    A  12.0392
## 8      18  target             センス  eng share   TRUE    A 131.8039
## 9      19  target             ベンチ  eng  spec   TRUE    A   9.6667
## 10     22  target     プロモーション  eng share   TRUE    A  10.9216
## 11     23  target               ツナ  eng  spec   TRUE    A   8.0000
## 12      1  target           アイロン  eng  base   TRUE    A  17.9412
## 13      4  target         グラウンド  eng  base   TRUE    A  72.4706
## 14      5  target           アドレス  eng  base   TRUE    A  52.2745
## 15      8  target       プレッシャー  eng  base   TRUE    A  53.1176
## 16      9  target         プロポーズ  eng  base   TRUE    A  13.0000
## 17     12  target         ボリューム  eng  base   TRUE    A   6.9412
## 18     13  target             ベース  eng  base   TRUE    A  35.3725
## 19     16  target       エクスプレス  eng  base   TRUE    A  17.9216
## 20     17  target           ストーブ  eng  base   TRUE    A   7.5882
## 21     20  target           リコール  eng  base   TRUE    A  19.6667
## 22     21  target             レター  eng  base   TRUE    A  82.6078
## 23     24  target             ガッツ  eng  base   TRUE    A  23.7451
## 24     25  target             バイク  eng  base   TRUE    A  25.8824
## 25     17 nonword     ドートレギング  eng  <NA>  FALSE <NA>       NA
## 26     18 nonword     フィスティレド  eng  <NA>  FALSE <NA>       NA
## 27     19 nonword       ストネヘンデ  eng  <NA>  FALSE <NA>       NA
## 28     20 nonword   ポリディフィエス  eng  <NA>  FALSE <NA>       NA
## 29     21 nonword   メストレイヤーズ  eng  <NA>  FALSE <NA>       NA
## 30     22 nonword         ドンスーン  eng  <NA>  FALSE <NA>       NA
## 31     23 nonword           スプラム  eng  <NA>  FALSE <NA>       NA
## 32     24 nonword ティソベディエント  eng  <NA>  FALSE <NA>       NA
## 33     25 nonword             ムイン  eng  <NA>  FALSE <NA>       NA
## 34     26 nonword           ドソーム  eng  <NA>  FALSE <NA>       NA
## 35     27 nonword             ヘイド  eng  <NA>  FALSE <NA>       NA
## 36     28 nonword         オンテナー  eng  <NA>  FALSE <NA>       NA
## 37     29 nonword         タンサック  eng  <NA>  FALSE <NA>       NA
## 38     30 nonword           フロール  eng  <NA>  FALSE <NA>       NA
## 39     31 nonword アンチヒスタモーネ  eng  <NA>  FALSE <NA>       NA
## 40     32 nonword         パラックス  eng  <NA>  FALSE <NA>       NA
## 41     33 nonword     ハイプノジスト  eng  <NA>  FALSE <NA>       NA
## 42     34 nonword       クロリエイジ  eng  <NA>  FALSE <NA>       NA
## 43     35 nonword         コラプソス  eng  <NA>  FALSE <NA>       NA
## 44     36 nonword             ビキナ  eng  <NA>  FALSE <NA>       NA
## 45     37 nonword スティメレーション  eng  <NA>  FALSE <NA>       NA
## 46     38 nonword         スキマッド  eng  <NA>  FALSE <NA>       NA
## 47     39 nonword     ディロクトネス  eng  <NA>  FALSE <NA>       NA
## 48     40 nonword         ケグファグ  eng  <NA>  FALSE <NA>       NA
##     freq_E
## 1  17.5744
## 2  21.4056
## 3   0.5272
## 4   0.5272
## 5   3.3743
## 6  20.8784
## 7   0.3163
## 8  11.7045
## 9  13.9541
## 10  2.4253
## 11  5.2020
## 12  3.6555
## 13  9.2793
## 14 31.5284
## 15  5.7292
## 16  2.2847
## 17 14.9382
## 18 40.7726
## 19  2.5307
## 20  3.5852
## 21  0.7030
## 22  3.5500
## 23  3.6906
## 24 13.8135
## 25      NA
## 26      NA
## 27      NA
## 28      NA
## 29      NA
## 30      NA
## 31      NA
## 32      NA
## 33      NA
## 34      NA
## 35      NA
## 36      NA
## 37      NA
## 38      NA
## 39      NA
## 40      NA
## 41      NA
## 42      NA
## 43      NA
## 44      NA
## 45      NA
## 46      NA
## 47      NA
## 48      NA
## 
## [[3]]
##    itemID    type               kana lang prime answer form   freq_J
## 1       2  target       インタビュー  eng share   TRUE    A  29.5098
## 2       3  target             コート  eng  spec   TRUE    A 100.7255
## 3       6  target         エイリアン  eng share   TRUE    A  17.4314
## 4       7  target   アポイントメント  eng  spec   TRUE    A  30.5686
## 5      10  target           スタンプ  eng share   TRUE    A   5.9216
## 6      14  target         チャンネル  eng share   TRUE    A  24.4118
## 7      15  target           クロール  eng  spec   TRUE    A  12.0392
## 8      18  target             センス  eng share   TRUE    A 131.8039
## 9      19  target             ベンチ  eng  spec   TRUE    A   9.6667
## 10     22  target     プロモーション  eng share   TRUE    A  10.9216
## 11     23  target               ツナ  eng  spec   TRUE    A   8.0000
## 12      1  target           アイロン  eng  base   TRUE    A  17.9412
## 13      4  target         グラウンド  eng  base   TRUE    A  72.4706
## 14      5  target           アドレス  eng  base   TRUE    A  52.2745
## 15      8  target       プレッシャー  eng  base   TRUE    A  53.1176
## 16      9  target         プロポーズ  eng  base   TRUE    A  13.0000
## 17     12  target         ボリューム  eng  base   TRUE    A   6.9412
## 18     13  target             ベース  eng  base   TRUE    A  35.3725
## 19     16  target       エクスプレス  eng  base   TRUE    A  17.9216
## 20     17  target           ストーブ  eng  base   TRUE    A   7.5882
## 21     20  target           リコール  eng  base   TRUE    A  19.6667
## 22     21  target             レター  eng  base   TRUE    A  82.6078
## 23     24  target             ガッツ  eng  base   TRUE    A  23.7451
## 24     25  target             バイク  eng  base   TRUE    A  25.8824
## 25     17 nonword     ドートレギング  eng  <NA>  FALSE <NA>       NA
## 26     18 nonword     フィスティレド  eng  <NA>  FALSE <NA>       NA
## 27     19 nonword       ストネヘンデ  eng  <NA>  FALSE <NA>       NA
## 28     20 nonword   ポリディフィエス  eng  <NA>  FALSE <NA>       NA
## 29     21 nonword   メストレイヤーズ  eng  <NA>  FALSE <NA>       NA
## 30     22 nonword         ドンスーン  eng  <NA>  FALSE <NA>       NA
## 31     23 nonword           スプラム  eng  <NA>  FALSE <NA>       NA
## 32     24 nonword ティソベディエント  eng  <NA>  FALSE <NA>       NA
## 33     25 nonword             ムイン  eng  <NA>  FALSE <NA>       NA
## 34     26 nonword           ドソーム  eng  <NA>  FALSE <NA>       NA
## 35     27 nonword             ヘイド  eng  <NA>  FALSE <NA>       NA
## 36     28 nonword         オンテナー  eng  <NA>  FALSE <NA>       NA
## 37     29 nonword         タンサック  eng  <NA>  FALSE <NA>       NA
## 38     30 nonword           フロール  eng  <NA>  FALSE <NA>       NA
## 39     31 nonword アンチヒスタモーネ  eng  <NA>  FALSE <NA>       NA
## 40     32 nonword         パラックス  eng  <NA>  FALSE <NA>       NA
## 41     33 nonword     ハイプノジスト  eng  <NA>  FALSE <NA>       NA
## 42     34 nonword       クロリエイジ  eng  <NA>  FALSE <NA>       NA
## 43     35 nonword         コラプソス  eng  <NA>  FALSE <NA>       NA
## 44     36 nonword             ビキナ  eng  <NA>  FALSE <NA>       NA
## 45     37 nonword スティメレーション  eng  <NA>  FALSE <NA>       NA
## 46     38 nonword         スキマッド  eng  <NA>  FALSE <NA>       NA
## 47     39 nonword     ディロクトネス  eng  <NA>  FALSE <NA>       NA
## 48     40 nonword         ケグファグ  eng  <NA>  FALSE <NA>       NA
##     freq_E
## 1  17.5744
## 2  21.4056
## 3   0.5272
## 4   0.5272
## 5   3.3743
## 6  20.8784
## 7   0.3163
## 8  11.7045
## 9  13.9541
## 10  2.4253
## 11  5.2020
## 12  3.6555
## 13  9.2793
## 14 31.5284
## 15  5.7292
## 16  2.2847
## 17 14.9382
## 18 40.7726
## 19  2.5307
## 20  3.5852
## 21  0.7030
## 22  3.5500
## 23  3.6906
## 24 13.8135
## 25      NA
## 26      NA
## 27      NA
## 28      NA
## 29      NA
## 30      NA
## 31      NA
## 32      NA
## 33      NA
## 34      NA
## 35      NA
## 36      NA
## 37      NA
## 38      NA
## 39      NA
## 40      NA
## 41      NA
## 42      NA
## 43      NA
## 44      NA
## 45      NA
## 46      NA
## 47      NA
## 48      NA

このように,各行にすべての情報が入ってしまいます。よって,行ごとに入れることを考えないといけません。これを一発できれいにできたらかっこいいんですが,思いつかなかったので,とりあえずfor関数でi行目を取り出してtibbleに入れる,を繰り返すことにしました。まずは,dataのところがリスト型になるようにtibbleを作ります。

tibble::tibble(
  pic=dat$pic,
  word=dat$word,
  data=list()
)->dat3
head(dat3)

しかしここでもまた失敗。dataの列の長さがあってないと怒られてしまいます。これを解決するためにlistの中に空のリストを入れます(正直ここで入れる要素はなんでもOK)。

tibble::tibble(
  pic=dat$pic,
  word=dat$word,
  data=list(list())
)->dat3
dat3
## # A tibble: 48 x 3
##    pic         word        data      
##    <fct>       <fct>       <list>    
##  1 2_C_sh.jpg  interview   <list [0]>
##  2 3_C_sp.jpg  court       <list [0]>
##  3 6_C_sh.jpg  alien       <list [0]>
##  4 7_C_sp.jpg  appointment <list [0]>
##  5 10_C_sh.jpg stamp       <list [0]>
##  6 14_C_sh.jpg channel     <list [0]>
##  7 15_C_sp.jpg crawl       <list [0]>
##  8 18_C_sh.jpg sense       <list [0]>
##  9 19_C_sp.jpg bench       <list [0]>
## 10 22_C_sh.jpg promotion   <list [0]>
## # … with 38 more rows

できあがった dat3 という変数の“data”列に,pic( dat の5列目)とword( dat の3列目)を除いたものを1行目から順にとってきてlistにして,それを dat3 の“data”列に順番にいれていきます。

for (i in 1:length(dat3$pic)){
  dat3[i,3][[1]]<-list(dat[i,c(1,2,4,6,7,8,9,10,11)])
}
head(dat3)
## # A tibble: 6 x 3
##   pic         word        data            
##   <fct>       <fct>       <list>          
## 1 2_C_sh.jpg  interview   <df[,9] [1 × 9]>
## 2 3_C_sp.jpg  court       <df[,9] [1 × 9]>
## 3 6_C_sh.jpg  alien       <df[,9] [1 × 9]>
## 4 7_C_sp.jpg  appointment <df[,9] [1 × 9]>
## 5 10_C_sh.jpg stamp       <df[,9] [1 × 9]>
## 6 14_C_sh.jpg channel     <df[,9] [1 × 9]>

こうすると,できあがったtibbleのdata列には1行目から順に,interview, court,…の刺激の情報が入ることになります。確認のために見てみましょう。

dat3$data[[1]];dat3$data[[2]]
##   itemID   type         kana lang prime answer form  freq_J  freq_E
## 1      2 target インタビュー  eng share   TRUE    A 29.5098 17.5744
##   itemID   type   kana lang prime answer form   freq_J  freq_E
## 2      3 target コート  eng  spec   TRUE    A 100.7255 21.4056

ちゃんと入ってますね。最後に,このtibbleをJSON形式に変換すれば完成です。

toJSON(dat3)
## [{"pic":"2_C_sh.jpg","word":"interview","data":[{"itemID":2,"type":"target","kana":"インタビュー","lang":"eng","prime":"share","answer":true,"form":"A","freq_J":29.5098,"freq_E":17.5744}]},{"pic":"3_C_sp.jpg","word":"court","data":[{"itemID":3,"type":"target","kana":"コート","lang":"eng","prime":"spec","answer":true,"form":"A","freq_J":100.7255,"freq_E":21.4056}]},{"pic":"6_C_sh.jpg","word":"alien","data":[{"itemID":6,"type":"target","kana":"エイリアン","lang":"eng","prime":"share","answer":true,"form":"A","freq_J":17.4314,"freq_E":0.5272}]},{"pic":"7_C_sp.jpg","word":"appointment","data":[{"itemID":7,"type":"target","kana":"アポイントメント","lang":"eng","prime":"spec","answer":true,"form":"A","freq_J":30.5686,"freq_E":0.5272}]},{"pic":"10_C_sh.jpg","word":"stamp","data":[{"itemID":10,"type":"target","kana":"スタンプ","lang":"eng","prime":"share","answer":true,"form":"A","freq_J":5.9216,"freq_E":3.3743}]},{"pic":"14_C_sh.jpg","word":"channel","data":[{"itemID":14,"type":"target","kana":"チャンネル","lang":"eng","prime":"share","answer":true,"form":"A","freq_J":24.4118,"freq_E":20.8784}]},{"pic":"15_C_sp.jpg","word":"crawl","data":[{"itemID":15,"type":"target","kana":"クロール","lang":"eng","prime":"spec","answer":true,"form":"A","freq_J":12.0392,"freq_E":0.3163}]},{"pic":"18_C_sh.jpg","word":"sense","data":[{"itemID":18,"type":"target","kana":"センス","lang":"eng","prime":"share","answer":true,"form":"A","freq_J":131.8039,"freq_E":11.7045}]},{"pic":"19_C_sp.jpg","word":"bench","data":[{"itemID":19,"type":"target","kana":"ベンチ","lang":"eng","prime":"spec","answer":true,"form":"A","freq_J":9.6667,"freq_E":13.9541}]},{"pic":"22_C_sh.jpg","word":"promotion","data":[{"itemID":22,"type":"target","kana":"プロモーション","lang":"eng","prime":"share","answer":true,"form":"A","freq_J":10.9216,"freq_E":2.4253}]},{"pic":"23_C_sp.jpg","word":"tuna","data":[{"itemID":23,"type":"target","kana":"ツナ","lang":"eng","prime":"spec","answer":true,"form":"A","freq_J":8,"freq_E":5.202}]},{"pic":"1_C_b.jpg","word":"iron","data":[{"itemID":1,"type":"target","kana":"アイロン","lang":"eng","prime":"base","answer":true,"form":"A","freq_J":17.9412,"freq_E":3.6555}]},{"pic":"4_C_b.jpg","word":"ground","data":[{"itemID":4,"type":"target","kana":"グラウンド","lang":"eng","prime":"base","answer":true,"form":"A","freq_J":72.4706,"freq_E":9.2793}]},{"pic":"5_C_b.jpg","word":"address","data":[{"itemID":5,"type":"target","kana":"アドレス","lang":"eng","prime":"base","answer":true,"form":"A","freq_J":52.2745,"freq_E":31.5284}]},{"pic":"8_C_b.jpg","word":"pressure","data":[{"itemID":8,"type":"target","kana":"プレッシャー","lang":"eng","prime":"base","answer":true,"form":"A","freq_J":53.1176,"freq_E":5.7292}]},{"pic":"9_C_b.jpg","word":"propose","data":[{"itemID":9,"type":"target","kana":"プロポーズ","lang":"eng","prime":"base","answer":true,"form":"A","freq_J":13,"freq_E":2.2847}]},{"pic":"12_C_b.jpg","word":"volume","data":[{"itemID":12,"type":"target","kana":"ボリューム","lang":"eng","prime":"base","answer":true,"form":"A","freq_J":6.9412,"freq_E":14.9382}]},{"pic":"13_C_b.jpg","word":"base","data":[{"itemID":13,"type":"target","kana":"ベース","lang":"eng","prime":"base","answer":true,"form":"A","freq_J":35.3725,"freq_E":40.7726}]},{"pic":"16_C_b.jpg","word":"express","data":[{"itemID":16,"type":"target","kana":"エクスプレス","lang":"eng","prime":"base","answer":true,"form":"A","freq_J":17.9216,"freq_E":2.5307}]},{"pic":"17_C_b.jpg","word":"stove","data":[{"itemID":17,"type":"target","kana":"ストーブ","lang":"eng","prime":"base","answer":true,"form":"A","freq_J":7.5882,"freq_E":3.5852}]},{"pic":"20_C_b.jpg","word":"recall","data":[{"itemID":20,"type":"target","kana":"リコール","lang":"eng","prime":"base","answer":true,"form":"A","freq_J":19.6667,"freq_E":0.703}]},{"pic":"21_C_b.jpg","word":"letter","data":[{"itemID":21,"type":"target","kana":"レター","lang":"eng","prime":"base","answer":true,"form":"A","freq_J":82.6078,"freq_E":3.55}]},{"pic":"24_C_b.jpg","word":"guts","data":[{"itemID":24,"type":"target","kana":"ガッツ","lang":"eng","prime":"base","answer":true,"form":"A","freq_J":23.7451,"freq_E":3.6906}]},{"pic":"25_C_b.jpg","word":"bike","data":[{"itemID":25,"type":"target","kana":"バイク","lang":"eng","prime":"base","answer":true,"form":"A","freq_J":25.8824,"freq_E":13.8135}]},{"pic":"17_n.jpg","word":"dootlegging","data":[{"itemID":17,"type":"nonword","kana":"ドートレギング","lang":"eng","answer":false}]},{"pic":"18_n.jpg","word":"fistilled","data":[{"itemID":18,"type":"nonword","kana":"フィスティレド","lang":"eng","answer":false}]},{"pic":"19_n.jpg","word":"stonehende","data":[{"itemID":19,"type":"nonword","kana":"ストネヘンデ","lang":"eng","answer":false}]},{"pic":"20_n.jpg","word":"polidifies","data":[{"itemID":20,"type":"nonword","kana":"ポリディフィエス","lang":"eng","answer":false}]},{"pic":"21_n.jpg","word":"mestroyers","data":[{"itemID":21,"type":"nonword","kana":"メストレイヤーズ","lang":"eng","answer":false}]},{"pic":"22_n.jpg","word":"donsoon","data":[{"itemID":22,"type":"nonword","kana":"ドンスーン","lang":"eng","answer":false}]},{"pic":"23_n.jpg","word":"splum","data":[{"itemID":23,"type":"nonword","kana":"スプラム","lang":"eng","answer":false}]},{"pic":"24_n.jpg","word":"tisobedient","data":[{"itemID":24,"type":"nonword","kana":"ティソベディエント","lang":"eng","answer":false}]},{"pic":"25_n.jpg","word":"muin","data":[{"itemID":25,"type":"nonword","kana":"ムイン","lang":"eng","answer":false}]},{"pic":"26_n.jpg","word":"dothorme","data":[{"itemID":26,"type":"nonword","kana":"ドソーム","lang":"eng","answer":false}]},{"pic":"27_n.jpg","word":"hade","data":[{"itemID":27,"type":"nonword","kana":"ヘイド","lang":"eng","answer":false}]},{"pic":"28_n.jpg","word":"ontener","data":[{"itemID":28,"type":"nonword","kana":"オンテナー","lang":"eng","answer":false}]},{"pic":"29_n.jpg","word":"tansack","data":[{"itemID":29,"type":"nonword","kana":"タンサック","lang":"eng","answer":false}]},{"pic":"30_n.jpg","word":"frool","data":[{"itemID":30,"type":"nonword","kana":"フロール","lang":"eng","answer":false}]},{"pic":"31_n.jpg","word":"antihistamone","data":[{"itemID":31,"type":"nonword","kana":"アンチヒスタモーネ","lang":"eng","answer":false}]},{"pic":"32_n.jpg","word":"parracks","data":[{"itemID":32,"type":"nonword","kana":"パラックス","lang":"eng","answer":false}]},{"pic":"33_n.jpg","word":"hypnojist","data":[{"itemID":33,"type":"nonword","kana":"ハイプノジスト","lang":"eng","answer":false}]},{"pic":"34_n.jpg","word":"croilage","data":[{"itemID":34,"type":"nonword","kana":"クロリエイジ","lang":"eng","answer":false}]},{"pic":"35_n.jpg","word":"collapsos","data":[{"itemID":35,"type":"nonword","kana":"コラプソス","lang":"eng","answer":false}]},{"pic":"36_n.jpg","word":"bikina","data":[{"itemID":36,"type":"nonword","kana":"ビキナ","lang":"eng","answer":false}]},{"pic":"37_n.jpg","word":"stimelation","data":[{"itemID":37,"type":"nonword","kana":"スティメレーション","lang":"eng","answer":false}]},{"pic":"38_n.jpg","word":"skimmud","data":[{"itemID":38,"type":"nonword","kana":"スキマッド","lang":"eng","answer":false}]},{"pic":"39_n.jpg","word":"diroctness","data":[{"itemID":39,"type":"nonword","kana":"ディロクトネス","lang":"eng","answer":false}]},{"pic":"40_n.jpg","word":"kegfug","data":[{"itemID":40,"type":"nonword","kana":"ケグファグ","lang":"eng","answer":false}]}]

テキストファイルとして保存する場合は,以下のようにします。

toJSON(dat3) %>%
write(.,file = "json.txt")

おわりに

この記事では,データフレーム形式のものを階層性をもった形でJSON形式に変換するということをやってみました。tibbleという形式ができたことで,データフレームの中にリスト型変数を持つということができます。これができれば,あとは toJSON関数 で一発で変換ができました。もしかしたらもっとエレガントな方法もあるかもしれませんが,とりあえず現状の課題は解決できました。

なにをゆう たむらゆう。

おしまい。


  1. 注: 私はこれまで,大学院で習ったHot Soup Processorというゲームを作る目的で使われることが多いプログラミング言語を使って実験プログラムを作っていました。その際にも,特にRでのデータハンドリングに習熟するようになってからは,刺激を読み込む際に,その刺激の情報も一緒に読み込んで,実験結果の出力時にロング型で表示されるようにしていました。

【R】カタカナの非語を自動生成する

はじめに

実験に使うために作ったのですが,結局ボツになったので,どうやってカタカナの非語を作成しようとしたのかの方法をブログの記事に書くことで成仏させたいと思います。考え方は簡単で,カタカナ語の含まれる変数と,任意の数字が入った変数を作って,後者の変数から任意に1つの数字を選び出し,その数だけカタカナ語のリストから任意に取ってきてくっつける,という感じです。よって,生成される文字列は日本語らしさとかはまったく無視されたものになります(まれに日本語っぽいものや完全に日本語のものもできますランダムなので)。

カタカナのリストを用意

まずはカタカナのリストを作ります。アルファベットとかは簡単なんですが,カタカナのリストがRのデフォルトにはない(たぶん)ので,自分で用意します。ただ,50音の表だと扱いづらいので,カタカナを縦にガーッと並んだものをコピーできたら便利だなと思っていたら,そんなサイトがありました。

http://desilysis.seesaa.net/article/423176853.html

ここにあるものをコピーして,kanaという変数に入れます。ちなみに,この記事で使う「リスト」は一般的な意味で,Rにおける「リスト型」という意味のリストではありませんのでご注意ください。

kana <-read.table("clipboard") #Windows
kana <-read.table(pipe("pbpaste")) #Mac
print(kana)


すると,こんな感じでカタカナが入った変数が手に入ります。read.tableで読み込んでるのでデータフレームになります。濁音と半濁音が抜いてあります。入れてもいいのですが,入れるとそれっぽいカタカナ語が生成されづらくなるというのが理由です。

##    V1
## 1  ア
## 2  イ
## 3  ウ
## 4  エ
## 5  オ
## 6  カ
## 7  キ
## 8  ク
## 9  ケ
## 10 コ
## 11 サ
## 12 シ
## 13 ス
## 14 セ
## 15 ソ
## 16 タ
## 17 チ
## 18 ツ
## 19 テ
## 20 ト
## 21 ナ
## 22 ニ
## 23 ヌ
## 24 ネ
## 25 ノ
## 26 ハ
## 27 ヒ
## 28 フ
## 29 ヘ
## 30 ホ
## 31 マ
## 32 ミ
## 33 ム
## 34 メ
## 35 モ
## 36 ヤ
## 37 ユ
## 38 ヨ
## 39 ラ
## 40 リ
## 41 ル
## 42 レ
## 43 ロ
## 44 ワ
## 45 ヲ
## 46 ン

任意の数字のリストを作る

次に,任意の数字のリストを作ります。もしも,4文字の非語だけで良いというような場合はこの作業はスキップしてもらってOKです。ここでは,3文字から8文字の非語を作ることにします。

kazu <-c(3:8)
print(kazu)
## [1] 3 4 5 6 7 8

これで2つの道具が揃ったので,あとはこの2つを組み合わせるだけです。

カタカナをランダムに組み合わせる

非語をいれるハコを用意

まず,できあがった非語を入れるためのハコを用意します。ここでは,100個作ることにしましょう。 nonword という列に,0を100個いれてます。

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

forで繰り返す

では,for文を使って,1行目から100行目まで順番に非語をぶちこんでいきます。sample関数は,次のような引数をとります。

sample(x,size,replace=FALSE,prob=NULL)

  • x ->無作為抽出元のベクトル
  • size ->無作為抽出で何個とってくるか
  • replace ->重複ありでとってくるか(同じものが2回でてもいいかどうか)
  • prob ->xの要素が抽出される確率

ここではprobは特にこだわらなくてOKですね。重複はなしでいってみましょう。xはkanaでsizeは3~8がランダムに出てほしいので,ここにもsample関数を使いましょう。つまり,kazuという変数から任意に1つ選んで,その数字の長さの非語を作ろうということです。3がでたなら3文字,7が出たなら7文字ということです。ここを固定した数字にすれば,その文字数の非語のみができます。ということで,以下のような感じで走らせます。

for (i in 1:100){
    dat[i,]<-   paste(as.character(sample(kana[,1],sample(kazu,1))),sep="",collapse="")
    }


kanaというデータフレームの1列目から,kazu(3~8)から選ばれた任意の数字の数だけ要素を無作為に選んできて,paste関数で合体させるということですね。一応,paste関数の中でas.character関数を使って文字列の扱いを指定してますが,なくてもたぶん動くかなと思います。

##              nonword
## 1           サカフヌ
## 2     トセヲクロヨサ
## 3   ケトカヲヤイアタ
## 4   ツヒオセコミルハ
## 5             キセア
## 6     クタロヲマヒモ
## 7       ワニレシヘン
## 8         イキニオレ
## 9           ヤイケマ
## 10    ヌラテホメムネ
## 11  ハヨスヌセリエム
## 12            カリク
## 13            フロヲ
## 14      ルテロヘサタ
## 15      テユヨマクト
## 16        ヲホロケニ
## 17          リミユソ
## 18  ホシヲリカテレミ
## 19          モメスル
## 20        ホキヤコカ
## 21    ネコオモトユレ
## 22          ワラソヲ
## 23            ニユナ
## 24        タフテモス
## 25          キノラケ
## 26            ルヨモ
## 27      トンルフヌロ
## 28        エロスヨフ
## 29  レテキアタホロハ
## 30      キリナコロヘ
## 31          アキタル
## 32        キニユミイ
## 33        トムテルネ
## 34      ホンタヨヌイ
## 35          セエシト
## 36        キテチハソ
## 37        ヌソハチエ
## 38            ヨヒマ
## 39          ハモクシ
## 40    カオトヌリフキ
## 41      ホヨオトカリ
## 42          ヤヌホト
## 43      メクユイソテ
## 44  カフトルムリレマ
## 45        ヤチツテシ
## 46            シヌメ
## 47  ムアコチワノウネ
## 48  ヲリノイヒフウミ
## 49      サムヤトシラ
## 50            ユミケ
## 51        レカフヤン
## 52      ミノリヤタホ
## 53            ツケイ
## 54  ニロネウモトソナ
## 55        レセシノラ
## 56          コヌメニ
## 57          ツユニン
## 58            クトス
## 59          スツヌリ
## 60    メユマヲウチロ
## 61            ネヨタ
## 62      ヤハケミソセ
## 63            リチキ
## 64            ハネマ
## 65          ツノウタ
## 66        ヌツセアラ
## 67          ヘサキウ
## 68      タセルユヲチ
## 69      カンシナテヨ
## 70      ラロモオヲノ
## 71  ホムニヨイリンク
## 72      トロイアネツ
## 73    ケモレクメトア
## 74            ミカセ
## 75          スホアセ
## 76  ラルマノヤキユテ
## 77      ニチノマヤイ
## 78            ワリサ
## 79      ヤラヲスソム
## 80      タトクンシア
## 81      ニフシユトヒ
## 82      トメマケヤオ
## 83        オリクツル
## 84  ラリオホメヘモシ
## 85            オヌエ
## 86        トサヌンス
## 87            ワオウ
## 88        ヒラキメノ
## 89    サエアカラハメ
## 90      ネフミナモワ
## 91            サヤフ
## 92        クヤヨイナ
## 93  コキソユクホマノ
## 94            メムヌ
## 95      オヲユカスン
## 96          ケヌニタ
## 97    ユキラチヨネテ
## 98          ヒレニエ
## 99    メワセモオネク
## 100     ヤタセンノウ


サカフヌとかテユヨマクトとかわけわからないのがたくさんできてますね。もしも,4文字の非語だけで良いということであれば,

for (i in 1:100){
    dat2[i,]<-  paste(as.character(sample(kana[,1],4)),sep="",collapse="")
}


のように, sample(kazu,1) の部分を任意の数字に入れ替えてあげることになります。そうすれば,4文字だけの非語リストが手に入ります。

dat2<- data.frame(nonword=rep(0,100))
for (i in 1:100){
    dat2[i,]<-  paste(as.character(sample(kana[,1],4)),sep="",collapse="")
}
print(dat2)
##      nonword
## 1   スメヘウ
## 2   セイオヒ
## 3   ホラリヤ
## 4   ニチメセ
## 5   ヌナメコ
## 6   ヌサトヤ
## 7   レチシイ
## 8   コフハチ
## 9   ヨヘユハ
## 10  マンツメ
## 11  ヒホソム
## 12  スヲテユ
## 13  スヒチレ
## 14  ルヒホヘ
## 15  テシフユ
## 16  ロテカウ
## 17  トノルニ
## 18  ヨホオハ
## 19  ヨキミチ
## 20  ワナヘノ
## 21  ヌヨナマ
## 22  クタンイ
## 23  ハムンシ
## 24  ネロレナ
## 25  アムネノ
## 26  ハフソト
## 27  ヨスクヌ
## 28  サスキホ
## 29  ヨワツノ
## 30  イトセム
## 31  オセンエ
## 32  ホミレル
## 33  リラハフ
## 34  ツラソカ
## 35  テチサシ
## 36  ツヲヌヒ
## 37  ヲタカム
## 38  ハアワレ
## 39  オクネケ
## 40  ミムルヤ
## 41  ヘテロホ
## 42  アサヤケ
## 43  チヤラウ
## 44  クハサケ
## 45  ンテリム
## 46  メネサム
## 47  マシトリ
## 48  クヌワマ
## 49  ナヤリロ
## 50  ナヤウン
## 51  タンナレ
## 52  メヘオテ
## 53  ソキヨニ
## 54  ソユヘタ
## 55  ルサスノ
## 56  ネウフセ
## 57  ムメシヒ
## 58  ネシムセ
## 59  ケヘシノ
## 60  ヒケルメ
## 61  メンタモ
## 62  エケチコ
## 63  ニチシヤ
## 64  テルメキ
## 65  モツロイ
## 66  エレサセ
## 67  ンスイハ
## 68  アモチセ
## 69  ノヤミネ
## 70  ヨストカ
## 71  ニヒラン
## 72  リノシナ
## 73  ハタヘス
## 74  メオヘセ
## 75  エヘミロ
## 76  トソテマ
## 77  ネイトフ
## 78  スイツヲ
## 79  カセレム
## 80  ツウコユ
## 81  ヤムニネ
## 82  サメネン
## 83  シテフケ
## 84  セロヲヌ
## 85  マシスエ
## 86  オンヤナ
## 87  トルキエ
## 88  ソヘトヌ
## 89  ヒカクニ
## 90  クケコツ
## 91  ヌリルホ
## 92  トサセリ
## 93  コロツム
## 94  ホリトク
## 95  モヲネヘ
## 96  ケシヨフ
## 97  テレメヘ
## 98  ナハヲモ
## 99  オレトル
## 100 レノケマ

おわりに

この記事では,Rを使ってカタカナの非語をランダムに生成するということをやってみました。いつか誰かの役に立ちますように。

なにをゆう たむらゆう。

おしまい。

余談

実は,以前RmarkdownからWordpressに直接流し込む方法という記事を書いていて,その方法を使ってRmarkdownで書いたものをブログ記事にしようとしました。ところが,knit2wp関数がうまくいってないのかエラーが出てしまって,結局うまく行きませんでした。これのために時間溶かすのもなんだかなと思ったので,HTMLで書き出して,それをテキストエディタで開いたものをコピペしてこの記事をつくりました(トホホ

ライティングにおいて文の数を制限するとどうなるか

はじめに

下記のanf先生のブログ読んで考えたことを書きます。今まであまり深く考えたことがなかったんですが,以前に自分が関わった研究と,高校ライティングの入試問題の形式って,直接的ではありませんが,つながるところがあるかもしれないなという話です。

2020年度埼玉県公立高校入試問題のライティング問題から読み取るメッセージ

ライティング問題における文の数の指定

上の記事中の中では埼玉県公立高校入試でのライティング問題で文の数の指定が近年では5文以上となっていたものが,今年度は3文以上という指定になったという話があります(それだけがメインじゃないんですけど)。一見すると,書かなければいけない文の数が減るというのは要するに求められる分量が減ったと捉えられると思います。ちょっと別の角度から文の数の指定を考えてみたら面白いかもしれないということを以下で考察してみたいと思います。

文の数の上限をつくるという発想

あくまで,入試問題での指定は,「◯文以上で」という最低ラインを示しているものです。つまり,3文はいいけど2文ではいけないと。これも「制限」ですが,文の数の制限は別のやり方もあります。それは,上限を設けるということです。文の数の下限を設けるというのは,ある一定以上の流暢さ(ここでは入試という限られた時間内である程度の分量が書けること)を求めているというメッセージになると思います。

一方で,同じ内容を表現するにあたって文の数の上限をつけるとどのようなメッセージになるでしょうか。これは1文の中にどれだけ節(または句)を埋め込めるのか,つまり,どれだけ複雑な文が書けるのかを見ますよというメッセージになるでしょう。もちろん,意識的に節を増やそうと考えることを求めているわけではありません。ただ,伝える内容が同じ時,文の数が減るというのは1文の統語的複雑さ(簡単に言うと1文に含まれる節の数が多いことや1文に含まれる語数が多いこと)が必然的に(そして意識するかは別として)あがることが見込まれます。

本当に節は増えるのか?

以前,大学生・大学院生を対象に以下のような研究をしたことがあります。

How Do Japanese EFL Learners Elaborate Sentences Complexly in L2 Writing? Focusing on Clause Types

論文の概要は以下のとおりです。

ライティングによる絵描写タスクを日本語を母語とする英語学習者に課し,その際に用いる文の数に制限をかけることで統語的に複雑な文の産出を誘発し,学習者がどのような節を用いて文を複雑に書こうとするのかを明らかにしようとした論文です。別途行ったエッセイライティング課題をライティングの熟達度として操作的に定義し,熟達度によって用いられる節の数が異なるのかも検討しました。結果として, 文の数が制限されることにより等位節,関係節,非定型節の産出が増え,これらの節は文を複雑にするために学習者がよく用いることが明らかになりました。また,非定型節は熟達度が高くなるほど多く用いられる傾向にありました。これらの結果に基づき,節の数や節の長さなどの指標を用いるのだけではなく,節の種類にも着目することで,学習者のライティングをより詳細に捉えられる可能性について論じました。

https://tamurayu.wordpress.com/2017/02/27/nishimura-et-al-2017/

この研究では,上限を決めるというより,6コマの絵描写を6文で書くよう指示した場合と,そのような制限をつけなかった場合を比較しています。したがって「◯文以内」という上限をつけたわけではありません。よって,上限をつけた場合も同じようなことが期待できるとは限らないという点には注意が必要です。

入試問題へそのまま応用できるというわけではないが…

文数の下限ではない指定という方法が,入試問題の形式として応用可能かというとあまりそうは思っていません。ただ,文数の制限という操作は必ずしも流暢さを引き出す目的ではなく,複雑さを引き出すことにも応用できるのではないかという示唆が上記の研究にはあると思っています。

課題として,それなりに内容的な分量を求めるように工夫すれば,5文以内という制限よりも短い文数で書くことを難しくすることはできそうです。それを例えば2文とかで書いていた場合には,内容的な点でのタスクのゴールを満たしていないということで減点することができます。そして,同じ文数でも…and…but…のように等位接続詞で文をつないでいるのか,Even though…,…のような従属節を使っているのか,the places where the students can learn…のように関係節を使っているのかで,文法知識の発達段階をみることができそうです。もちろん,節だけではなく,節を句で表すことができるかどうかというのも複雑さを上げるという意味ではポイントになります。ただし,特に主語位置でのnominalizationは文理解がしづらくなるので要注意と言われることもあります(https://owl.purdue.edu/owl/english_as_a_second_language/esl_students/nominalizations_and_subject_position.html)。

また,埼玉県入試問題のように,最低ラインがあるような場合でも,うまく比較できれば有益な知見を生み出すこともできるかもしれません。

例えば,3文という最低ラインの作文と,5文という最低ラインの作文を比較することを考えます。この時,もし産出される文数が減るのであれば,そのときに1文の統語的複雑さはどうなるのか,また,そのときにどのような手段で複雑さをあげるのか,というのは面白い観点になり得ます。もちろん,作文で求められる課題があまりにも異なっていると比較としての意味はなしませんが。

おわりに

この記事では,文の数を制限する(下限or上限)を設けるという操作と,それがどのような言語産出を誘発するのかということについて考えてみました。私はこの記事で,「複雑さ」とか「統語的複雑さ」といった用語を割とゆるく使いましたが,それが一体何なのか,そしてどういった指標でそれを捉えるのかといった問題は,それだけで本1冊が書けるくらいの研究領域になっています。よって,あまり安易にこの分野に足を踏み入れると危険ではあるのですが,文数の制限と言語産出というのは,教育的示唆にも繋げやすいかなと思うので,ライティングに興味のある院生さんがいたらぜひ掘り下げていってもらいたいなと思ったりもします。

なにをゆう たむらゆう。

おしまい。

後輩の原稿を読んであげてほしい

はじめに

この記事は,主に現在大学院に在学していて,そして同じ大学院に(大きなくくりでの分野が同じ)先輩・後輩の関係があるような人(主に私の後輩なんですがそれ以外の人にも)向けで書いています。ただし,私が博士後期課程時代を過ごした環境はかなり特殊な環境だったので,どんなところでも実践可能なわけではないかもしれないという点だけご留意ください。

最近,発表や論文投稿などを意欲的に行っている後輩の話を聞いて,先輩が後輩の成果物が他の人の目に触れる前に見てあげるというようなことが私がいたときのようには行われていないのかなと感じることがありました。それはもったいないなと思うと同時に,きっといろんな要因があるかなと思うので,いくつか論点をあげてみたいと思います。

自分がどういう経験をしてきたか

私が所属していた大学院では,いわゆる講座制のような形で,ある研究室(ゼミ)に所属して,そのゼミのトップである教授のもとで研究を行っていくというスタイルではありませんでした。主の指導教官は決まっていても,その先生以外のゼミに出ることは当たり前に行われていて,縦と横の相互交流が非常に活発な環境でした。また,学生の自主性を尊重する土壌があったので,学生同士で縦に横につながって共同研究をすることもたくさんありました。一方で,先生主導で研究をやるということは私はほとんど経験しませんでした(別にこのことにまったく不満はないです念の為)。そうした環境だったからか,先輩が後輩の面倒を丁寧に見てあげるということも,明文化されないルールのようなものとしてありました。ゼミ発表前のレジュメチェックから,口頭発表申し込み前のアブストラクトのチェック,投稿論文のチェックなど,後輩は先輩にチェックをしてもらっていました。それだけにとどまらず,同期同士で見せあったり,ときには先輩(n=1)から読んでほしいと頼まれることもまれにありました。余談ですが,私が見聞きする範囲では,現所属先の研究科(厳密に言うと私は大学院の担当になっていないので私の所属は学部ですが)は人数もそこまで多くないのと,フルタイムの院生が多くないのでそういったことがあまり行われていないのかなと思いました。

後輩からしたら先輩にお願いはしづらい

普通に考えて,ただでさえ忙しそうに見える先輩ですし,自分の論文を読んでもらおうと思うのは躊躇して当然です。投稿論文はどこに投稿するかで長さは変わってきますが,それなりの量の論文をまず読んで理解しなければいけませんし,その問題点を指摘したり,質をあげるためのコメントをすることはそれなりに労力がかかることです。学年が近かったり,いつも行動をともにするような親密度があればハードルはいくらか下がるかもしれませんが,それでも後輩からは頼みづらいでしょう。

後輩の立場にある人に言いたいのは,先輩は忙しそうに見えるかもしれませんが,先輩だって後輩に頼られることは嬉しいことなので,勇気を出してお願いしてみてほしいということです。もちろん,締め切り直前に送るとか,「明日までにお願いします」みたいな無理なお願いはNGです。余裕を持って仕上げて,そしてある程度時間の猶予をもって「○○日が投稿の締め切りですので,○○日までにコメントいただければと思います」みたいな感じで依頼するのがいいでしょう。こうしたやりとりは1度ではなく,何度も繰り返せるのが理想的です。

先輩の立場にある人は,そういう後輩からの声のかけづらさを考慮して,積極的に後輩に声をかけてあげてほしいなと思います。「最近論文書いてる?」「今度の○○は投稿するの?」とか,そういう日常的な会話の中で後輩の事情を聞いてあげていれば,「実は今○○に投稿する論文を書いてるんです」みたいなことをもあるはずです。そうなったら,「投稿する前に送ってもらえたら読むよ~」とかって言ってあげれば,後輩が感じるハードルはぐっと下がるでしょう。

後輩の指導をするというのは自分のためになる

正直,自分が論文を書いていなかったら人の論文にコメントするなんてできませんよね。だからこそ,先輩は自分が論文を書いている姿を積極的に後輩に示してあげるとともに,自分が経験したことを少しでも後輩に還元できるようにしてほしいなと思います。もちろん,自分のことに使える時間を人のために費やすわけですから,めんどくさいと思ったりするかもしれません。ただ,私はこうしたことも次にあげる3点で研究者としての自分の成長に必ずつながると思っています。

1. 自分のこの先のキャリアで役に立つ

あまり将来の利益という観点で語るのは好きではありませんが,そういうことも2つあるかなと思います。1つは,大学教員で指導生を持ったとき。もう1つは,査読者になったときです。

普通,誰かの論文を見てコメントをするというのは指導生をもつ大学教員しかやらないような仕事だと思います。それを大学院時代に経験できるというのは,大学教員としてそのようなポジションについたときに間違いなく役に立つでしょう。また,論文をそれなりに書いていて,それなりに研究者として認知されるようになれば国内の学会誌であったり国際誌であったりの査読を頼まれることがあります。これも研究者の重要な責務の1つです。出版前の論文を読んで,論文の問題点,評価できるポイント,どうしたらもっと良くなるかを指摘するというのは,まさに査読者が行うことだと思います。研究者を目指すのであれば研究コミュニティへの貢献という観点でも良い査読者になったほうがいいに決まっていますので,人の論文を読んでコメントすることは査読者になるための練習でもあると思います。

2. 自分の論文を読む目線が変わる

1つ目のポイントは長期的な視点で役に立つという話でしたが,もちろん短期的にも人の論文を読むことの意味はあります。それは,人の論文を読むとより客観的に自分の論文も読めるようになるということです。議論の流れがちぐはぐなことに気づいたり,結果の解釈の問題に気づいたり,本当にいろいろなところに「論文を書く」ということに対しての学習のポイントが転がっています。そういったことは,出版された論文を読むだけ,あるいは自分で書いた論文を読み直すだけではなかなか経験できません。後輩の論文を良くするためには何が必要なのか,ということを考えることは,必ずや自分の論文を良くすることにもつながってきます。そしてこれは,いままさに自分が書いている論文であったり,直近の未来に論文を書く際にも生きてくることなのです。

3. 自分の幅を広げる

自分の研究に関わる論文だけを読んでいたりすると,なかなか他の領域の話を読む機会に出会うことはできません。同じ分野の後輩といえど,自分とそこまで近い領域の研究ではない研究をしている後輩の論文を読めば,その領域のことを勉強する機会にもなります。そうすれば,自分の視野も広がりますし,少しメタ的な目線で複数の研究領域の関連性を考える機会にもなります。

これは私も院生時代に経験したことがあるのですが,ある程度研究テーマが決まってくるとどんどん細部にのめり込んでしまって,そこから派生的に別の研究テーマを生み出そうとしがちになってしまいます。そうすると,なんでその研究やっているのだろうとか,その研究が分野にどう貢献できるのだろうという視点を取ることが難しくなってきます。こういうときに,少し離れた分野の研究を読むと,その視点を1つ抽象的なレベルにもっていくことができると感じています。自分の専門と言える領域で一流を目指すのはもちろんですが,私が見ていて一流だなと感じる人は,その領域外についても豊富な知識を持っていて,やろうと思えばその領域で質の高い研究ができるだろうなという人です。これは私の個人的な意見ですが,そういう研究者って憧れませんか?

時間はかかるかもしれないが誰でも経験できることでもない

繰り返しになりますが,いくら自分にメリットがあるといっても時間はかかります。それは間違いありません。ただ,先輩と後輩の交流が活発に行われているという環境でなければ,そもそも後輩の研究論文を読むという機会はないわけです。そう考えると,どこの大学院でも,そして誰でもが経験できることではありません。自分を成長させてくれる機会が周りにあるのであれば,それは積極的に活かしてほしいなと思います。

ただ後輩の論文を読むだけではなく,一緒に共同研究をやるというのも非常に有効な手段でしょう。この話はまた別の機会にできれば書きたいなと思います。

おわりに

私はまだまだペーペーなので,こんな偉そうなことを言う立場でもないのは重々承知の上ですが,投稿前に論文を読み合う文化というのはそのコミュニティの研究力を上げるということを私は信じて疑わないので,こういう記事を書きました。研究ってやっぱり一人じゃできないというか。願わくば,私のところの研究科もそうやって活発になってほしいなぁと思っているのですが,私はまだまだそちらの運営に関わるほど偉くないので,いつかそういう仕事をするようなときが来たら,頑張りたいなと思います。

なにをゆう たむらゆう。

おしまい。