Migdal

あづまにゃん@SCJ
あづまにゃん@SCJ

Posted on

言語の圏

 要旨

 数学の分野(特に論理やコンピュータ科学、プログラミング言語の文脈)において、文字列が圏論的には自由モノイダル圏として解釈されるということは、比較的最近ではよく扱われることです。こういうのとか。なので今回はこれを一般言語で解釈しましょう。

説明

 自由モノイドとは、二項演算子(テンソルと呼ばれる)「⊗」をもち、(左かつ右)単位対象を持ち、演算が閉じているもののことです。例えば、正の整数(の集合)bb(N)は掛け算×について自由モノイドで、単位対象(単位元)は1です。「×」は二項演算子で、すべての正の整数nについて1×n=n,n×1=nですし、nになにを掛けてもその結果は正の整数です。
 自由と附いているのは、端的にいえば通常のモノイドというものは自由モノイドに結合律を含めたもので、モノイドと「自由」な関係があるからです。例えば、正の整数の例ですべての正の整数の組a,b,cについて、(a×b)×c=a×(b×c)というのは一致するので、結合律が成り立ち、総合してこれはモノイドといえます。一方、指数「^」というのは、(a^b)^c≠a^(b^c)、つまり先に計算する位置が異なると異なる結果を生むので結合律が成り立ちません。
 言語で考えると、結合律というのは、現れないが内的に存在することがあります。頭が赤い魚を食べる猫の例だと、文上において結合を示す括弧なんて附けることはまず少ないのでこれ自体は文じたいたんなるモノイドになっていますが、内的にはまとまりの場所などによって明確に意味の差が存在して、これは結合律が成り立たないという自由モノイドということのよって解釈されます(後述)。

 深くは触れませんが、数学の文字列は自由モノイドによって解釈されます。使用可能文字の並びの集合({a,b}という使用可能文字があったら、その並びである{∅,a,b,aa,ab,bb,aaa,aab,aba,abb,baa,…})がその自由モノイドの元となり、それらは並べるという作業によって(これは実は閉じた二項演算になっていて、[abbabababaab]という文が存在してここにあらたに[a]を置こうとしたとき、既存の文字列はそれもまた使用可能文字の並びの集合に入っているので二項演算であるし、新たな文もまた使用可能文字の並びの集合に当然入っている、単位対象は空、何もない文字列、プログラミングでいうところの"")。そして、実用上は(プログラミング言語などを扱っている人は特になじみぶかいと思うのですが)括弧などをつけて、附ける場所によって異なる解釈(プログラミング言語の場合は異なる挙動)をするという、結合律が成り立たない世界であるから、自由モノイドとして扱われます(もっといえば、単なる自由モノイドよりも素因数分解にあたる射影、a⊗bからa,bをとりだす作業が簡単にかつ一意にできるので自由モノイドよりも良い構造を持っているといえそうである)。
 直接関連しますが、数学における文字は言語一般における形態素または単語として解釈すべきです(後述)。

 そしてそれを圏とした自由モノイダル圏とは、自由モノイドの元を対象とした、圏であって、まあつまり、その圏の対象a,bについてテンソルa⊗bというのものも対象に持ち(このテンソルは並びであり、圏論的に再帰的に定義される)、また、単位対象Iを含むテンソルはa⊗I≅a、I⊗a≅aとなるような圏です(≅とは対象の同型ということ、説明すると長くなるが、要はIを消してaとして考えていいということ。5×1=5だから最初っから5と考えたりするということと本質的に同じ)。
 圏というのは数学の新たな基礎であって、まあ集合に関係性の矢印がついたものです。

圏にする

