色々考えてきたが、ここに及んで、深層学習に頼ることにした。アイデアをより詳しく語ると、word2vecと深層学習をつなげてみようということだ。
まず、日本語ウィキペディアから拾ってきた、名詞+助詞+(名詞・動詞)のデータは、4000万個になった。両脇の名詞、あるいは動詞から、それらをつなぐ間の助詞をどう推定するのか、データを眺めていてもさっぱりラチがあかない。前後の名詞と動詞を品詞化して、次のような感じにして、情報を集めたが、これでもパッとしない。
巡洋艦(名詞,一般,*,*):が(助詞,格助詞,一般):支援(名詞,サ変接続,*,*) 愛知県名古屋市西区(名詞,固有名詞,地域,一般):の(助詞,連体化,*):上小田井駅(名詞,固有名詞,地域,一般) 古代ローマ(名詞,固有名詞,一般,*):は(助詞,係助詞,*):ギリシア(名詞,固有名詞,地域,国) インクジェットプリンター(名詞,固有名詞,一般,*):に(助詞,格助詞,一般):対象(名詞,一般,*,*) 祭神(名詞,一般,*,*):は(助詞,係助詞,*):博多区(名詞,固有名詞,地域,一般) 処理(名詞,サ変接続,*,*):が(助詞,格助詞,一般):いくつ(名詞,代名詞,一般,*) キャピタルワン(名詞,固有名詞,一般,*):を(助詞,格助詞,一般):買収(名詞,サ変接続,*,*) 政権(名詞,一般,*,*):を(助詞,格助詞,一般):とる(動詞,自立,*,*) 婚姻(名詞,サ変接続,*,*):の(助詞,連体化,*):20%(名詞,固有名詞,一般,*) 10節(名詞,固有名詞,一般,*):に(助詞,格助詞,一般):定め(動詞,自立,*,*) サッカー(名詞,一般,*,*):は(助詞,係助詞,*):0(名詞,数,*,*) ヤン・ヴァーツラフ・ヴォジーシェク(名詞,固有名詞,人名,一般):の(助詞,連体化,*):作曲(名詞,サ変接続,*,*) 男子シングルス(名詞,固有名詞,一般,*):で(助詞,格助詞,一般):最初(名詞,一般,*,*) たよっ(動詞,自立):て(助詞,接続助詞,*):霧(名詞,一般,*,*) 人物(名詞,一般,*,*):の(助詞,連体化,*):風景(名詞,一般,*,*) 板垣退助(名詞,固有名詞,人名,一般):が(助詞,格助詞,一般):第2次(名詞,固有名詞,一般,*) 前線(名詞,一般,*,*):に(助詞,格助詞,一般):なり(動詞,自立,*,*) 存廃(名詞,一般,*,*):の(助詞,連体化,*):判断(名詞,サ変接続,*,*) 連城(名詞,固有名詞,人名,姓):の(助詞,連体化,*):憧れ(動詞,自立,*,*) 型(名詞,接尾,一般,*):の(助詞,連体化,*):吸入(名詞,サ変接続,*,*) 地区(名詞,一般,*,*):も(助詞,係助詞,*):発生(名詞,サ変接続,*,*) 王座(名詞,一般,*,*):を(助詞,格助詞,一般):アグスティン(名詞,固有名詞,人名,一般) ELMS(名詞,固有名詞,組織,*):の(助詞,連体化,*):LMP(名詞,一般,*,*) たち(名詞,接尾,一般,*):は(助詞,係助詞,*):11月23日(名詞,固有名詞,一般,*) 舞台(名詞,一般,*,*):は(助詞,係助詞,*):ポルトガル(名詞,固有名詞,地域,国) 1944年(名詞,固有名詞,一般,*):に(助詞,格助詞,一般):主税局(名詞,固有名詞,組織,*) 現象(名詞,一般,*,*):について(助詞,格助詞,連語):幾分(名詞,一般,*,*) 湾(名詞,接尾,一般,*):の(助詞,連体化,*):北(名詞,一般,*,*) 代(名詞,接尾,一般,*):に(助詞,格助詞,一般):結婚(名詞,サ変接続,*,*) 上番(名詞,一般,*,*):や(助詞,並立助詞,*):平安時代(名詞,固有名詞,一般,*) 3月(名詞,固有名詞,一般,*):は(助詞,係助詞,*):永田鉄山(名詞,固有名詞,人名,一般) シュテティーン(名詞,一般,*,*):で(助詞,格助詞,一般):商業(名詞,一般,*,*) ホルティ(名詞,一般,*,*):は(助詞,係助詞,*):反共主義者(名詞,固有名詞,一般,*) 冏(名詞,一般,*,*):を(助詞,格助詞,一般):討つ(動詞,自立,*,*) プラットフォーム(名詞,一般,*,*):の(助詞,連体化,*):合計(名詞,サ変接続,*,*) ショパン(名詞,固有名詞,人名,姓):によって(助詞,格助詞,連語):フルート(名詞,一般,*,*)
品詞を使うことも考えたが、品詞情報はとても弱い。助詞の選択は、品詞で機械的にも止まるものではなく、前後に使われている名詞や動詞の意味に連結しているのだ。
そこで、深層学習を利用しようということになった。前後の言葉を入れると、最適助詞を選び出すようなニューラルネットワークを構築すれば良い。深層学習のjavaプログラムはすでに作ってある。自己符号化型のものだが。
ただ、言葉膨大にある。入力ユニット数を数万に増やすわけには行かない。そこで、言葉をword2vecを用いて、200次元ベクトルで表し、前後の言葉で、合計400次元にすれば、難なく、深層学習で扱える。出力は、助詞のいずれか一つが選択されるように、助詞の数だけのユニットだから、それは、限られた数で良い。せいぜい数十個だろう。
4000万個のうち、3000万個くらいを学習させて、残りの1000万個でテストすれば良い。早速データを作ろう。