大学院の5年間を振り返る:自然言語処理の研究者を目指して(修士課程)

 晴れて大学院博士後期課程を修了できた。そこで,これまでの大学院生活を自分の研究テーマとともに振り返っておきたい。なお,華々しい話は一切無い。なかなか結果が出ず苦労した話がメインである。

修士1年生

テーマ決め

 指導教員と雑談をしているうちに,英語論文を書くのを助ける何かに取り組もうということになった。元々英語が好きだったことと,卒論でも論文データに触れていたこともあって,自分に向いていると感じた。問題は,英語で論文を書いたことがないということだった。何が問題なのか,何があると助かるのかが分からなかった。そこで,研究室の先輩たちに聞いて回った。以下のような課題があることが分かった。

  1. 単語のformality
  2. 類義語から選択
  3. 言い換え・繰り返しを避けたい
  4. 単語の抽象度
  5. 文章の抽象度

 1は,学術論文というジャンル*1において適当な単語と適当でない単語があり,自分で書くとインフォーマルな英語になることがあるという課題である。2は,似たような意味の単語のうち,どれを使うべきか分からないという課題である。3は,同じ言い回しや,we, we, weのような主語の繰り返しを避けたいという課題である。4は,抽象度(?)の適切な動詞を選択したいという課題である。5は,文章の抽象度が適切でなければ警告してほしいという課題である。

 それぞれについて先行研究をあたってみたところ,1~3は文献があり,4はWordNetのようなもので足りるのではないかと思い,5は難しそうだなと思ったのである。

 これと並行して,既存の例文検索ツールやKWICコンコーダンスなどを調べたところ,ESCORTという依存構造を用いた用例検索システム*2と,エディタ形式で語法を逐次的に表示してくれるWriteAheadというシステム*3が見つかった。実際に動くものを見ると,課題がはっきりと分かるなと思った。

 また,Apache Solrを使ってACL Anthologyのデータをインデックスし,高速に検索できるようにした。論文のデータ整備が進んでいたのも国立情報学研究所ならではの魅力であった。そして,インテリセンスのような感じで,入力した英語の続きを表示するデモを作ってみた。

 こうしたことを踏まえ,「論文執筆において,適切な定型表現の候補を提示する」ことを研究テーマとして設定した。M1の7月の頃である。

先行研究調査

 学術論文には構造がある。ここでいう構造とは,イントロがあって,手法があって,結果があって,考察があって,というような構造である。この構造に対応する定型表現があるはずである。この対応のついたデータセットを作ることができれば,構造に即応した定型表現を提示できるはずである。

 ここまで考えたのは良かったのだが,どうやってそれをやるのか皆目見当がつかなかった。問題を細分化してみても,堂々巡りなのである。定型表現を構造に即して分類するとすれば,まず定型表現なるものを用意しなければならないが,それをどうやるのか。あるいは,論文のテキストを細かく構造に分けることができれば,そこから単語n-gramを抽出するだけでもそれなりに役に立ちそうだが,どうやって構造に分けるのか。

 1つ目については,ひとまず頻度順に単語n-gramを並べてみたが,どうしても役に立たない単語列が上位に出てきてしまう。相互情報量を使っても同様である。FREQTを使って頻出の木構造を計算してみたが,やはり無用のものがたくさん出てくる。どうも定型表現を得るのは簡単ではない。

 2つ目については,ラベルの付いているデータセットがあれば済む話だったが,どう頑張ってもPubMedのstructured abstractが限界であった。IMRaD構造のそれぞれに対応する定型表現を得ても,粗すぎて役に立たない。イントロダクションでもせめて「研究の背景について述べる」くらいの粒度がないといけないと考えていた。

 また,この構造の体系もどうやって用意すれば良いのか分からなかった。調べると色々な人が色々なことを言っており,決め手に欠いたのである。決め手に欠くと論文を書くときに苦労するのは分かっていたので,とりあえずどれかを使ってみるということはできなかった。

 この程度のことは誰でも思いつくはずだから,必ず先行研究があると思って,色々なキーワードで毎日検索をかけていた。よく,似たような研究があってガッカリしたという話を見聞きしたが,先行研究がない方がよっぽど問題であるというのを痛感した時期であった。

 10月下旬になって,ようやく次の論文を発見した。

