2024年4月3日水曜日

四次元の大海原で迷子

四次元の大海原に迷い込んだのか?と思うぐらい、何もピークのないスペクトルが広がっていました。先日、四次元 13C-HMQC-NOESY-13C-HMQC を 800 MHz で 5 日間もかけて測定しました。サンプルは4量体で約 150 kDa。I, L, V, M のメチル基のみを 1H/13C で、それ以外を 2H/12C で標識してあります。重水も [2H]-glucose も、それから [メチル基標識]-2-ケト酸も超高くなってしまった今、このサンプルを作るのにかなりの投資をしてしまいました。にもかかわらずピークが出ない。これは冷や汗ものです。

何故か Bruker の標準パルスプログラムの中にメチル TROSY でエディットした 4D NOESY がないので、自分で作るしか方法がありませんでした。ですので、そのパルスプログラムにもミスがあったのかもしれません。メチル TROSY のパルス系列には大きく二つあり、一つはオリジナルの水選択的パルスを用いて水の磁化を flip-back する方法、もう一つはアミド基の SOFAST 法をメチル基用に転用する方法です。一応両方を作りました。先日は後者の3次元版がうまく行ったので、今度は思い切って前者で4次元にしました。普通は3次元がちゃんと成功するのを見届けてから4次元に拡張すべきなのです。

もちろん non-uniform sampling (NUS) で測定し、そしていつも通り、SMILE でプロセスです。SMILE は高速でピークの歪みもほとんどなく、3次元の NOESY でもうまく行っていたので重宝していました。しかし、今回の4次元はなぜか上手くいかないのです。正常に終わるのですが、出来上がったスペクトルにはピークがない。。。

先日、NMRBox の中に NUS プロセス用のソフトウェアが何種類かあることに気づき、ちょっと比べてみました。NMRPipe-IST, SMILE, MDD, hmsIST, CambridgeCS, Camera, Nesta などがあります。大差はないだろうと思っていたら大間違いで、同じ生データでもどれでプロセスするかによって、結果のスペクトルはかなり異なっていました。ただし、どれがいつも普遍的によいのかを決めるのは難しいです。あるスペクトルには SMILE が、また別のスペクトルには MDD がよいという風にスペクトルによって良し悪しが異なるので、とにかく試してみるしか方法がないようでした。この結果についてはまた書きます。

そこで、まずは Nesta というプログラムを試してみました。ちょっとだけ試そうにも半日ぐらいプロセス時間がかかるので大変です。なんとかピークが出てきました。しかし、1H/1H プロジェクションと 13C/13C プロジェクションをそれぞれ表示すると何かが大いに変です。まず、全ピークが3つの間接測定軸でスペクトル幅(SW)/2 だけずれているような感じです。実は、パルス系列では NOESY の両側はいずれも 1H/13C-HMQC と対称的な配置になります。そこで、二つの 13C 次元を混同してしまわないように、両者の SW を少しだけ変えていました。そのこともあって、どうも 13C/13C 対角ピークがちょっとずれているのです。こんな状況は初めてです。

さらに、ピークの位相が 90 度ずれています。かなり悩んだ末、あることに気づきました。私は癖で t1, t2 などの間接測定軸のサンプリング時間は Δt1/2, Δt2/2 というように、インクリメント時間の半分からスタートするようにしています。すると、折り返ったピークは負になるので、すぐに判別できるのです。その代わり、位相補正は (ph0, ph1)=(-90, 180) のように設定しないといけません。ところが、ソフトウェアによって、内部でさまざまなパラメータを使うため、あるソフトウェアでは(0, 180)であったり、また(-90, -180)であったりなど、何通りかのパターンがあるのです。そこで、(-90, 180) を(0, 180)に変えてみました。すると、位相は全て吸収波形になりました。これでハードルを一つ突破です。しかし、SW/2 だけローリングしていることには変わりはありません。ここで Topspin を使えれば原因が早く分かったのですが、なぜか NMRBox の Topspin4 は、インストールはできるのに立ち上げようとするとライセンスが引っかかって立ち上がらないのです。仕方がないので週末は自宅からあれやこれやとリモートで触りながら(月)の朝を待ちました。

