説明

姓名解析方法、姓名解析装置、音声認識装置、および姓名頻度データ生成方法

【課題】姓名が結合して成る文字列の姓と名との区切りをより確実に判定することができる姓名解析方法を提供すること。
【解決手段】本発明に係る姓名解析方法は、複数の姓データの集合を用いて予め取得した、各々の姓を構成する文字列の末尾の文字列毎の出現頻度を表す姓頻度データを用いる姓名解析方法であって、姓名が結合して成る姓名文字列をその先頭から順次2分割する工程(S1100、S1400、S1500)と、前記姓頻度データを参照して、前記分割位置の前半の末尾の文字列と一致する文字列の出現頻度を、前記分割位置毎に順次取得する工程(S1200)と、前記出現頻度が高い前記分割位置を、前記姓名文字列における姓と名との区切り位置であると判定する工程(S1600)とを有する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、姓名の区切りの判定を行う姓名解析方法、姓名解析装置、および音声認識装置、並びに姓名解析方法で用いられるデータを生成する姓名頻度データ生成方法に関する。
【背景技術】
【0002】
近年、携帯電話機における音声認識によるメール入力サービスなど、音声からテキスト文を作成する技術の普及が進んでいる。このような音声認識技術において例えば漢字を含むテキスト文を作成する場合、まず、ユーザが漢字の読みを発話し、次いで、音声認識装置が、漢字データと読みとを対応付けた音声辞書に基づいて、音声を文字列に変換し、更に文字列を漢字に変換する。
【0003】
ところが、音声認識装置は、音声辞書に存在しない読みに対しては誤認識を行う可能性がある。特に、人名の姓および名については、特殊な読みや漢字の組み合わせが多いことから、全ての姓を完全に網羅した辞書や全ての名を完全に網羅した音声辞書を用意することは困難である。
【0004】
そこで、具体的な人名が登録された姓名データベースを音声認識に利用することが考えられる。これにより、特殊な姓名に対する音声認識精度を向上させることができる。
【0005】
ところが、姓名データベースには、姓名が区切られずに一体となって登録されている場合も多い。このような場合、姓と名とを個別に認識することができない。したがって、例えば、特殊な名のみを発話したときには、誤った認識結果となってしまうおそれがある。
【0006】
そこで、姓名が結合している文字列を区切り、前半の文字列と後半の文字列との少なくとも一方が音声辞書に存在するとき、その区切りを姓と名との区切りであると判定する技術が、例えば特許文献1に記載されている。この技術によれば、姓名データベースに登録された姓名を姓と名とに分割し、これらを個別に認識することが可能となる。
【特許文献1】特開平10−171799号公報
【発明の開示】
【発明が解決しようとする課題】
【0007】
ところが、特許文献1記載の技術では、姓と名のいずれも音声辞書に登録されていない場合には、姓と名とを区切ることができない。したがって、例えば、姓と名の両方が特殊な姓名については、区切りを判定することができず、それぞれに対する音声認識も行うことができない。
【0008】
本発明は、かかる点に鑑みてなされたものであり、姓名が結合して成る文字列の姓と名との区切りをより確実に判定することができる姓名解析方法、姓名解析装置、音声認識装置、および姓名頻度データ生成方法を提供することを目的とする。
【課題を解決するための手段】
【0009】
本発明の姓名解析方法は、複数の姓データの集合を用いて予め取得した、各々の姓を構成する文字列の末尾の文字列毎の出現頻度を表す姓頻度データを用いる姓名解析方法であって、姓名が結合して成る姓名文字列をその先頭から順次2分割する工程と、前記姓頻度データを参照して、前記分割位置の前半の末尾の文字列と一致する文字列の出現頻度を、前記分割位置毎に順次取得する工程と、前記出現頻度が高い前記分割位置を、前記姓名文字列における姓と名との区切り位置であると判定する工程とを有する。
【0010】
本発明の姓名解析方法は、複数の名データの集合を用いて予め取得した、各々の名を構成する文字列の先頭の文字列毎の出現頻度を表す名頻度データを用いる姓名解析方法であって、姓名が結合して成る姓名文字列をその先頭から順次2分割する工程と、前記名頻度データを参照して、前記分割位置の後半の先頭の文字列と一致する文字列の出現頻度を、前記分割位置毎に順次取得する工程と、前記出現頻度が高い前記分割位置を、前記姓名文字列における姓と名との区切り位置であると判定する工程とを有する。
【0011】
本発明の姓名解析方法は、複数の姓データの集合を用いて予め取得した、各々の姓を構成する文字列の末尾の文字列毎の出現頻度を表す姓頻度データと、複数の名データの集合を用いて予め取得した、各々の名を構成する文字列の先頭の文字列毎の出現頻度を表す名頻度データとを用いる姓名解析方法であって、姓名が結合して成る姓名文字列をその先頭から順次2分割する工程と、前記姓頻度データを参照して、前記分割位置の前半の末尾の文字列と一致する文字列の出現頻度を、前記分割位置毎に順次取得する工程と、前記名頻度データを参照して、前記分割位置の後半の先頭の文字列と一致する文字列の出現頻度を、前記分割位置毎に順次取得する工程と、前記分割位置の前半の文字列に対して取得された前記出現頻度と、前記分割位置の前半の文字列に対して取得された前記出現頻度と、を乗じた値が高い前記分割位置を、前記姓名文字列における姓と名との区切り位置であると判定する工程とを有する。
【0012】
本発明の姓名解析装置は、複数の姓データの集合を用いて予め生成された、各々の姓を構成する文字列の末尾の文字列毎の出現頻度を表す姓頻度データと、複数の名データの集合を用いて予め取得した、各々の名を構成する文字列の先頭の文字列毎の出現頻度を表す名頻度データとを取得する姓名頻度データ取得部と、姓名が結合して成る姓名文字列をその先頭から順次2分割し、前記姓頻度データから取得される前記分割位置の前半の末尾の文字列と一致する文字列の出現頻度と、前記名頻度データから取得される前記分割位置の後半の先頭の文字列と一致する文字列の出現頻度とを乗じた値が高い位置で、前記姓名文字列を姓と名とに区切り、姓の辞書および名の辞書の少なくとも一方を生成する辞書生成部とを有する。
【0013】
本発明の音声認識装置は、複数の姓データの集合を用いて予め生成された、各々の姓を構成する文字列の末尾の文字列毎の出現頻度を表す姓頻度データと、複数の名データの集合を用いて予め取得した、各々の名を構成する文字列の先頭の文字列毎の出現頻度を表す名頻度データとを取得する姓名頻度データ取得部と、姓名が結合して成る姓名文字列をその先頭から順次2分割し、前記姓頻度データから取得される前記分割位置の前半の末尾の文字列と一致する文字列の出現頻度と、前記名頻度データから取得される前記分割位置の後半の先頭の文字列と一致する文字列の出現頻度とを乗じた値が高い位置で、前記姓名文字列を姓と名とに区切り、姓の辞書および名の辞書の少なくとも一方を生成する辞書生成部と、前記辞書生成部により生成された辞書を用いて音声認識処理を行う音声認識部とを有する。
【0014】
本発明の姓名頻度データ生成方法は、上記姓名解析方法で用いられる前記姓頻度データおよび前記名頻度データを生成する姓名頻度データ生成方法であって、前記複数の姓データの集合から、各々の姓の読みを示す仮名文字列の文字数および末尾の文字列を取得する工程と、取得した前記文字数および前記末尾の文字列が同一となる姓をカウントして、前記姓頻度データを生成する工程と、前記複数の名データの集合から、各々の名の読みを示す仮名文字列の文字数および先頭の文字列を取得する工程と、取得した前記文字数および前記先頭の文字列が同一となる名をカウントして、前記名頻度データを生成する工程とを有する。
【発明の効果】
【0015】
本発明によれば、姓名が結合して成る文字列の姓と名との区切りをより確実に判定することができる。
【発明を実施するための最良の形態】
【0016】
以下、本発明の一実施の形態について、図面を参照して詳細に説明する。
【0017】
図1は、本発明の一実施の形態に係る姓名解析装置を用いた音声認識システムの構成を示すシステム構成図である。本実施の形態は、本発明を、音声認識を用いて携帯電話機でテキストデータを作成するシステムに適用した例である。
【0018】
図1において、音声認識システム100は、姓名データベース200、姓名頻度データ生成装置300、音声認識サーバ400、および第1〜第Mの携帯電話機500−1〜500−Mを有する。これらの装置は、無線または有線により、インターネットなどの通信網700に接続されている。第1〜第Mの携帯電話機500−1〜500−Mは、同一の構成を有するため、以下、適宜、携帯電話機500としてまとめて説明を行う。
【0019】
姓名データベース200は、十分な数の日本人の姓名(以下「一般姓名」という)についての、姓の表記およびその表記の読みから成る姓データと、名の表記およびその表記の読みから成る名データとを格納する。ここで、表記とは、漢字もしくは仮名またはこれらの混合であり、読みとは、表記を読み上げる際の発話音声を仮名に置き換えたものである。
【0020】
姓名頻度データ生成装置300は、通信網700を介して姓名データベース200を参照し、姓頻度データ、名頻度データ、および表記頻度データを生成する。
【0021】
姓頻度データは、姓頻度をリスト化したデータである。姓頻度は、ここでは、一般姓名における、姓の読みの末尾2文字(2発話の音声)の文字列ごとの出現頻度を表す値である。すなわち、姓頻度データからは、一般姓名において、どのような2文字が、姓の読みの末尾に多く用いられているかが分かる。
【0022】
名頻度データは、名頻度をリスト化したデータである。名頻度は、ここでは、一般姓名における、名の読みの先頭2文字(2発話の音声)の文字列ごとの出現頻度を表す値である。すなわち、名頻度データからは、一般姓名において、どのような2文字が、名の読みの先頭に多く用いられているかが分かる。
【0023】
また、表記頻度データは、表記頻度をリスト化したデータである。表記頻度は、ここでは、一般姓名における、姓の読みの末尾2文字ごとの、姓の表記の末尾1文字(漢字または仮名)の出現頻度を表す値である。すなわち、表記頻度データからは、一般姓名において、姓の読みの末尾2文字の種類ごとに、どのような表記が姓の末尾に多く用いられているかがわかる。
【0024】
音声認識サーバ400は、受信した音声特徴量の時系列データ(以下「特徴量データ」という)をテキストデータに変換する音声認識処理を行い、認識データを、基の特徴量データの送信元に返信する。認識データには、音声認識結果であるテキストデータと、テキストデータの文節を示す文節情報と、各文節の発話時刻に関する情報で時間情報とを含む。
【0025】
携帯電話機500は、携帯電話機能と、メール送受信機能と、電話帳データ利用機能と、音声認識サーバ400を利用して音声入力によりメール本文の作成を行う音声入力機能とを有する。具体的には、携帯電話機500は、入力音声の特徴量データから抽出した音声特徴量を、通信網700を介して音声認識サーバ400に送信し、音声認識結果を、通信網700を介して音声認識サーバ400から受信する。
【0026】
また、携帯電話機500は、姓名頻度データ生成装置300から姓頻度データ、名頻度データ、および表記頻度データ(以下適宜「姓名頻度データ」と総称する)に基づいて、ユーザの知人の姓名全体の表記(以下「表記文字列」という)および読み(以下「姓名文字列」という)をリスト化した電話帳データから、ユーザ辞書を生成する。ユーザ辞書は、ユーザの知人の姓ごとおよび名ごとに、表記と読みとを対応付けたデータである。姓名頻度データは、姓名頻度データ生成装置300によって作成されたものが予め携帯電話機500に格納されていてもよいし、各種記録媒体または通信網700を介しての姓名頻度データ生成装置300側からの配布によって、取得されてもよい。
【0027】
更に、携帯電話機500は、読みや表記が特殊な姓や名を発話した際に発生する誤った音声認識結果を、ユーザ辞書を用いた音声認識処理によって補完する。
【0028】
このような音声認識システム100によれば、ユーザが特殊な姓または名の知人を有する場合に、電話帳データには表記および読みが姓名一体でしか登録されていなくても、姓と名とに分割して表記と読みとを対応付けたユーザ辞書を生成することができる。そして、このユーザ辞書を用いて、音声認識処理を補完することができる。これにより、ユーザは、知人の姓のみまたは名のみを発話した場合に、それが特殊な読みまたは表記であり、音声認識サーバ400の音声辞書に登録されていないものであっても、正しい表記を、音声認識結果として得ることができる。
【0029】
また、姓頻度と名頻度とに基づいて総合的に区切りの妥当性を判断することができるので、姓と名の個々についての判定精度を、2文字ずつのみの比較という判定精度まで落とすことが可能となる。また、姓頻度データおよび名頻度データを2文字についてのデータとすることができるため、特殊な姓および名を網羅した辞書を用意する場合に比べて、データサイズを大幅に低減することができるとともに、姓名の区切りを判断する時間を短縮することができる。すなわち、データ記憶容量に制限がある携帯電話機500において、姓および名のそれぞれについての音声認識精度を向上させることが可能なユーザ辞書を短時間で作成し、かつ、これを利用することができる。
【0030】
次に、各装置の構成について説明する。
【0031】
図2は、姓名頻度データ生成装置300の構成を示すブロック図である。姓名頻度データ生成装置300は、装置通信部310、姓頻度データ生成部320、名頻度データ生成部330、表記頻度データ生成部340、姓名頻度データ格納部350、および姓名頻度データ送信部360を有する。
【0032】
装置通信部310は、有線通信により通信網700に接続する。
【0033】
姓頻度データ生成部320は、姓名データベース200に格納された姓データに基づいて、姓頻度データを生成し、生成した姓頻度データを、後述の姓名頻度データ格納部350に格納する。
【0034】
名頻度データ生成部330は、姓名データベース200に格納された名データに基づいて、名頻度データを生成し、生成した名頻度データを、後述の姓名頻度データ格納部350に格納する。
【0035】
表記頻度データ生成部340は、姓名データベース200に格納された姓データに基づいて、表記頻度データを生成し、生成した表記頻度データを、後述の姓名頻度データ格納部350に格納する。
【0036】
姓名頻度データ格納部350は、生成された姓頻度データ、名頻度データ、および表記頻度データ(姓名頻度データ)を格納する。
【0037】
姓名頻度データ送信部360は、装置通信部310を介して、定期的に、または携帯電話機500からの要求を受けて、姓名頻度データ格納部350に格納された姓名頻度データを携帯電話機500に送信する。
【0038】
姓名頻度データ生成装置300は、図示しないが、CPU(central processing unit)、制御プログラムを格納したHDD(hard disc drive)およびROM(read only memory)などの記憶媒体、RAM(random access memory)などの作業用メモリなどを有する。CPUによる制御プログラムの実行により、上記した各部の機能は実現される。
【0039】
このような姓名頻度データ生成装置300によれば、姓名頻度データを生成し、携帯電話機500に提供することができる。
【0040】
図3は、音声認識サーバ400の構成を示すブロック図である。
【0041】
図3において、音声認識サーバ400は、サーバ通信部410、音声辞書格納部420、およびサーバ音声認識部430を有する。
【0042】
サーバ通信部410は、有線通信により通信網700に接続する。
【0043】
音声辞書格納部420は、音響モデル、単語辞書、言語モデルなど、音声特徴量に基づく音声認識処理に必要な音声辞書のデータを格納する。但し、音声認識サーバ400は不特定のユーザに対する音声認識サービスの提供を目的とする装置であるため、音声辞書格納部420の音声辞書には、一般姓名に関する情報は含まれているが、特殊な姓および名に関する情報は含まれていない。使用頻度の非常に少ない姓および名を音声認識の対象に含めると、全体の認識精度の低下や処理速度の低下を招くからである。
【0044】
サーバ音声認識部430は、サーバ通信部410を介して携帯電話機500から受信した音声特徴量に対して、音声辞書格納部420の音声辞書を用いた音声認識処理を行う。そして、サーバ音声認識部430は、音声認識結果であるテキストデータを、サーバ通信部410を介して基の音声特徴量の送信元に送信する。
【0045】
サーバ音声認識部430は、図示しないが、CPU、制御プログラムを格納したHDDおよびROMなどの記憶媒体、RAMなどの作業用メモリなどを有する。CPUによる制御プログラムの実行により、上記した各部の機能は実現される。
【0046】
このような音声認識サーバ400によれば、携帯電話機500に対して、音声認識サービスを提供することができる。但し、そのサービスは、特殊な姓および名については、認識誤りを発生させる可能性を有する。
【0047】
図4は、携帯電話機500の構成を示すブロック図である。
【0048】
図4において、携帯電話機500は、制御部510、操作部520、端末通信部530、姓名頻度データ取得部540、姓名頻度データ記憶部550、電話帳データ格納部560、辞書生成部570、ユーザ辞書記憶部580、音声入力部590、音声特徴抽出部600、端末音声認識部610、および表示部620を有する。
【0049】
制御部510は、携帯電話機500の各部の動作を制御する。
【0050】
操作部520は、複数のキースイッチ(図示せず)を有し、ユーザから、電話帳データへの登録、姓名頻度データの取得、音声認識機能の使用、音声認識結果の編集、およびメールの送受信などのための操作を含む各種操作を受け付ける。
【0051】
端末通信部530は、通信網700に配置された無線基地局(図示せず)と無線通信を行うことにより、通信網700に接続する。
【0052】
姓名頻度データ取得部540は、定期的に、またはユーザ操作を受けて、端末通信部530を介して姓名頻度データ生成装置300から姓名頻度データを取得し、取得した姓名頻度データを、姓名頻度データ記憶部550に記憶させる。
【0053】
電話帳データ格納部560は、送受信メールに基づいて、またはユーザ操作を受けて登録された、ユーザの知人の姓名の表記文字列および姓名文字列を、電話帳データとして格納部する。但し、電話帳データにおいて、表記文字列と姓名文字列のいずれについても、姓と名との区切りが不明であるものとする。
【0054】
辞書生成部570は、電話帳データ格納部560の電話帳データに登録された姓名文字列ごとに、その姓名文字列を先頭から順次2分割する。そして、辞書生成部570は、姓名頻度データ記憶部550の姓頻度データおよび名頻度データを参照し、前半文字列の姓頻度と後半文字列の名頻度とを乗じた値が最も高くなる分割位置を、その姓名文字列が姓と名とに分かれる位置であると判定する。また、辞書生成部570は、姓名頻度データ記憶部550の表記頻度データを参照し、姓の読みにおいて表記頻度が高い表記の1文字の直後を、表記文字列が姓と名とに分かれる位置であると判定する。そして、辞書生成部570は、区分した姓の読み(以下「姓文字列」という)および名の読み(以下「名文字列」という)と、区分した姓の表記と名の表記とに基づいて、ユーザ辞書を生成し、生成したユーザ辞書をユーザ辞書記憶部580に記憶させる。
【0055】
ユーザ辞書記憶部580は、予め用意された音響モデルと、辞書生成部570により生成されたユーザ辞書とを記憶する。
【0056】
音声入力部590は、マイクロフォン(図示せず)を有し、ユーザの発話音声を入力し、少なくともユーザ操作などにより音声認識を行うことが指定された期間、音声認識音声信号を音声特徴抽出部600へ出力する。
【0057】
音声特徴抽出部600は、入力された音声信号を分析して特徴量を抽出し、特徴量データを端末通信部530を介して音声認識サーバ400へ送信する。
【0058】
端末音声認識部610は、読みや表記が特殊な姓や名を発話した際に発生する誤った音声認識サーバ400の音声認識結果を、ユーザ辞書を用いた音声認識処理によって補完する。具体的には、端末音声認識部610は、音声認識結果のうち、姓または名に対応する部分について、基の特徴量データおよびユーザ辞書記憶部580のユーザ辞書を用いた音声認識処理を行い、その認識結果で、音声認識サーバ400からの認識結果を修正する。
【0059】
表示部620は、液晶ディスプレイ(図示せず)を有し、音声認識結果を含む各種情報を表示する。
【0060】
携帯電話機500は、図示しないが、CPU、制御プログラムを格納したROMなどの記憶媒体、RAMなどの作業用メモリなどを有する。CPUによる制御プログラムの実行により、上記した各部の機能は実現される。
【0061】
このような携帯電話機500によれば、姓名頻度データを利用して電話帳データから姓と名とを分割したユーザ辞書を生成することができ、ユーザが知人の特殊な姓または名を発話した場合でも正しい音声認識結果を提供することができる。
【0062】
以下、上記構成を有する音声認識システム100の動作について説明する。
【0063】
音声認識システム100の動作は、姓名頻度データを生成する第1の段階、姓名頻度データに基づいてユーザ辞書を生成する第2の段階、およびユーザ辞書に基づいて音声認識を行う第3の段階、の3段階に大きく分かれる。
【0064】
まず、姓名頻度データを生成する第1の段階の動作について説明する。
【0065】
図5は、姓名データベース200に格納された姓データの内容の一例を示す図である。図5に示すように、姓データ810は、一般姓名の姓の表記811と、その表記の一般的な読み812とを、対応付けて記述する。
【0066】
また、同様に、姓名データベース200は、一般姓名の名の表記とその一般的な読みとを対応付けて記述する名データを格納する。
【0067】
図2に示す姓名頻度データ生成装置300の姓頻度データ生成部320は、姓データ810から、姓の読み812の末尾2文字(図5における下線部分、以下適宜「末尾部分」という)と、読み812の文字数とを抽出する。
【0068】
図6は、姓の読みの末尾部分および文字数の抽出結果の一例を示す図である。図6に示すように、抽出結果820は、一般姓名の姓の表記の種類ごとに得られた、姓の読みの末尾部分821と文字数822との組から構成される。以下、適宜、読みを変数Kanaで表し、文字数を変数Lengthで表す。
【0069】
図2に示す姓頻度データ生成部320は、姓データからの抽出結果820に記述されたデータを、姓の読みの末尾部分821の種類ごとおよび読み812の文字数ごとに計数し、姓頻度データを生成する。
【0070】
図7は、姓頻度データの内容の一例を示す図である。図7に示すように、姓頻度データ830は、姓の読みの末尾部分831、姓の読みの文字数832、および計数結果である姓頻度833の組から構成される。以下、適宜、姓頻度ならびに後述の名頻度および表記頻度を、変数Countでそれぞれ表す。
【0071】
例えば、「マダ」という末尾部分831に対応して、「3」という文字数832と、「5」という姓頻度833が記述されている。これは、読みが3文字であって「マダ」で終わるような姓の表記が、姓名データベース200の姓データ810には5種類存在する、ということを示す。また、「ヤマ」という末尾部分831に対応して、「2」という文字数832と、「1」という姓頻度833が記述されている。これは、読みが2文字であって「ヤマ」で終わるような姓の表記が、姓名データベース200の姓データ810には1種類しか存在しない、ということを示す。また、これらは、読みが3文字で末尾部分が「マダ」の姓のほうが、読みが2文字で末尾部分が「ヤマ」の姓よりも頻度が高いということを示す。
【0072】
図2に示す姓名頻度データ生成装置300の名頻度データ生成部330は、姓頻度データ生成部320と同様に、名データから名の読みの先頭2文字(以下適宜「先頭部分」という)と読みの文字数とを抽出し、先頭部分の種類ごとおよび文字数ごとの計数を行って、名頻度データを生成する。
【0073】
図8は、名頻度データの内容の一例を示す図である。図8に示すように、名頻度データ840は、名の読みの先頭部分841、名の読みの文字数842、および計数結果である名頻度843の組から構成される。
【0074】
図2に示す姓名頻度データ生成装置300の表記頻度データ生成部340は、姓データ810から、姓の表記811の末尾1文字(図5における下線部分)と、読み812の末尾部分(図5における下線部分)とを抽出する。
【0075】
図9は、姓の表記の末尾1文字および読みの末尾部分の抽出結果の一例を示す図である。図9に示すように、抽出結果850は、一般姓名の姓の表記の種類ごとに得られた、表記の末尾1文字851と読みの末尾部分852との組から構成される。
【0076】
図2に示す表記頻度データ生成部340は、姓データからの抽出結果850に記述されたデータを、姓の読みの末尾1文字851の種類ごとおよび読みの末尾部分852の種類ごとに計数し、表記頻度データを生成する。
【0077】
図10は、表記頻度データの内容の一例を示す図である。図10に示すように、表記頻度データ860は、姓の読みの末尾部分861、姓の表記の末尾1文字862、および計数結果である表記頻度863の組から構成される。
【0078】
例えば、「マダ」という末尾部分861に対応して、「田」という表記862と、「84」という表記頻度863が記述されている。これは、表記が「田」で終わり読みが「マダ」で終わるような姓の表記が、姓名データベース200の姓データ810には84種類存在する、ということを示す。「マダ」という末尾部分861に対応して、他にも、「太」という表記862と、「1」という表記頻度863が記述されている。これは、表記が「太」で終わり読みが「マダ」で終わるような姓の表記が、姓名データベース200の姓データ810には1種類しか存在しない、ということを示す。また、これらは、読みが「マダ」で終わる姓においては、「田」で終わる表記の頻度のほうが、「太」で終わる表記の頻度よりも高いということを示す。
【0079】
このような第1の段階の動作により、姓名頻度データが生成される。生成された姓名頻度データは、姓名頻度データ生成装置300の姓名頻度データ格納部350に格納され、姓名頻度データ送信部360によって、適宜、携帯電話機500に送信される。
【0080】
次に、姓名頻度データに基づいてユーザ辞書を生成する第2の段階の動作について説明する。
【0081】
図4に示す携帯電話機500の姓名頻度データ取得部540は、定期的に、またはユーザ操作を受けて、姓名頻度データ生成装置300から姓名頻度データ(図7、図8、および図10参照)を取得し、取得した姓名頻度データを、姓名頻度データ記憶部550に記憶させる。
【0082】
携帯電話機500は、姓名頻度データ記憶部550に姓名頻度データが格納されると、ユーザ操作を受けて、または自動的に、ユーザ辞書を生成するユーザ辞書生成処理を実行する。携帯電話機500は、ユーザ辞書生成処理において、電話帳データに登録された姓名の表記および読みに対して、姓の部分と名の部分とに区切る処理を行う。
【0083】
図11は、携帯電話機500によるユーザ辞書生成処理を示すフローチャートである。
【0084】
まず、ステップS1100において、携帯電話機500の辞書生成部570は、電話帳データ格納部560の電話帳データから、姓名文字列を1つ選択し、選択した姓名文字列の文字数(以下「」)姓名文字数という)L1を取得する。そして、姓名文字列の先頭と末尾に、ダミーの文字として所定の記号(例えば黒丸記号)を追加して、文字列K1を生成する。そして、パラメータNに初期値「1」を設定する。パラメータNは、姓名文字列の何文字目を姓の末尾と仮定しているか、つまり、姓が何文字であると仮定しているかを示すとともに、文字列K1の何文字目を処理の基準位置としているか、を示す。
【0085】
図12は、携帯電話機500の電話帳データ格納部560に格納される電話帳データの内容の一例を示す図である。
【0086】
図12に示すように、電話帳データ870は、ユーザの知人の姓名の表記871およびその読み872を対にして記述する。但し、いずれも、姓と名の区切りが不明な状態で記述されている。
【0087】
ここでは、「山田太郎」という表記871と「ヤマダタロウ」という読み872を処理対象とする場合について説明する。この場合、姓名文字数L1は「6」、文字列K1は、「ヤマダタロウ」の前後に黒丸記号が追加された文字列となる。以下、この例における動作について、図13を参照して説明を行う。図13は、姓と名とを区切る処理の概要を示す図である。
【0088】
そして、ステップS1200において、辞書生成部570は、姓頻度データ(図7参照)を参照して、Length(N)=Nのデータのうち、姓名文字列L1のN文字目から2文字の部分に対応する姓頻度Countを、姓頻度SC(N)として取得する。但し、辞書生成部570は、該当する姓頻度Countが姓頻度データに存在しない場合には、姓頻度SC(N)=0とする。
【0089】
そして、ステップS1300において、辞書生成部570は、名頻度データ(図8参照)を参照して、Length(N)=L1−Nのデータのうち、姓名文字列L1のN文字目から2文字の部分に対応する名頻度Countを、名頻度MC(N)として取得する。但し、辞書生成部570は、該当する名頻度Countが名頻度データに存在しない場合には、姓頻度MC(N)=0とする。
【0090】
ここでは、図13(A)に示すように、Length(N)=1であり、姓名文字列L1の1文字目から2文字の部分881に対応する姓頻度Countも、姓名文字列L1の3文字目から2文字の部分882に対応する名頻度Countも、存在しないものとする。この場合、姓頻度SC(1)=0および名頻度MC(1)=0が取得される。
【0091】
そして、ステップS1400において、辞書生成部570は、パラメータNを1つ増大させる。図13(A)に示す、処理対象となる部分881、882は、パラメータNの値が増大するにつれて、矢印883の方向へ順次移動する。
【0092】
そして、ステップS1500において、辞書生成部570は、パラメータNが姓名文字数L1を超えたか否か、つまり、処理対象がなくなったか否かを判断する。辞書生成部570は、パラメータNが姓名文字数L1をまだ超えていない場合には(S1500:NO)、ステップS1200へ戻る。
【0093】
これにより、辞書生成部570は、処理対象となる部分881、882を1文字分ずつ移動させて、順次、姓頻度SC(N)および名頻度MC(N)の取得を行う(図13(B)および図13(C)参照)。その結果、姓と名との区切りの候補ごとに、姓頻度SC(N)と名頻度MC(N)との組が取得される。
【0094】
そして、辞書生成部570は、パラメータNが姓名文字数L1を超えた場合には(S1500:YES)、ステップS1600へ進む。
【0095】
ステップS1600において、辞書生成部570は、姓頻度SC(N)と名頻度MC(N)とを乗じた値が最も大きくなるパラメータNの値を、姓文字数Cとして取得する。上記乗算値が最も大きくなるということは、姓頻度SC(N)と名頻度MC(N)との両方が高いということであり、N文字目とN+1文字目との間が姓と名との区切りである可能性が高いということである。
【0096】
ここでは、例えば、図13(A)〜図13(C)に示すように、N=3の乗算値SC(3)*MC(3)=42が最大値となったとする。この場合、辞書生成部570は、姓文字数Cを「3」とする。
【0097】
なお、ステップS1300の後に、上記乗算値が所定の値を超える場合には、姓と名との区切り位置である可能性が十分に高いものとして、そのときのパラメータNの値を姓文字数として採用し、そのままステップS1700へ進むようにしてもよい。
【0098】
そして、ステップS1700において、辞書生成部570は、姓名文字列を、C文字目の直後で区切る。
【0099】
ここでは、図13(D)に示すように、辞書生成部570は、姓文字数C=3に基づき、姓名文字列「ヤマダタロウ」に対し、3文字の姓「ヤマダ」と4文字目からの名「タロウ」との間にスペースを挿入する。
【0100】
そして、ステップS1800において、辞書生成部570は、表記頻度データ(図10参照)を参照して、姓文字列の末尾に対応する表記のうち、姓名の表記文字列に存在する表記を取得する。具体的には、姓文字列の末尾に対応し、姓名の表記文字列に存在する表記のうち、表記頻度Countが最も高い値となる表記を取得する。
【0101】
ここでは、例えば、姓文字列「ヤマダ」の末尾「マダ」に対対応し、姓名の表記文字列「山田太郎」に存在する表記は、「田」と「太」であるが、「田」のほうが表記頻度Countは高い。したがって、辞書生成部570は、表記「田」を取得する。
【0102】
そして、ステップS1900において、辞書生成部570は、表記文字列を、ステップS1800で取得した表記の直後で区切る。
【0103】
ここでは、表記「田」を取得したため、辞書生成部570は、表記文字列「山田太郎」に対し、姓「山田」と「太郎」との間にスペースを挿入する。
【0104】
そして、ステップS2000において、辞書生成部570は、姓と名とに区切った姓名文字列および表記文字列を、ユーザ辞書記憶部580のユーザ辞書に登録する。辞書生成部570は、後段の端末音声認識部610がスペースを検出して姓と名とを区別して扱う場合には、スペースを挿入した文字列で登録してもよいし、そうではない場合には、姓と名とを別の単語として独立して登録してもよい。
【0105】
図14は、ユーザ辞書の内容の一例を示す図である。
【0106】
図14に示すように、ユーザ辞書890は、ユーザの知人の姓および名のそれぞれについて、表記891およびその読み892を対にして記述する。このようなユーザ辞書890を用いれば、例えば、特殊な姓または名であっても、その姓のみから、または名のみから、対応する表記を特定することできる。
【0107】
そして、ステップS2100において、辞書生成部570は、ユーザ辞書生成処理を終了するか否かを判断し、終了しない場合には(S2100:NO)、ステップS1100へ戻って未選択の姓名文字列を選択し、終了する場合には(S2100:YES)、一連の処理を終了する。辞書生成部570は、例えば、ユーザ操作等により処理の終了を指示されたときや、電話帳データの全てに対する処理が終了したとき、ユーザ辞書生成処理を終了すると判断する。
【0108】
このような第2の段階の動作により、携帯電話機500のユーザ辞書記憶部580には、ユーザ辞書が記憶される。
【0109】
次に、ユーザ辞書に基づいて音声認識を行う第3の段階の動作について説明する。
【0110】
図15は、音声認識システム100における音声認識処理の流れを示す模式図である。
【0111】
まず、携帯電話機500の音声入力部590は、音声を入力し(S3100)、音声信号を音声特徴抽出部600に出力する(S3200)。音声特徴抽出部600は、音声信号から音声特徴量を抽出して特徴量データを生成し(S3300)、生成した特徴量データを音声認識サーバ400へ送信するとともに(S3400)、端末内にも保持しておく(S3500)。
【0112】
ここでは、「ニコノサンガアソビニキマシタ」という発話に対応する特徴量データが出力されたものとする。
【0113】
特徴量データを受信した音声認識サーバ400のサーバ音声認識部430は、音声認識サーバ400の音声辞書を用いて音声認識処理を行い(S3600)、音声認識結果、文節情報、および時間情報を、携帯電話機500に返信する(S3700)。
【0114】
ここでは、図15に示すように、「二個のさんが遊びに来ました。」という音声認識結果と、「二個の」の文節が再変換すべき文節(以下「処理対象文節」という。また、図中、処理対象文節に下線を施す。)であることを示す文節情報と、この文節の特徴量データでの位置を示す時間情報とが、返信されたものとする。処理対象文節は、例えば、音声認識結果の信頼度の低い文節、および文脈から姓または名に該当する可能性のある文節(「さん」や「君」等の文字列から推測)である。
【0115】
音声認識結果等を受信した携帯電話機500の端末音声認識部610は、時間情報から、処理対象文節に対応する音声部分を、保存されていた特徴量データから切り出し(S3800)、切り出した音声部分を音声認識処理の対象に設定する(S3900)。そして端末音声認識部610は、ユーザ辞書を用いた音声認識処理を行う(S4000)。
【0116】
ここでは、「二個の」の文節に対応して、「ニコノ」という発話に対応する音声部分が切り出される。携帯電話機500の電話帳データに「近藤にこ乃:コンドウニコノ」が登録されており、これに対するユーザ辞書生成処理により、ユーザ辞書には「近藤:コンドウ」と、特殊な名である「にこ乃:ニコノ」とが登録されていたとする。この場合、端末音声認識部610は、音声処理により、「にこ乃」という音声認識結果を得る。
【0117】
端末音声認識部610は、音声認識結果を取得し(S4100)、取得した音声認識結果に対する結果解析を行い(S4200)、1つのテキストデータを採用する(S4300)。そして、端末音声認識部610は、採用したテキストデータを、表示部620に表示させ、適宜、ユーザによる修正を受け付ける(S4400)。
【0118】
ここでは、音声認識サーバ400による誤った音声認識結果である「二個のさんが遊びに来ました。」が、「にこ乃さんが遊びに来ました。」という正しいテキストデータに修正される。
【0119】
このような第3の段階の動作により、音声認識サーバ400の音声認識結果のうち、処理対象文節を、ユーザ辞書を用いた音声認識結果で置き換えることができる。これにより、読みや表記が特殊な姓や名を発話した場合でも、正しい音声認識結果を得ることができる。
【0120】
以上説明したように、本実施の形態によれば、姓名が結合して成る文字列の姓と名との区切りをより確実に判定することができる。
【0121】
なお、以上説明した実施の形態では、姓頻度および名頻度の抽出対象をそれぞれ2文字としたが、携帯電話機500の処理能力や要求される精度に応じて、他の文字数を採用してもよい。但し、少なくともその文字数以上で生成された姓頻度データおよび名頻度データを用意する必要がある。
【0122】
また、姓頻度のみ、または、名頻度のみによって姓名の区切りを決定してもよい。この場合、処理負荷を軽減することができる。特に、姓は名に比べて特殊性が低いため、姓頻度のみとした場合でもある程度の精度を確保することができる。
【0123】
また、ユーザ辞書の作成に用いる姓名データは、電話帳データに登録されたものに限定されない。例えば、具体的な人名をデータベース化した姓名データベースに登録された姓名データに基づいて、ユーザ辞書を作成してもよい。
【0124】
また、分割の対象は、姓名に限定されるものではない。例えば、企業名、ドメイン名等、2つ以上の特殊な文字列が結合された複合文字列を含み得る各種文字列に対して、適用可能である。
【0125】
また、携帯電話機で生成されたユーザ辞書の内容を、音声認識サーバの音声辞書に登録するようにしてもよい。これにより、いずれかの携帯電話機の電話帳データから生成されたユーザ辞書の内容を、他の携帯電話機の音声認識にも用いることができる。
【0126】
また、音声入力端末とは別の装置で、姓名頻度データの生成や特徴量データ全体に対する音声認識を行う例について説明したが、音声入力端末内でこれらの処理を行うようにしてもよい。
【産業上の利用可能性】
【0127】
本発明に係る姓名解析方法、姓名解析装置、音声認識装置、および姓名頻度データ生成方法は、姓名が結合して成る文字列に対して、姓と名の両方が特殊な場合であってもその区切りを判定することができる姓名解析方法、姓名解析装置、音声認識装置、および姓名頻度データ生成方法として有用である。
【図面の簡単な説明】
【0128】
【図1】本発明の一実施の形態に係る姓名解析装置を用いた音声認識システムの構成を示すシステム構成図
【図2】本実施の形態における姓名頻度データ生成装置の構成を示すブロック図
【図3】本実施の形態における音声認識サーバの構成を示すブロック図
【図4】本実施の形態における携帯電話機の構成を示すブロック図
【図5】本実施の形態における姓データの内容の一例を示す図
【図6】本実施の形態における姓の読みの末尾部分および文字数の抽出結果の一例を示す図
【図7】本実施の形態における姓頻度データの内容の一例を示す図
【図8】本実施の形態における名頻度データの内容の一例を示す図
【図9】本実施の形態における姓の表記の末尾1文字および読みの末尾部分の抽出結果の一例を示す図
【図10】本実施の形態における表記頻度データの内容の一例を示す図
【図11】本実施の形態におけるユーザ辞書生成処理を示すフローチャート
【図12】本実施の形態における電話帳データの内容の一例を示す図
【図13】本実施の形態における姓と名とを区切る処理の概要を示す図
【図14】本実施の形態におけるユーザ辞書の内容の一例を示す図
【図15】本実施の形態における音声認識処理の流れを示す模式図
【符号の説明】
【0129】
100 音声認識システム
200 姓名データベース
300 姓名頻度データ生成装置
310 装置通信部
320 姓頻度データ生成部
330 名頻度データ生成部
340 表記頻度データ生成部
350 姓名頻度データ格納部
360 姓名頻度データ送信部
400 音声認識サーバ
410 サーバ通信部
420 音声辞書格納部
430 サーバ音声認識部
500 携帯電話機
510 制御部
520 操作部
530 端末通信部
540 姓名頻度データ取得部
550 姓名頻度データ記憶部
560 電話帳データ格納部
570 辞書生成部
580 ユーザ辞書記憶部
590 音声入力部
600 音声特徴抽出部
610 端末音声認識部
620 表示部
700 通信網


