はてなキーワード: 語族とは
歴史言語学についてはまったくの素人だけど、最近話題になった「日本語の原郷は「中国東北部の農耕民」 国際研究チームが発表 | 毎日新聞」(はてブ)っていう記事の元になったロベーツらの論文(Robbeets et al. 2021)を読んでみたよ!
トランスユーラシア大語族の系統関係、ちっとも証明されてなくね?
著者のロベーツは過去に著書(Robbeets 2015)を出版して、そちらでトランスユーラシア大語族の系統関係を証明したとしているようである。残念ながら増田はその著書を読めていないので、著書の方では厳格な比較言語学的手法で系統関係が証明されているというなら恐れ入谷の鬼子母神でシャッポを脱ぐしかないのだが、正直言ってめちゃめちゃ怪しく見えるよ……この論文では農業関係の語に絞って借用も含めた系統が論じられているんだけど、正直かなり無謀な気がするし、なんでこれでトランスユーラシア大語族が証明された扱いになってるのかちっともわからん。さすがに著書の方では基礎語彙の対応に基づいた議論してるんだよね? うーん……
細かいツッコミになるけど、論文のSupplementary Informationで、お米を表す「まい」という語について論じている。著者らは琉球祖語に*maïを再建するんだけど、そこから派生した語形として与論語のmai、沖縄語のmeeやmeと並んで奄美語のmisiやmiisɨを挙げている。いやいやどう考えても後者は「めし」の転訛だろ(標準日本語のエ段に対応する母音は琉球諸語だとしばしばイ段になる)。まさかとは思うけど「まい」と「めし」の区別がつかないで日琉語の系統を論じてるの?
(追記:「それそもそも呉音じゃね?」というid:nagaichiさんの指摘を受けて追記。この論文ではちゃんと「The Chinese loan morpheme is also found in Sino-Japanese mai and entered Proto-Ryukyuan as *maï ‘rice’」と書かれていて、漢語からの借用語であることは前提になってます。これは日本語の「早稲(わせ)」が朝鮮祖語*pʌsalから来てるんじゃね? っていうことを説明してるパートに付け足された部分で、借用語であることが誰の目にも明らかな「まい」に言及するのは蛇足じゃねーのと思うんですが……)
っていうか日琉祖語や琉球祖語の「土」が*mutaになってるけど何これ? *mitaじゃないの? 日本語の方言形にmutaがあるから*mutaを再構したのかな? でも先行研究(ヴォヴィン 2009: 11)で指摘されてるように祖語形は*mitaだよね……(cf. 八丈語mizya)(なお標準語「つち」は先行研究によれば朝鮮語からの借用語)
さらに、著者は3年前の論文の中でトランスユーラシア大語族の系統を推定しているが、その系統樹では、南琉球語群(先島諸島の諸方言)のうち、まず八重山語が分岐して、次に宮古語と与那国語が分かれたということになっている(Robbeets and Bouckaert 2018: 158)。……なんていうか地図見ておかしいと思わないのかな。もちろんそんな分岐は絶対にありえないと言うことはできないけど、こんな分岐はこれまでの琉球語研究で提唱されたこともない。もっと言えば、ウェイン・ローレンス(2000; 2006)の言語学的な研究によって、宮古語には見られない改新を与那国語と八重山諸語が共有していることが明らかにされている(つまり南琉球祖語がまず宮古と八重山に分かれ、八重山祖語から与那国語が分岐したと推定される)。大丈夫? 日本語の先行研究ちゃんと読んでる?
余談。本論文はやたらと琉球諸語から例を引っ張ってきてるけど、個人的には「本土日本語」は側系統であって琉球諸語は薩隅方言と姉妹関係にある南日本語派の一分岐だという五十嵐陽介(2021)の分析が妥当だと思うので、根本的に日本語と琉球語を姉妹群とするかのような系統樹には納得できないんだよな(ちなみに五十嵐の研究は活字になったのは今年だけど5年ほど前から活発にあちこちで発表されててレジュメはresearchmapで誰でも読める状態だった。まあプレプリント以前の発表原稿の段階のものを引用しろというのは酷だと思うのでロベーツが参照してないのは仕方ない)。考古学的・人類学的証拠からは、琉球列島へのヒトや言語の流入が比較的遅いことが推測されるけど、その頃にはとっくに日琉語は複数の系統に分岐してるはずなんだから(cf. 『万葉集』の東国語)、琉球語が日琉祖語まで遡る古い系統か? っていうとどう考えても違うわけで。
ロベーツらの研究が依拠しているソースの1つに、セルゲイ・スタロスチンというロシアの研究者による語源辞典がある。しかしこのスタロスチンという研究者は、日本語が「アルタイ語族」に属すという証明のために色々と強引な当てはめをやっているのだ。アレクサンドル・ヴォヴィンは、スタロスチンがいかにテキトーなことを書いているか検討している(Vovin 2005; ボビン 2003: 19–26)。たとえば、スタロスチンは日本語に基づいてアルタイ祖語に*u「卵」を再構するのだが、これはどう見ても「卯」と「卵」の取り違えである。また、スタロスチンは日本祖語に*situ「湿っぽい」を再構するが、「湿」をシツと読むのは音読み(=漢語からの借用)であることは説明するまでもないだろう。こんないい加減な「語源辞典」を使って日琉語の系統を論じるってかなり勇者だと思わない?
(っていうか、スタロスチンをはじめとする「アルタイ語族」説の支持者、与那国語で標準語のyにdが対応する(cf. duru「夜」;dama「山」)のを祖語形の残存だと主張してるのか(Vovin 2010: 40)。思ってた以上にやべーな)
案の定、ロベーツの著書も他の研究者からボロクソ言われているようだ。ホセ・アロンソ・デ・ラ・フエンテは、彼女の著書に対する書評で、「Throughout the book there are inconsistencies which may stem from a lack of familiarity with the languages involved and their scholarly traditions」(Alonso de la Fuente 2016: 535)として、彼女の満洲語転写が実にテキトーであることを指摘している。前述のヴォヴィンはさらに辛辣なことを書いている(Vovin 2017。出典表記は省略)。
The recent attempts to prove that Japanese is related not only to Korean, but also to the “Altaic” languages fare even worse. In spite of the devastating critique that has been leveled at these quasischolarly publications, they [Starostin and Robbeets] still continue to sprout like mushrooms after the rain, greeted, of course, by yet another round of devastating critique...
こんなこと書かれたら僕だったら泣いちゃうな……
なおこの論文、朝鮮祖語の再建にも問題があるらしい。以下の連ツイを参照>https://twitter.com/ian_joo_korea/status/1458706979870838788。
増田は素人なので確信を持って間違いだと言い切ることはできないけど、論文全体から信頼できない香りがプンプン漂ってきてる。
考古学とかそういう方向からの考察は知らんけど、言語学的な根拠については賭けろと言われたら間違ってる方に賭けるね。
(追記:こっちの増田→anond:20211121201022も見てね)
このへんの言語史については、古代の朝鮮半島には幅広く日琉語(大陸倭語;Penninsular Japonic)が分布してたんだけど、北方から朝鮮語話者が進入してきて言語が置き換わった、という説(Vovin 2013)が個人的には面白いなぁと思う(大陸倭語については、Vovin 2017; 伊藤 2019; 2021も参照)。いや、素人の考えだからひょっとしたら大間違いかもしれないけど。ただ、仮に大陸倭語の存在を認めるなら、日琉語の故地(Urheimat)が列島の外にある可能性もあるわけで、故地をめぐる議論どうしようかっていう議論は生まれてくるところだと思う。
あと、この増田で「標準語」って言葉を使ってるのにツッコミが入るかもしれないけど、国が言語の規範を決め全国に普及させているというのを無視して「共通語」と呼ぶのは国家による言語政策の権力性を覆い隠すから良くないと思うので「標準語」と呼ぶ派です。
著者のRobbeetsさんの名字を「ロッベエツ」と書いてる新聞があったけど、日本語表記するなら「ロベーツ」じゃない? ベルギーの研究者らしいけど、bが重なってるのは詰まって読むこと(促音)を示してるんじゃなくて、その前にある母音が短母音である(「ローベーツ」ではない)ことを示すためのものでしょ、オランダ語的に考えて……。
それにしてもマンチュリア(いわゆる満州)を「中国東北部」と呼ぶの、ヤウンモシㇼを「日本北部」と呼ぶようなもので、先住民族である満洲人の存在を透明化し漢人の入植を自明のものとする植民地主義的な用法だから政治的に正しくないと思うんだよな。ちゃんとマンチュリア or 満州と呼ぶべきでは。
A. スプリンターズSではダノンスマッシュ、秋華賞ではユーバーレーベン、菊花賞ではステラヴェローチェ、天皇賞(秋)ではコントレイル、エリザベス女王杯ではアカイトリノムスメの勝利を予想していました。マイルCSではグランアレグリアに賭けてます。ジャパンカップは今度こそコントレイルが勝つはず。
niwaradi そもそも著者が多く日本の大学の学者が共著者に10人以上いてNature編集部とレビュワーも賛同したはずなので学会で揉めてる分野なのかな?日本語朝鮮語の共通祖先はどこかにあると思うが。
共著者が多いのは、色んな分野にまたがって調査してる理系の論文だとよくあることだと思います。Natureは基本的に理系の雑誌なんで言語学みたいな文系領域の事情にはあんまり明るくなかったんじゃないでしょうか。ちなみにその「日本語朝鮮語の共通祖先はある」って考え方にめっちゃ反対してるのが本文で言及したヴォヴィンです。最新の論文(Vovin 2021)では日本語の起源は「アルタイ語族」じゃなくてオーストロアジア語族だーって気炎を上げてます(ほんとかよ)。
大野晋の日本語タミル語起源説はただのトンデモです。結論どうこうじゃなくて方法論の時点でおかしい。詳しくは長田(1998)や山下(1998)を参照してください。
c_shiika 令和の騎馬民族征服王朝説だったか…… / ウマ増田さんはウマの記事もちゃんと増田に投稿するべきだと思うの
手持ちのジュエルを全部つぎ込んだけどメジロドーベル引けませんでした!!1!(代わりにすり抜けでナリタタイシンが来た)
複数の切り口に分けられる
最近出た中公新書について、細かい誤りを見つけたんだけどどうすれば著者に届くかよくわかんなかったのでとりあえず増田に放流してみる。
https://www.chuko.co.jp/shinsho/2020/04/102589.html
「ラテン語は、現代では使われていない古典死語であり、ギリシャ語、ゲルマン語などをはじめとした多くの語派を含有した西洋の古典語である」(24頁)というのは、ちょっと世界史や地理に詳しい人なら容易にツッコめると思う。これを校正さんが見逃したのは本当に謎。
ラテン語はギリシャ語やゲルマン語を含有してない。それらを含有してるのはインド・ヨーロッパ語族だ。つまり、こういうこと。
語族・語派・語ってのは目・科・属みたいなもんだと思ってもらえれば(めちゃくちゃ雑な説明。実際には他の言語との系統関係が証明されていないグループを「語族」というので、目というよりは門とか界とかの上位分類に近い)。こう整理すれば上の文のおかしさもわかってもらえると思う。動物の分類に関する本で言語の分類に関する大ポカをやらかすというのはなかなか批評性が高いけど、生物学が専門の人が言語の分類に明るくないのは仕方ないので、校正さんがきちんと拾ってあげるべきだったと思う。日本語でいくらでも情報が手に入る話なんだし。
「japonicusも「日本産の」の意味であるが、これはJapon(Japanのラテン語綴り)に“-icus”の接尾辞を加えたものである」(186頁)とあるけど、ラテン語で「日本」はIaponiaである。これはラテン語版Wikipediaを引いてみれば一発でわかる。IとJはもともと同じ文字なので、Japoniaということ。どうもこの著者さんは、形容詞形から語尾を引けばもとの名詞になる、あるいは、名詞の後ろに決まった語尾をつければ形容詞形ができると勘違いしているのではなかろうか(「中国」に関する説明からも、そう勘違いしていそうなことがうかがえる)。しかし、英語のFranceとFrenchの関係を見ればわかるように、印欧語では名詞のうしろに決まった語をつければ形容詞になるとは限らないのだ。
少なくとも、この本、ラテン語の部分はラテン語がわかるひとにチェックしてもらって大幅に書き直した方がいいと思う。著者さんが、「学名をつけるときの語尾のいじり方」については知っていても、「ラテン語文法」をわかっているようには見えないので(「こういう名前のときはこういう語尾をつける」というのは、経験知であって「文法パターン」[185頁]ではない)。学名をつける側のひとも、-iや-aeといった格変化のうしろにどんな文法規則が隠れているか知ることができたら面白いんじゃないかな。
https://www.chuko.co.jp/shinsho/2020/06/102595.html
「フォカスという名の下士官将校」(35頁)ってあるけど少なくとも近代以降では下士官と将校(士官)ははっきり区別される別の身分である。日本語版Wikipediaでは「下士官」と書かれていて、英語版Wikipediaでは「下級士官(low-ranking officer)」と書かれているんだけど、要するにビザンツ帝国軍は近代的な軍組織ではないので、ある階級が士官か下士官か厳密には決められないってことだと思う(フォカスは百人隊長だったらしい。うーん……)。でも「下士官将校」はおかしい。「下士官」と書くか、「下級将校」と書くかのどちらかにすべき(個人的には、前近代でそのへんの厳密な区分はできないんだから、素直に「百人隊長」と書けばいいと思う。こう書けばどんな地位なのか一発でわかるし)。
「セルビア人の有力な領主コンスタンティン・ドラガシュ・デジャノヴィッチ」(275頁)って書いてあるけど、英語版Wikipediaを確認するとKonstantin Dejanovićなのでどう見ても「デヤノヴィッチ」です本当にありがとうございました。ロシア語の綴りはКонстантин Деяновичだけど、これを見れば「デジャノヴィッチ」ではありえないのが一発でわかる(セルビア語のja=ロシア語のя)。ひょっとしてギリシャ語だとデジャノヴィッチが正しいのかな? って思って現代ギリシャ語版Wikipedia見てみたけどΝτεγιάνοβιτςなので普通に「デヤノヴィッチ」ですね。著者さん、さては西欧語の文献だけチェックしてギリシャ語の綴りチェックしてないな?
最後になるけどどっちの本も面白かったです。すごい勉強になりました。上で挙げた点は非常に些細な間違いなので、本全体の価値を貶めはしないことを付け加えておきます。
インドはインドヨーロッパ語族という言語的な親戚同士。インド人がドイツ語習得しやすいのは当たり前。
他の人は理解できても、増田だけは理解できていない、という事が起きている可能性が非常に高い。よく逃げ出さないもんだ。
https://ja.wikipedia.org/wiki/インド・ヨーロッパ語族
ここのWikiの数・性・格を、ちょっと頭に入れておくと、理解しやすくなるかもしれない。
Amazonや日本の家族を使って、ドイツ語の文法書を送ってもらうのがいい。ドイツ語検定4級の本でもいいと思う。
浅く広く言語やってきた自分の経験では、文法さえ押さえれば上達が早い。
逆に文法やらずに感覚だけで言語習得すると、現地にいても10年くらいかかる。そういう人を何人か見てきた。
ドイツ語フランス語は、発音にきちんとした規則性があるから、発音や会話は放置しておいても身につくと思う。
文法をほとんどマスターしたら、次はDictation。聞き取り&書き起こし。ここまできたら、後は会話が楽しくなるよ。
せっかくヴィエナにいるんだから、しっかり身につけるもん身につけてきんしゃい。
日本の英語教育を語る上で、知っておかなければならない数字があります。
中学~高校で、英語の授業が週4時間あるとして総時間数:800時間
CIA職員が日本語を習得するのに必要な時間数:2000~2500時間
英語のネイティブスピーカーにとって習得が簡単なのは、文化的・文法的に近似する
オランダ語・フランス語・スペイン語などです。これらは600時間で習得できます。
では『オランダ語やフランス語は簡単なのか』と日本人が学んでも苦労します。結局のところ、
『同じインド・ヨーロッパ語族なら習得が楽になる』というだけの話です。
一方、 ”英語のネイティブスピーカーにとって極めて困難な言語”としては日本語・中国語・アラビア語などがあり、
これらの習得には2500時間くらいを要し、これは、英検1級合格に要する時間に相当します。
逆の日本語ネイティブ→英語も同じくらい時間がかかるとすると、答えは一つです。
『日本人が学校で勉強する程度の時間では、英語は出来るようになりません』
大学入試において、2つ以上の大学で長文問題に出てきた単語の数 8000
========壁========
ハッカーと画家に影響され2週間ほどLisp語族にいろいろ触れてみた。
「なんかいまいちだな…他のLisp言語はどうだろう」「こっちもなんかアレだな…」と
調べてるうちに4つくらい試すことになってしまった。
結局、これ、というものがなく、どれもツラいという感想をもった。
・「〇〇 入門」で検索すると講座サイトが見つかるが、一つしかない。それも20年前に作られたサイト。
・5chのスレのシリーズ番号が一桁。1スレ消化に何年もかかっている。
・ライブラリがない。あっても手作り感あるの個人制作のしかない。何年も前に更新が止まっている。
それでもLispが素晴らしい力を私に授けてくれるなら我慢してやってみようとおもったが、
そもそも、今となっては大してすごくないんじゃないか?と不安になった。
すごいすごい言われてたの何十年も前だし。
---
1年の間、プログラマとして働いていたが、続けていくことが無理だと思い、さようならする話。
プログラマになる前は、コーヒー屋で働いていた。しかし、色々とあり辞め、職業訓練校に通ってプログラミング(php)を学び、60人ほどのソフトウェア開発会社に就職した。
会社に入ると、まずC#の研修があった。研修と言っても、C#で内製ツールを独りで作るという研修だった。この研修中に「あれ、オレ、プログラム書けねー」と思ったりしたが、研修は終えることができたし、社内の人にも「なかなか良く出来ている」と言ってもらえ、大丈夫だろうと思っていた。
研修が終わり、C#の社内で実際に使われているツールに、機能をいくつか追加する仕事を振られた。前任者にどんな設計になっているのか大雑把に聞き、なんとなくイメージができ、コードを読み始めたのだが、これが全く意味不明で、何のために有るかがわからないクラスが大量にあった。名詞の王国だと思った。前任者に、何故このクラスは、この単位で分割されているのか聞くと、「単一責任の原則だよ」とか「hogeパターン使うと、後から機能追加しやすいじゃん」というような回答をもらった。納得は出来なかったが、プルリクも承認されて、このツールがデプロイされていたので、社内的にも、このコードは、クソコードと言われる物では無いはずだと思ったので、自分もプログラムを書き続けていれば、こんな感じの設計に慣れてくるんだろうと思った。モヤモヤは残っていたものの、仕事はしなければいけないので、前任者のコードに習うように、クラスを追加したりして、機能を追加した。プルリクを出すと、設計には何も言われずに、タイポや、テストコードを注意されただけだった。指摘された点を修正すると承認された。振られた仕事は完遂した。が、結局最後まで、モヤモヤは消えなかった。むしろ、モヤモヤモヤモヤになった。
次に振られた仕事は、内製ツールを設計から自分で行い作成する仕事だった。言語はGoだった。Goで書いてと言われた時は、以前からの自分のモヤモヤはオブジェクト指向のせいで、モヤモヤしているんじゃないかとも思っていたので、喜んで!という感じであった。が、Goを触ってみると、結局、Goも継承の無いオブジェクト指向言語やないかと思った。Goの標準ライブラリのinterface名もHogerみたいな感じに接尾辞に-erを持ってくることが慣習らしく、この命名だと、interfaceを満たす構造体自身が-erになるので、正にオブジェクトだなぁと思った。巷での「Goはオブジェクト指向ではない」というのに期待していたのだが、自分にとっては、とてもオブジェクトしていました。
Goに対する印象は良くなくなったが、ツールの設計をしないといけなかったので、Goの構造体をC#のクラスに見立て、前回の前任者のコードのように、単一責任も持つ構造体に(無駄に)分けて、プログラムを書いて、プルリクを出した。自分でクソなコードだと思いながら。だけれどもレビューでは、「errorのチェック忘れ」「標準ライブラリにこの機能ある」「こんな風に書ける」といった感じだった。こんなコードで良いんかよと思ったが、良いらしい。ワケワカメだった。
ここらで、プログラムを書く仕事は、無理だと悟った。現実世界は、自分が自然だと思う方法と違う方法で、プログラミングをすることを強要してくる。
ちなみに、仕事ではC#とGoを書いていましたが、オブジェクト指向と仲良くなるためにSqueak(Smalltalk)で、オレオレ言語を作ってみたりもしましたが、何が嬉しくて、オブジェクト同士のメッセージパッシングでプログラムを作るのかわかりませんでした。
Clojureは、気持ち良くプログラムを書いていても、Javaが顔を出すところでフラストレーションが溜まってしまって、つらくなりました。
Common Lispは、自分が触った言語の中でも、秀でて良いと思いました。プログラマを辞めても、プログラム書く必要に迫られたらCommon Lispで書こうと思うくらいにです。Land of Lispが楽しいです。あと、CLOSの総称関数の考え方が大好きです。
最後に、この投稿は、一種の決別の表明です。いつまでも、自分に向いていなかったことに、時間を掛けてしまっている自分との決別です。
http://anond.hatelabo.jp/20100731075251 を書いた者です。
http://anond.hatelabo.jp/20100731111129
実を言うと、あれを書いたのは、グローバル信者の英語ブログを見つけてものすごく腹が立ったからなんだよね。自分はグローバルに活躍する勝ち組みたいなことを言っておいてその英語は日本人の俺でもまともに読む気をなくすレベルだった。お前、それでネイティブと戦おうなんて竹槍突撃もいいところじゃないかと。それで気になって調べてみると、「英語ができるだけで収入が2倍になる」とか言ってる某自己啓発教祖の英語だってブロークンもブロークン、俺の方がマシじゃないかってレベルだった。もう腹が立って腹が立って。要するにこいつらの「英語」は、日本のガラパゴス猿共のコンプを煽るためのものでしかないわけよ。ネイティブから「天才チンパンジーのアイちゃん」程度に扱われればそれでボクチャン名誉白人、満足ですぅってことなんだろとしか思えなかった。
日本においては、英語はコンプレックス産業だからね。アメリカのように、移民たちにどう英語を習得してもらうか、という現実の必要性もないわけで、そうなると耳障りのよい宣伝文句のほうがウケてしまうんだろう。日本で発売されてる英語教材には「今日は良い天気でした。」というのんびりしたものが多いが、英米圏の教材では仕事に関する生々しいシチュエーションがたくさん出てくるしね。
元増田のエントリーにさまざまなコメントが寄せられてたけども、それらを見ていても似たようなことを感じたよ。以下のような視点からのコメントが多かったね。
1.「英語は国際語だ。」
地球の人口の3割近くが英語を話すとも言われてるけども、それでもたったの3割だよ。また、傲慢なアメリカ人が同じことを言うならばまだしも、日本人にとって英語は外国語でしかないのに、このような意見に易々と同調するのは実に不思議だね。
2.「簡単な英語でいいんだ。」
シングリッシュを引き合いに出してた人がいたね。シンガポールである程度の教育を受けた人たちがシングリッシュをフォーマルな場で使うことなんてあり得ないよ。そういった人たちはやはりイギリス英語をお手本にして英語を学んでいる。そして、元増田が指摘してたように英米圏においては簡易英語はネタ的に扱われている。それは最近、話題になっているGlobishなども同じこと。
「簡単な英語でいいんだ」と主張する人たちのうち、どれくらいの割合が実際にその「簡単な英語」について書かれた英米圏の記事を読んだのだろう。「簡単な英語」なんてものは英米圏において「英語が危ない」というネタとして消費されてるだけだよ。
そして、そういった英米圏の抵抗を現実的に打ち負かすほどの力が、それらの簡易英語に備わっているとは思えない。それは政治的にも、言語の仕組みとしても。
ともあれ、こういった「英語は国際語で、しかも、簡単な英語でいいのだ」という発想は、実に日本人的なものだと思うよ。日本人は日本国内においては日本語だけを使っていればいいけども、それと同じように「簡単な英語」で「世界のどこでも」乗り切れればいいな、という願望があるのかもしれない。
http://d.hatena.ne.jp/atq/20100801
元増田 2010/08/02 00:34
もしかして、あなたやその他の私に反論されている方は、言語とは「英語」と「その他大勢」しかないという見方をされているのでしょうか。
ここらへんがキモじゃないかと思うね。元増田に反発する人たちは、日本語のモノリンガル環境(=日本)を英語に置き換えて考えてるだけなんだろう。「「英語」と「その他大勢」しかないという見方」とは、まさにそのことじゃないかという気がした。
しかしながら、シングリッシュのようなクレオール言語で「世界のどこでも」乗り切っていくのは不可能だ。多少ブロークンな英語でノンネイティブ同士がやりとりすることはあるけども、それはクレオール言語やピジン言語ではない。minor errorを含んでるだけであって、あくまでもモデルは英米圏の英語だ。
そういった前提に立てば、同一語族に属していない日本語の話者がいかに不利か、気付かされるし、元増田が主張していたような「絶望」という感情も生まれてくるのだろう。そして、「簡単な英語でいい」などと無責任に煽ったりするブロガーを見れば、「所詮、こいつら「言語」ってものを舐めすぎだと思うんだよ。」という感想を抱くのも自然なことだろう。
思うに、「言語」を「舐めすぎ」るというのは、ある意味で居心地のよい日本語に甘えているということなのかもしれないね。そして、日本語と同じように「苦労せずに習得できるレベル」の英語を用いて、海外でコミュニケーションを取りたい、という違う甘えも生み出しているのかもしれない。もっとも、日本語を習得するのだって、ほんとうは大変だったはずなんだけどね。子供の頃から漢字の書き取りを行い、長いあいだテレビなどで標準語の言い回しを見聞きして、いろんな人と話すことでようやく習得できたはず。
本来であれば、安易に「英語、英語」と喧伝するまえに、外国人向けの「簡単な日本語」を策定して国際機関の公用語に押し上げる、くらいの発想も必要じゃないかな。もし、そこで「日本語は外国人には理解できない」という日本特殊論に落ち込むとしたら、それもある意味では日本語に甘えているということなんだろう。
元増田の人は煽りをふんだんに詰め込んであの増田を書いたけども、細部をきちんと見ていけば、実に丁寧に言語と付き合ってる人だとわかる。なので、反発していた人たちも英語の勉強が進んだら、もう一度読み返してみれば少なからず得るものがあるだろう。もしかしたら、元増田と似たような思いを抱くかもしれない。学歴コンプや日本特殊論などの仕掛けを用いなくとも、そういった言語についてのお話が読まれるようになり、日本人がもっと積極的に自らの意見を発信できるようになれればいいね。
1・系統
ポッポ語とは、日本語から派生した言語であり、日本語派に分類される言語である。
しかし、話者が極めて少数であり、まったく異なる語族ではないか、という慎重論を唱える識者も根強い。
2・分布
主として日本国内に極めて狭く分布される。しかしながら、ごくまれに海外でも見れるので「トンネル効果ではないか」という識者もいる。
3・現状
ポッポ語は研究者も少なく、またサンプル数の極めて少ない絶滅の危機にある言語であるため、言語体系の解決には早期の決着が望まれる。日本語との類似の指摘が多いが、それでは日本語話者との解釈に隔たりがあることの説明にはなっておらず、研究のさらなる進展の必要がある。
言語学に詳しい野武千代美(65・日本学術大教授)は、「日本語も話せる、近親関係のある人に詳しい解説を求めるべきです。日本語と音韻が似ているからと日本語と同じ枠組みにしてしまうのは尚早です」と今の言語学の流れに警鐘を鳴らす。
また、未釜吉良(50・東京ニュータウンこくさい女子大教授)は、「日本語と親和性が強いが、『思い』と勘違いしやすい『おモイ』や、『友愛』と誤解しやすい『ユウアい』など、日本語と明らかに意味が異なるものがある。今後の進展には注意しなければならない」として時間をかけて考えるべきという考えを明らかにしている。
発祥: http://ex23.2ch.net/test/read.cgi/morningcoffee/1188654905/
Scheme という Lisp 語族の言語を用いて ℃-ute の相関関係をプログラムし、様々な角度から関係性を分析する手法を紹介していきます(ソースコードは最後に張ります)。
まずは、メンバー間の関係を「リスト」というデータ型で表現します。例えば「栞菜->愛理」という関係は
(kanna . airi)
という形で表すことができます。これに、「大好き」という情報を付加し、ついでにその関係の性質を数値化したものを加えると
((kanna . airi) (desc "大好き") (score . 1))
のようになり、関係図における一つの矢印の情報をデータ化できたことになります(暫定的に、好意は 1、良好・中立は 0、険悪は -1 の3段階で表すことにします)。
メンバー間の全ての関係性をこのデータ単位で定義し、データベース化しておくことで、色んな条件に基づいた検索やスコア計算などが可能となります。
ここで相関関係図における矢印を「リンク」と呼ぶことにして、あるメンバーから他のメンバーへどのようにリンクし、またリンクされているかを調べることができます。
(sort-nodes (number-list (from-links)))
結果:
((kanna . 6) (saki . 5) (maimi . 4) (erika . 3) (mai . 3) (chisato . 3) (airi . 2))
栞菜ちゃんがメンバー全員にリンクを張っていることが分かり、℃-ute ラブっぷりが伺えます。なっきーにも同様の事が言えます。例の「女の子が好き」発言を数値的に裏付ける結果と言えるかもしれません。
ただ、データ不足でリンク件数がまだ少ないのと、リンクの性質(好意/反感など)までは分からない点を考慮する必要があるでしょう。
同様に、リンクの終点の件数を調べてみます。
(sort-nodes (number-list (to-links)))
((chisato . 5) (erika . 5) (kanna . 4) (maimi . 4) (airi . 4) (mai . 3) (saki . 1))
えりかちゃんと千聖ちゃんが高ポイントです。メンバーからの人気や注目度の高さを示すデータですが、千聖ちゃんの場合敵対的なリンクが2件含まれている点に注意してください。
なっきーの被リンク数が極端に少ないですが、単純にデータ不足のためだと思われます。はぶら(ryとか言わないようにお願いします。
リンクに付随するスコアを計算することで、愛情の度合いを測ることができるのではないか、という考えに基づく研究です。
まず、全ての関係性を対象として、スコアがマイナスの関係を抽出してみます。
(filter-nodes (lambda (n) (< (score-relation n) 0)))
結果:
(((kanna . chisato) (desc "愛理に手出すんじゃねぇよ") (score . -1)) ((saki . chisato) (desc "愛理に手出すんじゃねぇよ") (score . -1)))
件数だけを得ると
(length (filter-nodes (lambda (n) (< (score-relation n) 0))))
2
僅か2件です。
良好・中立的な関係は
(length (filter-nodes (lambda (n) (= (score-relation n) 0))))
8
愛に満ちた関係は
(length (filter-nodes (lambda (n) (> (score-relation n) 0))))
16
非常に多いです。舞美ちゃんの「℃-ute同士でラブラブなんですよ」発言(例のラジオ)を数値的に裏付ける結果と言えるんじゃないでしょうか。
次に、メンバーごとのスコアを算出してみます。Lisp 的には以下のようにフィルタリングと畳み込み (fold) で計算することができます。例えば
(foldr (lambda (n acc) (+ (get-score n) acc)) 0 (filter-nodes (cut to? <> 'kanna)))
3
上式を一般化して一挙にメンバー全員に適用してみると
(sort-nodes (map (lambda (x) (cons x (score-loved x))) (all-members)))
結果:
((airi . 4) (kanna . 3) (mai . 2) (erika . 2) (maimi . 2) (saki . 1) (chisato . 0))
愛理ちゃんが好意を寄せられやすい傾向が伺えます。
今度は逆方向のスコアを計算してみると
(sort-nodes (map (lambda (x) (cons x (score-loving x))) (all-members)))
((kanna . 3) (maimi . 3) (chisato . 2) (airi . 2) (saki . 2) (mai . 1) (erika . 1))
まいまいとえりかちゃんが特に堅い・一途だという傾向を読み取ることができます。
今度は組み合わせ(カップリング)の評価です。
2点間相互のリンク・スコアを加算したものを「相性」と考えられるものとします。最大値 (互いに好意を寄せている場合の数値) は現在のスコアリング方式では 2 です。例えば
(score-between 'kanna 'airi)
の値は
2
となります。1 であれば一方通行と考えます。
関係性が未定義の場合もあるので 0 のものを除外して算出すると
(sort-nodes (filter (lambda (n) (not (= (cdr n) 0))) (map (lambda (n) (cons n (apply score-between n))) (all-combinations))))
(((chisato mai) . 2) ((chisato airi) . 2) ((airi kanna) . 2) ((saki kanna) . 2) ((kanna maimi) . 2) ((erika maimi) . 2) ((saki airi) . 1) ((saki erika) . 1) ((kanna mai) . 1) ((maimi airi) . 1) ((saki chisato) . -1) ((kanna chisato) . -1))
となります。若干ピンとこない部分もあるかも知れませんが、計算上は矛盾無くデータの内容を表しています。
(map (lambda (p) (find-relation (cons (caar p) (cadar p)) identity)) (filter (lambda (n) (= (cdr n) 1)) (map (lambda (n) (cons n (apply score-between n))) (all-combinations))))
(((kanna . mai) (desc "喰ってやるよ") (score . 1)) ((saki . airi) (desc "好き") (score . 1)) ((maimi . airi) (desc "良き妹") (score . 1)) ((saki . erika) (desc "彼氏にしたい") (score . 1)))
のようになります。
以上の調査を経て気になった問題点を列挙してみます。
特に最初の点に関して、「百合的」なるものの質的評価がなかなか難しいと感じました。例えば「大好き」も「良き妹」も同じ 1 と評価してしまっているのが妥当かどうか、といったことです。
また、スレにて与えられた情報を評価・分析する方法としては有効だとしても、逆方向のフィードバックの手段がなかなか見つからないというのが三つ目の問題です(技術力不足とも言います)。(注:画像化の方法が分かりました。追記参照)
最後に、プログラムのソースを示します。実行には PLT Scheme が必要です。文字コードは UTF-8 で保存した上で、(load "c-ute.ss") としてください。文字化けする場合はターミナルが UTF-8 を表示できるよう設定する必要があります。がんばってください。
c-ute.ss:
(require (lib "etc.ss") (lib "list.ss") (lib "26.ss" "srfi") (lib "delete.ss" "srfi" "1")) ;;; Utilities (define true? (compose not not)) (define (ignore _) #f) (define fif (case-lambda ((predicate consequent) (fif predicate consequent ignore)) ((predicate consequent alternative) (lambda (x) (if (predicate x) (consequent x) (alternative x)))))) (define (concat! xs) (apply append! xs)) (define (mapconcat f lst sep) (let lp ((str (f (car lst))) (lst (cdr lst))) (if (null? lst) str (lp (string-append str sep (f (car lst))) (cdr lst))))) (define (slice-string str len) (let lp ((res '()) (str str)) (if (<= (string-length str) len) (reverse! (cons str res)) (lp (cons (substring str 0 len) res) (substring str len))))) (define (break-string str len) (mapconcat identity (slice-string str len) "\\n")) ;; NOTE: input and output ports have to be either file-stream or #f ;; (i.e., cannot be a string port) (define (run exe opt in out) (let-values (((p p-i p-o p-e) (subprocess out in #f exe opt))) (subprocess-wait p) (close-input-port p-e))) ;;; Database ;; http://ja.wikipedia.org/wiki/%E2%84%83-ute (define names '((erika . "えりか") (maimi . "舞美") (saki . "早貴") (airi . "愛理") (chisato . "千聖") (mai . "舞") (kanna . "栞菜"))) (define (symbol->name sym) ((fif true? cdr) (assq sym names))) (define nodes '()) (define edges '()) (define (relate from to desc score) (let ((n (cons from to))) (or (find-relation n (lambda (r) (let ((d (assq 'desc r)) (s (assq 'score r))) (set-cdr! d (cons desc (cdr d))) (set-cdr! s (+ score (cdr s)))))) (begin (set! nodes (cons n nodes)) (set! edges (cons (cons n `((desc ,desc) (score . ,score))) edges)))))) (define (find-relation n k) ((fif true? k) (assoc n edges))) (define (related? x y) (find-relation (cons x y) (lambda (_) #t))) (define (from? n x) (eq? (car n) x)) (define (to? n x) (eq? (cdr n) x)) (define flip-relation (case-lambda ((n) (and (related? (cdr n) (car n)) (cons (cdr n) (car n)))) ((n k) ((fif true? k) (flip-relation n))))) (define (get-score n) (cdr (assq 'score n))) (define (get-description n) (cdr (assq 'desc n))) (define (describe-relation n) (find-relation n get-description)) (define (score-relation n) (or (find-relation n get-score) 0)) (define (print-node . ns) (for-each (cute find-relation <> (lambda (r) (display (format "| ~a => ~a (~a)~%" (caar r) (cdar r) (mapconcat (lambda (s) (string-append "\"" s "\"")) (cdr (assq 'desc r)) ", "))))) ns)) (define (iter-nodes k) (let lp ((nodes nodes)) (unless (null? nodes) (k (car nodes)) (lp (cdr nodes))))) (define (filter-nodes p) (let ((ns '())) (iter-nodes (fif p (cut find-relation <> (lambda (n) (set! ns (cons n ns)))))) ns)) (define (from-links) (map car nodes)) (define (to-links) (map cdr nodes)) (define (all-members) (delete-duplicates! (from-links))) (define (all-pairs) nodes) (define (ordered-pairs) (concat! (map (lambda (x) (map car (sort (filter-nodes (cute to? <> (car x))) (lambda (x y) (> (get-score x) (get-score y)))))) (sort-nodes (map (lambda (x) (cons x (score-loved x))) (all-members)))))) (define (all-combinations) (let lp ((cs '()) (ns nodes)) (if (null? ns) cs (let ((n (car ns))) (lp (if (member (list (cdr n) (car n)) cs) cs (cons (list (car n) (cdr n)) cs)) (cdr ns)))))) ;; number-list :: [a] -> [(a . Int)] (define (number-list ls) (let lp ((ns '()) (ls ls)) (if (null? ls) ns (let ((x (car ls))) (lp ((fif not (lambda (_) (cons (cons x 1) ns)) (lambda (n) (set-cdr! n (add1 (cdr n))) ns)) (assq x ns)) (cdr ls)))))) ;; sort-nodes :: [(a . Int)] -> [(a . Int)] (define (sort-nodes ns) (sort ns (lambda (x y) (> (cdr x) (cdr y))))) (define (diff-nodes ms ns) (let lp ((ds '()) (ns ns)) (if (null? ns) (sort-nodes ds) (lp (let* ((n (car ns)) (m (assq (car n) ms))) (cons (cons (car n) (- (cdr m) (cdr n))) ds)) (cdr ns))))) (define (get-total-score x p) (foldr (lambda (n acc) (+ (get-score n) acc)) 0 (filter-nodes (cut p <> x)))) (define (score-loved x) (get-total-score x to?)) (define (score-loving x) (get-total-score x from?)) (define (score-between x y) (+ (score-relation (cons x y)) (score-relation (cons y x)))) (define (-> x) (display (format "~%Links from [~a]~%" x)) (iter-nodes (fif (cut from? <> x) print-node))) (define (<- x) (display (format "~%Links towards [~a]~%" x)) (iter-nodes (fif (cut to? <> x) print-node))) (define (<-> x) (display (format "~%Reciprocal links for [~a]~%" x)) (iter-nodes (fif (cut to? <> x) (lambda (n) (flip-relation n (lambda (m) (print-node m n))))))) (define (<=> x) (display (format "~%Reciprocal matches for [~a]~%" x)) (iter-nodes (fif (cut to? <> x) (lambda (n) (flip-relation n (lambda (m) (if (ormap (lambda (x) (ormap (lambda (y) (equal? x y)) (describe-relation m))) (describe-relation n)) (print-node m n)))))))) (define (<?> x) (let ((to (assq x (number-list (from-links)))) (from (assq x (number-list (to-links))))) (display (string-append (format "~%Link statistics for [~a]~%" x) (format "| ~a => ~a (love ~a)~%" x (cdr to) (score-loving x)) (format "| ~a => ~a (love ~a)~%" (cdr from) x (score-loved x)))))) (define (info x) (for-each (cut <> x) (list <- <-> <=> -> <?>))) ;;; GraphViz (http://www.graphviz.org/) support (define graphviz "C:/Program Files/ATT/Graphviz/bin/dot.exe") (define (nodes->dot ns) (string-append "digraph cute {\n" ;;"\tordering=out;\n" ;;"\trankdir=LR;\n" "\toverlap=true;\n" "\tnode[fontname=\"msgothic.ttc\"];\n" "\tedge[fontname=\"msgothic.ttc\",fontsize=9];\n" (let lp ((str "") (ns ns)) (if (null? ns) str (let* ((n (car ns)) (s (score-relation n))) (lp (string-append str (format "\t\"~a\" -> \"~a\"" (symbol->name (car n)) (symbol->name (cdr n))) (format "[label=\"~a\",color=\"~a\"," (break-string (car (describe-relation n)) 7) (cond ((> s 0) "red") ((= s 0) "green") (else "blue"))) (format "style=\"bold~a\"];\n" (if (and (not (= s 0)) (< s 1) (> s -1)) ",dashed" ""))) (cdr ns))))) "}")) (define (write-dotfile dot file) (and (file-exists? file) (delete-file file)) (with-output-to-file file (lambda () (display dot))) file) (define (dot->png dot png) (call-with-input-file (write-dotfile dot "c-ute.dot") (lambda (in) (and (file-exists? png) (delete-file png)) (call-with-output-file png (lambda (out) (run graphviz "-Tpng" in out))))) 'done) ;;; Setup database ;; Based on: ;; http://ex23.2ch.net/test/read.cgi/morningcoffee/1188654905/116-142 (begin (relate 'maimi 'erika "大好き" 1) (relate 'maimi 'kanna "良き妹" 1) (relate 'maimi 'airi "良き妹" 1) (relate 'maimi 'mai "姉妹" 0) (relate 'erika 'maimi "一番可愛いよ" 1) (relate 'erika 'kanna "仲間" 0) (relate 'erika 'chisato "おソロパジャマ" 0) (relate 'kanna 'erika "仲間" 0) (relate 'kanna 'maimi "好き" 1) (relate 'kanna 'saki "喰ってやるよ" 1) (relate 'kanna 'mai "喰ってやるよ" 1) (relate 'kanna 'airi "大好き" 1) (relate 'kanna 'chisato "愛理に手出すんじゃねぇよ" -1) (relate 'saki 'maimi "荷物整理" 0) (relate 'saki 'erika "彼氏にしたい" 1) (relate 'saki 'kanna "興味がある" 0.5) (relate 'saki 'chisato "愛理に手出すんじゃねぇよ" -1) (relate 'saki 'airi "好き" 1) (relate 'airi 'kanna "受け入れる" 1) (relate 'airi 'chisato "最近親密" 1) (relate 'mai 'erika "保護者" 0) (relate 'mai 'maimi "姉妹" 0) (relate 'mai 'chisato "恋人" 1) (relate 'chisato 'erika "おソロパジャマ" 0) (relate 'chisato 'mai "恋人" 1) (relate 'chisato 'airi "最近親密" 1)) ;; query relations / draw graphs (if (file-exists? graphviz) (dot->png (nodes->dot (ordered-pairs)) "c-ute.png") (for-each info (all-members)))
Graphviz というソフトによって関係図を可視化できる、ということを教えていただきました(既に上プログラムを実行すると自動的に関係図画像を作成するようにしてあります)。ここでは技術的な観点から幾つか注意点を挙げておきます。
まず、Scheme プログラムから Graphviz を動かす方法について。コマンドラインからの起動のように、プログラムへのオプション文字列で入出力ファイルを指定する方法ではどうも上手く行きませんでした。調査の結果、入出力ファイルのポートを Scheme 側で用意しておく必要があるようです。処理系によって異なりますが、PLT Scheme の場合 subprocess という関数を次のように呼び出します。
(subprocess output-port input-port #f "/path/to/dot.exe" "-Tpng")
ここで output-port は png 等画像ファイルへの出力ポート。input-port は dot ファイル(グラフの定義ファイル)の入力ポートです。エラーポートは必要無いでしょう (#f)。
dot という名前の実行ファイルが、関係図のような有向グラフを描画するプログラムです。最後にオプション文字列として出力形式を指定します(png, jpeg, gif, etc.)。
次に dot ファイルを Scheme で書く方法ですが、以下の基本的な有向グラフの書式
digraph g { A -> B; B -> C; C -> A; }
を理解すれば、後は実直に Scheme のデータを当てはめて format 関数等で変換するだけです。
(string-append "digraph g {" (format "~a -> ~a;" (car node) (cdr node)) "}")
問題は、ノードを配置する順番によって出来上がる画像が変わってくる、ということです。
より見た目に分かりやすくするための工夫としては、相互にリンクするノード同士が dot ファイル上でも近接して出力されるようにすると良いでしょう。関連の強いものが画像の上でも近くに表示されるようになります。
また上述(特に例3)のスコアの概念を応用し、スコアの低いものが後に出力されるようにすることで、重力感覚に一致するような関係図を得ることができるでしょう。