週明け、職場で Topspin を見て原因がやっと分かりました。EDA の FnMODE で States-TPPI を間違えて States にしてしまっていたのです。今まではパルスプログラムの中に TPPI-States のための位相回しやインクリメントを直に書き込んでいたのですが、それを NUS が使えるようにと MC に替えました。しかし、EDA まで変更するのをすっかり忘れていました。というわけで、装置は (x, y) (x, y) と取り込んでいたのに、プロセスで FT -alt としてしまっていたのです。一方、ちゃんと States-TPPI を指定すれば、 (x, y) (-x, -y) のように取り込まれます。この様子が TPPI に似ているので、States-TPPI という名が付きました。 (-x, -y) の部分は、Ft -alt の alt により、(x, y) に符号逆転されます。

* 上記の記載は実は誤りです。正確には States-TPPI では (-x, -y) と位相回しされた時に receiver の位相も逆転させます。よって、見たい信号にとっては (x, y) (x, y) と、あたかも States のように位相回しされたのと同じになります。しかし、アーティファクト成分は、receiver 位相の逆転により SW/2 だけローリングします。ところが、Bruker マシンはここで余計なことに信号全体を負に逆転させて H/D に保存してしまうのです。なぜそのような奇妙な設計になっているのか私には分かりませんが、これを元の正しい符号に直すのが FT -alt の役割です。

↓ FnMODE が States になってしまっています。これが間違いの原因。




さて、そのような事をして何の得があるのか?ですが、化学シフトが展開しないようなアーティファクト成分は普通は(0周波数ですので)スペクトルの真ん中(キャリアの位置)に走ります。しかし、むりやり (x, y) (-x, -y) のように正負に捻じ曲げてあげることにより、スペクトルの真ん中から両端に移動するのです。つまり、SW/2 だけローリングするのです。したがって、States でとったスペクトルに -alt を施してしまうと、この0周波数のアーティファクトと同じように、ちゃんとしたピークまでもが SW/2 だけローリングしてしまうのです。さらに、スペクトルの位相は (ph0, ph1)=(-90, 180) という傾斜を持っているため、SW/2 だけずらすと、ちょうど 90度だけ位相がずれてしまいます。これが全ピークが分散波形になってしまった理由でした。

原因さえ分かってしまえば後の解決方法は簡単です。NESTA で -alt を外すとちゃんと行けました。しかし、それでも SMILE ではうまく行きませんでした。この理由は今も分かりません。

↓ 左右ともに 1H/13C のプロジェクション。左は横軸が 1H 直接測定軸ですので高分解能になっています。



↓ 左は 1H/1H のプロジェクション、右は 13C/13C のプロジェクションです。4D では、これらがちゃんと対角を通っていることを確認した方がよいです。もちろん 3D でもそうですが。右のプロジェクションでは、真ん中に十字のアーティファクトが走っています。これは、もしちゃんと States-TPPI でとっていたら、このように汚くはなっていなかったでしょう。




メチル基は緩和時間が長いので、もう少し分解能を上げてもよかったのかもしれません。しかし、その分、データサイズが大きくなります。今回、3つの間接測定軸の zero-fill を 128 にしました。すると、最終的なデータサイズが 4GB になってしまい、nmrDraw が途中で固まってしまいました。仕方がないので、zero-fill を 64 に下げたところ、ファイルサイズは 1/8 に減り、スムーズに動くようになりました。NUS で分解能を上げると、このファイルサイズという問題に悩まされます。

一点、興味深いことがあります。この NESTA というプログラム、NUS プロセスの最中は (ph0, ph1) などの位相情報が不要なのです。なぜなのでしょう?SMILE などはこれが必要なのですが。中で仮の FT などをしていないのでしょうか?あまり NUS プロセルの中身を知らないので疑問のまま残っています。


2024年3月14日木曜日

ChatGPT などによる論文の英文校正

