わくわく計算ライフ

ドムプラをキメつづけるブログになりつつある。

論文の読み方について晒す(作業的な部分)

ここ10年ぐらいでComputer Vison界隈も論文の出方が変わったり、読むにしても色々ツールが変わってきたので一旦現状のワークフローについて整理してみる。
読み方と言っても、基本的には英語文献どう読むかという話なので、他の分野の方でも参考になることがあるかもしれません。

1. 文献の探し方

近年は学会提出前の予選というか、公開レビューを受ける場見たいな立ち位置でarXivに論文が投稿されていることが多いです。

arxiv.org

1.1. arXivとはなんぞ

基本無料で、世界中から論文が投稿されているサイト。
分野は多岐に渡りますが、私はComputer Visionと機械学習界隈をメインに読んでいます。
さすがに読んでて申し訳ないので、少ないながらもちょくちょく寄付させていただいています。
他の学会の論文誌に掲載される前に叩き台としてこちらに出されるケースが多いので、ほぼ学会誌に入稿した最終稿と同じだったり、場合によってはそのあと訂正や追実験結果で更新されることもあります。
つまりサイッキョな感じです。

1.2. 寄付に関する個人的ポリシー

学会の論文誌、基本有料なので商売上がったりではあるんですが、査読に回ってくる論文の質が向上したりする効果もあるので完全にマイナスではないかなと思っています。
ただ、最終的な売り上げが0となると研究界隈の負担が増えてしまうので、学会に入るかarXivに寄付をするなどして、界隈に注入される資金が減らない様にはした方が良いんじゃないかなーと考えて個人的には寄付しています。

ていうか、ぶっちゃけ弊社も寄付して欲しいっす

特に日本では、基本的には研究者コミュニティが自腹で論文とか学会を発行しており(会費から捻出されていたり、査読を通ると掲載料を払って学会誌に載せてもらったりとかする)、最終的に技術を使って設ける企業とかは特許を除いては研究者コミュニティに経済支援できているとは言い難い環境になってるのでどうにかならんかなーみたいなのはちょっと思っています。
名立たる企業だと各種コミュニティにスポンサーでついていたりするのでみんながみんなという話ではないのですが、皆もっと出来るときだけでも軽率に寄付して良いと思うし、懐しんどい時はお休みしても良いと思う。

1.3. 検索について

毎日数百本とかそういうオーダーで論文が投稿されるので、検索力が必要です。
現在はarXivに投稿して直接的に利益が得られることは無いので「いかがでしたか?」ブログみたいなのは無いのですが、良くも悪くも論文発信の閾がさがっているので、玉石混交の中から良い論文を探す、そのうえで石に見えるものもピックアップして検討していくみたいなことをやっていけると良いなと思っています。

論文まとめサイトなどを見たり、以下の様な統計でピックアップしてくるようなサービスを利用し絞っていくことがある程度は必要になります。

twitter.com

2. 論文読みPC環境

論文読みの際には私は基本的にPCで作業を行っています。
使っているツールは以下です

  • DeepL
  • なんかのブラウザ(検索用)
  • VisualStudioCode

2.1. DeepL

有名な検索サービスのアプリ。
現在はWindows版をしています。

www.deepl.com

ブラウザよりレスポンスが早いので良く使っています。
翻訳精度はかなり高く、論文を読むのにもかなり役に立つので利用しています。
また、後程説明しますがブラウザ版と違いテキストエディタとの連携ができるのも良い点です。

2.2. なんかのブラウザ

Google ChromeとかMicrosoft Edgeとかで大体いいと思います。
主な用途は

  • DeepL訳文の手直しに英和/英英辞書を調べる
  • 著者のWebページ(github, youtube等)を見る
  • 参考となる既存のサイトを参照する

です。

2.3. Visual Studio Code

Microsoft製のフリーのテキストエディタというか総合開発環境。

azure.microsoft.com

起動時のプラグインの読み込みを除けば総じて動作が軽快、多機能のエディタ。
私は現論文の訳文をMarkdownで作りながら読むというスタイルをとっています。
作成した訳文を振り返りに使うもよし、仲間と共有するも良しなので。

3. 訳文作業について

実際に読む論文を決めた後にする作業について説明して行きます。

3.1. Git/ディレクトリ構成

作業の履歴を管理したい人は、論文読み用のワークスペースを作って、Gitで管理すると良いでしょう。
基本的には論文読みワークスペースのリポジトリを作ってその下に論文毎のディレクトリを作成して管理しています。
ディレクトリ構成は以下の様な感じです

