楔形文字で学ばないアッカド語文法(15)G語幹I-ʾ型弱動詞

この記事は
- G語幹I-ʾ型弱動詞
- 不規則活用動詞 alākum「行く」
についての記事です。
弱動詞解説回ショートカット
- 9. G語幹I-n型弱動詞 (2021-10-10)
- 13. G語幹III型弱動詞 (2023-07-31)
- 15. G語幹I-ʾ型弱動詞 (2023-08-17)
- 17. G語幹II型弱動詞
- 18. G語根I-w型弱動詞
1. G語幹I-ʾ型弱動詞の概論
第15回では語根の第一子音が ʾ の時の活用を学びます(ʾ, h, ḥ, ʿ, ġ, y、つまりʾ1-5, ʾ7、w=ʾ6は語頭で脱落しないので、別枠で第18回で紹介します)。
I-ʾ型弱動詞は、amārum や abātum など a から始まる I-a 型、epēšum や ezēbum など e から始まる I-e 型の大きく2つに分けられます。この違いはセム祖語の時から脱落した第一子音が何かによって生まれます(下の表を参照)。歴史的に、第一子音が ʾ, h (I-ʾ1-2)の語は I-a に、ḥ, ʿ (I-ʾ3-4)の語は(不定形の場合)隣接する母音が a > e に変化することで I-e になりました。また、第一子音が y (I-y; I-ʾ7)の語は I-e に合流、ġ (I-ʾ5)の語は第一子音が ḫ に変化したり、I-a になったり、稀に I-e になったり、ということで、結局は I-a か I-e のどちらかになったので、この2つを考えれば十分です。
活用の仕方は基本的にはどちらも同じで、不定形(parāsum型)、動形容詞(parsum型)では語頭に第一子音が来ますが、このときは単純に子音が無いものとみなします。過去形(iprus型)では第一子音の前の母音が長母音化します。
第一子音 | 例 | 分類 |
---|---|---|
ʾ=ʾ1 | amārum < *ʾamārum | I-a |
h=ʾ2 | abātum < *habātum | I-a |
ḥ=ʾ3 | epēšum < *ḥapāšum | I-e |
ʿ=ʾ4 | ezēbum < *ʿazābum | I-e |
ġ=ʾ5 | - *1 | 第一子音がḫに変化、またはI-a、稀にI-e |
y=ʾ7 | ešerum < *yašārum | I-e に合流 |
G過去形の活用表
接頭辞の母音と語幹頭の母音が連続するため、I-a 型では ia > ī, aa > ā のように接頭辞の母音が伸びるように変化します。I-e 型では語幹頭の e の影響で ie > ī, ae > ē のように変化します。
1a2ā3um (一般形) > a2ā3um / e2ē3um (I-a / I-e) |
I-a (I-ʾ1-2) | I-e (I-ʾ3-4, I-y) | ||||
---|---|---|---|---|---|---|
amārum (I-ʾ1) (見る) |
abātum (I-ʾ2) (滅ぼす) |
epēšum (I-ʾ3) (する) |
ezēbum (I-ʾ4) (捨てる) |
|||
単数 | 3cs | i12V3 > ī2V3 | īmur | ībut | īpuš | īzib |
2ms | ta12V3 > [tā/tē]2V3 | tāmur | tābut | tēpuš | tēzib | |
2fs | ta12V3ī > [tā/tē]2V3ī | tāmurī | tābutī | tēpušī | tēzibī | |
1cs | a12V3 > [ā/ē]2V3 | āmur | ābut | ēpuš | ēzib | |
複数 | 3mp | i12V3ū > ī2V3ū | īmurū | ībutū | īpušū | īzibū |
3fp | i12V3ā > ī2V3ā | īmurā | ībutā | īpušā | īzibā | |
2cp | ta12V3ā > [tā/tē]2V3ā | tāmurā | tābutā | tēpušā | tēzib | |
1cp | ni12V3 > nī2V3 | nīmur | nībut | nīpuš | nīzib |
G動形容詞の活用表
通常の動詞と同様に、女性単数形で母音が出現します。
1a2V3- (一般形) |
I-a (I-ʾ1-2) | I-e (I-ʾ3-4, I-y) | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
amir- (I-ʾ1) (見る) |
abit- (I-ʾ2)*2 (滅ぼす) |
epiš- (I-ʾ3) (する) |
ezib- (I-ʾ4) (捨てる) |
||||||||
男性 | 女性 | 男性 | 女性 | 男性 | 女性 | 男性 | 女性 | 男性 | 女性 | ||
単数 | 主格 | 1a23um | 1a2V3tum | amrum | amirtum | abtum | abittum | epšum | epištum | ezbum | ezibtum |
属格 | 1a23im | 1a2V3tim | amrim | amirtim | abtim | abittim | epšim | epištim | ezbim | ezibtim | |
対格 | 1a23am | 1a2V3tam | amram | amirtam | abtam | abittam | epšam | epištam | ezbam | ezibtam | |
複数 | 主格 | 1a23ūtum | 1a23ātum | amrūtum | amrātum | abtūtum | abtātum | epsūtum | epsātum | ezbūtum | ezbātum |
斜格 | 1a23ūtim | 1a23ātim | amrūtim | amrātim | abtūtim | abtātim | epsūtim | epsātim | ezbūtim | ezbātim |
2. alākum「行く」の活用
alākum「行く」(< *halākum)はG過去形で不規則活用します。語形はI-ʾ型ですが、I-n型のように第2子音 l を重ねて作ります。幹母音は i。
1a2ā3um > na2ā3um (一般形 > 1=n) |
alākum (行く) |
||
---|---|---|---|
単数 | 3cs | i12V3 > i22V3 | illik |
2ms | ta12V3 > ta22V3 | tallik | |
2fs | ta12V3ī > ta22V3ī | tallikī | |
1cs | a12V3 > a22V3 | allik | |
複数 | 3mp | i12V3ū > i22V3ū | illikū |
3fp | i12V3ā > i22V3ā | illikā | |
2cp | ta12V3ā > ta22V3ā | tallikā | |
1cp | ni12V3 > ni22V3 | nillik |
3. まとめ
- I-ʾ 型弱動詞では第一子音を無音として動詞を活用する。G過去形では母音変化を生じる。
- alākum「行く」は I-ʾ 型だが、例外的に I-n 型の活用をする。
←前:楔形文字で学ばないアッカド語文法(14)同格・接続詞省略
→次:(16)?
参考文献
- J. Huehnergard, A Grammar of Akkadian (3rd ed. 2011), Harvard Semitic Museum Studies 45, ISBN 978-1-57506-922-7.
- D. Snell, Enkonduko en la Akadan (Tria, reviziita eldono), esperantigita de Michael Wolf, Biblical Institute Press, Rome, 1988, ISBN: 88-7653-566-7.
楔形文字で学ばないアッカド語文法(14)同格・接続詞省略