生成系 AI をうまく使うと、自分で書いた研究論文などの英文をうまく校正できることが知られています。実際、とある校正会社も独自に学習させた AI をサブスク販売しています。筆者も生成系 AI をどのように使えば効率よく校正できるのかに興味があり、それをいろいろと試してきました。下記が今のところ良いかなと思う方法です。またより良い方法を見つけたら、更新していきたいと思います。

(1)ChatGPT, Google Gemini, Bing-AI(Copilot)アカウントをつくる

ChatGPT は確か携帯の電話番号が必要でした。Google Gemini は Gmail アドレスが必要だったと思います。Bing-AI もマイクロソフトアカウントが必要と書かれているのですが、なくても何故か動いている時があります。

アカウントを通して個人の嗜好が集められてはいると思います。しかし、3つとも大手ですし、むしろクッキーを通して何百という得体の知れないサイトに知らず知らずのうちに個人情報が流れてしまっている現実と比べると、上記3社は安心してよいのではないかと思います。それに「この人はいつも NMR の科学用語を投げ入れているなあ」と、向こうがこちらを学習し、こちらの入力により適切に対応していってくれているのではと期待しています。

(2)DeepL か Google 翻訳で直訳する

日本語をいきなり ChatGPT に入れてもよいのですが、時々 ChatGPT が、良かれと思って日本語の意味を拡大解釈してしまう時があり「そんなつもりで書いたのではないのに。。。」ということが時々起こります。そこで、DeepL などを使って、まずは直訳調の英文を作ってしまいます。直訳といっても DeepL も AI ですので、それなりにすばらしい語彙の英文を提供してくれます。自分でいきなり英文を書くと、貧弱な語彙で酷いものになってしまいますが。

いきなり英文で書いていった方が自分の英語力上達のためには良いのかもしれませんが、どうも論旨がぶちぶちと切れたような文章になり勝ちです。その理由は、語彙や細かい文法などに気をとられてしまい、文章全体の流れを途中で忘れてしまうためではないかと思います(木を見て森を見ず)。そこで、まずは一段落分のミニタイトルを書いた後、日本文で勢いよくその一段落を書いてしまうようにしています。このミニタイトルは WORD の目次に自動設定します。すると、目次を読むだけで、論文全体の大きな論旨の流れをつかむことができます。論文執筆の初期段階は、できるだけ(木ではなく)森を俯瞰するようにしています。

なお「この結果により、○○が示された」のような邦文ではなく「この結果は、○○を示した」と、無生物主語の SVO あるいは SV 文型を使うようにします。すると、英訳もストレートに「The results showed that ...」のようになります。要するに "It is indicated that ...」のような受動態が出てくるのをできるだけ防ぐわけです。また「ここは自分たちが見つけたんだ」という箇所は、素直に「私たちが」と書くようにします。そうでないと reviewer は参考文献の人が出した結果だと誤解してしまうかもしれません。実際に、著者か参考文献かのどちらが出した結果なのかが分からないような論文をよく見かけます。この辺りは分野によって考え方が異なりますので、なんとも言えませんが。

なお、DeepL か Google 翻訳のどちらが良いかは好みにもよりますが、実行する時間にもよります。筆者の経験ですが、混んでくると、どうも両者ともにさぼり始めるようです。あまり良くない英文やほとんど修正していない英文が返ってくるのですね。それで、筆者は両方で英訳させ、両者のよいところを縫い合わせて、新たな英文を作り直します。その時に左の「日本文」と右の「英文」を矢印でひっくり返すと便利です(下図)。作った英文を自動和訳させて、ちゃんとした日本文になっていれば、その英文の正確さも当たらずとも遠からずでしょう。下図の例では、DeepL よりも Google 翻訳の方が良かったので、それを例として示しています。どちらがよいかは偶々です。右側の和訳もそう悪くない?



(3)その英文を WORD ファイルに貼り付ける

この WORD ファイルの名前を「校正前.docx」とします。その時にできれば、フォントやサイズなどを自分の好みに合わせておきます。

(4)同時にこの英文を ChatGPT などに入力する