文字、文字列の圏

 さて、一般の言語について考えます。文字列の議論をそのまま適用することを考えます。
 例えば、日本語の文字が対象で並びがテンソルであるとき、「頭が赤い魚を食べる猫」は「頭⊗が⊗赤⊗い⊗魚⊗を⊗食⊗べ⊗る⊗猫」と解釈されます。しかし、よく考えるとこれは形態素や文字同士のまとまりなどを全く考慮されていません。数学における文字列を自由モノイダルとして解釈する際は明示的にどのような結合が存在するかが示されますが、一方で、一般言語の外的な(外的に表現される)文字列はそうではなく、実際に人間は分かち書きでもなければ(分かち書きでも、単語内の形態素などについて)それまでの学習の結果から統計的にどこまでがひとつのまとまり、形態素であるかというのを判断しています(そういわれている、そのような結果を示す論文が存在する)。なので、形態素ごとに括弧で囲んで「(頭)⊗(が)⊗(赤⊗い)⊗(魚)⊗(を)⊗(食⊗べ⊗る)⊗(猫)」としても良いのですが、結局あたまで一文字一文字連結しているわけでもありませんし、結局日本語の場合は漢字とひらがな等の間の区別などに有用な違いを見いだせなかったり、発音との整合性も簡単には見いだせません。実用的に言語の入れ子構造(句構造規則等)を正しく見いだせないなどのことから、言語を解析する上で使うべきものではないといえます。というか、数学における文字も実際には形態素や単語に近いもので、単に一般言語における文字と解釈したのは言葉遊びに過ぎません。勿論、文字列の並びであることは大事なので、これは文字のテンソルとして以降に紹介するテンソルとはまた違う形のテンソルとして適切に表現されるべきですが。

 形態素・単語の圏、内的な解釈

 では、形態素単位で解釈することまたは単語単位で解釈することを考えます。これはつまり、内的な処理に重点を当ててかんがえるということであり、文字の並びのような外的なものを内的なものから現れた形式と考える本質に迫るということに他なりません。
 人間による内的な処理についてこだわると、こういった立場として生成文法や句構造規則が存在しますが、今は単に名詞がどうこう動詞がどうこうを考えることはしないので現状では強すぎる仮定であるとして採用しません。単語ごと形態素ごとの連合というのだけを検討したいのです。単に連合だけを考える場合、時枝の入れ子構造というのが単に内的な連合という事象だけをただ取り出した形式であるものであり、これを採用することにします。
 入れ子構造の説明を端的にすると、単語というのを基礎単位入れ子に入り、単語同士がくっついたものもまた再帰的に入れ子に入るになるというものです(というかなにかつくっつくことなく単一である概念事物を表わすものが単語であるという定義がされる。「三角」は単語だが、「三つの線分が端で交わる形」はさらにそれぞれある概念を表わすもの、つまり単語に分解される、分解して理解されるので単語ではない。形態素は、例えば「単語」は「単」と「語」というのの形態素の連合ではあるが、「単」と「語」の連合で単語というものを連想しているのではなく、「単語」というひとまとまりで単語と概念に連合するために今回は形態素を基礎単位として採用しない。てか、語源がそうってだけなのでは)。
