(57)【要約】【課題】数式を入力し、プログラムのコードとして出力する情報処理装置において、多様な入力方式に対応し、コード化の工程を削減する。【解決手段】データ読取部１１１は、文書ファイルの中から、数式が画像又はテキストで記載された部分である数式部分を判別して抜き出す。数式判定部１１２は、抜き出した数式部分を学習モデル１３１（数式分類器）に入力して、対応する既知の数式を特定する。コード生成部１１３は、特定した上記既知の数式に対応するプログラムコードをコードセット１３２に基づいて生成する。【選択図】図２
2020198023.tif 000002
【特許請求の範囲】
【請求項１】
複数の既知の数式とそれぞれの数式を画像又はテキストで記載した数式部分とを結びつけるように学習した数式分類器と、前記既知の数式のそれぞれに対応するプログラムコードを有するコードセットとを記憶する記憶部と、
数式を含む文書ファイルを入力する入力部と、
前記数式が画像又はテキストで記載された部分である数式部分を判別して抜き出し、
抜き出した前記数式部分を前記数式分類器に入力して、対応する前記既知の数式を特定し、
特定した前記既知の数式に対応するプログラムコードを前記コードセットに基づいて生成する
制御部と、
を具備する
情報処理装置。
【請求項２】
請求項１に記載の情報処理装置であって、
前記制御部は、
抜き出した前記数式部分に含まれる数式が前記既知の数式のいずれかであるか否かを判断し、
前記数式が前記既知の数式の１つでない場合は、前記数式部分を複数の数式部分の組み合わせに分解し、分解された前記複数の数式部分の各々を前記数式分類器に入力する
情報処理装置。
【請求項３】
請求項１又は２に記載の情報処理装置であって、
前記制御部は、
前記数式部分のデータ形式がテキストである場合、当該テキストの意味を解析し、
解析した前記テキストの意味に基づいて、前記数式部分に含まれる前記数式に対応する前記既知の数式を特定する
情報処理装置。
【請求項４】
請求項１から３のいずれかに記載の情報処理装置であって、
前記制御部は、
前記既知の数式を特定した後に、特定した前記既知の数式に対応するプログラムコードを含む前記コードセットを、ネットワーク上のサーバー装置からダウンロードして前記記憶部に記憶させ、ダウンロードした前記コードセットに基づいて、前記文書ファイルに含まれる前記数式に対応するプログラムコードを生成する
情報処理装置。
【請求項５】
複数の既知の数式とそれぞれの数式を画像又はテキストで記載した数式部分とを結びつけるように学習した数式分類器と、前記既知の数式のそれぞれに対応するプログラムコードを有するコードセットとを記憶し、
数式を含む文書ファイルを入力し、
前記数式が画像又はテキストで記載された部分である数式部分を判別して抜き出し、
抜き出した前記数式部分を前記数式分類器に入力して、対応する前記既知の数式を特定し、
特定した前記既知の数式に対応するプログラムコードを前記コードセットに基づいて生成する
情報処理方法。
【請求項６】
コンピュータに、
複数の既知の数式とそれぞれの数式を画像又はテキストで記載した数式部分とを結びつけるように学習した数式分類器と、前記既知の数式のそれぞれに対応するプログラムコードを有するコードセットとを記憶する処理と、
数式を含む文書ファイルを入力する処理と、
前記数式が画像又はテキストで記載された部分である数式部分を判別して抜き出す処理と、
抜き出した前記数式部分を前記数式分類器に入力して、対応する前記既知の数式を特定する処理と、
特定した前記既知の数式に対応するプログラムコードを前記コードセットに基づいて生成する処理を
実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、方法及びプログラムに関する。
【背景技術】
【０００２】
情報システムを構築する際に、数式のプログラムをコーディングすることは珍しくない。しかし、数式が複雑になるとコーディングにおける実装ミスが発生する可能性が上昇する。実装ミスによりデバッグに工数が取られ、プロジェクトの進捗に遅れが生じる場合もある。数式を容易にコード化できるシステムが望まれている。
【０００３】
特許文献１には、ラダーダイアグラム上で直接数式を入力することで複雑なラダーコードの記述をなくし、編集やデバッグ作業の労力を低減することが記載されている。特許文献２には、入力された計算をするコードを自動的に生成する技術が紹介されている。しかしながら、ユーザーが入力する数式の記載フォーマットが決まっている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００２−１４０１０５号公報
【特許文献２】特開平０４−１４１７３１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従来技術においては、複雑な数式を自動的にコード化することが困難であった。また、紙に手書きした数式に基づいて自動的にコード化することも困難であった。
【０００６】
本発明は、上記実情に鑑みてなされたものであり、数式を入力し、プログラムのコードとして出力する情報処理装置において、多様な入力方式に対応し、コード化の工程を削減することを目的とする。
【課題を解決するための手段】
【０００７】
（１）上記目的を達成する本発明の一形態は、
複数の既知の数式とそれぞれの数式を画像又はテキストで記載した数式部分とを結びつけるように学習した数式分類器と、前記既知の数式のそれぞれに対応するプログラムコードを有するコードセットとを記憶する記憶部と、
数式を含む文書ファイルを入力する入力部と、
前記数式が画像又はテキストで記載された部分である数式部分を判別して抜き出し、
抜き出した前記数式部分を前記数式分類器に入力して、対応する前記既知の数式を特定し、
特定した前記既知の数式に対応するプログラムコードを前記コードセットに基づいて生成する
制御部と、
を具備する
情報処理装置である。
【０００８】
本実施形態によれば、文書ファイルから数式の含まれる部分（数式部分）を抜き出し、抜き出した部分に含まれる数式を機械学習により学習済みの学習モデルにより特定し、特定した数式に対応するプログラムコードをコードセットに基づいて生成する。これにより、多様な入力方式に対応し、コード化の工程を削減することができる。
【０００９】
（２）本実施形態において、前記制御部は、
抜き出した前記数式部分に含まれる数式が前記既知の数式のいずれかであるか否かを判断し、
前記数式が前記既知の数式の１つでない場合は、前記数式部分を複数の数式部分の組み合わせに分解し、分解された前記複数の数式部分の各々を前記数式分類器に入力する。
【００１０】
本実施形態によれば、数式が既知の数式の１つでない場合は上記数式部分を複数の数式部分の組み合わせに分解し、分解した各々から対応する既知の数式を特定するため、未知の数式に対しても対応することができる。
【００１１】
（３）本実施形態において、前記制御部は、
前記数式部分のデータ形式がテキストである場合、当該テキストの意味を解析し、
解析した前記テキストの意味に基づいて、前記数式部分に含まれる前記数式に対応する前記既知の数式を特定する。
【００１２】
本実施形態によれば、数式部分のデータ形式がテキストである場合はさらに、そのテキストの意味するところに基づいて、その数式に対応する既知の数式を特定するため、精度よく数式をコード化することができる。
【００１３】
（４）本実施形態において、前記制御部は、
前記既知の数式を特定した後に、特定した前記既知の数式に対応するプログラムコードを含む前記コードセットを、ネットワーク上のサーバー装置からダウンロードして前記記憶部に記憶させ、ダウンロードした前記コードセットに基づいて、前記文書ファイルに含まれる前記数式に対応するプログラムコードを生成する。
【００１４】
本実施形態によれば、コードセットをネットワーク上のサーバー装置からダウンロードするため、情報処理装置に適当なコードセットがない場合でも、多様な数式と多様なプログラムに対応することができる。
【００１５】
（５）上記目的を達成する本発明の他の一形態は、
複数の既知の数式とそれぞれの数式を画像又はテキストで記載した数式部分とを結びつけるように学習した数式分類器と、前記既知の数式のそれぞれに対応するプログラムコードを有するコードセットとを記憶し、
数式を含む文書ファイルを入力し、
前記数式が画像又はテキストで記載された部分である数式部分を判別して抜き出し、
抜き出した前記数式部分を前記数式分類器に入力して、対応する前記既知の数式を特定し、
特定した前記既知の数式に対応するプログラムコードを前記コードセットに基づいて生成する
情報処理方法である。
【００１６】
（６）上記目的を達成する本発明の他の一形態は、
コンピュータに、
複数の既知の数式とそれぞれの数式を画像又はテキストで記載した数式部分とを結びつけるように学習した数式分類器と、前記既知の数式のそれぞれに対応するプログラムコードを有するコードセットとを記憶する処理と、
数式を含む文書ファイルを入力する処理と、
前記数式が画像又はテキストで記載された部分である数式部分を判別して抜き出す処理と、
抜き出した前記数式部分を前記数式分類器に入力して、対応する前記既知の数式を特定する処理と、
特定した前記既知の数式に対応するプログラムコードを前記コードセットに基づいて生成する処理を
実行させるためのプログラムである。
【発明の効果】
【００１７】
本発明によれば、数式を入力し、プログラムのコードとして出力する情報処理装置において、多様な入力方式に対応し、コード化の工程を削減することができる。
【００１８】
なお、ここに記載された効果は必ずしも限定されるものではなく、本発明中に記載されたいずれかの効果であってもよい。
【図面の簡単な説明】
【００１９】
【図１】本発明の一実施形態に係る情報処理装置の構成を示す。
【図２】上記情報処理装置の機能構成を示す。
【図３】文書ファイルの読取の動作フローを示す。
【図４】学習モードの動作フローを示す。
【図５】生成モードの動作フローを示す。
【図６】「画像データ」に対するレイアウト解析について説明するための概念図である。
【図７】学習モードにおける処理について説明するための概念図である。
【図８】画像の数式判定を説明するための概念図である。
【図９】テキストの数式判定を説明するための概念図である。
【図１０】未知の数式が含まれている数式部分の一例と、その解析結果の一例を示す概念図である。
【図１１】コードセットの取得方法を説明するための概念図である。
【発明を実施するための形態】
【００２０】
以下、図面を参照しながら、本発明の実施形態を説明する。
【００２１】
１．情報処理装置
【００２２】
図１は、本発明の一実施形態に係る情報処理装置の構成を示す。
【００２３】
情報処理装置１０は、例えば、汎用のパーソナルコンピューターにより構成される。情報処理装置１０は、プロセッサ１１、メモリー１２、ＲＡＭ（Random Access Memory）１３、入力装置１４、出力装置１５を備えるハードウエア構成である。
【００２４】
プロセッサ１１は、情報処理装置１０の制御・演算装置である。メモリー１２は、不揮発性の２次記憶装置である。ＲＡＭ１３は、揮発性の１次記憶装置である。
【００２５】
入力装置１４は、プロセッサ１１に情報を入力する装置の総称である。入力装置１４の一例としては、例えば、ネットワークデバイス、キーボードなどの操作入力デバイス、イメージスキャナーなどがある。入力装置１４は、情報処理装置１０内部の内部ストレージ、可搬性記憶媒体や外付けハードディスクドライブといった外部ストレージ、ネットワークを介した通信から入力されたデータを受け取ることができる。
【００２６】
出力装置１５は、プロセッサ１１の情報処理結果を出力する装置の総称である。出力装置１５の一例としては、例えば、ネットワークデバイス、ディスプレイなどの表示出力デバイス、可搬性記憶媒体などがある。本実施形態において、出力装置１５は、情報処理装置１０の内部に備え付けるものとしたが、これに限定されず、ユーザーの携帯端末といった情報処理装置１０の外部の端末に情報処理結果を出力させてもよい。
【００２７】
メモリー１２は、オペレーティング・システム１２１と、アプリケーション１２２を記憶している。オペレーティング・システム１２１は情報処理装置１０の基本的な入出力のための基本ソフトウェアプログラムである。アプリケーション１２２は、本実施形態の情報処理を実現するための応用ソフトウェアプログラムである。
【００２８】
ＲＡＭ１３は、学習モデル１３１と、コードセット１３２を一時的に記憶している。学習モデル１３１と、コードセット１３２については、外部ストレージやネットワーク上のサーバー装置からダウンロードされてもよい。
【００２９】
学習モデル１３１は、後述する学習モードによる機械学習により数式判別器として機能するように構成されたモデルである。
【００３０】
コードセット１３２は、あらかじめ各数式のコードが、各プログラミング言語で実装されているものである。本実施形態では、コードセット１３２に実装されている数式は、既知のものとして扱われる。プログラミング言語は、ＪＡＶＡ（登録商標）など任意の言語を採用できる。
【００３１】
２．情報処理装置の機能構成
【００３２】
図２は、上記情報処理装置の機能構成を示す。
【００３３】
図示のように、プロセッサ１１は、上記アプリケーション１２２をメモリー１２から読み出し、ＲＡＭ１３に展開してロードすることにより、データ読取部１１１、数式判定部１１２、コード生成部１１３、データ学習部１１４の各機能ブロックを具備するように構成される。
【００３４】
プロセッサ１１は、「学習モード」と「生成モード」の２つのモードで動作するように構成される。「学習モード」と「生成モード」の２モードは、本実施形態の動作が実行される前に設定され、プロセッサ１１は、データ読取部１１１による処理の後に、設定されたモードの動作を実行する。生成モードでは、入力された文書ファイルに基づいてプログラムコードを生成する。学習モードでは、プロセッサ１１は、文書ファイル中の数式が含まれる部分と、出力されるべきプログラムコードを入力し、学習モデル１３１に学習させる。
【００３５】
データ読取部１１１は、入力装置１４により入力された文書ファイルを、プロセッサ１１内部に読み取り、文書ファイルの種類を判別する。文書ファイルは、デジタルデータである。データ読取部１１１が読み取る文書ファイルのファイルフォーマットは、例えば、ＪＰＧなどの画像ファイルフォーマット、ＴＸＴなどのテキストデータ用のファイルフォーマット、ハイパーテキストに付属する画像を含むＨＴＭＬ、ＸＭＬ、ＰＤＦといった画像やテキストが混在したファイルフォーマットでもよい。
【００３６】
文書ファイルには、テキストのファイルフォーマットであれ、画像のファイルフォーマットであれ、数式が記載された部分（数式部分）と、それ以外の部分（非数式部分）が存在する。データ読取部１１１は、数式が記載された部分（数式部分）を分離し、分離した当該数式部分を数式判定部１１２に入力して処理させる。
【００３７】
数式判定部１１２は、データ読取部１１１により入力された数式部分の数式が何であるかを判定する。本実施形態では、ある数式について、その意味がユーザーあるいは情報処理装置１０にわかっており、その数式が何であるか判明しているものを「既知の数式」と呼ぶ。
【００３８】
上記数式の判定の際、数式判定部１１２は、基本的には、上記数式部分が既知の数式のいずれかであることを判定し、当該既知の数式を特定する。さらに数式判定部１１２は、上記数式部分が既知の数式の組み合わせであることを判定し、要素ごとに分解し、各要素が既知の数式のいずれかであることを判定し、当該既知の数式を特定する。
【００３９】
コード生成部１１３は、数式判定部１１２が判定した数式と、コードセット１３２とに基づいて、ユーザーにより指定されたプログラミング言語で、コード（以下、プログラムコードと呼ぶ）を生成する。プログラムコードの出力形態は、画像でもテキストでもよい。
【００４０】
データ学習部１１４は、文書ファイル中の数式が含まれる部分と、出力されるべきプログラムコードを入力し、学習モデル１３１に学習させる。これにより、データ学習部１１４は、学習モデル１３１を「数式判別器」として機能させる。
【００４１】
以下、上記各ブロックの動作について、図３から図５のフローチャート図、図６から図１１の概念図を参照しながら説明する。
【００４２】
３．文書ファイルの読取
【００４３】
図３は、文書ファイルの読取の動作フローを示す。
【００４４】
（Ｓ１０１）
データ読取部１１１は、上記学習モードと上記生成モードのいずれにおいても、文書ファイルの読取処理を実行する。データ読取部１１１は、入力装置１４により入力されたデータを情報処理装置１０ないし制御回路１１の内部に入力する。
【００４５】
（Ｓ１０２）
続いてデータ読取部１１１は、入力した文書ファイルのデータの種類を判別する。ここでいう「データの種類」は、本実施形態では、「テキストデータ」「画像データ」「テキストデータと画像データの複合」であるものとする。
【００４６】
データの種類の判別方法は多く存在するが、本実施形態ではデータのファイルフォーマットから判別する。例えば、文書ファイルのファイルフォーマットがＪＰＧであった場合、それは画像データであると判断できる。同様に、文書ファイルのファイルフォーマットがＴＸＴであった場合、それはテキストデータであると判断できる。また、ＨＴＭＬ，ＸＭＬ，ＰＤＦといったフォーマットは、テキストと画像が混在した、上記「テキストデータと画像データの複合」であると判断できる。
【００４７】
（Ｓ１０３）
続いてデータ読取部１１１は、文書ファイルのレイアウトを解析する。ただし、本実施形態では、「テキストデータ」に対してレイアウト解析を省略する。
【００４８】
「テキストデータと画像データの複合」に対するレイアウト解析については、例えば、ＨＴＭＬ，ＸＭＬ，ＰＤＦといったフォーマットは、内部のデータ構成が決まっているので、データ構成を解析することで各々の位置がわかるので、画像やテキストデータの分離が可能になる。
【００４９】
「画像データ」に対するレイアウト解析については、例えば、次のような処理を実行する。ここでレイアウトの解析対象となる画像データは、例えば、スキャン画像のようなものを想定している。図６を参照して、「画像データ」に対するレイアウト解析について説明する。
【００５０】
まず、データ読取部１１１は、画像データに対して、一まとまりにできるコンポーネントを検出する。具体的な手段としては画像中の黒画素を膨張させて黒画素が卓越する矩形を検出する方法などがある。これにより、データ読取部１１１は、例えば、図６の破線で囲った３つの矩形のように、１以上複数のコンポーネントを検出する。
【００５１】
続いてデータ読取部１１１は、検出したコンポーネントの各々に対して、そのコンポーネントの内容が文字列か否かを判断する。この判断には、例えば自己相関関数を利用するピッチ検出などの公知の方法が利用できる。日本語やアルファベットで書かれた文章には、文字と文字の間に所定のピッチやガーターが存在する。図６中のコンポーネント（ａ）とコンポーネント（ｃ）には、文字間にピッチが検出され、コンポーネント（ｂ）にはピッチが検出されない。データ読取部１１１は、このような方法により「画像データ」に対するレイアウト解析を実行する。
【００５２】
（Ｓ１０４）
続いてデータ読取部１１１は、文書ファイルをコンポーネントごとに分解する。文書ファイルのデータの種類が「テキストデータ」である場合は、自然言語解析により文書ファイルをコンポーネントごとに分解し、数式のコンポーネント（数式部分）を分離する。文書ファイルのデータの種類が「画像データ」である場合は、上述した方法により分解し、検出された数式のコンポーネント（例えば、図６のコンポーネント（ｂ））を文書ファイルから分離する。
【００５３】
さらに文書ファイルのデータの種類が「テキストデータと画像データの複合」である場合は、上述のように内部のデータ構造に基づいて分解し、例えば自然言語解析により数式部分を分離する。なお、この場合において数式部分のデータ形式はテキストである場合と画像である場合の２通りある。
【００５４】
データ読取部１１１は、以上のようにして文書ファイルから分離した数式が含まれるコンポーネント（数式部分）を分離し、後段の数式判定部１１２又はデータ学習部１１４に入力する。以下では、まず、データ学習部１１４による学習モードの動作から説明し、次に、数式判定部１１２とコード生成部１１３による生成モードの動作を説明する。
【００５５】
４．学習モードの動作
【００５６】
図４は、学習モードの動作フローを示す。
【００５７】
（Ｓ２０１）
前述したデータ読取部１１１の処理により、文書ファイルからは数式部分と非数式部分が分離されている。データ学習部１１４に、上記数式部分が入力される。上述したように、入力される数式部分のデータ形式には、テキストデータと画像データ（バイナリデータ）がある。
【００５８】
図７に、入力される「数式部分」の具体例を示す。図７（ａ）と図７（ｃ）は画像のデータ形式の数式部分の一例である。図７（ｂ）はテキストのデータ形式の数式部分の一例である。図７（ａ）と図７（ｃ）の違いは、図７（ａ）が数式のみを含んでいるのに対し、図７（ｃ）は数式の前後の文章も画像として含んでいる点が違う。
【００５９】
（Ｓ２０２）
データ学習部１１４は、学習を行うデータである数式部分に対して、前処理を施す。ここで言う前処理とは、数式部分のデータ形式が画像ならば、例えば、フィルタリングでノイズの除去を行い、画像品質を向上する処理が一例として挙げられる。データ形式がテキストならば、例えば、数式に付随する説明書きを除去するといった処理が一例として挙げられる。前処理を行うことにより、精度のよい学習モデル１３１を得ることができる。
【００６０】
数式部分のデータ形式画像であり、数式の前後の文章も画像として含んでいる場合（図７（ｃ）の場合）、本実施形態では、ユーザーの操作入力により、数式の部分のみを手動で矩形に囲んで、数式の部分を指定する処理が前処理になる。ユーザー操作入力により指定される数式の部分の一例が、図７（ｃ）中の破線により示されている。
【００６１】
（Ｓ２０３）
続いて、データ学習部１１４には、数式の意味情報が入力される。数式の意味情報は、例えば、ユーザーの操作入力により入力される。ここで言う数式の意味情報は、Ｓ２０１で入力した数式の意味を示す情報であり、その数式が何であるかを示す情報である。例えば、「Ｓ２０１で入力した数式が尤度方程式である」ことを示す情報が、ここで入力される。
【００６２】
（Ｓ２０４）
続いて、データ学習部１１４は、Ｓ２０１で入力した数式部分のデータ形式に応じて、場合分けして処理を行う。本実施形態では、データ形式が画像である場合と、テキストである場合とで処理を分ける。
【００６３】
（Ｓ２０５）
数式部分のデータ形式が画像である場合（図７（ａ）（ｃ）の場合）、データ学習部１１４は、例えば畳み込み・ニューラル・ネットワーク（ＣＮＮ：Convolutional Neural Network）によって、数式部分の画像と、当該画像中の数式の意味情報との対応付けを学習モデル１３１に学習させる。この場合、具体的には、学習モデル１３１は、画像の特徴量と数式の意味情報との対応付けを学習する。
【００６４】
（Ｓ２０６）
数式部分のデータ形式がテキストである場合（図７（ｂ）の場合）、データ学習部１１４は、入力された数式部分のテキストと、例えば、「上記という文字列が存在する場合、上記が表れている箇所より前のデータ部に着目する」「方程式は数式である」「数式とはアルファベット、数字、記号で構成されている」「発見した数式は尤度方程式である」といった意味付けとの対応を、学習モデル１３１に学習させる。
【００６５】
データ学習部１１４は、以上のようにして、学習モデル１３１を精度のよい数式分類器として機能させる。
【００６６】
５．生成モードの動作
【００６７】
図５は、生成モードの動作フローを示す。
【００６８】
（Ｓ３０１）
生成モードにおいて、数式判定部１１２は、データ読取部１１１により文書ファイルから抜き出された数式を含むコンポーネント（数式部分）を学習モデル１３１に入力する。
【００６９】
（Ｓ３０２）
数式判定部１１２は、入力した数式部分に記載されている数式が何であるかを判定する。当該数式が既知のものである場合、判定結果が得られ、他方で未知のものである場合は判定結果が得られない。既知の数式というのは、コードセット１３２によりコード化が可能な数式である。コードセット１３２はコード化が可能な数式をリストとして提供しているため、数式判定部１１２は、判定結果が当該リストの中に該当するものがあるかないかを判定することにより、数式が既知であるか、それとも未知であるかを判定する。
【００７０】
（Ｓ３０３）
数式が既知のものである場合、数式判定部１１２は、学習モデル１３１により当該既知の数式を得る。以下、具体的な数式判定について、数式部分のデータ形式が画像である場合とテキストである場合に分けて説明する。
【００７１】
図８には、本実施形態における画像の数式判定を説明するための概念図が示されている。学習モデル１３１は、畳み込み・ニューラル・ネットワーク（ＣＮＮ：Convolutional Neural Network）方式で教師あり機械学習済みのモデルである。学習モデル１３１は数式部分（画像）が入力されると、画像の特徴量に応じて複数の既知の数式のそれぞれに該当する可能性への確信度を数値で出力する。数式判定部１１２は、確信度が最も高い「既知の数式」を数式部分に記載されている数式であると判定する。
【００７２】
図９には、本実施形態におけるテキストの数式判定を説明するための概念図が示されている。図中破線の矩形で囲われた部分が入力された数式部分（テキスト形式）の一例である。テキストから数式を判定する場合、数式判定部１１２は、上記ＣＮＮの代わりに意味づけ学習をさせた学習モデル１３１を用いる。数式判定部１１２は、まずテキスト解析により、例えば「上記」「方程式」といったキーワードを発見する（Ｓ４０１）。
【００７３】
「上記」「方程式」といったキーワードの意味に基づいて、数式判定部１１２は、キーワードを発見した箇所より以前の記載部分を検索する（Ｓ４０２）。数式判定部１１２は、このように検索箇所を絞り込んだ上で精度よく、数字と記号で構成された文章を数式として検出する（Ｓ４０３）。さらに数式判定部１１２は、上記キーワードの中に数式の名称に関する情報があれば、検出した数式と、名称に関する情報とを関連付ける。
【００７４】
数式判定部１１２は、学習モデル１３１を用いて検出した数式が既知の数式のいずれに当てはまるかを判定する。その際、関連付けた名称に関する情報と、数式部分に含まれるテキストの内容を補助的に判定に用いる。学習モデル１３１を用いた判定においては画像の場合と同じく確信度が最も高い「既知の数式」を数式部分に記載されている数式であると判定する方法で判定する。
【００７５】
（Ｓ３０４）
数式が未知のものである場合、数式判定部１１２は、まず数式部分を解析して、その解析結果により数式の中身と構成を取得する。具体的には、数式部分に記載されている数式を要素ごとに分解する。その際、各数式の要素は、それぞれが既知の数式に当てはまるまで繰り返し分解される。次に、数式判定部１１２は、既知の数式であることが判定されるまで分解された各要素に含まれている変数、定数、他の数式の要素との関係を解析する。
【００７６】
図１０（ａ）に、未知の数式が含まれている数式部分の一例を、図１０（ｂ）に、その解析結果の一例を示す。（ａ）に示されているような数式部分が画像で与えられた場合、数式判定部１１２は、画像処理とテキスト解析処理により、三角関数を表している数式要素、総和を表している数式要素、２乗を表している数式要素、分数を表している数式要素に分解する。続いて、既知の数式を参照して各要素の変数や要素を抽出する。さらに、各要素間の関連を取得する。
【００７７】
（Ｓ３０５）
未知の数式であっても、上述の方法により既知の数式の組み合わせに分解することができる。数式判定部１１２は、分解した数式要素の各々に対して、学習モデル１３１を用いた既知の数式のいずれに該当するかを判定する。この判定の具体的方法は、Ｓ３０３の方法が利用される。
【００７８】
（Ｓ３０６）
本実施形態において、生成されるコードのプログラミング言語は、あらかじめユーザーによる操作入力などにより指定されている。コード生成部１１３は、指定されているプログラミング言語のコードセット１３２を情報処理装置１０の内部から、すなわち、ＲＡＭ１３から取得する。あるいは、情報処理装置１０の外部のネットワーク上のサーバー装置（不図示）からＲＡＭ１３にダウンロードして取得する。
【００７９】
図１１に、本実施形態において２通り用意されているコードセット１３２の取得方法を説明するための概念図を示す。図示のように、コード生成部１１３によるコード生成の方法には２つの方法があり、一つはあらかじめＲＡＭ１３に記憶されているコードセット１３２を利用してコードを取得する方法（図中、上段）である。もう一つは、インターネット上で公開されている実装をダウンロードする方法である。インターネット上では世界中で非常に多くのコードが公開されている。そこで、数式判定部１１２により判定された数式の名称（例えば、「尤度方程式」）を検索キーワードとしてインターネット上で検索し、そこで発見したライセンスフリーなコードをダウンロードする。
【００８０】
（Ｓ３０７）
以上のようにして取得したコードセット１３２に基づいて、コード生成部１１３は、数式判定部１１２により数式部分から判定された既知の数式あるいは既知の数式の組み合わせに対し、当該既知の数式に対応するコードを生成する。
【００８１】
上述の本実施形態によれば、コードの自動生成に当たって、入力方式が数式の画像であってもテキストであってもよく、その他、これらの組み合わせであってもよい。さらに本実施形態では、画像解析をするため、数式を手入力しなくてもよく、手間が省ける。さらに本実施形態によれば、書籍や手書きの数式であっても入力できる。
【００８２】
５．付記
【００８３】
（１）本実施形態によれば、文書ファイルから数式の含まれる部分（数式部分）を抜き出し、抜き出した部分に含まれる数式を機械学習により学習済みの学習モデルにより特定し、特定した数式に対応するプログラムコードをコードセットに基づいて生成する。これにより、多様な入力方式に対応し、コード化の工程を削減することができる。
【００８４】
（２）本実施形態によれば、数式が既知の数式の１つでない場合は上記数式部分を複数の数式部分の組み合わせに分解し、分解した各々から対応する既知の数式を特定するため、未知の数式に対しても対応することができる。
【００８５】
（３）本実施形態によれば、数式部分のデータ形式がテキストである場合はさらに、そのテキストの意味するところに基づいて、その数式に対応する既知の数式を特定するため、精度よく数式をコード化することができる。
【００８６】
（４）本実施形態によれば、コードセットをネットワーク上のサーバー装置からダウンロードするため、情報処理装置に適当なコードセットがない場合でも、多様な数式と多様なプログラムに対応することができる。
【００８７】
本技術の実施形態について上に説明したが、本技術は上述の実施形態にのみ限定されるものではなく、本技術の要旨を逸脱しない範囲内において種々変更を加え得ることは勿論である。
【符号の説明】
【００８８】
１０…情報処理装置
１１…プロセッサ
１１１…データ読取部
１１２…数式判定部
１１３…コード生成部
１１４…データ学習部
１２…メモリー
１２１…オペレーティング・システム
１２２…アプリケーション
１３…ＲＡＭ
１３１…学習モデル
１３２…コードセット
１４…入力装置
１５…出力装置
【図１】
2020198023.tif 000003
【図２】
2020198023.tif 000004
【図３】
2020198023.tif 000005
【図４】
2020198023.tif 000006
【図５】
2020198023.tif 000007
【図６】
2020198023.tif 000008
【図７】
2020198023.tif 000009
【図８】
2020198023.tif 000010
【図９】
2020198023.tif 000011
【図１０】
2020198023.tif 000012
【図１１】
2020198023.tif 000013