筆者は "Proofread the following sentences." というお願い文(プロンプト)を先頭に付けますが、最近は日本文でも依頼できるようです(下図)。例えば、「下記の英文は native speaker によって文法的にも語彙的にも誤りがあると指摘されました。そこで、そのような誤りだけを訂正してください。あまり大きな校正はしないでください。」などです。なお、入力する際にリターンキーを押すと送信されてしまいます。単に改行だけしたい場合には shift キーを押しながら return キーを押します。



非常に長い英文を入力すると、回答も長過ぎて途中で表示が切られている場合があります。その時は次の空白に「つづき」と打ち込むと、また続きを表示してくれます。2,000 円/月ほど払えば、長い文章でもやってくれるのでしょうか?

ChatGPT などはリセット(New Chat というボタン)するまでは、質疑応答を覚えています。もしかすると、最初の回答では冠詞が a だったところが、2度目3度目の質問では the に置き替っているかもしれません。

(5)校正結果を別の WORD ファイルに貼り付ける

なんと、今回はほとんど修正がありませんでした。put を input に校正されただけ、というわけで、それでは Google Gemini の方を試してみます。すると、いっぱい解説も出てきました。何故ここを修正したのかの理由まで書かれています。これを読むと英語の勉強になります。しかし、最終英文が見つからなかったので、「校正を反映させた英文を表示してください。」と打ち込みました。時々このようなことがあります。この結果を「校正後.docx」というファイルに貼り付けます。

下図は、クリックすると分解能が上がります。



ここで「校正前.docx」と「校正後.docx」のフォント、サイズなどを揃えておきます。

ChatGPT などはテキストとして出力しますので 2H3 などの「下付き」「上付き」などの情報は消えてしまいます。また、論文ですと EndNote, Zotero などで付けた参考文献情報なども消えてしまうのですね。しかし「校正前.docx」には(これが論文原稿そのもののコピペであれば)その情報が残っていますので、後述のように、その点をうまく利用してやります。

(6)WORD 文書を比較

WORD には二つの文書を比較してくれる機能があります。同じことは無料の「Google ドキュメント」でも出来ます。「校正前.docx」において「校閲」→「比較」と進んでください。




そして、左に「校正前.docx」右に「校正後.docx」を選びます。これがちょっと面倒ですが、二回目以降はかなり指定が楽になります。そして、その下にいろいろオプションがありますが、これをほとんどキャンセルします。これをデフォルトのまま行うと、ありとあらゆる形式までをも比較してしまい、比較結果が煩雑になり過ぎます。今のところ、上図程度で十分かなと思います。

そして OK を押すと、「校正前.docx」の方に校閲が入ります。これはすばらしい。なお、それぞれのファイルを保存しなくてもちゃんと作動しているように見えます。一度試してみてください。ダメでしたら、ちゃんと保存してから比較してください。




(7)校閲案を承諾あるいは拒否

業者さんに英文校正を出して戻ってきた時の結果にそっくりです。あとは「校閲」→ 「変更箇所」で → を押しながら「承諾」か「拒否」かを選んでいきます。なお、上記で参考文献や「上付き」文字など、いろいろな箇所が ChatGPT の出力では消えてしまうと書きましたが、ここで「拒否」を押すとそれらが残りますので、EndNote や Zotero の情報も維持されるわけです。

(8)DeepL で再確認

最後に出来上がった英文が正しいかどうか、これを DeepL に入れて和訳させてみましょう。
う~ん、ちょっと違った意味になってしまったような気もするのですが、まあ今回は例ということでどうかお許しを。



この英文をさらに校正させたらどうなるのだろうと試したことがあるのですが、だんだん変になってしまいます。よって、校正は一回だけの方がよいかもしれません。筆者は結果に満足しない場合は、ChatGPT 以外の Gemini, Bing-AI も試して比べることにしています。