実際はもうちょっと突き詰めれば理論言語学的な入れ子構造を発展させたような扱いやすいが品詞等等に依存しないものもあるとは思いますがまだ次回。

 さて、入れ子構造とは、括弧と相性がよく、そのまんま括弧を入れ子構造ということにします(入れ子構造を知らない人は、次がその説明と思っていいです)。つまり、単語を基礎的な単位とし、入れ子同士の接続をテンソルとし(更につよい構造ではテンソルの種類を変えたり、あるいは、品詞によってテンソルの結果をうまく変えてことなる解釈をすることになるだろう)、そのそのような対象が圏です。また、それぞれの入れ子というのは、概念事物の集まりや、あるいは文として完結していない、文として成立し得ない場合はその前段階か何かの集まりという圏に向かう函手(圏と圏の間の写像、単語に対してある概念事物が対応し、文に対してある概念事物が対応する)が存在するといえて、かなり言語に近付きます。
 「頭が赤い魚を食べる猫」を頭が赤いお魚さん。それを食べる猫として解釈すると、単語で入れ子となり、さらに次の語に纏めて修飾したり述語になったりする形で入れ異なり、最後には零陳述で入れ子となる、という入れ子で考えると、「(((((頭)⊗(が)⊗(赤い))⊗(魚))⊗(を)⊗(食べる))⊗(猫))⊗φ」(φは零陳述記号であって、知らない人はまず気にしなくてよい)となります。こういった括弧の処理をくっつきかたのよって変えることで、ことなった概念事物と最終的に連合するのです。
 また、この自由モノイダル圏から結合律のなりたつ、つまり括弧を無視して成り立つ自然な(非対称)モノイダル圏への函手によって、「頭⊗が⊗赤い⊗魚⊗を⊗食べる⊗猫」という外的な表記が得られます。勿論ここに読点を打つひとは打つでしょう。

 しかし、上記のような形で内的な処理にこだわる場合一つの問題が発生します。それは、単語同士の等しさの問題です(特に用言)。これは単語同士の近さではありません(「早い」と「速い」は近いがそれは概念的な近さであって、概念事物の圏に位相的な近さ等を取り入れることによってはじめて解決されるべき問題である。つまり現状では触れない。そもそも概念事物ってなに)。
 上記のように単語を定めると「走る」と「走ら-」「走り-」などの他の活用と異なる形は異なるものとして写されてしまいます。これは単語としての等しさであるから、簡単に考えればここに射が欲しいです。
 そこで、いっそ、上記の状態は内的な言語化の状態であるとして、それに至る過程を考えます。時枝でいうところの辞はそういう方向を表わす表現として明確に表わさず、また、概念事物から表現したいことを取り出して関係性を表わすという過程が存在しているということにします。つまり、「(((((頭)⊗ガ格⊗(赤-))⊗連体⊗(魚))⊗ヲ格⊗(食べ-))⊗連体⊗(猫))⊗φ」(ただし詞「頭」「赤-」「魚」「食べ-」「猫」はそういう概念であって、結局こういう構造だけが存在している状態である)という風に表現したいことがらがまず構造化された圏であるとしてみます。
 詞と辞を同じ対象とみなすのもどうであろうかという可能性があるので、射とみなすのもいいのかもしれないですが。
 こうした構造化という圏を仮定することによって、用言の連体や連用をそういったある単一の語に存在する辞の一つ(モードの一つ)として捉えることができ、はれて等しい語として捉えることができるようになりました。それにこの議論を日本語以外の諸言語に援用することができます。

全体の俯瞰

 概念事物→構造化→言語化→表現。前章までの話は、言語は左の圏とその函手になるという視点をあたえるものでした。概念事物から構造化をするという函手は人の意思、言語使用であり、構造化から言語化の函手は単に言語化またはそこに諸言語特有の本質が潜んでいるために文法と呼んで差し支えないかもしれません。言語化から表現へは筆記行為や発話行為、手話行為等々といえます。

 こう見ることで、われわれの行っている言語の研究というものを分類して見ることができるような気がしてきますね。たとえば、言語の本質等等の探求というのは、表現からこの函手のおおむね逆を辿って、構造化から言語化への函手を研究するのが個別言語学であったり、概念事物から構造化を探るのが言語の本質の探究であったり、これらの函手は同型ではない、忠実充満(全単射)ではないけれど、だいたいは忠実(単射)であるから、学習経験による統計的な判断で適切な逆函手をつくってわれわれは人の言語を理解できる……。圏論的視野によってとらえるならば、逆函手を仮定して、言語の本質にせまるさいに、研究の手軽さのために、概念事物の圏へ表現の圏や言語化の圏からの逆函手をKan拡張などによって仮定してみたり、同型な射や事物を更に局所圏として研究対象とすることで全体の姿が判明したり……夢が広がりますね。

 さらには、ここにこれまでの歴史におけるこのような圏の圏を仮定して、遙か昔→昔→ちょっと昔→今、のような函手をおいたり、音声の圏、音韻の圏等々を仮定して言語それ自体を壮大な圏の圏(ネットワーク)としてとらえる視座を確立することで、現在のLLMや自然言語処理、理論言語学に寄与できる可能性がありあます(グラフ理論のある種の発展ともいえそうである)。

 おわりに

 この記事は二日かけてぱぱっと書かれました。詳しくは理論言語学やプログラミングの方は自由モノイダル圏やモナド等を調べたりすることでただしく現在数学のアカデミアで紡がれている言語圏の話をしることができるので、この記事は多分あとで良い形に改訂されます。

古い順のコメント(0)