(57)【要約】【課題】  文書の誤り判定に適用されるニューラル・ネットワークのための学習方法、学習システム、およびプログラムを提供すること。【解決手段】  文字列の正誤判定をするために、ニューラル・ネットワークを学習させる方法であって、学習データとなる文字列を、ベクトル列に変換する第１の工程と、前記変換されたベクトル列を、前記ニューラル・ネットワークに入力し、前記ニューラル・ネットワークを学習させる第２の工程とを含む。【選択図】図４
2020035023.tif 000002
【特許請求の範囲】
【請求項１】
文字列の正誤判定をするために、ニューラル・ネットワークを学習させる方法であって、
学習データとなる文字列を、ベクトル列に変換する第１の工程と、
前記変換されたベクトル列を、前記ニューラル・ネットワークに入力し、前記ニューラル・ネットワークを学習させる第２の工程とを含む、学習方法。
【請求項２】
前記第１の工程は、前記文字列をベクトル列に変換する際に、前記文字列に含まれる文字を、ワン・ホット・ベクトルに置換する工程を含む、請求項１に記載の学習方法。
【請求項３】
前記第２の工程は、前記変換されたベクトル列を、次元削減して、前記ニューラル・ネットワークに入力する工程を含む、請求項１または２に記載の学習方法。
【請求項４】
前記ニューラル・ネットワークは、多層ＬＳＴＭ（Ｌｏｎｇ  Ｓｈｏｒｔ  Ｔｅｒｍ  Ｍｅｍｏｒｙ）である、請求項１乃至３のうち何れか１項に記載の学習方法。
【請求項５】
前記第２の工程は、
前記変換されたベクトル列を、前記ニューラル・ネットワークに入力して得られた出力を、ソフトマックス関数に入力することによって、前記ベクトル列に対応する文字列の前記正誤判定を示すスコアに変換する工程を含む、請求項１に記載の学習方法。
【請求項６】
前記第２の工程は、前記スコアに基づいて、前記ニューラル・ネットワークを学習する工程を含む、請求項５に記載の学習方法。
【請求項７】
ニューラル・ネットワークを使って、文字列における誤りの有無を判定する誤り判定方法であって、
学習データとなる文字列を、ベクトル列に変換する第１の工程と、
前記変換されたベクトル列を、前記ニューラル・ネットワークに入力し、得られた出力に基づいて、前記文字列における誤りの有無を判定する第２の工程とを含む、誤り判定方法。
【請求項８】
前記文字列の長さは、ジャンルに応じて決定される、請求項７に記載の誤り判定方法。
【請求項９】
文字列の正誤判定をするために、ニューラル・ネットワークを学習させるシステムであって、
学習データとなる文字列を、ベクトル列に変換する第１の手段と、
前記変換されたベクトル列を、前記ニューラル・ネットワークに入力し、前記ニューラル・ネットワークを学習させる第２の手段とを含む、学習システム。
【請求項１０】
前記第１の手段は、前記文字列をベクトル列に変換する際に、前記文字列に含まれる文字を、ワン・ホット・ベクトルに置換する手段を含む、請求項９に記載の学習システム。
【請求項１１】
前記第２の手段は、前記変換されたベクトル列を、次元削減して、前記ニューラル・ネットワークに入力する手段を含む、請求項９または１０に記載の学習システム。
【請求項１２】
前記ニューラル・ネットワークは、多層ＬＳＴＭ（Ｌｏｎｇ  Ｓｈｏｒｔ  Ｔｅｒｍ  Ｍｅｍｏｒｙ）である、請求項９乃至１１のうち何れか１項に記載の学習システム。
【請求項１３】
前記第２の手段は、
前記変換されたベクトル列を、前記ニューラル・ネットワークに入力して得られた出力を、ソフトマックス関数に入力することによって、前記ベクトル列に対応する文字列の前記正誤判定を示すスコアに変換する手段を含む、請求項９に記載の学習システム。
【請求項１４】
前記第２の手段は、前記スコアに基づいて、前記ニューラル・ネットワークを学習する手段を含む、請求項１３に記載の学習システム。
【請求項１５】
ニューラル・ネットワークを使って、文字列における誤りの有無を判定する誤り判定システムであって、
学習データとなる文字列を、ベクトル列に変換する第１の手段と、
前記変換されたベクトル列を、前記ニューラル・ネットワークに入力し、得られた出力に基づいて、前記文字列における誤りの有無を判定する第２の手段とを含む、誤り判定システム。
【請求項１６】
前記文字列の長さは、ジャンルに応じて決定される、請求項１５に記載の誤り判定システム。
【請求項１７】
文字列の正誤判定をするために、ニューラル・ネットワークを学習させるプログラムであって、
学習データとなる文字列を、ベクトル列に変換する機能、
前記変換されたベクトル列を、前記ニューラル・ネットワークに入力し、前記ニューラル・ネットワークを学習させる機能を、プロセッサに実現させるためのプログラム。
【請求項１８】
ニューラル・ネットワークを使って、文字列における誤りの有無を判定する誤り判定プログラムであって、
学習データとなる文字列を、ベクトル列に変換する機能、
前記変換されたベクトル列を、前記ニューラル・ネットワークに入力し、得られた出力に基づいて、前記文字列における誤りの有無を判定する機能を、プロセッサに実現させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば深層学習のような機械学習のための学習方法、学習システム、および学習されたニューラル・ネットワークを使ってなされる誤り判定方法、誤り判定システム、ならびに、学習システムおよび誤り判定システムのためのプログラムに関する。
【背景技術】
【０００２】
近年、コンピュータによる機械学習で、人間の脳神経回路を模したニューラル・ネットワークを多層的にすることで、コンピュータ自らがデータに含まれる潜在的な特徴をとらえ、より正確で効率的な判断を実現させる深層学習が、画像認識などのパターン認識の分野において広く利用されている。
【０００３】
このような深層学習によって、コンピュータは、より人間に近い判断ができるようになった。例えば、人間が他人や動物を識別する場合、視覚や聴覚などを駆使して、対象物の体格などの全体を見た後に、目、耳、口などの顔のパーツなどを認識したり、あるいはその逆に、パーツから全体を認識したりするような階層的な過程を経る。
【０００４】
従来のコンピュータでは、このような過程を経た認識は困難とされ、対象物の特徴を計算するプログラムによって識別を行っていた。しかしながら、深層学習によれば、コンピュータであっても、人間の認識過程と同じ過程を踏み、写真に写っている人の顔や動物等を認識することが可能になった。
【０００５】
このような認識を可能にするために、深層学習では、大量の学習データによって、例えばニューラル・ネットワークを学習させる必要がある。例えば、ゴリラの画像であるか、キリンの画像であるかをニューラル・ネットワークに判断させるためには、ゴリラの画像を少なくとも約十万枚、キリンの画像も同様に少なくとも約十万枚それぞれを学習データとして提供し、学習させる必要がある。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】高橋諒著、「LSTMとResidual Learningでも難しい「助詞の検出精度」を改善した探索アルゴリズムとは」、www.atmarkit.co.jp/ait/articles/1611/11/news016.html（リクルートテクノロジーズ）（平成30年4月13日検索）
【非特許文献２】Yuta Hitomi, Hideaki Tamori, Naoaki Okazaki and Kentaro Inui, ‘Proofread Sentence Generation as Multi-Task Learning with Edit Operation Prediction’, In Proceedings of the 8th International Joint Conference on Natural Language Processing.
【発明の概要】
【発明が解決しようとする課題】
【０００７】
深層学習は、上述したような画像認識への適用のみならず、文書における誤り判定への適用も考えられている。
【０００８】
深層学習を文書における誤り判定へ適用する場合にもまた、画像認識の場合と同様に、大量の学習データを準備し、例えばニューラル・ネットワークを学習させる必要がある。
【０００９】
しかしながら、誤り判定のためのニューラル・ネットワークの具体的な学習方法、すなわち、どのような学習データをどれだけ準備し、これら学習データを使って具体的にどのような処理を行うことによって学習を行うのかについては、未だに確立されたものはない。
【００１０】
また、学習されたニューラル・ネットワークによって、具体的にどのような処理を行うことによって、文書における誤りを、効率的に判定できるのかについても、未だに確立されたものはない。
【００１１】
本発明はこのような事情に鑑みてなされたものであり、文書の誤り判定に適用されるニューラル・ネットワークのための学習方法、学習システム、およびプログラムを提供することを目的とする。また、ニューラル・ネットワークによって文書の誤りが判定される誤り判定方法、誤り判定システム、およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記の目的を達成するために、本発明では、以下のような手段を講じる。
【００１３】
請求項１の発明は、文字列の正誤判定をするために、ニューラル・ネットワークを学習させる方法であって、学習データとなる文字列を、ベクトル列に変換する第１の工程と、前記変換されたベクトル列を、前記ニューラル・ネットワークに入力し、前記ニューラル・ネットワークを学習させる第２の工程とを含む、学習方法である。
【００１４】
請求項２の発明は、前記第１の工程は、前記文字列をベクトル列に変換する際に、前記文字列に含まれる文字を、ワン・ホット・ベクトルに置換する工程を含む、請求項１に記載の学習方法である。
【００１５】
請求項３の発明は、前記第２の工程は、前記変換されたベクトル列を、次元削減して、前記ニューラル・ネットワークに入力する工程を含む、請求項１または２に記載の学習方法である。
【００１６】
請求項４の発明は、前記ニューラル・ネットワークは、多層ＬＳＴＭ（Ｌｏｎｇ  Ｓｈｏｒｔ  Ｔｅｒｍ  Ｍｅｍｏｒｙ）である、請求項１乃至３のうち何れか１項に記載の学習方法である。
【００１７】
請求項５の発明は、前記第２の工程は、前記変換されたベクトル列を、前記ニューラル・ネットワークに入力して得られた出力を、ソフトマックス関数に入力することによって、前記ベクトル列に対応する文字列の前記正誤判定を示すスコアに変換する工程を含む、請求項１に記載の学習方法である。
【００１８】
請求項６の発明は、前記第２の工程は、前記スコアに基づいて、前記ニューラル・ネットワークを学習する工程を含む、請求項５に記載の学習方法である。
【００１９】
請求項７の発明は、ニューラル・ネットワークを使って、文字列における誤りの有無を判定する誤り判定方法であって、学習データとなる文字列を、ベクトル列に変換する第１の工程と、前記変換されたベクトル列を、前記ニューラル・ネットワークに入力し、得られた出力に基づいて、前記文字列における誤りの有無を判定する第２の工程とを含む、誤り判定方法である。
【００２０】
請求項８の発明は、前記文字列の長さは、ジャンルに応じて決定される、請求項７に記載の誤り判定方法である。
【００２１】
請求項９の発明は、文字列の正誤判定をするために、ニューラル・ネットワークを学習させるシステムであって、学習データとなる文字列を、ベクトル列に変換する第１の手段と、前記変換されたベクトル列を、前記ニューラル・ネットワークに入力し、前記ニューラル・ネットワークを学習させる第２の手段とを含む、学習システムである。
【００２２】
請求項１０の発明は、前記第１の手段は、前記文字列をベクトル列に変換する際に、前記文字列に含まれる文字を、ワン・ホット・ベクトルに置換する手段を含む、請求項９に記載の学習システムである。
【００２３】
請求項１１の発明は、前記第２の手段は、前記変換されたベクトル列を、次元削減して、前記ニューラル・ネットワークに入力する手段を含む、請求項９または１０に記載の学習システムである。
【００２４】
請求項１２の発明は、前記ニューラル・ネットワークは、多層ＬＳＴＭ（Ｌｏｎｇ  Ｓｈｏｒｔ  Ｔｅｒｍ  Ｍｅｍｏｒｙ）である、請求項９乃至１１のうち何れか１項に記載の学習システムである。
【００２５】
請求項１３の発明は、前記第２の手段は、前記変換されたベクトル列を、前記ニューラル・ネットワークに入力して得られた出力を、ソフトマックス関数に入力することによって、前記ベクトル列に対応する文字列の前記正誤判定を示すスコアに変換する手段を含む、請求項９に記載の学習システムである。
【００２６】
請求項１４の発明は、前記第２の手段は、前記スコアに基づいて、前記ニューラル・ネットワークを学習する手段を含む、請求項１３に記載の学習システムである。
【００２７】
請求項１５の発明は、ニューラル・ネットワークを使って、文字列における誤りの有無を判定する誤り判定システムであって、学習データとなる文字列を、ベクトル列に変換する第１の手段と、前記変換されたベクトル列を、前記ニューラル・ネットワークに入力し、得られた出力に基づいて、前記文字列における誤りの有無を判定する第２の手段とを含む、誤り判定システムである。
【００２８】
請求項１６の発明は、前記文字列の長さは、ジャンルに応じて決定される、請求項１５に記載の誤り判定システムである。
【００２９】
請求項１７の発明は、文字列の正誤判定をするために、ニューラル・ネットワークを学習させるプログラムであって、学習データとなる文字列を、ベクトル列に変換する機能、前記変換されたベクトル列を、前記ニューラル・ネットワークに入力し、前記ニューラル・ネットワークを学習させる機能を、プロセッサに実現させるためのプログラムである。
【００３０】
請求項１８の発明は、ニューラル・ネットワークを使って、文字列における誤りの有無を判定する誤り判定プログラムであって、学習データとなる文字列を、ベクトル列に変換する機能、前記変換されたベクトル列を、前記ニューラル・ネットワークに入力し、得られた出力に基づいて、前記文字列における誤りの有無を判定する機能を、プロセッサに実現させるためのプログラムである。
【発明の効果】
【００３１】
本発明によれば、文書の誤り判定に適用されるニューラル・ネットワークのための学習方法、学習システム、およびプログラムを実現することができる。また、ニューラル・ネットワークによって文書の誤りが判定される誤り判定方法、誤り判定システム、およびプログラムを実現することができる。
【図面の簡単な説明】
【００３２】
【図１】本発明の第１の実施形態に係る学習方法が適用された学習システムと、誤り判定方法が提供された誤り判定システムとが統合された統合システムの構成例を示すブロック図である。
【図２】被験文書からの文字列の切り出しを説明する例を示す図である。
【図３】ニューラル・ネットワークの学習時における動作の一例を示すフローチャートである。
【図４】ニューラル・ネットワークの学習時における動作と、誤り判定時の動作とを概念的に示す概要図である。
【図５】被験文書における誤りを判定する際の動作の一例を示すフローチャートである。
【発明を実施するための形態】
【００３３】
以下に、本発明の第１の実施形態に係る学習方法が適用された学習システムと、誤り判定方法が提供された誤り判定システムとが統合された統合システムを、図面を参照して説明する。
【００３４】
（第１の実施形態）
図１は、本発明の第１の実施形態に係る学習方法および誤り判定方法が適用された誤り発見エンジンの構成例を示すブロック図である。
【００３５】
統合システム１０の電子回路は、バス１１によって互いに接続されたＣＰＵ１２、記録媒体読取部１４、ディスプレイ１５、キー入力部１６、通信部１７、記憶装置１８、およびメモリ２０を備える。
【００３６】
キー入力部１６は、例えばキーボード、マウス等のように、ユーザからの操作入力を受け付ける部位である。
【００３７】
ＣＰＵ１２は、コンピュータであって、メモリ２０に記憶されている学習プログラム２１、および誤り判定プログラム２２に従い回路各部の動作を制御し、キー入力部１６から入力された操作入力に従う処理を実行する。
【００３８】
学習プログラム２１、および誤り判定プログラム２２は、メモリ２０に予め記憶されていてもよいし、あるいはメモリカード等の外部記録媒体１３から記録媒体読取部１４を介してメモリ２０に読み込まれて記憶されたものであってもよい。
【００３９】
学習プログラム２１、および誤り判定プログラム２２は、ユーザによるキー入力部１６からの入力によって書き換えできないようになっている。
【００４０】
メモリ２０には、このようなユーザ書き換え不可能な情報の他に、ユーザが書き換え可能なデータを記憶するエリアとして、キー入力部１６によりなされた入力に対応する情報が順次入力されるエリアである書込可能データエリア２３が確保されている。
【００４１】
通信部１７は、例えばインターネットのような通信ネットワークに接続されており、この通信ネットワークを介して、図示しない外部の記事データベースや、図示しない誤り学習データジェネレータ等と通信する。この通信によって、例えば、ニューラル・ネットワークを学習させるための学習データ（後述する）や、被験文書等を、前述した誤り学習データジェネレータや、記事データベース等から受信した場合、受信した学習データや、被験文書等を、記憶装置１８へ出力し、記憶装置１８に記憶させる。
【００４２】
記憶装置１８は、例えばＳＳＤ（Solid State Drive）やＨＤＤ（Hard Disk Drive）等からなり、通信部１７が受信した学習データおよび被験文書等や、学習プログラム２１による学習の結果であるベクトル列等を記憶することができる。記憶している情報は、ＣＰＵ１２による制御の下、各プログラム２１〜２２によって使用されることができる。なお、図１では、記憶装置１８は、統合システム１０の内部に備えられているが、記憶装置１８は、統合システム１０の外部に設けられていても良い。
【００４３】
このように構成された誤り統合システム１０は、ＣＰＵ１２が学習プログラム２１、および誤り判定プログラム２２に記述された命令に従い回路各部の動作を制御し、ソフトウェアとハードウェアとが協働して、以下に説明するように動作する。
【００４４】
（ニューラル・ネットワークの学習）
学習プログラム２１は、ニューラル・ネットワークを学習させるためのプログラムである。
【００４５】
ニューラル・ネットワークを用いて、文書における誤りを発見するためには、どのような文書が正しく、どのような文書が誤りであるのかを、文字列である学習データを用いて学習させる必要がある。どのような文書が正しいのかを学習させるためには、正しい文書から作成された学習データ（以下、「正しい学習データ」と称する）を必要とし、どのような文書が誤りであるのかを学習させるためには、誤りを含む文書から作成された学習データ（以下、「誤り学習データ」と称する）を必要とする。
【００４６】
ニューラル・ネットワークは、一般に、十分な学習を行うために、大量の学習データを必要とする。したがって、本実施形態では、一例として、正しい学習データと誤り学習データとを、それぞれ約１０万個使用する。
【００４７】
このような大量な正しい学習データおよび誤り学習データは、多くの提供者から提供される方が効率的であるので、通信ネットワークに接続された、図示しない誤り学習データジェネレータから取得するようにしても良い。この場合、前述したように、正しい学習データと誤り学習データとの両方を含む学習データを、通信部１７が、通信ネットワークを介して誤り学習データジェネレータから受信して記憶装置１８へ記憶させる。学習プログラム２１は、このようにして記憶装置１８に記憶された、正しい学習データと誤り学習データとの両方を含む学習データを、ニューラル・ネットワークの学習のために使用することができる。
【００４８】
学習データの生成方法は、本願では特に限定しないが、一例を以下に説明する。
【００４９】
例えば、正しい学習データは、正しい文書から、任意の長さの文字列を切り出すことによって生成して良い。また、誤り学習データは、正しい学習データに対して、（１）置換、（２）並び替え、（３）追加、（４）重複、および（５）削除のような５つの変換処理のうちの少なくとも何れかを実施することによって生成して良い。
【００５０】
例えば、「インターネットによって、オンラインで商品を購入することは容易だが、誤った商品が発送されるトラブルが多く発生している。」という正しい文書があったとする。この正しい文書から、任意の長さとして、例えば１０文字の長さの任意の文字列を切り出すことによって、「とは容易だが、誤った」のような文字列を切り出すことができる。このようにして正しい学習データを生成することができる。
【００５１】
さらに、生成された正しい学習データ「とは容易だが、誤った」に対して、（１）置換処理を行うことによって、例えば「とは容易だむ、誤った」という誤り学習データを生成することができる。また、（２）並び替え処理を行うことによって、例えば「はと容易だが、誤った」という誤り学習データを生成することができる。さらに、（３）追加処理を行うことによって、例えば「とは容易だうが、誤った」、（４）重複処理を行うことによって、例えば「とは容易だがが、誤った」、（５）削除処理を行うことによって、例えば「とは容易だが、誤た」という具合に、誤り学習データを生成することができる。
【００５２】
このように、上記（１）〜（５）の各処理は、正しい学習データに対して、最小の変換を施すことによって、誤り学習データを生成している。従って、生成された誤り学習データは、正しい学習データに類似している。実際に、人間が文書を作成する際に犯す誤りも、１つの文中の、１箇所だけが誤りであるという場合がほとんどである。また、ニューラル・ネットワークにとって、一般に、多くの誤りを含む文書よりも、１箇所しか誤りを含まない文書の方が、正誤判断はより困難である。
【００５３】
以上説明したように、上記（１）〜（５）の各処理によって生成される誤り学習データは、正しい学習データに非常に類似しているという観点から、ニューラル・ネットワークのための性能向上のために好適な、良質な学習データとなる。
【００５４】
学習プログラム２１は、このようにして生成された各学習データ（正しい学習データと誤り学習データとの両方を含む）となる文字列を、ベクトル列に変換し、変換されたベクトル列を、ニューラル・ネットワークに入力し、ニューラル・ネットワークを学習させる。
【００５５】
例えば、文字列をベクトル列に変換する際に、文字列に含まれる文字を、ワン・ホット・ベクトルに置換しても良い。
【００５６】
また、変換されたベクトル列を、次元削減してから、ニューラル・ネットワークに入力しても良い。
【００５７】
ニューラル・ネットワークは、多層ＬＳＴＭ（Ｌｏｎｇ  Ｓｈｏｒｔ  Ｔｅｒｍ  Ｍｅｍｏｒｙ）が好適である。
【００５８】
また、変換されたベクトル列を、ニューラル・ネットワークに入力して得られた出力を、ソフトマックス関数に入力することによって、ベクトル列に対応する文字列の正誤判定を示すスコアに変換しても良い。
【００５９】
さらには、このスコアに基づいて、ニューラル・ネットワークを学習するようにしても良い。
【００６０】
ニューラル・ネットワークは、学習データである文字列のそれぞれに対応するベクトル列を生成し、生成したベクトル列を、記憶装置１８に書き込む。
【００６１】
これによって、記憶装置１８には、学習データと同数のベクトル列が書き込まれることになる。例えば、学習データである文字列が２０万個である場合、２０万個のベクトル列が生成され、記憶装置１８に書き込まれる。
【００６２】
ベクトル列は、例えば、
【００６３】
【数１】
2020035023.tif 000003
【００６４】
のような形式で表現される。
【００６５】
上記式１は、ベクトル
【００６６】
【数２】
2020035023.tif 000004
【００６７】
に正しい文字列が代入された場合、結果は、正の値となり、誤った文字列が代入された場合、結果は、負の値となるようにすれば、正誤判定が容易になるので、好ましい。
【００６８】
学習プログラム２１は、ニューラル・ネットワークに、学習データである文字列に対応するベクトル列を入力し、その出力に基づいて、学習する。
【００６９】
（ニューラル・ネットワークによる文字列における誤り判定）
このように学習されたニューラル・ネットワークによってなされる文字列における誤り判定時の処理について、具体例を用いながら説明する。
【００７０】
例えば、被験文書が「インターネットによって、オンラインで商品を購入することは容易だが、誤った商品が発送されるトラブルが多く発生している。」であったとする。このような被験文書は、オペレータ操作によって、キー入力部１６から入力されることによって、または、外部記録媒体１３に記録され、記録媒体読取部１４によって読み取られることによって、または、通信部１７によって、通信ネットワークを介して、外部の記事データベース等から送信されることによって、統合システム１０へ入力される。
【００７１】
このように被験文書が入力されると、誤り判定プログラム２２は、被験文書から任意の長さの文字列を切り出す。この文字列の長さは、例えば、オペレータによって設定される。例えば任意の長さが、１０文字である場合、誤り判定プログラム２２は、図２に示すように、被験文書Ａの最初から先ず「インターネットによっ」という１０文字からなる文字列ａ（＃１）を切り出す。次に、被験文書Ａにおいて１文字進めて「ンターネットによって」という１０文字からなる文字列ａ（＃２）を切り出す。次に、さらに１文字進めて「ターネットによって、」という１０文字からなる文字列ａ（＃３）を切り出すという具合に、最後の１０文字からなる「が多く発生している。」という文字列ａ（＃ｎ）までを切り出す。
【００７２】
このように、誤り判定プログラム２２は、被験文書Ａに含まれるすべての文字が、複数の文字列ａ（＃１〜＃ｎ）の何れかに含まれるように、被験文書Ａから、複数の文字列ａ（＃１〜＃ｎ）を切り出す。従って、被験文書Ａのうち、先頭および末尾以外の文字は、２つ以上の文字列ａに含まれることになる。
【００７３】
誤り判定プログラム２２は、切り出された各文字列ａ（＃１〜＃ｎ）を、記憶装置１８に蓄積された各ベクトル列に、それぞれ代入する。例えば、学習済みのニューラル・ネットワークが記憶装置１８に記憶されている場合、文字列ａ（＃１）が、この学習済みのニューラル・ネットワークに代入される。同様に、文字列ａ（＃２）、・・・・文字列ａ（＃ｎ）もまた、それぞれこの学習済みのニューラル・ネットワークに代入される。
【００７４】
誤り判定プログラム２２は、代入結果に基づいて、切り出された文字列ａ（＃１〜＃ｎ）における誤りの有無を判定する。具体的には、文字列ａ（＃１）が代入されたニューラル・ネットワークによる計算結果を算出する。前述したように、例えば、ニューラル・ネットワークは、正しい文字列が代入された場合、正の値を出力し、誤りを含む文字列が代入された場合、負の値を出力する。
【００７５】
従って、文字列ａ（＃１）が代入されたニューラル・ネットワークによる計算結果が正の値を示すのであれば、文字列ａ（＃１）に誤りは含まれていないと判定することができ、逆に、負の値を示すのであれば、文字列ａ（＃１）に誤りが含まれていると判定することができる。
【００７６】
なお、誤り判定の精度を高めるために、ある正の値からなるしきい値を設け、計算結果が、しきい値を超えている場合に、文字列ａ（＃１）に誤りは含まれないと判定し、逆に、しきい値を超えていない場合に、文字列ａ（＃１）に誤りが含まれていると判定するようにしても良い。
【００７７】
誤り判定プログラム２２は、このようにして、文字列ａ（＃１〜＃ｎ）毎に、誤りの有無をそれぞれ判定し、判定結果を、ディスプレイ１５から表示させたり、あるいは、記憶装置１８に記憶させる。
【００７８】
なお、図２に示す例では、被験文書Ａの最初から１文字ずつ進めて文字列を切り出す例について説明したが、誤り判定プログラム２２による判定結果が得られるまでの時間を短縮させたい場合には、１文字ずつ進めるのに代えて、例えば、３文字ずつ進めながら文字列を切り出すように、適宜、切り出しの分解能を調整すれば良い。ただし、分解能を下げた場合、判定精度も低下するので、切り出しの分解能は、要求する判定精度の観点から決定するものとする。
【００７９】
次に、以上のように構成した統合システム１０の動作について説明する。
【００８０】
図３は、ニューラル・ネットワークの学習時における動作の一例を示すフローチャートであり、図４は、ニューラル・ネットワークによる文字列における誤り判定時における動作を概念的に示す概要図である。
【００８１】
学習データは、統合システム１０において生成されても良いが、好適には、図示しない外部の誤り学習データジェネレータ等によって生成され、通信ネットワークや、外部記録媒体１３を介して、統合システム１０へ提供されても良い。
【００８２】
学習データの生成方法は、本願では特に限定しないが、一例を、以下のステップＳ１およびステップＳ２において説明する。
【００８３】
正しい学習データγは、例えば記事データベース３０に記憶されている直近の１０００本の新聞記事のような正しい文書αから、任意の長さの文字列βを切り出すことによって生成される（Ｓ１）。
【００８４】
例えば、正しい文書αの中に、「インターネットによって、オンラインで商品を購入することは容易だが、誤った商品が発送されるトラブルが多く発生している。」という文書があったとする。この文書から、任意の長さとして、例えば１０文字の長さの任意の文字列βを切り出すことによって、「とは容易だが、誤った」のような文字列からなる正しい学習データγが生成される。
【００８５】
次に、このように生成された正しい学習γデータに対して、（１）置換、（２）並び替え、（３）追加、（４）重複、および（５）削除のような５つの変換処理のうちの少なくとも何れかが実施されることによって、誤り学習データδが生成される（Ｓ２）。
【００８６】
例えば、ステップＳ１において生成された正しい学習データγ「とは容易だが、誤った」に対して、（１）置換処理を行うことによって、例えば「とは容易だむ、誤った」という誤り学習データδ（１）が生成される。また、（２）並び替え処理を行うことによって、例えば「はと容易だが、誤った」という誤り学習データδ（２）が生成される。さらに、（３）追加処理を行うことによって、例えば「とは容易だうが、誤った」、（４）重複処理を行うことによって、例えば「とは容易だがが、誤った」、（５）削除処理を行うことによって、例えば「とは容易だが、誤た」という具合に、誤り学習データδ（３）、δ（４）、δ（５）が生成される。
【００８７】
このように、誤り学習データδは、正しい学習データγに対して、最小の変換を施すことによって生成されているために、正しい学習データγに類似している。このように正しい文字列に類似した文字列は、ニューラル・ネットワークにとって、正誤判断が困難な文字列であるので、このように生成された誤り学習データδは、ニューラル・ネットワークの性能向上のために好適な、良質な学習データとなる。
【００８８】
このようにして生成された各学習データγ，δは、学習プログラム２１によって、ニューラル・ネットワークに適用されることによって、ニューラル・ネットワークから正誤判定に対応する数値またはスコアが生成され、記憶装置１８へ書き込まれる（Ｓ３）。ニューラル・ネットワークは、学習が進行すると、例えば、正しい文字列が代入された場合、結果として、正の値を出力し、誤った文字列が代入された場合、負の値を出力する。
【００８９】
このようなニューラル・ネットワークの出力がフィードバックされることによって、学習がなされる。
【００９０】
図５は、学習されたニューラル・ネットワークによって、被験文書Ａにおける誤りを判定する際の動作の一例を示すフローチャートである。また、引き続き図４を用いて、該動作を概念的に示す。
【００９１】
先ず、被験文書Ａが、例えばオペレータによる入力によって、または、外部記録媒体１３を介して、または、通信ネットワークを介して記事データベース３０から、統合システム１０へ入力される（Ｓ１１）。
【００９２】
例えば、被験文書Ａは、「インターネットによって、オンラインで商品を購入することは容易だが、誤った商品が発送されるトラブルが多く発生している。」であったとする。
【００９３】
次に、誤り判定プログラム２２によって、被験文書Ａから任意の長さの文字列ａが切り出される（Ｓ１２）。
【００９４】
例えば任意の長さが、１０文字である場合、誤り判定プログラム２２によって、図２に示すように、被験文書Ａの最初から先ず「インターネットによっ」という１０文字からなる文字列ａ（＃１）が切り出される。次に、被験文書Ａにおいて１文字が進められ「ンターネットによって」という１０文字からなる文字列ａ（＃２）が切り出される。以下同様にして、最後の１０文字からなる「が多く発生している。」という文字列ａ（＃ｎ）までが切り出される。
【００９５】
なお、上記説明では、被験文書Ａの最初から１文字ずつ進めて文字列を切り出す例について説明したが、例えば、３文字ずつ進めながら文字列を切り出すように、適宜、切り出しの分解能を調整することも可能である。ただし、分解能を下げた場合、誤り判定プログラム２２による判定結果が得られるまでの時間を短縮することができるが、判定精度も低下するので、切り出しの分解能は、要求される判定精度の観点から決定するのが良い。
【００９６】
ステップＳ１２において切り出された各文字列ａ（＃１〜＃ｎ）は、誤り判定プログラム２２によって、記憶装置１８に記憶された学習済みのニューラル・ネットワークに、それぞれ代入される（Ｓ１３）。
【００９７】
例えば、文字列ａ（＃１）が、ニューラル・ネットワークに代入され、同様に、文字列ａ（＃２）、・・・・文字列ａ（＃ｎ）もまた、それぞれニューラル・ネットワークに代入される。
【００９８】
次に、代入結果に基づいて、誤り判定プログラム２２によって、文字列ａ（＃１〜＃ｎ）における誤りの有無がそれぞれ判定される。
【００９９】
具体的には、先ず、誤り判定プログラム２２によって、文字列ａ（＃１）が代入されたニューラル・ネットワークによる計算結果が算出される（Ｓ１４）。前述したように、ニューラル・ネットワークは、正しい文字列が代入された場合、正の値を出力し、誤りを含む文字列が代入された場合、負の値を出力する。
【０１００】
従って、文字列ａ（＃１）が代入されたニューラル・ネットワークによる計算結果が正の値を示すのであれば、文字列ａ（＃１）に誤りは含まれないと判定され、逆に、負の値を示すのであれば、文字列ａ（＃１）に誤りが含まれていると判定される。
【０１０１】
なお、誤り判定の精度を高めるために、ある正の値からなるしきい値を設け、計算結果が、しきい値を超えている場合に、文字列ａ（＃１）に誤りは含まれないと判定し、逆に、しきい値を超えてない場合に、文字列ａ（＃１）に誤りが含まれていると判定するようにしても良い。
【０１０２】
このようにして、誤り判定プログラム２２によって、文字列ａ（＃１〜＃ｎ）毎に、誤りの有無がそれぞれ判定され、判定結果が、ディスプレイ１５から表示されたり、あるいは、記憶装置１８に記憶される（Ｓ１５）。
【０１０３】
上述したように、本実施形態によれば、文書の誤り判定に適用されるニューラル・ネットワークのために好適な学習方法および学習システムを実現することができる。また、このように学習されたニューラル・ネットワークによって文書の誤りを判定するための好適な誤り判定方法および誤り判定システムを実現することができる。
【０１０４】
（変形例）
次に、第１の実施形態の変形例１について説明する。
【０１０５】
本変形例では、学習プログラム２１は、誤り判定精度を高めるために、文書のジャンル毎にニューラル・ネットワークの学習を行う。
【０１０６】
すなわち、第１の実施形態では、文書のジャンルを考慮していないが、本変形例では、誤り判定精度を高めるために、学習プログラム２１は、ニューラル・ネットワークを、文書のジャンル（例えば、政治、経済、社会、文化、スポーツ、芸能、科学技術等）毎に学習する。
【０１０７】
このために、学習プログラム２１は、ジャンル特有の学習データを使って、ジャンル毎にベクトル列を生成し、ニューラル・ネットワークに入力することによって、ジャンル毎に学習する。
【０１０８】
例えば、学習プログラム２１は、ニューラル・ネットワークを、政治のジャンルについて学習する場合、政治に関連する正しい文書から作成された正しい学習データおよび誤り学習データを使って、ベクトル列を生成する。そして、これらベクトル列を、ニューラル・ネットワークに入力し、学習されたニューラル・ネットワークを、政治に関して学習されたニューラル・ネットワークであると区別して記憶装置１８に記憶させる。
【０１０９】
学習プログラム２１は同様に、ニューラル・ネットワークを、経済のジャンルについて学習する場合、経済に関連する正しい文書から作成された正しい学習データおよび誤り学習データを使って、ベクトル列を生成する。そして、これらベクトル列を、ニューラル・ネットワークに入力し、学習されたニューラル・ネットワークを、経済に関して学習されたニューラル・ネットワークであると区別して記憶装置１８に記憶させる。このようにして、学習プログラム２１は、ニューラル・ネットワークを、各ジャンル毎に学習することができる。
【０１１０】
各ジャンル毎に学習されたニューラル・ネットワークは、そのジャンルの文書の誤り判定を行う場合にのみ使用され、他のジャンルに関する文書の誤り判定を行う場合には使用されない。例えば、政治に関する文書の誤り判定を行う場合には、誤り判定プログラム２３は、政治に関する被験文書から切り出された文字列を、政治に関して学習されたニューラル・ネットワークに代入する。
【０１１１】
誤り判定プログラム２２は、各ジャンル毎に得られた計算結果から、被験文書における誤りの有無を判定する。この計算結果は、被験文書が属するジャンルに関して学習されたニューラル・ネットワークを用いて得られたものであるので、信頼性の高いものとなり、これによって、誤り判定精度の向上も図られる。
【０１１２】
また、第１の実施形態では、正しい文書から、任意の長さの文字列を切り出すことによって、正しい学習データを生成することについて説明した。そして、任意の長さの一例として、発明者の経験上妥当な値と思われる１０文字の場合について説明した。しかしながら、適切な長さは、被験文書の内容に応じて変動し得る。例えば、同じ内容の文書であっても、大人が作成した文書よりも、子供が作成した文書のほうが長い傾向にあるので、被験文書が子供が作成した文書である場合には、１０文字よりも長い文字列を切り出して正しい学習データを生成することが妥当である。
【０１１３】
同様なことが、被験文書のジャンルについても言える。例えば、スポーツのジャンルでは、ルールや技の名称等に、長い固有名詞が多く使用されることがあるので、長めの文字列を切り出して正しい学習データを生成することが妥当であろう。このように、学習データの長さは、ジャンル毎に最適な値とする。
【０１１４】
従って、学習プログラム２１は、文書のジャンル毎にニューラル・ネットワークの学習を行う場合、使用する学習データの長さにも、ジャンルに応じて決定される最適な値を用いるようにすれば、誤り判定プログラム２２においてなされる誤り判定精度を更に向上させることが可能となる。
【０１１５】
同様な理由により、被験文書から切り出す文字列の長さもまた、例えば、学習データの長さと同じにする等、ジャンルに応じて決定される最適な値を用いるようにすれば、誤り判定精度を更に向上させることが可能となる。
【０１１６】
以上、本発明を実施するための最良の形態について、添付図面を参照しながら説明したが、本発明はかかる構成に限定されない。特許請求の範囲の発明された技術的思想の範疇において、当業者であれば、各種の変更例及び修正例に想到し得るものであり、それら変更例及び修正例についても本発明の技術的範囲に属するものと了解される。
【産業上の利用可能性】
【０１１７】
本発明の学習方法および学習システムは、必ずしも日本語の文書における誤り判定のためにニューラル・ネットワークを学習することに限定されず、任意の言語の文書における誤り判定のためにも同様にニューラル・ネットワークを学習することができる。
【０１１８】
したがって、本発明の誤り判定方法および誤り判定システムは、コンピュータプログラムのソースリストのように、人間の言語以外の文字情報における誤り判定にも適用可能であることから、プログラムのバグ取りのために利用することも可能である。
【符号の説明】
【０１１９】
１０・・統合システム、
１１・・バス、
１２・・ＣＰＵ、
１３・・外部記録媒体、
１４・・記録媒体読取部、
１５・・ディスプレイ、
１６・・キー入力部、
１７・・通信部、
１８・・記憶装置、
２０・・メモリ、
２１・・学習プログラム、
２２・・誤り判定プログラム、
２３・・書込可能データエリア、
３０・・記事データベース。
【図１】
2020035023.tif 000005
【図２】
2020035023.tif 000006
【図３】
2020035023.tif 000007
【図４】
2020035023.tif 000008
【図５】
2020035023.tif 000009