この記事は
- 等位接続接辞 -ma
- 接続詞省略
についての記事です。
1. 等位接続接辞
文と文の等位接続を表す単語 u がありました。
アッカド語では、文末の動詞に接辞 -ma をつけることでも等位接続を表すことができます。
u と -ma の用法:
(1) -ma は動詞の法が同じ2文、つまり直接法なら直接法、接続法なら接続法同士をつなげる。u は特に制約はない。
(2) u で繋いだ2つの節は意味的に等価。-ma を使うと後段の節(主節)のほうが意味的に強調される。
(3) -ma で繋ぐと論理接続(~なので、~のとき、~なら、など)のニュアンスがでる。
-ma を使うと、従属節(-ma がついている方)が起こった結果、主節の出来事が起こった、という因果関係を表すことができます。
神々は王を置かなかったので、国は滅んだ。
iškun | 置いた < šakānum |
m̄atum | 国、土地 |
iḫliq | 滅んだ < ḫalāqum |
上の文では、国が滅んだ(mātum iḫliq)原因は神々が王を置かなかったから(ilū šarram ul iškunū)、ということを示唆しています。
一方で、 u を使った場合は添加(そして、加えて、など)の意味が出ます。
彼らは家を守り、そして王から銀を受け取った。
bītum | 家 |
iṣṣur | 守った < naṣārum |
kaspum | 銀 |
imḫur | 受け取った < maḫārum |
(4) アッカド語には「しかし」という逆説の単語がないため、 -ma でも u でも逆説を表す場合がある。
裁判官は山に着いたが、敵の軍隊が見えなかった。
dayyānum | 裁判官 |
šadûm | 山 |
ṣābum | 軍隊 |
nakrum | 敵の |
iṭṭul | 見えた < naṭālum |
u はともかく -ma については順接でも逆説でも「<従属節>した結果<主節>であった」という因果関係を表しており、一貫していると思う。
(5) 稀に -ma u が使われる。
(6) 「または」は ū または ū lū で表す。
2. 接続表現の省略
アッカド語では接続表現がなくても節と節を続けることで接続の意味を表すことが可能です。
王は奴隷を送った。(しかし)奴隷は来なかった。
←前:楔形文字で学ばないアッカド語文法(13)G語幹III型弱動詞
→次:(15)?
参考文献
- J. Huehnergard, A Grammar of Akkadian (3rd ed. 2011), Harvard Semitic Museum Studies 45, ISBN 978-1-57506-922-7.
- D. Snell, Enkonduko en la Akadan (Tria, reviziita eldono), esperantigita de Michael Wolf, Biblical Institute Press, Rome, 1988, ISBN: 88-7653-566-7.
楔形文字で学ばないアッカド語文法(13)G語幹III型弱動詞