生成 AI はその特徴として、いつも異なる出力をします。ChatPGT も含めて内部ではいわゆる Transformer とよばれる仕組みがエンジンのように動いています。この機能は、文章の次の単語を確率的に選んでくるわけですが、AI はいつもベストの単語を選ぶわけではありません。もし、そうだとすると 100 回同じ質問をしたら、100 回とも同じ答が返ってくるはずです。それでは全く面白くありませんので、ベストではなく、ちょっとだけ確率の低い単語を次の候補として選んでくるようになっています。したがって、100 回質問すると、100 回とも異なる答が返ってくるわけです。しかし、それを繰り返してしまうと、少しずつ元の意味からずれていってしまうのでしょうか?さらに、時々リセットしないと、過去の質問内容も考慮されてしまい、ずれがますます酷くなるような気もします。

また、一日中使っていると、疲れてくるのかサボり始めます。よって、休憩を入れるとともに、3種類の AI を回しながら使ってあげましょう。なお、丁寧に頼むとそれなりに丁寧に対応してくれます。「これを校正しろ!」などと頼むと、どうなるのでしょうね?筆者はこれまでの絆を壊したくないので、試したくはありません(笑)。なお、自分の好みのアバターが設定できれば優しい依頼の仕方になるのではないかと誰かと話したことがあります(仮想空間にのめり込んでしまう可能性も高く、それはそれで問題ですが)。

一応、生成 AI 自身は内容までは理解しておらず、単に言葉遊びをしているだけだと、よく本に書かれています。しかし、筆者はいろいろな校正をさせていった時「あれ?これはとうとう理解し始めたなあ」と感じる時が何度もあります。いちど蛋白質の構造についての英文を校正させている時、対象サンプルが単量体ではなく二量体であることを理解していないと絶対に出てこないような英文を出力され、背筋がぞっとしました。

下記サイトに少し触れられています。
https://writings.stephenwolfram.com/2023/02/what-is-chatgpt-doing-and-why-does-it-work/

上記の英文をよく見てみると、ちょっと変ですね。「いきなり」の訳語として suddenly という単語が使われていますが、これはちょっと変です。本当は directly「直接に」の意味で使いたかったのですが。そのようなちょっとした?翻訳の違いは、最初の Google 翻訳か DeepL の段階で直しておくことが望ましいのです。そうでないと、その後の ChatGPT は、本当に suddenly の意味で書かれた文章だと思って解釈してしまうためです。

もう一つ AI 翻訳に難しい点があります。当然ながら、文章とはひとつひとつの文が連続してつながったものです。しかし、これはランダムにつながっているのではなく、基本的に、動詞の前は既出の(既知の)名詞が置かれ、動詞の後は新出の(未知の)単語が置かれます。ですので、4番目の文章の後半にある単語には a がついていて、これが5番目の文章の頭では the がついた名詞になったり、it, they などの代名詞に置き換えられるのです。そうでないと、脳はすらすらと文章を理解していけなくなります。

下図のような繋がり具合です。

----------
         ------------
                    -------------
                                 --------------

我々が母国語で文章を考える時には知らず知らずのうちのこの原則が守られます。あるいは、うまい接続詞(だから、それゆえ、なぜならば etc)を通して文章どうしが論理的に結ばれていきます。ところが、自動英訳がそこまで考慮してくれるかどうかは疑問です。したがって、ある1文だけに着目してみると完璧に見えるのですが、その前後の文章とのつながりを見てみると、「(新出)- 動詞 -(既出)」と逆の順番に並んでいたりして、読者はそこで返し読みをしないといけない羽目になるのです。論文の審査員はそこでイラっとして、こんな論文は refused! だとなってしまうのです。

一般的には "There is an apple." "Here comes a bus." のようにあえて "there, here" を入れて、a 付き単語を is の後ろに追いやることが多いです。"There is the apple." とは絶対に言わないです。しかし、「何かが現れる appear, come」を使った表現では(新出)単語が先頭に来ることもあります。"An apple dropped on my head." のように言うこともしばしばで、これは何故なのでしょうねえ?こういう場合は、論理性よりも「強調性」を
優先しているのかもしれません。原始時代に "A lion is rushing to us!" を論理的に言っていたら、言い終わる頃には食べられてしまっていたでしょうし。。

