ChatGPT はウクライナ語のキリル文字で表記された日本語を読める (?)

ChatGPT とのとある会話

Me:
Can you read: Коре ва Укураіна-ґо дева арімасен. Нігонґо но Гебон-шікі ромажі о Укураіна-ґо-ппоку Кіріру-можіка шіта моно десу.

ChatGPT:
Yes, I can read the text you provided. It appears to be written in Japanese script, and the words are transliterated from the Cyrillic script used for the Ukrainian language. Here is the Romanized text in Japanese pronunciation:

"Kore wa Ukuraina-go de wa arimasen. Nihongo no Gebon-shiki romaji o Ukuraina-go-ppoku Kiriru-mojika shita mono desu."

In English, this roughly translates to:

"This is not in Ukrainian. It is written in Japanese-style romanization of Ukrainian place names."

なんとなく ChatGPT をにウクライナ風文字で書かれた日本語を読ませてみたら、難なくクリアしてきてすごいと思った。ただし日本語の英訳は不正確だし、第2文で主張している翻字の向きが逆だ。結局満足にできていることは「キリル文字のローマ字化」と「ローマ字が日本語を書いたものであると判別すること」の2点だけだと考えるとあまりすごくないかもしれない。にも関わらず第一印象は「読めている」だった。

なぜそんな表記法を試したか

いまや日本語には「ティ」「ツィ」などの音節の出現が珍しくないため、訓令式ではなくヘボン式こそが音素によく対応するローマ字表記法だと思っているが、これをキリル文字化すると「ts」や「ch」などのダイグラフが1文字でかけて美しいのではないか……と思い入力していたら ChatGPT に読ませることを思いついた。

ロシア風ではなくウクライナ風にする利点として「э」の多用を回避できるというものがある (多用されると不自然だし手書きで書きにくい) 。以上のようなメリットのない点についてはロシア風のままにしたほうが汎キリル文字圏的になっていいかもしれない。音素との対応が目的なのでザ行を「дз」などとはしない。

会話では省いたが、長音は鋭アクセント記号で表記することを想定していた。また特殊拍の表記を言えば、「ん」は「ң」などの専用の文字を用意したい。同様に「ー」「っ」をディセンダーつきの「х」「т」とすることも考えたが書きにくくなりそうなのでやめた。

以上のような日本語のキリル文字表記を個人的な手書きメモで使ってみようかと思う。

おまけ: 自己流ウクライナ語転写法

逆にウクライナ語ローマ字化する方法として次のようなものが気に入っている。例としてウクライナ国歌を転写する。

Ŝe ne vmerla Ukraïny i slava i volä.
Ŝe nam, brattä molodiï, usmixnet'sä dolä.
Zhinut' naši vorižen'ki äk rosa na sonci,
Zapanuëm i my, brattä, u svoïj storonci.

Dušu j tilo my položym za našu svobodu,
I pokažem ŝo my, brattä, kozac'koho rodu.

これは転写であると同時に、文字が1対1に対応する翻字でもある。前に [j] の音がつく母音字をすべてウムラウト/トレマ記号で表している。

動画視聴ノート: How Quantum Computers Break The Internet... Starting Now (Veritasium)

量子コンピューターはまだ実用化されていないが、暗号化がなされたデータを保存することは可能であり、これが将来的に復号される可能性がある。この手法を SNDL (store now, decrypt later) という。

量子コンピューターが RSA 暗号を解読するアルゴリズムは次の通り。目標は2つの素数の積  N素因数分解することだが、まず  N と互いに素な整数  g を用意する (適当に選べばまず互いに素となるはず) 。つぎに  g^{r} \equiv 1 \ (\mathrm{mod.}\ N) となる  r を探す。もし見つかれば  (g^{\frac{r}{2}} + 1)(g^{\frac{r}{2}} - 1) \equiv 0 だが (和と差の積は平方の差) 、この式の2つの因数はそれぞれが  N と因数を共有している可能性が高いので、最後にそれらをユークリッドの互除法で見つければ目標が達成される。

このアルゴリズム自体は古典コンピューターで実行可能であるものの、  N の大きさによって実行時間を非現実的な長さにすることができていた。ところが量子コンピューターでは重ね合わせ (superposition) を利用することによって多数の  r を同時に計算することができる。重ね合わせられた答えを読み出すためには、剰余が周期的であることによって、量子フーリエ変換を利用することができる。

量子コンピューターに対しても安全な暗号の候補として、格子点の性質を利用したものがある。数千もの次元をもつ多次元空間において、ベクトルの和を計算することはできるが、与えられた格子点を基底ベクトルに分解することは難しい。


以上が動画の内容の要約だが、以下に視聴中に記した擬似コード形式のメモを載せる。

N: p×q;
let g: coprime to N;
for r ∈ Z⁺:
  if g**r ≡ 1 (mod N):
    (g**(r/2) + 1)*(g**(r/2) - 1) ≡ 0 (mod N)
    // likely to share factor with N: Euclid's algorithm
  // remainder is cyclic: QFT