この記事は
- G語幹III型弱動詞
についての記事です。
弱動詞解説回ショートカット
- 9. G語幹I-n型弱動詞 (2021-10-10)
- 13. G語幹III型弱動詞 (2023-07-31)
- 15. G語幹I-ʾ型弱動詞
- 17. G語幹II型弱動詞
- 18. G語根I-w型弱動詞
1. G語幹III型弱動詞の概論
第11回で、アッカド語では ʾ, h, ḥ, ʿ, ġ といった子音が消失したり、w, y が場合によっては消失するというお話をしました。第13回では、これら ʾ, h, ḥ, ʿ, ġ, w, y がG語幹3番目の子音であるような動詞(G語幹III型弱動詞)の活用についてみていきます。
G語幹III型弱動詞は、語根子音の3番目が弱化するタイプの動詞です。語根の3番目の子音が ʾ, h, ḥ, ʿ, ġ, w, y で語末に来たときに、例えば、
- ibni「彼女が建てた」(< *ibniy < *b–n–y)
- tamla「貴男が満たした」(< *tamlaʾ < *m–l–ʾ)
- nilqe「我々が取った」(< *nilqeḥ < *nilqaḥ < *l–q–ḥ)
また、 ʾ, h, ḥ, ʿ, ġ, w, y が別の子音の前に置かれるとき(例えばG動形容詞の女性単数)は、脱落して直前の母音が伸びます。
- šemītum「聞かれた (fs, nom.)」 (< *šamiʿtum < *š-m-ʿ「聞く」)
- zakūtum「明らか (fs, nom.)」(< *zakuwtum < *z-k-w「明らかである」)
また、 ʾ, h, ḥ, ʿ, ġ, w, y に母音が続くとき(例えば不定形語尾 -um)、子音変化、母音変化を伴います。
- ibnû「彼が建てた」(< *ibniū < *ibniyū)
- tamlâ「貴方たちが満たした」 (< *tamlaā < *tamlaʾā)
- ilqeā「彼女らが取った」(< *ilqeḥā < *ilqaḥā)
- banûm「建てること (nom.)」(< *banāum < *banāyum)
- zakîm「明らか(ms, gen.)」 (< *zakuim < *zakuwim)
成り立ちとしては上記の通りというだけなので、元の子音が何かということは覚えなくて大丈夫です(というより実はG過去形から多少推測できるのですが、これは後ほど触れます)。
2. G語幹III型弱動詞の不定形
G不定詞の活用について、banûm「建てる」と leqêm「取る」を例に見ていきます。
1a2ā3- (一般形) |
banā- (建てる) |
leqē- (取る) |
|
---|---|---|---|
主格 | 1a2ûm | banûm | leqûm |
属格 | 1a2êm | banêm | leqêm |
対格 | 1a2âm / 1a2ēam | banâm | leqēam |
G不定詞は 1a2ā3um で作れますが、III型弱動詞では常に第3子音が脱落するので実質的に語幹は 1a2ā- という形をとります。
- *banāyum > *banāum > banûm
- *banāyim > *banāim > banêm
- *banāyam > *banāam > banâm
しかしながら、第3子音が ḥ, ʿ だったものについては a > e に変化する(第11回参照)ので、語幹が 1e2ē- になるものもあります。
- *laqāḥum > *laqēḥum > *laqēum > *leqēum > leqûm
- *laqāḥim > *laqēḥim > *laqēim > *leqēim > leqêm
- *laqāḥam > *laqēḥam > *laqēam > leqēam
3. G語幹III型弱動詞の過去形
G過去形語幹は 12V3- という形で、この幹母音 V は動詞ごとに異なり覚えないといけないというものでした(第6回参照)。III型弱動詞でも基本的には幹母音を覚えないといけないのですが、実は消失した第3子音とある程度対応関係があります。
語根の第3子音が y のとき III-y、幹母音が i のとき III-i 、などと表記すると、
- 語根が III-y → 幹母音が i (III-i):*ibniy > ibni「建てた」
- 語根が III-w→ 幹母音が u (III-u):*iḫduw > iḫdu「返答した」
- 語根が III-ʾ / III-h → 幹母音が a (III-a):*imlaʾ > imla「満たした」
- 語根が III-ḥ / III-ʿ → 幹母音が e (III-e):*ilqaḥ > *ilqeḥ > ilqe「建てた」
活用表にすると以下の通りです。
1a2ā3um > 1a2ûm (一般形 > 3=∅) |
banûm (III-i) (建てる) |
ḫadûm (III-u) (返答する) |
malûm (III-a) (満たす) |
leqûm (III-e) (取る) |
||
---|---|---|---|---|---|---|
単数 | 3cs | i12V3 > i12V | ibni | iḫdu | imla | ilqe |
2ms | ta12V3 > ta12V | tabni | taḫdu | tamla | telqe / talqe | |
2fs | ta12V3ī > ta12î | tabnî | taḫdî | tamlî | telqî / talqî | |
1cs | a12V3 > a12V | abni | aḫdu | amla | elqe / alqe | |
複数 | 3mp | i12V3ū > i12û | ibnû | iḫdû | imlû | ilqû |
3fp | i12V3ā > i12Vā | ibniā | iḫdâ | imlâ | ilqeā | |
2cp | ta12V3ā > ta12Vā | tabniā | taḫdâ | tamlâ | telqeā / talqeā | |
1cp | ni12V3 > ni12V | nibni | niḫdu | nimla | nilqe |
4. G語幹III型弱動詞の動形容詞
概要で述べた通り、III型弱動詞ではG動形容詞語幹 1a2V3- (第7回参照)の第3子音が落ちまして、殆どの場合で幹母音 V は i です。
- bani- (< *baniy-) 「建てられた」
- mali- (< *maliʾ-) 「満たされた」
- ḫadi- (< *ḫadiw-) 「幸せな」
ごく稀に u になることがあります。
- zaku- (< *zakuw-)「明らかな」
III-e 動詞では、ほとんどの場合で語幹の a が e に変化します。
- leqi- (< laqi- < *laqiḥ-)
1a2V3- > 1a2V- (一般形 > 3=∅) |
rabi- (良い) |
šemi- (聞かれた) |
zaku- (取る) |
||||||
---|---|---|---|---|---|---|---|---|---|
男性 | 女性 | 男性 | 女性 | 男性 | 女性 | 男性 | 女性 | ||
単数 | 主格 | 1a23um > 1a2ûm |
1a2V3tum > 1a2V̄tum |
rabûm | rabītum | šemûm | šemītum | zakûm | zakūtum |
属格 | 1a23im > 1a2îm |
1a2V3tim > 1a2V̄tim |
rabîm | rabītim | šemîm | šemītim | zakîm | zakūtim | |
対格 | 1a23am > 1a2Vām |
1a2V3tam > 1a2V̄tam |
rabiam | rabītam | šemiam | šemītam | zakâm | zakūtam | |
複数 | 主格 | 1a23ūtum > 1a2ûtum |
1a23ātum > 1a2Vātum |
rabûtum | rabiātum | šemûtum | šemiātum | zakûtum | zakâtum |
斜格 | 1a23ūtim > 1a2ûtim |
1a23ātim > 1a2Vātim |
rabûtim | rabiātim | šemûtim | šemiātim | zakûtim | zakâtim |
5. まとめ
- 第3語根が ʾ, h, ḥ, ʿ, ġ, w, y のとき脱落する。
←前:楔形文字で学ばないアッカド語文法(12)名詞由来形容詞・指示語
→次:楔形文字で学ばないアッカド語文法(14)同格・接続詞省略
参考文献
- J. Huehnergard, A Grammar of Akkadian (3rd ed. 2011), Harvard Semitic Museum Studies 45, ISBN 978-1-57506-922-7.
- D. Snell, Enkonduko en la Akadan (Tria, reviziita eldono), esperantigita de Michael Wolf, Biblical Institute Press, Rome, 1988, ISBN: 88-7653-566-7.
トロピカル代数で機械学習〜トロピカル回帰直線を作る〜【実装編】
トロピカル演算を使ってトロピカルに単回帰したい。
理論サイドを【理論編】で話しました。翻って【実装編】ではPythonを使って単回帰モデルを実装します。
「トロピカル演算とは何ぞや?」とか、詳細な数学的議論を追いたい方は【理論編】をご覧ください。
理論(概要)
トロピカル演算をMax-plus演算とする。加法と乗法を に対して
\begin{align}
a \oplus b & = \max(a, b) \\
a \otimes b & = a + b
\end{align}
で定義する。
普通の線形回帰は(単回帰なら)直線 に回帰させるわけだが、トロピカル演算の下ではトロピカル直線
\begin{align}
y=a \otimes x \oplus b=\max(a+x,b)
\end{align}
に回帰させる。この時の推定パラメータは、
\begin{align}
\hat{a}&=\min_i (y_i-x_i) \\ \hat{b}&=\min_i y_i
\end{align}
となる(Greatest Lower Estimate; GLE)。あるいは、 をMax-plus行列積として、
\begin{align}
\tilde{a}&=\hat{a}+\mu \\ \tilde{b}&=\hat{b}+\mu \\ \mu&=\frac{1}{2}\|\boldsymbol{X}\circledcirc\hat{\boldsymbol{w}}-\boldsymbol{y}\|_\infty
\end{align}
となる(Minimum Max Absolute Error; MMAE)。これだけです*1。
toy model
ノイズが乗ったトロピカル直線 を用意します。
import numpy as np import matplotlib.pyplot as plt x = np.linspace(-1,12,200) arr_3 = np.ones(200)*3 p = np.stack([x-2,arr_3]) y = p.max(axis=0) + np.random.randn(200)*0.25 plt.scatter(x,y,marker=".") plt.show()
このいかにもトロピカル回帰してほしそうな顔をしているデータに対して、トロピカル単回帰でトロピカル直線 にfittingさせる処理を実装していきます。
さてトロピカル単回帰では、Greatest Lower Estimation (GLE)の推定パラメータ は
\begin{align}
\hat{a}&=\min_i (y_i-x_i) \\ \hat{b}&=\min_i y_i
\end{align}
で計算できるので、これを実装します。
def fit(x, y): # GLE a_hat = np.min(y-x) b_hat = np.min(y) coef_ = [a_hat, b_hat]
予測では、入力データの各 に対して、
\begin{align}
y=\hat{a}\otimes x \oplus\hat{b}=\max(\hat{a}+x,\hat{b})
\end{align}
を返します。
def predict(x): a = coef_[0] b = coef_[-1] arr_b = np.ones(len(x))*b y_pred = np.stack([x+a, arr_b]).max(axis=0) return y_pred
scikit-learnと使用感を合わせたいのでクラス化しておく。MMAEをするために必ずGLEするので、GLEとMMAEで共通化してます。引数を`gle=True`にして回すとGLEで止まる仕様。
class MaxPlusRegression: def __init__(self, gle=False) -> None: self.gle = gle def fit(self, x, y): # GLE a_hat = np.min(y-x) b_hat = np.min(y) self.coef_ = [a_hat, b_hat] if self.gle: return self # MMAE y_hat = self.predict(x) self.mu_ = np.max(y-y_hat)/2 a_tilde = a_hat + self.mu_ b_tilde = b_hat + self.mu_ self.coef_ = [a_tilde, b_tilde] return self def predict(self, x): a = self.coef_[0] b = self.coef_[-1] arr_b = np.ones(len(x))*b y_pred = np.stack([x+a, arr_b]).max(axis=0) return y_pred
通常のLinear Regression、トロピカルのGreatest Lower Estimation、Minimum Max Absolute Errorで回帰した結果は以下の通り。
# LR reg = LinearRegression().fit(x.reshape(-1, 1),y) y_lr = reg.predict(x.reshape(-1, 1)) # GLE reg_gle = MaxPlusRegression(gle=True).fit(x, y) y_hat = reg_gle.predict(x) # MMAE reg_mmae = MaxPlusRegression().fit(x, y) y_tilde = reg_mmae.predict(x) plt.scatter(x, y, marker=".", c="gray", alpha=0.5) plt.plot(x, y_lr, label="LSE") plt.plot(x, y_hat, label="GLE") plt.plot(x, y_tilde, label="MMAE") plt.legend() plt.show()
各回帰手法を使った予測に関する誤差評価は次の通り。
手法 | RMSE | MaxError | ||
---|---|---|---|---|
線形回帰 | 0.999 | 2.001 | 0.554 | 1.857 |
GLE | 0.585 | 1.226 | -2.513 | 2.475 |
MMAE | 0.262 | 0.613 | -1.900 | 3.088 |
ここで、RMSEは平均平方根二乗誤差
\begin{align}
RMSE = \sqrt{\frac{1}{N}\sum_i(y_i - \hat{y}_i)^2}
\end{align}
で、観測値と予測値の差の2乗の和の平均の平方根、というやつなので、値が小さいほど誤差が小さい=よく予測できていると見做せます。
また、ここでMaxErrorと書いたのは誤差の-ノルムを取ったもので、つまり
\begin{align}
MaxError = \max_i\left(|y_i - \hat{y}_i|\right)
\end{align}
回帰直線から最も外れた値との差(距離)なので、やっぱり値が小さいほどよく予測できていると見做せる指標。
先の表を見ると、通常の線形回帰は精度がいまいち(RMSE=0.999、MaxError=2.001)な一方で、やはりこの中ではMMAEが最良の精度(RMSE=0.262、MaxError=0.613)を誇るのがよくわかりますね(当たり前だけど)。
応用:Davisデータセット
Davisデータセットは、200人分の身長と体重が記録されたデータセットで、元データは下記URLから取得できます。
https://vincentarelbundock.github.io/Rdatasets/datasets.html
Davisデータセットの散布図をPythonで描いてみます。
import pandas as pd import numpy as np import matplotlib.pyplot as plt df = pd.read_csv('https://vincentarelbundock.github.io/Rdatasets/csv/carData/Davis.csv', index_col=False) df = df[['weight', 'height']] a, b = df.iloc[11] df.iloc[11] = b, a data = df.to_numpy() plt.gca().set_aspect('equal', adjustable='box') plt.scatter(data[:,0], data[:,1], s=10, marker='o', alpha=0.3) plt.grid(color='gray', linestyle='dotted', linewidth=1)
Davisデータセットには外れ値(身長と体重があべこべ)があるので、そのデータレコードだけスワップしておきました(上の画像は修正済です)。
またしてもトロピカル回帰してほしそうな顔(偏見)をしているデータですね。まあ体重が増えやすい一方で身長ってそんなに増えないというか、なんとなく頭打ちしそうなので、線形よりトロピカルではないか?という推測はそんなに間違ってないと思うんですよね。ということで、このデータに対してトロピカル単回帰を試してみます。
今回はmin-plusの方がfitしそうなデータ分布をしてるんで、各演算を全て逆にして計算します。つまり、加法 を
、乗法
を通常の加法で定義したMin-plus代数上のトロピカル直線
\begin{align}
y=a \oslash x \ominus b=\min(a+x,b)
\end{align}
に回帰することを考えると、Greatest Upper Estimate (GUE)*2は
\begin{align}
\hat{a}&=\min_i (y_i-x_i) \\ \hat{b}&=\min_i y_i
\end{align}
で計算でき、 をMin-plus行列積とすると、Maximum Min Absolute Error (MMAE)*3は
\begin{align}
\tilde{a}&=\hat{a}+\mu \\ \tilde{b}&=\hat{b}+\mu \\ \mu&=\frac{1}{2}\|\boldsymbol{X}\circledast\hat{\boldsymbol{w}}-\boldsymbol{y}\|_\infty
\end{align}
となります。先ほどのMaxPlusRegressionクラスを流用してMinPlusRegressionクラスを実装すると以下の通り。
class MinPlusRegression: def __init__(self, gue=False) -> None: self.gue = gue def fit(self, x, y): # GUE a_hat = np.max(y-x) b_hat = np.max(y) self.coef_ = [a_hat, b_hat] if self.gue: return self # MMAE y_hat = self.predict(x) self.mu_ = np.min(y-y_hat)/2 a_tilde = a_hat + self.mu_ b_tilde = b_hat + self.mu_ self.coef_ = [a_tilde, b_tilde] return self
MinPlusRegressionクラスを使って回帰を実装します。toymodelの時と同様に、通常のLinear Regression、トロピカルのGreatest Upper Estimation、Maximum Min Absolute Errorで回帰します。
import pandas as pd import matplotlib.pyplot as plt import numpy as np from sklearn.linear_model import LinearRegression from tplearn import MinPlusRegression x = data[:,0] y = data[:,1] x_hat = np.linspace(40,120,200) # LR reg = LinearRegression().fit(x.reshape(-1, 1),y) y_lr = reg.predict(x_hat.reshape(-1, 1)) # GUE reg_gue = MinPlusRegression(gue=True).fit(x, y) y_hat = reg_gue.predict(x_hat) # MMAE reg_mmae = MinPlusRegression().fit(x, y) y_tilde = reg_mmae.predict(x_hat) plt.gca().set_aspect('equal', adjustable='box') plt.scatter(data[:,0], data[:,1], s=10, marker='o', alpha=0.3) plt.grid(color='gray', linestyle='dotted', linewidth=1) plt.plot(x_hat, y_lr, label="LSE") plt.plot(x_hat, y_hat, label="GUE") plt.plot(x_hat, y_tilde, label="MMAE") plt.legend() plt.show()
この図だけを見ると、もしかしたらただの線形回帰が一番精度よさそうにも見えるかもしれません。が、各回帰手法を使った予測に関する誤差評価は次の通り。
手法 | RMSE | MaxError | ||
---|---|---|---|---|
線形回帰 | 17.35 | 41.62 | 0.517 | 136.8 |
GUE | 16.38 | 35.00 | 123.0 | 197.0 |
MMAE | 6.559 | 17.5 | 105.5 | 179.5 |
なんとGUEですら通常の線形回帰を上回る結果に。これは流石に意外だった。MMAEは文句なし。
当然古典的なモデルでももっとfitする関数はあると思いますが、説明可能性と天秤にかければトロピカル回帰、結構いいのではないでしょうか。
トロピカル回帰自体そこまで研究進んでないので、今後の発展に期待。
トロピカル代数で機械学習〜トロピカル回帰直線を作る〜【理論編】
皆さんは「トロピカル幾何」とか「トロピカル演算」とか「トロピカル代数」というものをご存じでしょうか。
名前からして面白そうだなぁ~とは思いつつ、何に使うかさっぱり分かりませんでした。ですが、先日面白い記事を見つけまして、トロピカル演算を使うとグラフの最短経路問題が解けるみたいで、
qiita.com
これができるのなら、「最短経路問題のアルゴリズムが開発されてるなら機械学習もあるやろwww」とも思うわけですよ。
で、調べたところやっぱりありまして、最近の研究*1によると、どうやらトロピカル演算を用いた
- 深層学習
- 確率グラフィカルモデル
- 線形回帰
というのはもうすでに開発されているらしい*2。
というわけで、我々はトロピカル線形回帰の奥地へと進むのであった…
この記事の方針
厳密な数学的議論というよりは、「数学的に理解する」ことを優先します。
途中、論証がガバい箇所があるかもしれませんが、赦してください。
忙しい人向け
普通の単回帰(最小二乗法)
復習ということで、通常の演算による通常の単回帰をおさらいします。
個の入力データ
があるとします。
このデータを直線 に単回帰したいとします。ここで、実際にはデータがきれいに直線に乗ることはあり得ず幾らかノイズ(誤差)が入るはずなので、各データの回帰値と観測値の誤差を
とすると、
\begin{align}
y_i = (ax_i+b)+\varepsilon_i
\end{align}
という関係になっているはずです。最小二乗法では、データ全体で、この誤差の2乗の和が最小になってほしいので、
\begin{align}
\|\varepsilon\|_2=\|ax_i+b-y_i\|_2=\sum_i^N(ax_i+b-y_i)^2
\end{align}
を最小化すればよいということでした(別に二乗じゃなくても何でもいいのですが、微分しやすいので二乗です)。
最終的には でそれぞれ偏微分して
になるところが
の最小値なので、頑張って解くと解けます*3。
単回帰の場合、行列で書くと
\begin{align}
\label{eq:vecdef}
\boldsymbol{X} =
\begin{bmatrix}
x_1 & 1 \\
\vdots & \vdots \\
x_N & 1
\end{bmatrix}
, \quad
\boldsymbol{w} =
\begin{bmatrix}
a \\
b
\end{bmatrix}
, \quad
\boldsymbol{y} =
\begin{bmatrix}
y_1 \\
\vdots \\
y_N
\end{bmatrix}
\end{align}
から、誤差
\begin{align}
\|\boldsymbol{X}\boldsymbol{w}-\boldsymbol{y}\|_2
\end{align}
を最小にする を導出すればよく、
で偏微分してよしなにやると、推定値
は結局
\begin{align}
\hat{\boldsymbol{w}}=(\boldsymbol{X}^\top \boldsymbol{X})^{-1} \boldsymbol{X}^\top \boldsymbol{y}
\end{align}
を計算すればよいということになります。
トロピカルな単回帰
さて、トロピカル版の線形単回帰をやるわけですが、その前にトロピカル半環における演算をおさらいします。
トロピカル半環とは、実数に無限小を加えた集合 に対して、加法をmax関数、乗法を + (通常の加法)で定義した代数構造(Max-plus 代数)です*4。以降、トロピカル加法を
、トロピカル乗法を
と表記することにすると、トロピカル半環における加法と乗法は
に対して
\begin{align}
a \oplus b & := \max(a,b) \\
a \otimes b & := a + b
\end{align}
と定義されます(半環とは何ぞや?とか、本当に半環になるのかとかまで話すとすごく長くなるのでここでは割愛します)。
ちなみに実数に無限小 を加えているのは、これが加法零元(「ゼロ」)だからです。つまり、どんな数
に対しても、トロピカル加法で
を足しても
のままです(計算してみてください)。
というわけで、今回回帰したい(一変数)トロピカル直線は
\begin{align}
y=a \otimes x \oplus b = \max (a+x, b)
\end{align}
となります。
さて、 個の入力データ
が上記のトロピカル直線に乗っているとします。行列
、ベクトル
を
\begin{align}
\boldsymbol{X} =
\begin{bmatrix}
x_1 & 0 \\
\vdots & \vdots \\
x_N & 0
\end{bmatrix}
, \quad
\boldsymbol{w} =
\begin{bmatrix}
a \\
b
\end{bmatrix}
, \quad
\boldsymbol{y} =
\begin{bmatrix}
y_1 \\
\vdots \\
y_N
\end{bmatrix}
\end{align}
とします。式\eqref{eq:vecdef}と違って の2行目が
なのは、トロピカル乗法の単位元が
であることに依ります(任意の元
にトロピカル乗法で
を掛けても
、つまり、
だし
が成り立つ)。したがって、連立方程式としては行列形式で
\begin{align}
\label{eq:tpprob}
\boldsymbol{X} \circledcirc \boldsymbol{w} = \boldsymbol{y}
\end{align}
と表すことができます。新たな記号 が出現しましたが、これはトロピカル版の行列積で*5、例えば、行列
の積の
要素は
\begin{align}
[\boldsymbol{A}\circledcirc\boldsymbol{B}]_{ij}=\oplus_{k=1}^N (a_{ik} \otimes b_{kj})=\max_k(a_{ik} + b_{kj})
\end{align}
と計算されます。これだけを見ると何だかよく分からない気もしますが、実は通常の行列積の計算方法の加法と乗法をトロピカル化しただけで、具体例で言えば、式\eqref{eq:tpprob}を計算すると、
\begin{align}
\boldsymbol{X} \circledcirc \boldsymbol{w} =
\begin{bmatrix}
x_1 & 0 \\
\vdots & \vdots \\
x_N & 0
\end{bmatrix}
\circledcirc
\begin{bmatrix}
a \\ b
\end{bmatrix}
=
\begin{bmatrix}
(x_1 \otimes a) \oplus b \\
\vdots \\
(x_N \otimes a) \oplus b
\end{bmatrix}
=
\begin{bmatrix}
y_1 \\
\vdots \\
y_N
\end{bmatrix}
= \boldsymbol{y}
\end{align}
のように式変形することができます。
本題に戻りまして、我々が何をしたかったかというと、トロピカル回帰係数 の推定でした。というわけで何か適当な
-ノルムで
\begin{align}
\|\boldsymbol{X} \circledcirc \boldsymbol{w} - \boldsymbol{y}\|_p
\end{align}
を最小化するような を計算すればよいわけです。
…と言いたいところですが、残念なことに、通常の線形回帰のようには計算できません。何故かというと、トロピカル半環には逆元が存在しないからです。どういうことかというと、 に何か足したら
(=トロピカル演算におけるゼロ)になるような都合のいい
みたいなものが無いということです。もしあるなら
\begin{align}
a \oplus (-a) = \max(a, -a) = -\infty
\end{align}
が成り立つはずですが、そんな はどうやら無さそうです。従って微分したり逆行列を定義することができません。解けません。さあ困りましたね。
拡張
今まで に対する加法(
)と乗法(
)のMax-plus演算を考えてきたわけですが、逆元がないなら逆元っぽいのを作ってしまえばよいわけです。
Max-plus代数は、実数に無限小を加えた集合 に対して、加法をmax関数、乗法を + (通常の加法)で定義した代数構造でした。また、加法零元は
、乗法単位元は
でした。まとめると、
\begin{align}
\mathbb{R}\cup\{-\infty\},\quad a \oplus b := \max(a,b), \quad a \otimes b := a + b, \quad \epsilon:=-\infty, \quad e:=0
\end{align}
ところで、 と似ている関数がありますよね。そうですね、
ですね。
Max-plus代数の集合を に、加法と加法零元を
に換え、乗法、乗法単位元はそのまま(
)にすると、Max-plusと同様*6の体系、Min-plus代数を構成することができます。まとめると、
\begin{align}
\mathbb{R}\cup\{\infty\},\quad a \ominus b := \min(a,b), \quad a \oslash b := a + b, \quad \epsilon':=\infty, \quad e':=0
\end{align}
です。
Max-plus代数とMin-minus代数を合体させることで、あたかも加減乗除が揃ったような体系を構築することができるのですが、これらを一体の体系として扱うにはもう少し工夫が必要になります。特に、今回逆元が無くて困ってたので、これを解決したい。というわけで、例えば、 を
を使って表すとどうなるでしょうか。
とすると、
\begin{align}
\max(a,b)=-\min(-a,-b)
\end{align}
が成り立ちます。マイナスを取る操作を のように表記して、これを共役元ということにすると、
\begin{align}
a \oplus b=(a^* \ominus b^*)^*
\end{align}
と書き直せます。また、通常の加法に対して
\begin{align}
a+b = -( (-a)+(-b) )
\end{align}
なので
\begin{align}
a \otimes b=(a^* \oslash b^*)^*
\end{align}
が成り立ちます。 についても成り立ちます。
今回はMax-plus代数をベースに構築したので、Min-plus代数の方を「双対」なものとします。ここまでに出てきた要素を一覧にしたものが以下の表です。
項目 | 記号 | 意味 |
---|---|---|
集合 | ||
加法 | ||
零元 | ||
双対加法 | ||
双対零元 | ||
乗法 | ||
単位元 | ||
双対乗法 | ||
双対単位元 | ||
共役元 |
最適解
ここまでくると、双対行列積(=Min-plus側の行列積)も定義することができまして、
\begin{align}
[\boldsymbol{A}\circledast\boldsymbol{B}]_{ij}:=\ominus_{k=1}^N (a_{ik} \oslash b_{kj}) = \min_k(a_{ik}+b_{kj})
\end{align}
と定義することにします。で、
\begin{align}
\boldsymbol{X} \circledcirc \boldsymbol{w} = \boldsymbol{y}
\end{align}
が解をもつなら、最大元 は
\begin{align}
\hat{\boldsymbol{w}}=\boldsymbol{X}^* \circledast \boldsymbol{y} = \left[\ominus_{i=1}^N(x_{ij}^* \oslash y_i)\right] = \left[\min_{i}(y_i - x_{ij})\right]
\end{align}
で計算することができるらしいです。イメージとしては擬逆行列 と思ってしまってもいいとは思いますが、厳密には、行列積
がガロア接続という関係にあることから導き出されます。
ガロア接続
2つの半順序集合 があったとします。
また、写像 を単調増加写像*7とします。
は
このとき、任意の や
に対し、
\begin{align}
F(a) \leq b \Leftrightarrow a \leq G(b)
\end{align}
が成り立つとすれば、これをガロア接続と呼びます。
ガロア接続には激ヤバ性質がありまして、 の最大元は
です*8。
で、実は行列積 は互いにガロア接続の関係にあるため*9、この性質を使えます。ここで、それぞれの作用を
\begin{align}
\delta(\boldsymbol{w}) & :=\boldsymbol{X}\circledcirc\boldsymbol{w} \\
\varepsilon(\boldsymbol{y}) & :=\boldsymbol{X}^* \circledast\boldsymbol{y}
\end{align}
と定義します。そうすると、 はガロア接続なので、
\begin{align}
\boldsymbol{X}\circledcirc\boldsymbol{w} = \delta(\boldsymbol{w}) \leq \boldsymbol{y} \Leftrightarrow \boldsymbol{w} \leq \varepsilon(\boldsymbol{y}) =\boldsymbol{X}^* \circledast\boldsymbol{y}
\end{align}
が成り立ちます。
GLE (greatest lower estimate)
を最小化しますが、
としても状況は変わらないので、この仮定を入れます。先ほどの
がガロア接続なので、
\begin{align}
\boldsymbol{w} \leq \boldsymbol{X}^* \circledast\boldsymbol{y}
\end{align}
ですが、 を小さくするには
なので
をできるだけ大きめに取りたい。
というわけで、 の最大元は
で計算できるので、最小
誤差に関する最適値
は、
\begin{align}
\hat{\boldsymbol{w}} =
\begin{bmatrix}
\hat{a} \\ \hat{b}
\end{bmatrix}
&= \boldsymbol{X}^* \circledast \boldsymbol{y} \\
&=
\begin{bmatrix}
-x_1 & \cdots & -x_N \\
0 & \cdots & 0
\end{bmatrix}
\circledast
\begin{bmatrix}
y_1 \\
\vdots \\
y_N
\end{bmatrix} \\
& =
\begin{bmatrix}
\min_i (y_i-x_i) \\
\min_i (y_i)
\end{bmatrix}
\end{align}
となります。幾何的には、データの下限にfitします。
MMAE (minimum max absolute error)
GLEによるトロピカル回帰ではデータの下限にfitしますが、もうちょいいい感じに回帰させたいわけですね。
じゃあどうするかということですが、最小 誤差の下でより良い近似解を得ます。
の最大元
に対する
誤差を
\begin{align}
\|\boldsymbol{X} \circledcirc \hat{\boldsymbol{w}} - \boldsymbol{y}\|_\infty=\|\boldsymbol{X} \circledcirc (\boldsymbol{X}^* \circledast \boldsymbol{y}) - \boldsymbol{y}\|_\infty
\end{align}
で評価できます。これは、GLE回帰直線と観測された との差の中で最大のものを計算していることになります*10。これを
と置くと、
\begin{align}
\mu = \frac{1}{2}\|\boldsymbol{X}\circledcirc\hat{\boldsymbol{w}}-\boldsymbol{y}\|
\end{align}
は、GLE回帰直線からデータの中心線あたりまでの距離に相当します。この考え方をMMAE (minimum max absolute error)と呼び、MMAEによる回帰係数の推定値 は
\begin{align}
\tilde{\boldsymbol{w}} &= \hat{\boldsymbol{w}} + \mu \\
&= \boldsymbol{X}^* \circledast \boldsymbol{y} + \mu
\end{align}
で計算されます。結局、トロピカル直線 への単回帰であれば、
\begin{align}
\tilde{\boldsymbol{w}} =
\begin{bmatrix}
\tilde{a} \\ \tilde{b}
\end{bmatrix}
&= \boldsymbol{X}^* \circledast \boldsymbol{y} + \mu \\
&=
\begin{bmatrix}
-x_1 & \cdots & -x_N \\
0 & \cdots & 0
\end{bmatrix}
\circledast
\begin{bmatrix}
y_1 \\
\vdots \\
y_N
\end{bmatrix} + \mu \\
& =
\begin{bmatrix}
\min_i (y_i-x_i) + \mu \\
\min_i (y_i) + \mu
\end{bmatrix}
\end{align}
を計算すればよいわけです。
実際これで回帰を実行すると下の図のようになります。
通常の回帰直線(青)に対して、MMAEによるトロピカル回帰(緑)の方がよりデータにfitしていることがわかります。そういうデータを使ったので当然といえば当然ですが。
実装編へ続く
【理論編】ではトロピカル単回帰をどう実現するか、数学的観点から追っていきました。でもやっぱりこういうのは理論と実装の両輪が必要なんですよね。というわけで、実装や回帰結果の評価に関する具体的な話は【実装編】で述べます。
*1:P. Maragos, V. Charisopoulos and E. Theodosis, "Tropical Geometry and Machine Learning," in Proceedings of the IEEE, vol. 109, no. 5, pp. 728-755, May 2021, doi: 10.1109/JPROC.2021.3065238.
*2:ぶっちゃけトロピカルであることが何の役に立つのかはさっぱりわからない。
*3:小泉構文ではない
*4:加法をmin関数にした Min-plus代数というのもあり、これをトロピカル半環として定義する場合もあります。使用用途によって好きな方を定義すれば良いと思います。
*5:元論文では で表記されていますが、乗法なのに加法っぽい記号を使うのがなんか気持ち悪いので、本記事では
で表します。
*6:つまり、双対
*7:つまり、写像 は順序を保存する。例えば、
とすると
によって順序が保存されて
。
も同様。
*8:Butkovic, Peter. “Max-linear Systems: Theory and Algorithms.” (2010).
*9:なんでそうなるかはよくわからなかった
*10: ノルムを計算すると、
なので。
生殺与奪格の殺格用法に関する考察
この記事は語学・言語学・言語創作 Advent Calendar 2022の10日目です。
adventar.org
殺格とは?
マニア向けの説明
「生格、与格、奪格があるんだから殺格を作れば生殺与奪が揃うね!」というジョーク。
まじめな説明
言語には「格」というものがありまして、名詞同士の関係性とか名詞の役割を表す文法概念が格です。
と書くと難しく感じますが、要するに日本語でいうと「~が」とか「~を」とかのことです。「ネコがネズミを食う」であれば、「が」が付いている「ネコ」は「食う」という動作の主体、「を」が付いている「ネズミ」は「食う」という動作の対象、といったような感じ。
例えば他にも、
- 生格(属格):「~の」*1
- 与格:「~に」
- 奪格:「~から」
といった格があります。
ここにもし「殺格」を付け加えれば「生殺与奪」が完成しますね。「生殺与奪」って格を並べた言葉っぽくない?というのが冒頭のツイートです。
残念ながら「殺格」は自然言語には(多分)ないのですが、人工言語であれば文法規則なぞ自由に作れるので、殺格も作ってしまえ、ということです。
じゃあ殺格ってどんな役割を表すのだろか?ということを考えるのが今回の記事の主旨になります。
(ちょうど自言語にも取り入れようと思っていたので、言わばアイデアメモです。)
殺格の使い道
殺格の役割、殺格の用法について考えてみます。
「殺す・殺される」以外の殺格の用法を具体的に考案・拡充することは、特に人工言語における表現の豊かさを与える点で非常に重要な課題であり、実際、以下のツイートでは殺格用法の拡張案について言及されています。
「殺格」、文字通り「〜を〇す」という意味だけだとあまりにも使いどころが限られますが、用法が「殴る」「倒す」「止める」「弱める」「無効化する」「OFFにする」などにまで使えて、その代表としての名前と想像したら意外とアリなのではという気がしてきました(?)https://t.co/5cd4IDzG7r
— LingLang@言語学好き (@linglanglong) 2019年11月18日
(「生殺与奪」が格に見えるというネタより) 格が「主・生・殺・与・奪」である言語。殺格は対格に似るが、 (受益に関連する与格に対し) 害を与える意味と強く結びついているため、直接目的語が人間の場合は受動表現が推奨される (「迷惑受身」の概念とは対照的に) #100言語考える #いろいろな言語
— Albert Zweistein (@al_zweistein) 2022年11月19日
以上のツイートや各言語の「殺す」の用法を踏まえると、殺格は概ね以下の役割を担わせることができるでしょう(という妄想)。
- 殺害
- 停止
- 消失
- 変化
- 抑制
- 放棄
以下、個別の用法ごとに例文を交えながら、殺格がどのように使われるか見てみましょう。
殺害の殺格
文字通り。対象が生物的な死を迎えることを表す。
例:「正当防衛のため、暴漢を刺した」
「暴漢」が殺格であった場合、暴漢は刺殺されたことまで含意する。
例:「ネコがネズミを食べた」
食った、ということは「ネズミ」は十中八九死んでいるので、殺格で表現されることでしょう。逆に例えばネズミがネコの胃の中で生きているなら殺格を使うべきではない。
停止の殺格
機能・役割を止めたり、機能不全に陥らせる。しかし一時的な機能停止なので、復活可能。
例:「明かりを消す」
電源をOFFにする系の文章で殺格が使えそう。
例:「箪笥が倒れている」
例えば引き出しが使えないなど、箪笥としての機能を一時的に喪失している状態。戻せば使える。
倒れた結果破壊されてしまった場合との区別は言語ごとに何か文法範疇作るか何かをするということだと思う。
消失の殺格
物や概念、香りなどを消す。物損や金銭的損失、名誉毀損なども。
例:「昨日何を食べたか忘れた」
食べたものの記憶、という概念の喪失。
例:「ろうそくを吹いて火を消す」
「火」という明らかに存在していたものが消失する。
例:「FXで有り金全部溶かした」
形になっていないものも含めて、財産の喪失は殺格の適用範囲だと思う。
変化の殺格
何らかの動作や経時的変化によって、機能や価値が失われる対象を表すような気がする。
これはポジティブな意味にも、ネガティブな意味にも両方使われる気がする。
例:「牛乳を常温で放置してたらそりゃあ腐るでしょう」
牛乳の牛乳としての役割の喪失。腐った牛乳は腐ってない牛乳とはその機能が一致しないはず。かつての牛乳ではないのである。
例:「興味本位で目覚まし時計を分解した」
分解された目覚まし時計のパーツの集合は時計ではない。構成要素が同じだとして、果たして時を刻むことがあるだろうか(反語)。
例:「オタマジャクシは成長するとカエルになる」
成長に伴って不可逆的に変化するときも、殺格が使えそう。カエルに成った時、オタマジャクシという存在は消える。
抑制の殺格
抑制、弱体化、中和など?完全に機能が無くならないにしても、弱まる場合に使えそう。停止とか消失とか変化とグラデーションだとは思うけど。
例:「迂闊な発言で若者のやる気を削ぐ」
気分も弱められる。
例:「熱を冷ます」
熱さが緩和する。ミクロには熱運動の抑制。
例:「売れない商品を値下げする」
商品価値の低下、弱化。
例:「塩酸を水酸化ナトリウムで中和する」
酸性が弱まったり、完全に無くなったりしうるという意味で。
放棄の殺格
捨てたり置き去りにする。存在が世界から無くなってはいないが、動作主の関心の外に行くようなとき?
例:「車の窓からゴミをポイ捨てするな」
捨てるという行為は、対象を自分の関心の外に追いやることになる。
例:「君をただ不幸にするだけのその考え方は捨てたほうがいい」
概念も同じく。
例:「カラスに襲われたので仕方なく昼飯を置いて逃げた」
置き去りにされる、残される、放棄されるものは殺格のカバー範囲でしょう。
例:「不採算事業を売却する」
当然この世に存在はし続けるが、動作主体視点では無き者にされる。
おまけ:殺格を持つ言語の例
自分が観測した中では、
- オ゛ェジュルニョェーッ語
- カタパイ語(自言語)
だけなのですが、もし他にあれば教えてください。
ちなみに、オ゛ェジュルニョェーッ語の殺格は「失わしめるものを表す格」で、生格「生み出すことを表す格」と対をなしています。オ゛ェジュルニョェーッ語では(多分)殺される方ではなく殺す方が殺格で表現されていて、(多分)使役的な意味になっているようです(間違ってたらご指摘ください)。
おまけ2:カタパイ語について
拙作の人工言語「カタパイ語 (katapali katapayile)」では「生殺与奪格のみの言語が創れるだろうか?」をコンセプトに、殺格語法の拡充を試みております。
最後に
考えるのは自由。
*1:大体は「属格」と呼ばれますが、ロシア語はじめスラヴ語ではなぜか「生格」と呼ばれる。
楔形文字で学ばないアッカド語文法(12)名詞由来形容詞・指示語