ドイツ語などには格変化がまだ残っていますので、SVO の文章で O が the のつく単語で、S が a のつく単語であれば、OVS の順番にすることができます。これはすごい便利!その代わり、格変化がしっかりとしていないといけません。日本語も「てにをは」があるので大丈夫ですね。「A さんを B さんが愛している」という文章も問題ありません。しかし、英語は格変化をそぎ落としてしまったために、むしろ語順が重要になってしまい、"A loves B." と "B loves A." とでは、場合によっては大喧嘩になってしまうのです。

ひとつ前の文章の(未知)単語をいちいち次の文章で(既知)単語に直して言い直すのは面倒です。聞いたり読んでいる人の頭の中には、まだその単語が記憶されているはずです。よって省略してしまいましょう。それで日本語は主語がなくなってしまったのかもしれません。英語は主語を抜くことができないので、とにかく何かをつけないといけません。そこで、超短い代名詞ならばなんとか良かろうということになり、you で始まる文章が頻出してしまいました(これ推測ですので、信じないように)。you には何の意味もなく、要は "it rains." の it に相当するようなものです。重要な(未知)単語は "you + 動詞" の後に来ますよということを示すための決まり文句のようなものです。日本人は you, you と言われると自分が責められているような気分になり気落ちしてしまいますが、その必要はないことが分かります(しかし、責める時には欧米でも you を使わない方がよいらしい。やはり、英語でも you に「おまえは!」という意味がちょっとだけ残っているのでしょう。)日本人はこの you を瞬間的に使うことができないために、思わず目的語を前にもってきてしまい、仕方がないのであわてて受動態を速攻英作文する羽目になってしまう。すると頭がごちゃごちゃになって英会話が止まってしまうのです。笑われてもいいやと覚悟して、会話では you を、論文では we を使えば「あら不思議、こんなに英語がすらすらと出てよいのかしら?」という現象になることもある?

このような観点と上記の(既知)- 動詞 -(未知)の語順の両方の原則をどのように叶えるか?これは、私が長年悩み続けている問題で、よい解決策が私には見つかりません。接続詞を使うとよいように思いますが、そればかりを使うと超変な文章になります(日本人が作った英文、英会話では so, so that がやたら多くなってしまう)。そこで、流れるような文章を書く L. E. Kay さんの NMR の論文をいろいろ分析してみました。すると、日本語の語順にそっくりなのです。いわゆる倒置文のような形式が多用されています。そのため、まるで司馬遼太郎の文章のように、流れるように(返し読みを全くしなくても)文章が頭の中にすらすらと入ってくるのです。ただし、主語が超長くなるケースが見受けられます。"○○○○○ ................ ○○○○○○○○○○○○○ was conducted." のような。これは "We conducted ○○○○○ ................ ○○○○○○○○○○○○○." にした方が良いような気もするのですが。。。

しばしば受動態を使わずに能動態を使うようになどと言われますが、それよりも(既知)- 動詞 -(未知)の原則を優先させ、しかたがない時には S と O をひっくり返して受動態にする方がよいような気もします。また、無生物主語をうまく使うと、上記の問題がかなり解決できます。よく「受動態は動作主がよく分からない、漠然としている場合に使われる」などと教科書に書かれています。それも当てはまりますが、私は、太古の昔に前文の最後の a つき(未知)単語を受けて、次の文章で(既知)単語を the つきで慌てて発してしまい、しかし、格変化がないからまずいことになって受動態にしたのではないかと推測しています(もちろん、なんの根拠もなし)。

話がかなり逸れてしまいました。つまり、AI 翻訳では上記のことまで考慮してくれてはいないかもしれないということです。そこで、ChatGPT に放り込む前にこれを考慮して英文を修正しておきましょうということを書きたかったのです。間違えていても構いません。そのようなミスは後の ChatGPT が直してくれますので。

以上、急いで作りましたので、少しずつこれを「校正」していきます。日本語の AI 校正もできるのでしょうか?