Flowerdew, L. (2016). A genre-inspired and lexico-grammatical approach for helping postgraduate students craft research grant proposals. English for Specific Purposes, 42, 1–12.

 ここでの収穫は,English for Specific Purposesというジャーナルの存在を知ったことであった。ついでに,Journal of English for Academic Purposesというジャーナルと,English for Academic Purposesという研究分野があることを知った。後は芋づる式に重要な文献が見つかった。

 これまで「構造」と呼んでいたものは,Move*4と呼ばれるものであることが分かった。また,「定型表現」は英語でformulaic expressionsだが,formulaic sequencesと言われることもあるほか,lexical bundlesやphraseologiesというタームが用いられることもあることが分かった(後ろの2つは厳密には定型表現とは異なる,ということも後から知った)。

 こうして,理論的な背景をおさえることができ,単なる思いつきからそれなりに後ろ盾のある枠組みになった。しかし,この頃にはもう12月になってしまい,M1が終わろうとしていた。学振DC1を取るためには,M1で査読論文が出ていないと厳しいということは分かっていたが,もうどうにもならないという気持ちでいっぱいだった。

言語処理学会年次大会

 業績がないよりまし(欄がスカスカにならない)だという理由と,何か助言を得られないかという期待から,年次大会に出すことにした。

 重要な先行研究は見つかったが,先に挙げた2つの問題は全く解決していなかった。一から作るのは難しいと判断し,既存のリソースを拡張することができないか検討した。「英語論文の書き方」みたいなウェブページや本は巷に溢れているが,これをリソースとして使えないか,という出発点である。結局,それすらも難しかったので,難しいということを年次大会では述べて終わった。

 難しさはやはり2点あった。まず,定型表現のみを集めたリソースというのは人間が使うための資料としては不完全なため,計算機にとっては余計な情報が入っているという点である。もう1つは,定型表現の分類が恣意的であり,moveとの対応が取れないという点である。

修士2年生

定義とアノテーション

 堂々巡りから脱出するために,定型表現のアノテーションをすることにした。英文に対して,定型表現とそうでない部分のアノテーションが与えられれば,系列ラベリング問題として解くことができるからだ。ところがやってみると,すぐに課題に直面した。何が定型表現なのかよく分からないのである。例えば,play an important role inという表現がよく使われるが,importantの代わりにcriticalとかvitalといった形容詞が置かれることもある。そうすると,play an * role inとした方が良いのではないか,という考えが出てくる。また,末尾のinがなくても定型表現らしさは失われないのではないかという疑問も出てくる。

 あるフレーズを見せられて,それが定型表現っぽいかどうかを判断することは難しくないのだが,どこからどこまでが定型と言えるかを判断するのは無理だった。言い換えれば,定型表現の定義をきちんとせよということなのである。ところが,探しても探しても定型表現の定義として形式的な(もっといえば計算機で扱える)ものは見つからなかった。どうやら,定型表現というものがあることは分かっているが,それが何であるかは分からないというのが現状のようであった。現に,複数の論文に定義は困難であると書かれていた。

 定義が困難なものをどうやってコンピュータで扱おうというのか。ここは発想を変えて,扱えそうな部分を扱えば良いと考えた。つまり,定型表現(という集合)を抽出するのではなく,抽出した単語列が定型表現であれば良いとするのである。precisionさえ高ければよく,recallはそもそも計算できないということである。ここまで考えて,もう中間発表の季節(8月下旬)になっていた。

インライン数式検出

 春頃に遡るが,論文データセットを作る過程で,インライン数式の検出が問題になっていたようで,その仕事をすることになった。インライン数式というのは,LaTeXでいうところの,equationとかeqnarrayを使って記述する独立行数式ではなく,地の文で$$を使って記述する数式のことである。

 文書分析のトップ会議はICDARだが,これの締切が近く,また通知が学振の締切よりも前だったので,査読あり論文を得るチャンスだと思い猛スピードで取り組んだのだが,いくつか検討すべき問題が出てきて,間に合わなくなった。結局,遅れてACM DocEngに出した。

修士論文に着地させる

 アノテーションが終わった時点でもう秋になっており,何をどこまで明らかにして修士論文を書くかが問題だった。アノテーションの結果を元に系列ラベリング問題として定型表現を抽出することと,既存のリソースのカテゴリを精査して,moveと対応付きそうなものに絞って分類問題を解くことを核とすることにした。

 10月に学振DC1不採択のお知らせが来た。見込みが低いと分かっていてもショックを受けるものである。この段階で申請書を読み直してみると,何の実験もできていない段階で書いたものは具体性もなければ何をやれば解決できるのかも十分に書けていないと感じた。しかしあの時点ではあれ以上のものを書けなかったのも事実であった(論文になるような成果のある人は申請書もずっと書きやすいだろうとも思った)。

 実験を終え,修士論文を年明けに提出した。それからすぐに修論の内容をCOLINGの原稿に落とし込み,投稿した。採択通知は5月なので,通ればギリギリDC2の申請に間に合うというタイミングだった。

(つづく)

*1:genre。これはテクニカルタームである。

*2:松原研@名大

*3:自然語言處理實驗室@國立清華大學

*4:Swales (1981, 1990, 2004)