この記事は
- 名詞由来形容詞
- 指示語(指示形容詞/照応代名詞)
についての記事です。
1. 名詞由来形容詞
名詞語幹に-īをつけることで「~に関連する」という意味の形容詞を作ることができます。現代日本語でいうところの、連体修飾格の「~の」のようなものでしょうか。
- maḫrûm (< *maḫrīum):前方の(maḫrum:前方)
- elûm (< *elīum):上方の(elum:上方)
- šaplûm (< *šaplīum):下方の(šaplum:下方)
赤字で示したように、男性単数主格などでは語尾が-īumの並びになるので母音縮約が起こり-ûmと変化することに注意してください。また、例えば女性などになると間に-t-が入ったりして縮約が起きず-ītumとなったりするのでこれも注意。音韻変化については第11回を参照。
limnanthaceae.hatenablog.com
ちなみに、場所の名詞に-īをつけると「~人の」といったような意味の形容詞になります。
2 指示形容詞/照応代名詞
指示形容詞 annûm
指示形容詞「この」は、アッカド語では annûm (<*hanniyum) です。女性単数は annītum (<*hanniytum)。
他の形容詞を annûm で修飾することもできます。
この良質な油
šamnum | 油脂 |
ṭābum | 良い、素晴らしい |
女性単数形annītumは指示代名詞「これ」としても使うことができます。
照応代名詞 šū
annûm「この」と対になる ullûm という語がありますが、古バビロニア語のテキストにはあんまり出てこないらしい。
その代わりに、「あの」を表現するには3人称代名詞 šū を使います。厳密には前方照応で「さっき話に出したあれ/これ」というニュアンスなので、訳としては「あの」も「この」もどちらもあり得ます。
彼はあの(例の)牛を若者に与えた
なお、3人称代名詞には与格形が存在します。方言の違いによって幾つか異なる語形があり、šuāšim, šâšim は男女ともに単数で使います。また、šâšum は男性単数、šiāšim は女性単数で使うことができます。男性複数は šunūšim。女性複数の方は立証されてはいませんが、šināšim と予想されています。
3 まとめ
- 名詞→形容詞の派生は -ī-
- annûm「この」、šū「あの」
←前:楔形文字で学ばないアッカド語文法(11)子音脱落・母音変化
→次:楔形文字で学ばないアッカド語文法(13)G語幹III型弱動詞
参考文献
- J. Huehnergard, A Grammar of Akkadian (3rd ed. 2011), Harvard Semitic Museum Studies 45, ISBN 978-1-57506-922-7.
- D. Snell, Enkonduko en la Akadan (Tria, reviziita eldono), esperantigita de Michael Wolf, Biblical Institute Press, Rome, 1988, ISBN: 88-7653-566-7.