この記事は「言語学な人々Advent Calender 2023」の18日目の記事です。
はじめに
国立国会図書館(以下NDL)では、大規模デジタル化予算を用いて所蔵資料のデジタル化を格段に進めましたが、そのOCRテキスト化も近年おおはばに進んでいます。その具体的な内容は公式記事をご覧いただければと思いますが、とにもかくにも言語資源が格段に増えたわけで、思いつくままに使ってみようというのが今回の内容です。なお、この内容はNDLのウェビナーでお話しした内容といちぶ重なるところもありますが、もうすこし言語学(技術)向けです。
OCRテキストは、公式記事からダウンロードの方法なども示されていますが、手っ取り早くは、国立国会図書館デジタルコレクション(以下NDC)で検索することができます。それだけではなく、n-gramという考え方を用いてテキストデータを単語単位で細分化し、適当な語数で集計をできるようにしたNDL Ngram Dataset(以下NND)というデータがあり*1、今回はそれを検索できるようにしたNDL Ngram Viewer(以下NNV)を使います。
n-gramとは
n-gramとは、テキストをなんらかの言語的な単位(文字・音素・形態素・語)で分割し、n個取出したものを言います。知りませんでしたが遺伝子や蛋白質でも応用されているそうです。nは任意の数字が入るので、何個取出すかによって、1-gram(ユニグラム)、2-gram(バイグラムあるいはダイグラム(稀))などと増えていき、このNNDでは1〜5-gramのデータがあるそうです(中身は見ていませんので誤解があるかもしれません)。5-gramはクインクェグラムあるいはファイブグラムと読みます*2。
NNDは、作成時においてデジタル化されたもののうち、図書については刊行年代が1960年代まで、雑誌については刊行年代が1990年代までの資料を対象としており、それぞれ約8.5億種類の単語及びフレーズ・約8.9億種類の単語及びフレーズが利用可能です。テキストの再検討が容易な著作権満了分については約8.3億種類の単語及びフレーズがあります*3。
日本語におけるn-gramデータとしては、言語資源協会で配布している「国語研日本語ウェブコーパス」n-gram データ、GoogleのWeb日本語Nグラムがありますが、どちらも有料であり、規模や種類、質の面に相違があるとはいえ、完全にオープン/フリーなNNDの威力はなかなかにあるものと思われます。
NDL Ngram Viewerについて
NNVはNNDの検索インタフェースで、複数検索や正規表現検索を実現することにより、NNDをかなり自由に調べることができるものです。たとえば、「お入り用」から「ご入り用」へどのように取って替ったのか、正規表現を使った検索キーワード「[おご]入り?用」でかんたんに調べることができます*4。
その他の検索例はNNVの冒頭に説明があるのでそちらをご覧下さい。操作の説明はNDL Ngram Viewer | NDLラボにあります。また、ここでは正規表現についての解説はしませんので、ウェブページやつぎの本などで学んでいただければ。
条件表現の接続助詞の変遷を見てみる
NNVを言語研究で使うにはどうするのがよいでしょうか。まず、気をつけねばならないのは、NNDは、現代日本語書き言葉均衡コーパス (BCCWJ) などの国語研コーパスと違って、電子コーパスではないということです。電子コーパスでは、言語研究のために形態素情報がアノテーションされるわけですが、NNDにかぎらず一般的なn-gramデータではそのようなアノテーションはなされないのが普通です*5。
したがって、条件表現の接続助詞の変遷を調べるためにつぎのような検索を行ったとします。
そうすると、つぎのようなグラフが描かれます。
このグラフは、単純に指定された出現数上位の数を並べただけのものですが、眺めていると、1940年代なかばに急激な落込みがあることが分ります。くわしい原因を調べていませんが、これは1945年にあたり、敗戦時の諸事情が係わっているのではないかとひとまず推定しておきます。また、1923年以降、あるいは1968年以降に急激な変動があることが分りますが、これはなにか言語使用にとって意味のある変化なのでしょうか。
前者については、あるいは有意味なものがあるかもしれませんが*6、逐次刊行物の書誌情報の処理の問題であることもあり(刊行開始あるいは終了年にすべてのデータが集中するなど)、要因を特定するのは容易ではありません。後者については、著作権上の問題によって公開できないデータが多いためで、この年に日本語の資料が極端な減少を見せたというようなことがあるわけではありません。
すなわち、ここに現れるデータはもととなるNDL所蔵資料の状況等に左右されるのであって、純粋に言語的な要因によってのみ推移を見せるわけではありません*7。
とはいえ、NDLはおおむねバランスよく資料を受入れていると考えられるので、粗頻度にかわっていわゆるサンプルサイズを加味した調整頻度を利用すればあるていどこの問題を緩和することができます*8。「キーワードの出現比率を可視化」というトグルスイッチがNNVのキーワード入力欄の直下にあるので、クリックして有効にすると「キーワードの出現比率を可視化(出版年代ごとの出現頻度/出版年代ごとの総対象Ngram数)」というように計算式とともに表示されます(出版年代とありますが、出版年のようです)。それをクリックしてみると……:
となって、急激な変動が均されていることが分ります*9。原則として、言語研究として用いる際は、この調整頻度でのグラフを見るようにしましょう。縦軸は割合を表します。
また、グラフの表示年も調整することができ、じぶんが現在どの資料を対象に検討しているのか考慮して狭めてもよいでしょう。また、2010年代以降や1860年代以前はデータが乏しく、調整頻度が大きく乱れることがあるため、結果の解釈には含めるべきではありません。
なお、グラフの下には出現頻度のCSVデータと出版年ごとの総n-gramデータ数のダウンロードリンクがあり、個人で検索結果を保存し、あるいはてもとのグラフ描画ソフトで再現することができます。
調整頻度のグラフで問題ないかというと、そこは考えどころです。さらにスクロールをしていくと、検索された表現がリストアップされ、NDCで原典を確認できるようになっています。相当量のある「と」をクリックしてみると、予想の範囲内ですが、接続助詞の「と」以外のものが大量に含まれてしまっていることが分ります。
NDL Ngram Viewerで遊ぶときは、かならず実例も確認しましょう。
また、グラフの点にもじつはリンクが貼られており、気になる年でクリックするとその年に限定された検索結果を見ることができます。目的に応じて使分けましょう。
さて、これを解決するためにはどのようにするのが望ましいでしょうか。さきほども述べたように、NNDでは検索対象がどんな単語であるかといった情報は与えられていないので、なるべく前後に無関係なものが来ないように工夫するというのが現実的です。
たとえば、正規表現を用いて、前接の語の活用形も示してやるというのがひとつのやりかたです。たとえば、「([うくぐすつぬふぶむる](と|なら))|([っつい]?たら|んだら)|[えけげせてねへべめれ]ば」を条件として、
で検索すると、
となります(上位5例しかグラフには描画していないのですが、それ以下にも出てくるものはあります)。しかし、一段動詞「見る」などの「たら」形は正規表現でうまく指定できないので、「たら」の用例が確実に指定できているかは不分明です。ただ、「ふと」から「うと」への顕著な交替が見られるなどの興味深い結果は出ていますね。
正規表現で複数検索したときであっても、個別のマッチ文字列に分解されてグラフに描かれるのは痛しかゆしです*10。追補(2024/1/24):グラフ下の「検索結果を編集する」で合算等が可能でした。訂正します。ただ、メインのグラフにはやはり反映されないのですが……。接続助詞ごとに見るには、結果と出版年ごとのn-gramの総数とのCSVデータをダウンロードして、自前で調整頻度を出してグラフを出し直す必要があります。
また、むりにいっぺんに検索することもないので、具体的な文脈を与えてやることも方法です。たとえば「見る」と共起する例で検索すると……:
こうすると、「と」がもっとも多く、さきほどはいちばん少なかった「れば」がこんどはつぎに多くなることが分ります。なお、縦軸の4.0e-5というのは、4.0×10-5(=0.00004)の工業系での簡略表記だとのことです。Excelなどでも小さいデータを扱うときに見ますね。
さて、このような検索ならば問題はまったくないかといえば、そもそもOCRが誤っているという例は排除できませんし、「見ば」といった古い送り仮名についても対応できないという問題があります*11。遊びを越えた範囲で用いるには、NDVでおおまかな変遷を摑み、国語研の日本語歴史コーパスや昭和・平成書き言葉コーパスといった整備されたコーパスで確信を得るといったサイクルが必要になるのだろうと思います。
「から」「ので」の変遷を見てみる
この要領で、「ですます」体における、「から」と「ので」との移り変りを見てみたいと思って、「[でま]す(から|ので)」と入れてみると…:
とのように空白になってしまいます。これは、「負荷対策のため、接頭及び接尾が両方とも正規表現で記述されたクエリは受け付けません。(受け付けない例:「.*テスト.*」) 」とあるものにまさに該当してしまっている例です。あきらめて、「です(から|ので)」と「ます(から|ので)」とのようにどちらかで検索を分割するしかありません。なお「です(から|ので)」の結果はつぎのようなものです。
近年の「から」と「ので」の入替りはここではあまり見られないようですね。
おわりに
検索例にも上っている「私を.{2,3}にする」など、NNVはいろいろな使い方をすることができます。最長で5-gramなので、複雑な検索はもとよりできませんが、「.{2,3}へ行」などのように、かんたんな格の使いかたであれば問題なく調べることができます。
たんにNDCで未報告の用例を延々と探したり、単語や表記の移変りを見たりするだけでも面白いものですが、もうちょっと複雑なことも考えられるというご紹介でした。
*1:なお、単語分割は言語学的に厳密を期したものではありませんし、解析の正確性もとくに保証されていませんが、単語単位の検索を目的としたデータではないのでおおむね利用上の問題になることはないと思われます。
*2:ラテン語による読みについては化合物命名法のもとになる接頭辞を参照。ラテン語本来の接頭辞とも違う気がしますが、深入りはしません。
*3:それ以外はNDCの図書館/個人送信あるいは館内端末限定送信で確認する必要があります。
*4:「御入り?用」では検索していませんが、「お」が多かったのではないかと仮定しています。
*6:仮に有意味であったとすると、口語体資料の増加などが考えられます。
*7:そんなことを言ったら、どんな資料でもそうなりますが……。
*8:頻度などについての考え方は統計処理環境Rで学ぶ言語研究のための統計入門 | PPTなどのコーパス言語学の資料を見てください。
*9:とはいえ、経年的な増減がなにを意味しているのかは資料全体の変動を見ずには分かりません。NNDの体系的な検討が必要でしょう。
*10:じゃまなグラフは凡例をクリックすると消えます
*11:これに無理に対応しようとすると、「再見ば」のように「サイケンレバ」と読むような例がもしあっても除外できないという問題があります。根本的な対策にはなりませんが、「を見れ?ば」などとしてやると、確実に動詞の例を拾うことができるので、それを「見れ?ば」だけの結果と傾向を見比べることで、異常がないか確認することも可能です。