ディレクトリ構成

論文名のディレクトリを作成し(パスに使用できない文字は適宜置換)、その下に図表のスクリーンショットを格納するimagesディレクトリを作成します。
論文名のディレクトリ直下には、対象の論文のpdfとそれの訳文作業用のmdを論文名で作成します。
また、このディレクトリ内には参考文献やメモ等を置いても良いでしょう。

3.2. Visual Studio Codeのプラグイン

論文読解時に使用しているプラグインについて紹介します。

名称 説明
vscodevim この辺は好みで。短い単位で行を結合することがあるのでJをよく使ったりする。あとはvisual modeをDeepLとの連携で使っています。
Markdown Preview Enhanced 訳文をレンダリングして内容を確認するために使用。
vscode-pdf VS Code上でPDFを表示できた方が作業が捗るので使用している。

3.3. DeepLの設定

設定から「別のアプリケーション内でテキストを直接翻訳重表示する」のキーを変更します。
Visual Studio Code, vscodevimに干渉しない設定をしています。
個人的には、Ctrl + F7 をしています。

DeepL設定

4. ワークフロー

論文読みのワークフローは以下の様になります

1.文章および図表の取り込み 2.行の整形 3.DeepL翻訳 4.訳文の手直し

4.1. 文章および図の取り込み

左半分に訳文用のMarkdown, 右半分に論文のpdfを表示して作業します。

作業イメージ

セクション程度の単位ごとに、文書と図表をコピーします。
数式は直接はコピーできないことが良くあるので、後で見ながら手で入力します。
Markdown Preview Enhancedを入れておけばMathJax形式で数式が書けます。
とりあえず後で作業する為にこの時点で「数式(1)」など手打ちしておくと良いでしょう。 :w

図表に関しては、図表自体とそのキャプションまでを含めてWin + shift +Sで範囲選択して切り取り、Fig1.pngなどの名前を付けてimagesディレクトリに格納しています。
取り込んだ図はすぐにMarkdownに組み込んでしまうと良いです。

![適当な名前](images/XXXX.png)

と書いておけばすぐ組み込めますし、なんならimages/まで打ったところで候補が出ます。
コピペから改変する場合はInsertモードにて Ctrl + Space の補完機能で候補を出せます。

補完例

4.2. 行の整形

pdfからコピーした文書は改行位置が見た目の位置についているので、文章の途中で改行されていることが多々あります。
DeepLに入力する際にこのままだと上手く翻訳出来ない可能性があるので整形しておきます。

vimを使っている場合はnormal モードでJを使うと次の行とスペースで結合されるので楽です。
みやすさのために改行を入れる場合は、文章の先頭に改行を挿入すると良いでしょう(f + [先頭の文字]などで探して)。
また、原文が単語の途中で改行されて-等が入っている場合はこのステップで取り除いてやると良いでしょう。

4.3. DeepL翻訳

visual モードで翻訳する範囲を選択し、DeepLアプリで翻訳させます。
先ほどVS Code, vscodevimと干渉しないようにCtrl + F7を設定したので、選択した状態でCtrl + F7を押すと次のようになります。

DeepL翻訳
翻訳は数文単位で行い、翻訳結果を一旦、コピーした原文の直下にコピーします。
ちなみにDeepLアプリの無料版は一度に1,000文字まで翻訳できるので、テキストエディタを利用することで範囲選択時に文字数もカウントされるのでその点でも一端のテキストエディタの使用を推奨します。
まとめてガーっとやりたいんじゃ~!って人はぜひ有料版を使用して経済を回そう!
翻訳結果をコピー

4.4. 訳文の手直し

DeepLの翻訳精度はかなり高いので、手直しする箇所は少ないですが、原文と訳文を比較します。
この作業を行うことで

  • 翻訳の仕方を学ぶ
  • 見慣れない単語の意味を知る

ことができます。 また、この時に文章に違和感がある場合は手直しを行います。
訳文のチェック及び修正が完了した箇所の原文(英文)は随時削除していきます。
これにより、どこまで読んだっけ?を無くすことができます。

図のキャプションを翻訳完了した状態

訳文がある程度できたらMarkdownのプレビューを表示し編になっていないかを確認します。

5. まとめ

上記の様な作業を繰り返すことで、効率よく英論文を読んで行けると思います。
参考になれば幸いです。

まぁ、自分でガンガン英語力上げて流れるように翻訳できればそれが一番良いんですけどね!