JP7298192B2 - 生成装置、生成方法及びプログラム - Google Patents

生成装置、生成方法及びプログラム Download PDF

Info

Publication number
JP7298192B2
JP7298192B2 JP2019037605A JP2019037605A JP7298192B2 JP 7298192 B2 JP7298192 B2 JP 7298192B2 JP 2019037605 A JP2019037605 A JP 2019037605A JP 2019037605 A JP2019037605 A JP 2019037605A JP 7298192 B2 JP7298192 B2 JP 7298192B2
Authority
JP
Japan
Prior art keywords
data
character
word
characters
appearances
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2019037605A
Other languages
English (en)
Other versions
JP2020140627A (ja
Inventor
正彬 西野
努 平尾
昌明 永田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2019037605A priority Critical patent/JP7298192B2/ja
Priority to PCT/JP2020/007211 priority patent/WO2020179519A1/ja
Priority to US17/435,002 priority patent/US20220138434A1/en
Publication of JP2020140627A publication Critical patent/JP2020140627A/ja
Application granted granted Critical
Publication of JP7298192B2 publication Critical patent/JP7298192B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/40Processing or translation of natural language
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/126Character encoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/151Transformation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/205Parsing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/205Parsing
    • G06F40/216Parsing using statistical methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/01Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Databases & Information Systems (AREA)
  • Algebra (AREA)
  • Probability & Statistics with Applications (AREA)
  • Evolutionary Computation (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Machine Translation (AREA)

Description

本発明は、生成装置、生成方法及びプログラムに関する。
言葉遊びの一種としてアナグラムが知られている。アナグラムとは、与えられた文(又は、単語やフレーズ(句)等)に含まれる文字を並び替えて、別の文(又は、別の単語や別のフレーズ等)を作成することである。また、このように作成された別の文(又は、別の単語や別のフレーズ等)自体をアナグラムと言うこともある。例えば、「Trims cash」は「Christmas」のアナグラムである。
与えられた文(又は、単語やフレーズ等)からアナグラムを自動的に生成する技術が知られている(非特許文献1)。
"Internet anagram server", [online], <URL: https://wordsmith.org/anagram/>
しかしながら、アナグラムを生成する従来技術では、生成された文字列(アナグラム)の自然さを考慮するのが困難であった。すなわち、従来技術では、例えば、与えられた文字列に含まれる全ての文字を使った他の文字列を生成することはできるものの、人間が読んだ場合に意味がわからない文字列が生成されてしまうことがあった。
本発明は、上記の点に鑑みてなされたもので、与えられた文字列を並び替えて、自然さを考慮した他の文字列を生成することを目的とする。
上記目的を達成するため、本発明の実施の形態における生成装置は、生成対象の文字列に含まれる複数の文字に関するデータである第1のデータを入力する入力手段と、前記第1のデータに基づいて、文字の並びの尤もらしさに関する条件が少なくとも含まれる所定の制約条件を満たす前記文字列に関するデータである第2のデータを生成する生成手段と、を有することを特徴とする。
与えられた文字列を並び替えて、自然さを考慮した他の文字列を生成することができる。
本発明の実施の形態における生成装置の機能構成の一例を示す図である。 本発明の実施の形態における生成装置のハードウェア構成の一例を示す図である。 本発明の実施の形態におけるアナグラム生成及び出力処理の一例を示すフローチャートである。 本発明の実施の形態における出現回数ベクトル及び行列の作成処理の一例を示すフローチャートである。 出現回数ベクトルF及び行列Xの一例を説明するための図である。 本発明の実施の形態における探索処理の一例を示すフローチャートである。
以下、本発明の実施の形態について説明する。本発明の実施の形態では、与えられた文字列を並び替えて、自然さを考慮した他の文字列を生成する生成装置10について説明する。
ここで、生成装置10に与えられる文字列としては、例えば文が挙げられるが、必ずしも文でなくてもよい。文字列としては、例えば、単語やフレーズ(句)、節であってもよいし、単語の集合であってもよい。又は、例えば、1つ以上の文字とこれら各文字の個数とが生成装置10に与えられてもよい。以降では、一例として、生成装置10に与えられる文字列は文であるものとし、この文に含まれる文字を並び替えて他の文(アナグラム)を生成する場合について説明する。
本発明の実施の形態における生成装置10は、与えられた文に含まれる文字を並び替えた文(アナグラム)を深さ優先探索アルゴリズムにより探索しつつ、探索の途中で所定の言語モデルを用いて文の自然さに関する条件を評価する。そして、本発明の実施の形態における生成装置10は、自然さに関する条件を満たさない文の探索を打ち切ることで(つまり、枝刈りを行うことで)、効率的に自然なアナグラムを生成する。
なお、上記の文の自然さに関する条件も含めて、与えられた文字列を並び替えて他の文字列を生成するために必要な条件を「制約条件」とも表す。したがって、本発明の実施の形態における生成装置10が生成する文字列(例えば、アナグラム)は、「制約条件を満たす文字列」又は「制約条件を満たす並びの文字列」等ということができる。
<生成装置10の機能構成>
まず、本発明の実施の形態における生成装置10の機能構成について、図1を参照しながら説明する。図1は、本発明の実施の形態における生成装置10の機能構成の一例を示す図である。
図1に示すように、本発明の実施の形態における生成装置10は、機能部として、入力部101と、行列作成部102と、探索処理部103と、出力部104と、終了条件判定部105とを有する。また、本発明の実施の形態における生成装置10は、記憶部として、語彙記憶部106と、言語モデル記憶部107とを有する。
語彙記憶部106は、アナグラムを生成する際に利用できる単語の集合を記憶している。
言語モデル記憶部107は、文の自然さを表す値を出力する言語モデルを記憶している。言語モデルとは、文を入力として、その文の次に来る単語の出現確率を出力するモデルのことである。
本発明の実施の形態では、言語モデルは、RNN(Recurrent Neural Network)で実現された言語モデル(以降、「RNN言語モデル」とも表す。)であるものとする。RNN言語モデルでは、任意のi個の単語w1, w2, ・・・, wi-1, wiに対する条件付き確率p(wi|w1, w2, ・・・, wi-1)を出力する。本発明の実施の形態では、この条件付き確率p(wi|w1, w2, ・・・, wi-1)を、単語w1, w2, ・・・, wi-1, wiで構成される文の自然さを表す値(つまり、文の尤もらしさを表す値)として用いる。このとき、条件付き確率p(wi|w1, w2, ・・・, wi-1)が、予め設定された所定の閾値以上である場合には、単語w1, w2, ・・・, wi-1, wiで構成される文は文の自然さに関する条件を満たすものとし、そうでない場合には、単語w1, w2, ・・・, wi-1, wiで構成される文は文の自然さに関する条件を満たさないものとする。
なお、i個の単語w1, w2, ・・・, wi-1, wiで構成される文の出現確率p(w1, w2, ・・・, wi-1, wi)を、この文の自然さを表す値として用いてもよい。この出現確率p(w1, w2, ・・・, wi-1, wi)は、p(w1, w2, ・・・, wi-1, wi)=p(w1)×p(w2|w1)×・・・×p(wi|w1, w2, ・・・, wi-1)と計算することができる。この場合、出現確率p(w1, w2, ・・・, wi-1, wi)が所定の閾値以上である場合には、単語w1, w2, ・・・, wi-1, wiで構成される文は文の自然さに関する条件を満たすものとし、そうでない場合には、単語w1, w2, ・・・, wi-1, wiで構成される文は文の自然さに関する条件を満たさないものとする。
ただし、本発明の実施の形態は、RNN言語モデル以外の言語モデルを用いることも可能である。単語や文字列、文等を入力として、これらの単語や文字列の並び、文自体等に対してその自然さを表す値(その尤もらしさを表す値)を出力する言語モデルであれば、任意の言語モデルを用いることができる。また、言語モデル以外にも、ルールベースの手法等によって、単語や文字列の並び、文の自然さを表す値が取得又は算出されてもよい。
入力部101は、入力データとして、文(以降、「入力文」とも表す。)を入力する。上述したように、入力部101は、入力データとして、単語や句、節、単語の集合、1つ以上の文字とこれら各文字の個数等が入力されてもよい。また、入力データは、音声認識技術等によって音声がテキスト化されたデータであってもよい。したがって、入力データは、生成装置10が生成する文字列(例えば、アナグラム)に含まれる複数の文字に関するデータであればよい。
なお、入力部101は、任意の入力元から入力データを入力すればよい。例えば、入力部101は、補助記憶装置等に記憶されている入力データを入力してもよいし、通信ネットワークを介して接続された他の装置から送信された入力データを受信及び入力してもよいし、キーボード等の入力装置を用いてユーザにより入力された入力データを入力してもよい。
行列作成部102は、入力文に含まれる各文字の出現回数を表す出現回数ベクトルFを作成する。また、行列作成部102は、アナグラムに含まれる候補となる単語を語彙記憶部106から取得し、これら取得した単語に含まれる各文字の出現回数を行ベクトルとした行列Xを作成する。
探索処理部103は、出現回数ベクトルFと、行列Xと、言語モデル記憶部107に記憶されているRNN言語モデルとを用いて、深さ優先探索アルゴリズムにより、自然なアナグラム(つまり、入力データが表す文字列を並び替えた文字列であって、かつ、文の自然さに関する条件を満たす文字列)を探索及び生成する。なお、アナグラムが探索及び生成される度に、深さ優先探索アルゴリズムによってアナグラムを探索及び生成する処理(探索処理)は一度中断され、出力部104により、探索及び生成されたアナグラムが出力される。
出力部104は、出力データとして、探索処理部103により生成されたアナグラムを出力する。このとき、出力部104は、探索処理部103によりアナグラムが生成される度に、当該アナグラムを出力データとして出力する。すなわち、探索処理部103では一般に1つ以上のアナグラムが探索及び生成されるが、出力部104は、これら探索及び生成されたアナグラムを逐次的に出力データとして出力する。なお、入力データや語彙記憶部106に記憶されている単語等によっては、探索処理部103でアナグラムが1つも探索及び生成されないことも有り得る。
出力データは、入力データが表す文字列を並び替えた文字列であって、かつ、文の自然さに関する条件を満たす文字列であれば、文(アナグラム)に限られない。例えば、出力データとして、単語や句、節、単語の集合と各単語の並び順、1つ以上の文字とこれら各文字の個数及び並び順等であってもよい。
なお、出力部104は、任意の出力先に出力データを出力すればよい。例えば、出力部104は、補助記憶装置等に出力データを出力してもよいし、通信ネットワークを介して接続された他の装置に出力データを出力(送信)してもよいし、ディスプレイ等の表示装置に出力データを出力(表示)してもよい。
終了条件判定部105は、出力部104により出力データが出力された場合に、所定の終了条件を満たすか否かを判定する。終了条件判定部105により所定の終了条件を満たさないと判定された場合は、探索処理部103による探索処理が再開される。一方で、所定の終了条件を満たすと判定された場合は、探索処理は終了となる。ここで、所定の終了条件としては、例えば、出力部104により出力された出力データ数が所定の個数となったこと、入力データが表す文字列から全てのアナグラムが探索されたこと、等が挙げられる。
<生成装置10のハードウェア構成>
次に、本発明の実施の形態における生成装置10のハードウェア構成について、図2を参照しながら説明する。図2は、本発明の実施の形態における生成装置10のハードウェア構成の一例を示す図である。
図2に示すように、本発明の実施の形態における生成装置10は、ハードウェアとして、入力装置201と、表示装置202と、外部I/F203と、RAM(Random Access Memory)204と、ROM(Read Only Memory)205と、プロセッサ206と、通信I/F207と、補助記憶装置208とを有する。これら各ハードウェアは、それぞれがバス209を介して通信可能に接続されている。
入力装置201は、例えばキーボードやマウス、タッチパネル等であり、ユーザが各種操作を入力するのに用いられる。表示装置202は、例えばディスプレイ等であり、生成装置10の処理結果(例えば、生成されたアナグラム等)を表示する。なお、生成装置10は、入力装置201及び表示装置202の少なくとも一方を有していなくてもよい。
外部I/F203は、記録媒体203a等の外部記録媒体とのインタフェースである。生成装置10は、外部I/F203を介して、記録媒体203aの読み取りや書き込み等を行うことができる。記録媒体203aには、生成装置10が有する各機能部(例えば、入力部101、行列作成部102、探索処理部103、出力部104及び終了条件判定部105等)を実現する1以上のプログラム等が記録されていてもよい。
記録媒体203aには、例えば、フレキシブルディスク、CD(Compact Disc)、DVD(Digital Versatile Disk)、SDメモリカード(Secure Digital memory card)、USB(Universal Serial Bus)メモリカード等がある。
RAM204は、プログラムやデータを一時保持する揮発性の半導体メモリである。ROM205は、電源を切ってもプログラムやデータを保持することができる不揮発性の半導体メモリである。ROM205には、例えば、OS(Operating System)に関する設定情報や通信ネットワークに関する設定情報等が格納されている。
プロセッサ206は、例えばCPU(Central Processing Unit)やGPU(Graphics Processing Unit)等であり、ROM205や補助記憶装置208等からプログラムやデータをRAM204上に読み出して処理を実行する演算装置である。生成装置10が有する各機能部は、ROM205や補助記憶装置208等に格納されている1以上のプログラムをRAM204上に読み出してプロセッサ206が処理を実行することで実現される。
通信I/F207は、生成装置10を通信ネットワークに接続するためのインタフェースである。生成装置10が有する各機能部を実現する1以上のプログラムは、通信I/F207を介して、所定のサーバ等から取得(ダウンロード)されてもよい。
補助記憶装置208は、例えばHDD(Hard Disk Drive)やSSD(Solid State Drive)等であり、プログラムやデータを格納している不揮発性の記憶装置である。補助記憶装置208に格納されているプログラムやデータには、例えば、OS、当該OS上で各種機能を実現するアプリケーションプログラム、生成装置10が有する各機能部を実現する1以上のプログラム等がある。また、生成装置10が有する各記憶部(例えば、語彙記憶部106や言語モデル記憶部107等)は、例えば補助記憶装置208を用いて実現可能である。ただし、これら各記憶部のうちの少なくとも1つの記憶部が、生成装置10と通信ネットワークを介して接続される記憶装置等を用いて実現されていてもよい。
本発明の実施の形態における生成装置10は、図2に示すハードウェア構成を有することにより、後述するアナグラム生成及び出力処理を実現することができる。なお、図2に示す例では、本発明の実施の形態における生成装置10が1台の装置(コンピュータ)で実現されている場合を示したが、これに限られない。本発明の実施の形態における生成装置10は、複数台の装置(コンピュータ)で実現されていてもよい。また、1台の装置(コンピュータ)には、複数のプロセッサ206や複数のメモリ(RAM204やROM205、補助記憶装置208等)が含まれていてもよい。
<アナグラム生成及び出力処理>
次に、本発明の実施の形態における生成装置10がアナグラムを生成及び出力する処理について、図3を参照しながら説明する。図3は、本発明の実施の形態におけるアナグラム生成及び出力処理の一例を示すフローチャートである。
まず、入力部101は、入力データとして、入力文を入力する(ステップS101)。
次に、行列作成部102は、出現回数ベクトルF及び行列Xを作成する(ステップS102)。なお、出現回数ベクトルF及び行列Xの作成処理の詳細については後述する。
次に、探索処理部103は、出力部104により出力データとして出力される文Sを空文(例えば、S="")に初期化する(ステップS103)。後述する探索処理において、Sに対して単語が追加されることで、出力データとして出力される文(つまり、例えばアナグラム)が生成される。
次に、探索処理部103は、出現回数ベクトルFと、行列Xと、言語モデル記憶部107に記憶されているRNN言語モデルとを用いて、深さ優先探索アルゴリズムにより、制約条件を満たすアナグラムを探索及び生成する(ステップS104)。ここで、探索処理は、出現回数ベクトルFと行列Xと文Sとを引数とする関数SEARCH(F, X, S)が呼び出されることで実行されるものとする。なお、探索処理の詳細については後述する。
探索処理で制約条件を満たすアナグラムが探索及び生成された場合、探索処理は一度中断される(後述するステップS315)。そして、出力部104は、出力データとして、探索処理部103により生成されたアナグラム(つまり、文S)を、例えばディスプレイ等の表示装置202に出力する(ステップS105)。これにより、探索処理で制約条件を満たすアナグラムが探索及び生成される度に、逐次的に、当該アナグラムが表示装置202に表示される。なお、制約条件を満たすアナグラム(S)は、探索処理の解として得られる。
次に、終了条件判定部105は、所定の終了条件を満たすか否かを判定する(ステップS106)。
ステップS106で所定の終了条件を満たすと判定された場合、生成装置10は、アナグラム生成及び出力処理を終了する。
一方で、ステップS106で所定の終了条件を満たさないと判定された場合、探索処理部103は、探索処理の実行を再開する(ステップS107)。すなわち、探索処理部103は、制約条件を満たすアナグラムが探索及び生成されたことによって中断されていた探索処理の実行を再開する。なお、探索処理の実行を再開する際には、探索処理を中断した位置(後述するステップS315)の次の処理から当該探索処理の実行を再開する。
このように、図3に示すアナグラム生成及び出力処理では、探索処理で制約条件を満たすアナグラムが探索及び生成される度に、逐次的に、当該アナグラムを出力データとして出力し、探索処理を継続(再開)するか否かを判定する。ただし、必ずしも逐次的に出力データを出力する必要はなく、例えば、探索処理で制約条件を満たす全てのアナグラムを探索及び生成した後、これら生成されたアナグラムを出力データとして出力してもよい。
《出現回数ベクトルF及び行列Fの作成処理》
次に、上記のステップS102における出現回数ベクトルF及び行列Xを作成する処理について、図4を参照しながら説明する。図4は、本発明の実施の形態における出現回数ベクトル及び行列の作成処理の一例を示すフローチャートである。
まず、行列作成部102は、入力文に含まれる各文字の出現回数を表す出現回数ベクトルFを作成する(ステップS201)。なお、出現回数は、「出現頻度」又は単に「頻度」等と称されてもよい。
ここで、一例として、入力文が「Christmas」である場合の出現回数ベクトルFを図5に示す。入力文が「Christmas」である場合、文字「c」の入力文中における出現回数は1回、文字「h」の入力文中における出現回数は1回、文字「r」の入力文中における出現回数は1回、文字「i」の入力文中における出現回数は1回、文字「s」の入力文中における出現回数は2回、文字「t」の入力文中における出現回数は1回、文字「m」の入力文中における出現回数は1回、文字「a」の入力文中における出現回数は1回である。
したがって、例えば、アルファベット順に各文字の出現回数を並べることで、図5に示す出現回数ベクトルF=(1, 1, 1, 1, 1, 1, 2, 1)が得られる。なお、図5に示す出現回数ベクトルFでは、1次元目が文字「a」、2次元目が文字「c」、3次元目が文字「h」、4次元目が文字「i」、5次元目が文字「m」、6次元目が文字「r」、7次元目が文字「s」、8次元目が文字「t」にそれぞれ対応している。
このように、出現回数ベクトルFは、入力文中の異なる文字の種類数を次元数、各要素を対応する文字の入力文中における出現回数とするベクトルで表される。
次に、行列作成部102は、入力文に含まれる文字で構成される単語であって、単語を構成する各文字の出現回数が、入力文中の当該文字の出現回数以下である単語を語彙記憶部106から取得する(ステップS202)。例えば、入力文が「Christmas」である場合、文字「c」、「h」、「r」、「i」、「s」、「t」、「m」及び「a」のうちの少なくとも1つの文字で構成される単語であって、当該単語を構成する各文字の出現回数が、入力文中の当該文字の出現回数以下である単語が取得される。このような単語としては、例えば、「trims」、「a」、「cash」、「shirts」、「has」等が挙げられる。以降では、一例として、単語「trims」、「a」、「cash」、「shirts」及び「has」が取得されたものとして説明を続ける。
次に、行列作成部102は、上記のステップS202で取得した各単語中の各文字の出現回数を行ベクトルとした行列Xを作成する(ステップS203)。このとき、各行ベクトルの次元数は出現回数ベクトルFと同一とし、かつ、各要素と各文字との対応関係も出現回数ベクトルFと同一とする。なお、単語中に含まれない文字に対応する要素の値(出現回数)は「0」とする。
例えば、単語「trims」の場合、この単語の行ベクトルは(0, 0, 0, 1, 1, 1, 1, 1)となる。同様に、例えば、単語「a」の場合、この単語の行ベクトルは(1, 0, 0, 0, 0, 0, 0, 0)となる。以降も同様に、単語「cash」の行ベクトルは(1, 1, 1, 0, 0, 0, 1, 0)、単語「shirts」の行ベクトルは(0, 0, 1, 1, 0, 1, 2, 1)、単語「has」の行ベクトルは(1, 0, 1, 0, 0, 0, 1, 0)となる。これにより、図5に示す行列Xが作成される。なお、図5に示す行列Xでは、上から順に、単語「trims」の行ベクトル、単語「a」の行ベクトル、単語「cash」の行ベクトル、単語「shirts」の行ベクトル及び単語「has」の行ベクトルをそれぞれ並べたが、この順は任意の順でよい。
このように、行列Xは、アナグラムを構成する単語の候補をそれぞれ各行とし、これら単語の候補に含まれる各文字の出現回数を各要素とする行ベクトルで構成される。
《探索処理》
次に、上記のステップS104及びステップS107における探索処理について、図6を参照しながら説明する。図6は、本発明の実施の形態における探索処理の一例を示すフローチャートである。なお、探索処理は、出現回数ベクトルFと行列Xと文Sとを引数とする関数SEARCH(F, X, S)が呼び出されることで実行される。
まず、探索処理部103は、行列Xの列の数が0であるか否かを判定する(ステップS301)。なお、後述するステップS311では、既に文Sに使用され、これ以上使用できない文字に対応する列が行列Xから削除される。
ステップS301で行列Xの列の数が0でないと判定された場合、探索処理部103は、集合Mを空集合に初期化する(ステップS302)。集合Mは、同一の文Sを引数としたSEARCH(F, X, S)が複数回呼び出されることを防止するためのキャッシュである。
次に、探索処理部103は、出現回数ベクトルFで値が1以上の要素(つまり、文字の出現回数が1以上である要素)に対応する列cであって、後述するステップS304で未だ選択されていない列cが行列Xにあるか否かを判定する(ステップS303)。
ステップS303で該当の列cが行列Xにないと判定された場合、探索処理部103は、探索処理を終了する。この場合、生成装置10は、当該探索処理の呼び出し元の位置(ステップS104、ステップS107、又は後述するステップS312のいずれか)の次の処理を実行する。
一方で、ステップS303で該当の列cがあると判定された場合、探索処理部103は、出現回数ベクトルFで値が1以上の要素に対応する列cであって、未だ選択していない列cを行列Xから選択する(ステップS304)。以降では、本ステップで選択された或る列cを「選択列c」と表す。
次に、探索処理部103は、選択列cで値が1以上の要素であって、後述するステップS306で未だ選択されていない行rに対応する要素が選択列cにあるか否かを判定する(ステップS305)。
ステップS305で該当の要素が選択列cにないと判定された場合、探索処理部103は、ステップS303に戻る。これにより、上記のステップS303では、出現回数ベクトルFで値が1以上の要素に対応する列cであって、未だ選択されていない列cが行列Xにあるか否かが判定される。
一方で、ステップS305で該当の要素が選択列cにあると判定された場合、探索処理部103は、選択列cで値が1以上の要素に対応する行rであって、未だ選択していない行rを行列Xから選択すると共に、この選択した行rに対応する単語wrを選択する(ステップS306)。以降では、本ステップで選択された或る行rを「選択行r」、この選択行rに対応する単語wrを「選択単語wr」と表す。なお、選択単語wrは、語彙記憶部106が選択されればよい。
次に、探索処理部103は、選択単語wrが以下の制約条件1~制約条件3を全て満たすか否かを判定する(ステップS307)。なお、以下の制約条件1が文の自然さに関する条件に該当する。一方で、制約条件2はアナグラムを探索及び生成するための条件、制約条件3はその探索を効率的に行うための条件である。
制約条件1:言語モデル記憶部107に記憶されているRNN言語モデルを用いて条件付き確率p(wr|S)を出力した上で、この条件付き確率p(wr|S)が所定の閾値以上であるか否か
条件付き確率p(wr|S)が所定の閾値以上である場合は制約条件1を満たし、そうでない場合は制約条件1を満たさない。
制約条件2:選択単語wrに含まれる各文字の出現回数が、出現頻度ベクトルFで当該文字に対応する要素の値以下である否か
選択単語wrに含まれる全ての文字の出現回数が、出現頻度ベクトルFでこれら全ての文字にそれぞれ対応する要素の値以下である場合は制約条件2を満たし、そうでない場合は制約条件2を満たさない。
制約条件3:選択単語wrが集合Mに含まれていないか否か
選択単語wrが集合Mに含まれていない場合は制約条件3を満たし、そうでない場合は制約条件3を満たさない。
ステップS307で制約条件1~制約条件3のうちの少なくとも1つの制約条件を満たさないと判定された場合、探索処理部103は、ステップS305に戻る。これにより、上記のステップS305では、選択列cで値が1以上の要素であって、未だ選択されていない行rに対応する要素が選択列cにあるか否かが判定される。このように、制約条件1~制約条件3のうちの少なくとも1つの制約条件を満たさない場合は、深さ優先探索アルゴリズムにおける枝刈りが行われ、効率的にアナグラムを探索及び生成することが可能となる。
一方で、ステップS307で制約条件1~制約条件3の全てを満たすと判定された場合、探索処理部103は、文Sの末尾に選択単語wrを追加した文S´を作成する(ステップS308)。
次に、探索処理部103は、集合Mに選択単語wrを追加する(ステップS309)。
次に、探索処理部103は、行列Xから選択行rを削除すると共に、選択単語wrに含まれる各文字の出現回数を、出現回数ベクトルFの当該文字の要素から減算する(ステップS310)。例えば、選択単語wrが「shirts」である場合、探索処理部103は、図5に示す出現回数ベクトルFの各要素のうち、3次元目の要素と4次元目の要素と6次元目の要素と8次元の要素とからそれぞれ1を減算すると共に、7次元目の要素から2を減算する。以降では、本ステップで選択行rが削除された後の行列Xを「行列X´」と表し、減算後の出現回数ベクトルFを「出現回数ベクトルF´」と表す。
次に、探索処理部103は、出現回数ベクトルF´で値が0の要素に対応する列c´と、この列c´で値が1以上の要素に対応する行r´とを行列X´から削除する(ステップS311)。これにより、選択単語wrが文Sに追加された結果、使用できなくなった文字に対応する列c´と、当該文字が含まれる単語に対応する行r´とが行列X´から削除される。以降では、この削除後の行列X´を「行列X´´」と表す。
次に、探索処理部103は、F=F´、X=X´´、S=S´として関数SEARCH(F, X, S)を呼び出して、探索処理を実行する(ステップS312)。すなわち、探索処理部103は、探索処理を再帰的に実行する。
次に、探索処理部103は、上記のステップS312で実行された探索処理の終了後、バックトラック処理として以下の(1)~(3)を実行する(ステップS313)。
(1)上記のステップS308でSに追加された選択単語wrを削除して、S´をSに戻す。
(2)上記のステップS310で削除された選択行rと、上記のステップS311で削除された列c´及び行r´とを行列X´´に追加して、行列X´´を行列Xに戻す。
(3)上記のステップS310で減算された値を出現回数ベクトルF´に加算して、出現回数ベクトルF´を出現回数ベクトルFに戻す。
これにより、深さ優先探索アルゴリズムにおけるバックトラック(又は、バックトラッキング)が行われる。
一方で、上記のステップS301で行列Xの列の数が0であると判定された場合、探索処理部103は、Sをメモリやファイル等に出力する(ステップS314)。すなわち、探索処理部103は、関数SEARCH(F, X, S)の戻り値としてSを出力する。ここで出力されたSが探索処理の解(より正確には、解の1つ)であり、上記のステップS105で出力部104により出力される。
次に、探索処理部103は、探索処理の実行を中断する(ステップS315)。そして、生成装置10は、上記のステップS105の処理に進む。なお、上記のステップS107で探索処理の実行を再開可能とするため、探索処理部103は、再開に必要な情報(例えば、現時点の出現回数ベクトルFや行列X、文S、探索処理の再開位置等)をメモリ等に格納した上で探索処理の実行を中断する。
<まとめ>
以上により、本発明の実施の形態における生成装置10では、与えられた文字列を用いて、深さ優先探索アルゴリズムにより、制約条件を満たす他の文字列(例えば、文として自然なアナグラム等)を生成することが可能となる。また、このとき、本発明の実施の形態における生成装置10では、他の文字列を構成する単語が制約条件を満たさない場合には、深さ優先探索アルゴリズムの枝刈りを行うことで、効率的に制約条件を満たす他の文字列を生成することが可能となる。
なお、本発明の実施の形態では、一例として、深さ優先探索アルゴリズムにより、制約条件を満たす全てのアナグラムを解として探索及び生成する場合について説明したが、例えば、制約条件を満たす任意の個数のアナグラム(特に、制約条件を満たす1つのアナグラムも含む)を解として探索及び生成されてもよい。この場合、生成装置10は、予め設定された個数のアナグラムが解として探索及び生成された場合に、探索処理を打ち切ればよい。
本発明は、具体的に開示された上記の実施形態に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
10 生成装置
101 入力部
102 行列作成部
103 探索処理部
104 出力部
105 終了条件判定部
106 語彙記憶部
107 言語モデル記憶部

Claims (6)

  1. 生成対象の文字列に含まれる複数の文字に関するデータである第1のデータを入力する入力手段と、
    前記第1のデータが表す複数の文字に含まれる各文字の出現回数に基づいて、前記第1のデータが表す複数の文字に含まれる各文字の出現回数に関するデータを第1の出現回数データとして作成する第1の出現回数データ作成手段と、
    複数の単語データが記憶されている語彙記憶部を参照して、単語に含まれる各文字それぞれの出現回数が、前記第1の出現回数データが表す各文字それぞれの出現回数以下である単語の単語データを前記語彙記憶部から取得し、取得した各単語データそれぞれが表す単語に含まれる各文字の出現回数に関するデータを第2の出現回数データとして作成する第2の出現回数データ作成手段と、
    前記第1のデータと、前記第1の出現回数データと、前記第2の出現回数データと、前第1のデータが表す複数の文字から前記文字列を生成するための深さ優先探索アルゴリズムの制約条件とに基づいて、前記深さ優先探索アルゴリズムにより前記制約条件を満たす前記文字列に関するデータである第2のデータを生成する生成手段と、
    を有し、
    前記生成手段は、
    前記語彙記憶部から取得された単語データが表す単語を選択単語として選択し、これまでに選択した選択単語の列で構成される文字列が前記制約条件を満たすか否かを判定し、前記制約条件を満たさない場合は最後に選択された選択単語を前記列から削除する、ことを、前記第1のデータが表す複数の文字に含まれる各文字の各々の文字に関して、これまでに選択した選択単語の列で構成される文字列に含まれる当該文字の出現回数と、前記第1のデータが表す複数の文字に含まれる当該文字の出現回数とが一致するまで、繰り返し、
    前記繰り返しの終了後、これまでに選択した選択単語の列で構成される文字列に関するデータを前記第2のデータとして生成し、
    前記制約条件には、
    これまでに選択した選択単語の列で構成される文字列を構成する文字の並びの尤もらしさに関する第1の条件と、
    前記第1のデータが表す複数の文字に含まれる各文字の各々の文字に関して、これまでに選択した選択単語の列で構成される文字列に含まれる当該文字の出現回数が、前記第1のデータが表す複数の文字に含まれる当該文字の出現回数以下であることを表す第2の条件、が含まれる、ことを特徴とする生成装置。
  2. 前記深さ優先アルゴリズムでは、
    これまでに選択した選択単語の列で構成される文字列が前記制約条件を満たさない場合、最後に選択された選択単語以降の単語の探索は行わない、ことを特徴とする請求項1に記載の生成装置。
  3. 前記尤もらしさに関する条件は、
    所定の言語モデル又はルールベース手法によって算出される、これまでに選択した選択単語の列で構成される文字列を構成する文字の並びの尤もらしさを表す値に関する条件である、ことを特徴とする請求項1又は2に記載の生成装置。
  4. 前記第1のデータが表す複数の文字は、文、単語、句、節、単語の集合、文字と該文字の個数との組、のうちの少なくとも1つである、ことを特徴とする請求項1乃至の何れか一項に記載の生成装置。
  5. 生成対象の文字列に含まれる複数の文字に関するデータである第1のデータを入力する入力手順と、
    前記第1のデータが表す複数の文字に含まれる各文字の出現回数に基づいて、前記第1のデータが表す複数の文字に含まれる各文字の出現回数に関するデータを第1の出現回数データとして作成する第1の出現回数データ作成手順と、
    複数の単語データが記憶されている語彙記憶部を参照して、単語に含まれる各文字それぞれの出現回数が、前記第1の出現回数データが表す各文字それぞれの出現回数以下である単語の単語データを前記語彙記憶部から取得し、取得した各単語データそれぞれが表す単語に含まれる各文字の出現回数に関するデータを第2の出現回数データとして作成する第2の出現回数データ作成手順と、
    前記第1のデータと、前記第1の出現回数データと、前記第2の出現回数データと、文字の並びの尤もらしさに関する条件が少なくとも含まれる制約条件であって、前記第1のデータが表す複数の文字から前記文字列を生成するための深さ優先探索アルゴリズムの制約条件とに基づいて、前記深さ優先探索アルゴリズムにより前記制約条件を満たす前記文字列に関するデータである第2のデータを生成する生成手順と、
    をコンピュータが実行し、
    前記生成手順は、
    前記語彙記憶部から取得された単語データが表す単語を選択単語として選択し、これまでに選択した選択単語の列で構成される文字列が前記制約条件を満たすか否かを判定し、前記制約条件を満たさない場合は最後に選択された選択単語を前記列から削除する、ことを、前記第1のデータが表す複数の文字に含まれる各文字の各々の文字に関して、これまでに選択した選択単語の列で構成される文字列に含まれる当該文字の出現回数と、前記第1のデータが表す複数の文字に含まれる当該文字の出現回数とが一致するまで、繰り返し、
    前記繰り返しの終了後、これまでに選択した選択単語の列で構成される文字列に関するデータを前記第2のデータとして生成し、
    前記制約条件には、
    これまでに選択した選択単語の列で構成される文字列を構成する文字の並びの尤もらしさに関する第1の条件と、
    前記第1のデータが表す複数の文字に含まれる各文字の各々の文字に関して、これまでに選択した選択単語の列で構成される文字列に含まれる当該文字の出現回数が、前記第1のデータが表す複数の文字に含まれる当該文字の出現回数以下であることを表す第2の条件、が含まれる、ことを特徴とする生成方法。
  6. コンピュータを、請求項1乃至の何れか一項に記載の生成装置における各手段として機能させるためのプログラム。
JP2019037605A 2019-03-01 2019-03-01 生成装置、生成方法及びプログラム Active JP7298192B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2019037605A JP7298192B2 (ja) 2019-03-01 2019-03-01 生成装置、生成方法及びプログラム
PCT/JP2020/007211 WO2020179519A1 (ja) 2019-03-01 2020-02-21 生成装置、生成方法及びプログラム
US17/435,002 US20220138434A1 (en) 2019-03-01 2020-02-21 Generation apparatus, generation method and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019037605A JP7298192B2 (ja) 2019-03-01 2019-03-01 生成装置、生成方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2020140627A JP2020140627A (ja) 2020-09-03
JP7298192B2 true JP7298192B2 (ja) 2023-06-27

Family

ID=72264975

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019037605A Active JP7298192B2 (ja) 2019-03-01 2019-03-01 生成装置、生成方法及びプログラム

Country Status (3)

Country Link
US (1) US20220138434A1 (ja)
JP (1) JP7298192B2 (ja)
WO (1) WO2020179519A1 (ja)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009059138A (ja) 2007-08-31 2009-03-19 Seiko Instruments Inc 単語検索装置、方法及びプログラム

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10431210B1 (en) * 2018-04-16 2019-10-01 International Business Machines Corporation Implementing a whole sentence recurrent neural network language model for natural language processing

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009059138A (ja) 2007-08-31 2009-03-19 Seiko Instruments Inc 単語検索装置、方法及びプログラム

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
小野 智司 外3名,進化計算法を用いたアナグラム文の生成,第90回 知識ベースシステム研究会資料 (SIG-KBS-B001) ,日本,社団法人人工知能学会,2010年10月07日,pp. 17-22
鈴木 啓輔 外2名,文節データベースを用いた日本語アナグラムの自動生成,FIT2011 第10回情報科学技術フォーラム 講演論文集 第2分冊 査読付き論文・一般論文,日本,一般社団法人情報処理学会 社団法人電子情報通信学会,2011年08月22日,pp.97-102

Also Published As

Publication number Publication date
WO2020179519A1 (ja) 2020-09-10
US20220138434A1 (en) 2022-05-05
JP2020140627A (ja) 2020-09-03

Similar Documents

Publication Publication Date Title
JP5071373B2 (ja) 言語処理装置、言語処理方法および言語処理用プログラム
JP2001249920A (ja) 推測入力源からのテキストに対して候補を提供する方法およびシステム
JPH05290082A (ja) パターンに基づく翻訳方法及び翻訳装置
JP2022047291A (ja) 情報処理装置、方法、及びプログラム
JP2003196280A (ja) テキスト生成方法及びテキスト生成装置
JP5235918B2 (ja) テキスト要約装置、テキスト要約方法及びテキスト要約プログラム
JP2002117027A (ja) 感情情報抽出方法および感情情報抽出プログラムの記録媒体
US20220284187A1 (en) Language model based writing aid method, device and system
JP7230576B2 (ja) 生成装置、学習装置、生成方法及びプログラム
JP7103264B2 (ja) 生成装置、学習装置、生成方法及びプログラム
JP7298192B2 (ja) 生成装置、生成方法及びプログラム
JP2013134753A (ja) 誤り文修正装置、誤り文修正方法およびプログラム
JP4478042B2 (ja) 頻度情報付き単語集合生成方法、プログラムおよびプログラム記憶媒体、ならびに、頻度情報付き単語集合生成装置、テキスト索引語作成装置、全文検索装置およびテキスト分類装置
US20200279024A1 (en) Non-transitory computer readable medium
Mammadov et al. Part-of-speech tagging for azerbaijani language
JP4341077B2 (ja) 文書処理装置、文書処理方法、および、文書処理プログラム
JP6181890B2 (ja) 文献解析装置、文献解析方法およびプログラム
WO2014030258A1 (ja) 形態素解析装置、テキスト分析方法、及びそのプログラム
JP3961858B2 (ja) 翻字装置及びそのプログラム
WO2011118428A1 (ja) 要求獲得システム、要求獲得方法、及び要求獲得用プログラム
JP4049141B2 (ja) 文書処理装置、文書処理方法、および、文書処理プログラム
JP2018165875A (ja) インデックス生成プログラム、データ検索プログラム、インデックス生成装置、データ検索装置、インデックス生成方法、及びデータ検索方法
JP6325789B2 (ja) 翻訳装置及び翻訳プログラム
JP7200474B2 (ja) 変換補助装置、変換補助システム、変換補助方法及びコンピュータプログラム
JP2003132052A (ja) 読みがな付与装置およびプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210701

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220906

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221003

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20230117

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230412

C60 Trial request (containing other claim documents, opposition documents)

Free format text: JAPANESE INTERMEDIATE CODE: C60

Effective date: 20230412

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20230412

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20230501

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230516

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230529

R150 Certificate of patent or registration of utility model

Ref document number: 7298192

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150