日本語NLPのModelZOOを作ろうと思ったらコーパスのクローリングからやってた話

ほとんど愚痴みたいな記事です。

# 日本語NLPに使われる機械学習モデル

NLP（自然言語処理）に使われる機械学習モデルには、古典的なものですとWord2Vec等が有名ですが、最近ですとBertやGPT2 or 3、LXNetなどのAttentionを使ったモデルがよく使われます。

それらは全て、予め一般的なコーパスで事前学習して、その後に目的に合わせたファインチューニングを行うことで高い性能を発揮します。
これは、事前学習によって、言語処理に必要となる世界知識や言語知識をモデル内に溜め込んでおくことが出来るため、と捉えると理解しやすいでしょう。

で、事前学習済のモデルがあると何かと便利なんですが、日本語では、今のところそれぞれのモデル毎に別々に公開されている方がいるだけで、「これだ！」という定番モデルは無いのです。

## ModelZOOを作ろうと思った

ModelZOOとは、要するに汎用的に使われる事前学習済の機械学習モデル群のことです。
画像認識系のモデルでは、ImageNetというデータセットで学習された様々なモデルが公開されています。
画像処理の分野では、ModelZOOにある学習済みのモデルをBackboneにして物体検出のモデルが作られたりと、様々なモデルの土台として利用されています。

因みに私は、[GPT2をWikpediaコーパスで学習させたもの](https://github.com/tanreinama/gpt2-japanese)なんかを公開しているんですが、今のところ、一番小さなモデルだけなんです。
それというのも、もっと大規模なコーパスで学習させないと、最近の高性能モデルはその真価を発揮できないのですね。
例えば日本語Wikpediaコーパスだけだとサイズは1.8GBくらい。対してGPT2 or 3では本来400GBから1.5TBくらいの大きさのコーパスを前提に作成されているので、桁が3つか4つくらい違う訳なんです。
なので、もっと大きなモデルや、GPT以外のBERT等も学習済みのモデルを作りたいんですが、そのためにはもっと大規模なコーパスが欲しくなったのです。

### ところで、ModelZOOとデータセットの著作権の関係は？

・・・いきなり難しい話に踏み込んでしまいました。
画像認識系のModelZOOで学習に使われるImageNetデータセットも、そこに含まれている写真一枚一枚は、他のサービスからクローリングして持ってきたもので、著作権はそれぞれの写真の作者に帰属しています。
ですが、前述のように、ModelZOOにあるモデルは、物体検出など様々なモデルの土台として利用されているので、このモデルの利用用途に制限がかけられると、**非っ常ーーーに困ったことになる** のです。

例えば、**仮に、あくまで仮に**ですよ、データセットの著作権者の合意が無いとモデルを利用出来ない、なんていう**ガラパゴス法律**が出来ちゃったとすると、ImageNetにある写真一枚一枚に対してその著作権者を特定して合意をとって・・なんて不可能ですから、ModelZOOが利用出来ない、そして物体検出も利用出来ない、ならば自動運転カーみたいな用途のAIも全て利用出来ない開発出来ない、となってしまうのです。
・・・それは、AI業界全てに **死ね** と言っているに等しい上に、**AIを使った製品全て売れない作れない**となる訳で、国家としての日本の生存のためにも、**そんな事態は何としても避けなければならない**、訳なんです。

<font color="#fff">　　むしろ、自分が某国の指導者だったら敵対国にそういった法律を作らせる工作をしますね。そんな政党が出てきたら要注意！ですが！！</font>

さて、やっと前提となるお話しが終わりました。

# 日本語の大規模コーパスはどれもこれも使いにくいぞ

日本語の大規模コーパスといえば、今のところ[現代日本語書き言葉均衡コーパス(BCCWJ)](https://pj.ninjal.ac.jp/corpus_center/bccwj/)が定番だと思います。
10Gワード以上を含む均衡コーパスであり、しかも40万円払えば商用利用も可能！素晴らしい！

・・・ですが、個人の趣味で学習済みのモデルを公開したいと言うだけに、40万のお金は出したくないなぁ。
一応、一般利用なら半額の20万ですが、自分は大学等の研究機関に所属してはいないので、個人研究者ではないのです。

それと、**モデルを公開した場合、そのモデルは商用利用可能なのか？**という問題が出てきます。
無料でモデルを公開するのは商用利用じゃないと思うんですが、自分はフリーランスエンジニアとして仕事を受けてもいるので、**自然言語処理の仕事を受けたときに、自分が公開しているモデルを利用出来ないとなると、非常にやりにくい！**
「商用利用可なモデルを公開すること」は商用利用じゃないと強弁したところで、そのモデルを自分自身でダウンロードして商用利用しちゃったらアウトだろうなぁ、と。


あと、商用利用不可で公開して、仕事になったときだけ40万払えばいいって考えもあるんですが、それは一回払えば良いのか、それとも毎回なのか？とか、最初に払う人が損をするの？とか、そもそもモデルを公開しちゃった後に、商用利用してるかどうかなんて解らないんですけど、とか考えれば考えるほど面倒で。

それに、ハッキリ言って、商用利用不可能なModelZOOなんて、不便で誰も使ってくれない気がします。


その他のコーパスも大体似たり寄ったりで、商用利用は不可、とか研究目的に限る、とか、中途半端な制限があるのです。大学にいる学者だけが研究者だと思うなよ！個人で研究してその成果を公開したって良いじゃないか！・・・でも利用規約的に難しそうなんですよねぇ。<font color="#ddd">そもそも文章の著作権は持っていないコーパス制作者が、利用規約で「商用利用不可」ってのは何の権利に基づく規約なのだ？</font>

・・・そんなこんなで、**もう面倒だからコーパスを自作するところからやろう**、となった訳なんです。<font color="#ddd">がっくり。</font>

## コーパスのクローリング

とりあえず10GB程度のサイズのコーパスを目指して、現在クローリング中です。
最終的にはWikipediaのコーパスも混ぜて20GB位まで増やせれば良いな〜、と思いつつ、ゆっくりとデータを集めている途中です。
ある程度のボリュームになったら、その都度学習済みのモデルを公開してゆくかもしれません。クローリングのコードは未定です。下手に公開すると方々に迷惑がかかるかもしれないので慎重に考えます。
現時点で約7GB程度のコーパスが出来ていますが、コーパスそのものは公開出来ません。自分はフリーランスエンジニアなので、顧問契約か何かで仕事にしてくれれば、そのコーパスを使ったAIは納品できます。

### データセットの著作権とモデルの利用範囲について指標が欲しい！

日本では、「データは公開するけど利用規約で商用利用は不可にするよ」みたいな、どんな権利なのかよく解らない慣習がまかり通っていて、何とも困ります。

せめて、そのデータで学習させたモデルは利用規約の範囲外、みたいな指標が欲しいんですが、下手に声を上げると、藪蛇になってヘンテコなガラパゴス法律が出来るきっかけになってしまわないか、という懸念があって、今まで口に出すことはしないでいました。

しかし、ここまでAI関連の技術が発達し、それこそ国家の国際競争力にも直結するレベルになっているのにこの有様では、正直言って色々困ります。**実際私は困っています。**
これは国とかにお願いするしか無いかなぁ。内閣府のサイトで投稿しておこうかしらん。

賛同してくれる方がいらっしゃれば、コメントくださるか[HP](https://nama.ne.jp)からメッセージくださいな。

それでは。