【特許請求の範囲】
【請求項1】
複数の姓データの集合を用いて予め取得した、各々の姓を構成する文字列の末尾の文字列毎の出現頻度を表す姓頻度データを用いる姓名解析方法であって、
姓名が結合して成る姓名文字列をその先頭から順次2分割する工程と、
前記姓頻度データを参照して、前記分割位置の前半の末尾の文字列と一致する文字列の出現頻度を、前記分割位置毎に順次取得する工程と、
前記出現頻度が高い前記分割位置を、前記姓名文字列における姓と名との区切り位置であると判定する工程と、
を有する姓名解析方法。
【請求項2】
複数の名データの集合を用いて予め取得した、各々の名を構成する文字列の先頭の文字列毎の出現頻度を表す名頻度データを用いる姓名解析方法であって、
姓名が結合して成る姓名文字列をその先頭から順次2分割する工程と、
前記名頻度データを参照して、前記分割位置の後半の先頭の文字列と一致する文字列の出現頻度を、前記分割位置毎に順次取得する工程と、
前記出現頻度が高い前記分割位置を、前記姓名文字列における姓と名との区切り位置であると判定する工程と、
を有する姓名解析方法。
【請求項3】
複数の姓データの集合を用いて予め取得した、各々の姓を構成する文字列の末尾の文字列毎の出現頻度を表す姓頻度データと、複数の名データの集合を用いて予め取得した、各々の名を構成する文字列の先頭の文字列毎の出現頻度を表す名頻度データと、を用いる姓名解析方法であって、
姓名が結合して成る姓名文字列をその先頭から順次2分割する工程と、
前記姓頻度データを参照して、前記分割位置の前半の末尾の文字列と一致する文字列の出現頻度を、前記分割位置毎に順次取得する工程と、
前記名頻度データを参照して、前記分割位置の後半の先頭の文字列と一致する文字列の出現頻度を、前記分割位置毎に順次取得する工程と、
前記分割位置の前半の文字列に対して取得された前記出現頻度と、前記分割位置の前半の文字列に対して取得された前記出現頻度と、を乗じた値が高い前記分割位置を、前記姓名文字列における姓と名との区切り位置であると判定する工程と、
を有する姓名解析方法。
【請求項4】
前記姓名文字列は、読みを示す仮名文字列である、
請求項1記載の姓名解析方法。
【請求項5】
前記末尾の文字列および前記先頭の文字列は、仮名2文字である、
請求項3記載の姓名解析方法。
【請求項6】
前記分割位置の前半の文字数と一致する文字数の姓における出現頻度と、前記分割位置の後半の文字数と一致する文字数の名における出現頻度と、を取得する、
請求項4記載の姓名解析方法。
【請求項7】
前記複数の姓データの集合を用いて予め取得した、姓の読みの末尾毎の、姓の表記の末尾の文字列の出現頻度を表す表記頻度データを参照して、前記姓名文字列に対応する表記文字列における姓と名との区切り位置を判定する工程、を更に有する、
請求項4記載の姓名解析方法。
【請求項8】
複数の姓データの集合を用いて予め生成された、各々の姓を構成する文字列の末尾の文字列毎の出現頻度を表す姓頻度データと、複数の名データの集合を用いて予め取得した、各々の名を構成する文字列の先頭の文字列毎の出現頻度を表す名頻度データと、を取得する姓名頻度データ取得部と、
姓名が結合して成る姓名文字列をその先頭から順次2分割し、前記姓頻度データから取得される前記分割位置の前半の末尾の文字列と一致する文字列の出現頻度と、前記名頻度データから取得される前記分割位置の後半の先頭の文字列と一致する文字列の出現頻度とを乗じた値が高い位置で、前記姓名文字列を姓と名とに区切り、姓の辞書および名の辞書の少なくとも一方を生成する辞書生成部と、
を有する姓名解析装置。
【請求項9】
複数の姓データの集合を用いて予め生成された、各々の姓を構成する文字列の末尾の文字列毎の出現頻度を表す姓頻度データと、複数の名データの集合を用いて予め取得した、各々の名を構成する文字列の先頭の文字列毎の出現頻度を表す名頻度データと、を取得する姓名頻度データ取得部と、
姓名が結合して成る姓名文字列をその先頭から順次2分割し、前記姓頻度データから取得される前記分割位置の前半の末尾の文字列と一致する文字列の出現頻度と、前記名頻度データから取得される前記分割位置の後半の先頭の文字列と一致する文字列の出現頻度とを乗じた値が高い位置で、前記姓名文字列を姓と名とに区切り、姓の辞書および名の辞書の少なくとも一方を生成する辞書生成部と、
前記辞書生成部により生成された辞書を用いて音声認識処理を行う音声認識部と、
を有する音声認識装置。
【請求項10】
請求項6記載の姓名解析方法で用いられる前記姓頻度データおよび前記名頻度データを生成する姓名頻度データ生成方法であって、
前記複数の姓データの集合から、各々の姓の読みを示す仮名文字列の文字数および末尾の文字列を取得する工程と、
取得した前記文字数および前記末尾の文字列が同一となる姓をカウントして、前記姓頻度データを生成する工程と、
前記複数の名データの集合から、各々の名の読みを示す仮名文字列の文字数および先頭の文字列を取得する工程と、
取得した前記文字数および前記先頭の文字列が同一となる名をカウントして、前記名頻度データを生成する工程と、
を有する姓名頻度データ生成方法。


【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate