JP4993319B2 - ソフトウェアの国際化の検証を支援する装置及び方法 - Google Patents

ソフトウェアの国際化の検証を支援する装置及び方法 Download PDF

Info

Publication number
JP4993319B2
JP4993319B2 JP2009031387A JP2009031387A JP4993319B2 JP 4993319 B2 JP4993319 B2 JP 4993319B2 JP 2009031387 A JP2009031387 A JP 2009031387A JP 2009031387 A JP2009031387 A JP 2009031387A JP 4993319 B2 JP4993319 B2 JP 4993319B2
Authority
JP
Japan
Prior art keywords
character string
character
unit
sentence
text data
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.)
Expired - Fee Related
Application number
JP2009031387A
Other languages
English (en)
Other versions
JP2010186406A (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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2009031387A priority Critical patent/JP4993319B2/ja
Priority to US12/703,185 priority patent/US8447586B2/en
Publication of JP2010186406A publication Critical patent/JP2010186406A/ja
Application granted granted Critical
Publication of JP4993319B2 publication Critical patent/JP4993319B2/ja
Expired - Fee Related 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
    • G06F40/51Translation evaluation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/454Multi-language systems; Localisation; Internationalisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Human Computer Interaction (AREA)
  • Artificial Intelligence (AREA)
  • Debugging And Monitoring (AREA)
  • Machine Translation (AREA)

Description

本発明は、ソフトウェアの国際化の検証を支援する装置及び方法に関する。
近年、ソフトウェアの国際化が進んでいる。ソフトウェアの国際化とは、特定の1つの言語環境でしか利用できないソフトウェアを、それ以外の言語環境でも利用できるように整備することである。例えば、英語しか使用できないソフトウェアを改良し、英語以外の言語(例えば、日本語、中国語、韓国語、ドイツ語、ロシア語等)を使用できるようにすることを指す。
ソフトウェアの国際化では、他の言語環境に対応するために次のようなことが行われる。
・ユーザインターフェイス上のメッセージやメニューの翻訳
・日時、数値、通貨等のデータの表記方法(年月日の表示順序、小数点や桁区切りとして使用される記号等)の変更
・文字列の比較、並び替えアルゴリズムの変更
・表示に用いるフォント、文字セットの変更
かかるソフトウェアの国際化を実施する場合、新たな言語環境におけるソフトウェアの動作に問題がないかのテストを行う必要がある。このようなテストは「グローバリゼーションテスト」と呼ばれる。
グローバリゼーションテストでは、上記の地域や文化に依存した情報を、対象とするシステムが正しく扱っているかどうかを検証する。
ところで、このグローバリゼーションテストは、テスト対象の地域、文化、言語のネイティブ又はこれらに精通した人物によって行われることが望ましい。
しかしながら、実際には、このテストが一部の地域で集約して行われる状況、例えば、中国でアジア全域の言語に対するテストが行われるような状況は今日よく見受けられる。
また、ソフトウェアの開発は、多くの場合、主言語(通常は英語)で進められており、その他の言語での検証には、主言語での結果との比較による確認が必要になることが多い。
このような状況下では、テストの実行の難度が高くなり、データの誤りの見落としによるテストの抜けが問題となる。具体的には次のような問題が生じ得る。
(1)表示ができている、文字化けしていない、といった表層の検証のみに留まり、地域や文化に依存するデータが正しく表示できているかという観点で検証する場合に注目すべき点が分からない。
(2)自分が慣れ親しんでいる言語による正しい表示を見ると、それがテスト対象地域では相応しくないことを見落とす。
(3)日時、通貨等、言語に依存する形式で記述される文字が表示されている場合に、それが正しい形式で並んでいるのか判別できない。
(4)欧米言語のように同一種の文字を使用して表示された情報の中に複数の言語が混在していても気付かない。
(5)主言語では表示されているものが、他の言語では抜け落ちていたとしても、それを発見できない。
ソフトウェアの国際化に関しては、従来、幾つかの提案がなされている(例えば、特許文献1、2参照)。
特許文献1では、ユーザによって検討される国際化トピックスのメインカテゴリを示すデータをリストしたマスタスコアカードを生成し、このマスタスコアカードにリストされたトピックスのメインカテゴリに関するソフトウェア製品の国際化の準備を示す所定の統計値を計算している。
特許文献2では、各フォントが、テスト対象となる複数の文字コードのグループと、その他の複数の文字コードのグループとに対し異なる対応付け規則を使用して字形を対応付けたものである複数のフォントを用意し、擬似翻訳されたテスト用リソースファイルを参照して処理を行う国際化ソフトウェアからの出力情報を、この複数のフォントの何れか1つを使用して表示することにより、各フォントを用いた出力情報の表示において、テスト対象となる文字コードとその他の文字コードとを識別可能にしている。
特開2001−188693号公報 特開2008−065794号公報
このように、従来、ソフトウェアの国際化に関する技術は存在した。
しかしながら、特許文献1の技術は、ソフトウェアの国際化の準備を評価し改良するものであり、ソフトウェアの国際化に関して最も重要な部分である検証作業を支援するものではない。
また、特許文献2の技術は、国際化ソフトウェアのテストに関し、上記した問題の(1)に注力したものであり、上記した問題の(2)〜(5)はカバーしていない。
本発明の目的は、言語に依存する形式で記述される文字列の検証の効率性及び確実性を高めることにある。
かかる目的のもと、本発明は、ソフトウェアの国際化の検証を支援する装置であって、ソフトウェアを動作させることによって出力されたテキストデータを取得するテキストデータ取得部と、テキストデータ取得部により取得されたテキストデータから、言語に依存する形式で記述される種類として予め定められた特定の種類の複数の文字列を抽出する文字列抽出部と、ソフトウェアを第1の言語環境で動作させることによって出力された第1のテキストデータから文字列抽出部により抽出された複数の文字列のうちの第1の文字列と、ソフトウェアを第2の言語環境で動作させることによって出力された第2のテキストデータから文字列抽出部により抽出された複数の文字列のうちの第2の文字列とを関連付けるかどうかを、第1の文字列と第2の文字列との差分を用いて決定する文字列関連付け決定部と、文字列関連付け決定部により第1の文字列と第2の文字列とを関連付けると決定された場合に、第1の文字列を特定の記述形式に正規化して得られた第1の正規化文字列と、第2の文字列を特定の記述形式に正規化して得られた第2の正規化文字列とを比較することにより、第1の文字列が表す内容と第2の文字列が表す内容とが整合しているかどうかを判定する内容整合性判定部とを含む、装置を提供する。
ここで、文字列関連付け決定部は、第1のテキストデータから文字列抽出部により抽出された複数の文字列の各々と、第2のテキストデータから文字列抽出部により抽出された複数の文字列の各々とを対応付けることにより、複数組の文字列を形成し、第1の文字列と第2の文字列とを関連付けるかどうかを、各組の文字列の差分の複数組におけるばらつき度合に基づいて決定する、ものであってよい。
また、内容整合性判定部は、第1の正規化文字列と第2の正規化文字列との差分が予め定めた閾値以内である場合に、第1の文字列が表す内容と第2の文字列が表す内容とが整合していると判定する、ものであってよい。
更に、内容整合性判定部は、第1の正規化文字列及び第2の正規化文字列の少なくとも何れか一方を文字ごとに特定の規則で変換して得られた2つの文字列における文字の出現順序及び出現頻度を比較することにより、第1の文字列が表す内容と第2の文字列が表す内容とが整合しているかどうかを判定する、ものであってよい。
また、この装置は、第1のテキストデータ内の第1の文字列及び第2のテキストデータ内の第2の文字列の少なくとも何れか一方に関連付けて、内容整合性判定部による判定結果を出力する出力部を更に含む、ものであってよい。
更に、この装置は、テキストデータ取得部により取得されたテキストデータの言語と、文字列抽出部により抽出された複数の文字列の各々の言語とが整合しているかどうかを判定する言語整合性判定部を更に含む、ものであってよい。
また、本発明は、ソフトウェアの国際化の検証を支援する装置であって、ソフトウェアを動作させることによって出力された複数のテキストブロックを取得するテキストブロック取得部と、テキストブロック取得部により取得された複数のテキストブロックの各々から、言語に依存する形式で記述される種類として予め定められた特定の種類の文字列を抽出する文字列抽出部と、ソフトウェアを第1の言語環境で動作させることによって出力された複数のテキストブロックのうちの第1のテキストブロックと、ソフトウェアを第2の言語環境で動作させることによって出力された複数のテキストブロックのうちの第2のテキストブロックとを関連付けるかどうかを、第1のテキストブロックから文字列抽出部により抽出された文字列と、第2のテキストブロックから文字列抽出部により抽出された文字列とに基づいて決定するテキストブロック関連付け決定部とを含む、装置も提供する。
ここで、テキストブロック関連付け決定部は、第1のテキストブロックと第2のテキストブロックとを関連付けるかどうかを、第1のテキストブロックから文字列抽出部により抽出された文字列の数と、第2のテキストブロックから文字列抽出部により抽出された文字列の数との比較結果に基づいて決定する、ものであってよい。
また、本発明は、ソフトウェアの国際化の検証を支援する装置であって、ソフトウェアを動作させることによって出力されたテキストデータから複数のテキストブロックを抽出するテキストブロック抽出部と、テキストブロック抽出部により抽出された複数のテキストブロックの各々から、言語に依存する形式で記述される種類として予め定められた特定の種類の複数の文字列を抽出する文字列抽出部と、ソフトウェアを第1の言語環境で動作させることによって出力された第1のテキストデータからテキストブロック抽出部により抽出された複数のテキストブロックのうち第1のテキストブロックと、ソフトウェアを第2の言語環境で動作させることによって出力された第2のテキストデータからテキストブロック抽出部により抽出された複数のテキストブロックのうちの第2のテキストブロックとを関連付けるかどうかを、第1のテキストブロックから文字列抽出部により抽出された複数の文字列と、第2のテキストブロックから文字列抽出部により抽出された複数の文字列とに基づいて決定するテキストブロック関連付け決定部と、テキストブロック関連付け決定部により第1のテキストブロックと第2のテキストブロックとを関連付けると決定された場合に、第1のテキストブロックから文字列抽出部により抽出された複数の文字列のうちの第1の文字列と、第2のテキストブロックから文字列抽出部により抽出された複数の文字列のうちの第2の文字列とを関連付けるかどうかを、第1の文字列と第2の文字列との差分を用いて決定する文字列関連付け決定部と、文字列関連付け決定部により第1の文字列と第2の文字列とを関連付けると決定された場合に、第1の文字列を特定の記述形式に正規化して得られた第1の正規化文字列と、第2の文字列を特定の記述形式に正規化して得られた第2の正規化文字列とを比較することにより、第1の文字列が表す内容と第2の文字列が表す内容とが整合しているかどうかを判定する内容整合性判定部と、第1のテキストデータ内の第1の文字列及び第2のテキストデータ内の第2の文字列の少なくとも何れか一方に関連付けて、内容整合性判定部による判定結果を出力する出力部とを含む、装置も提供する。
更に、本発明は、ソフトウェアの国際化の検証を支援する方法であって、ソフトウェアを第1の言語環境で動作させることによって出力された第1のテキストデータを取得するステップと、第1のテキストデータから、言語に依存する形式で記述される種類として予め定められた特定の種類の複数の文字列を抽出するステップと、ソフトウェアを第2の言語環境で動作させることによって出力された第2のテキストデータを取得するステップと、第2のテキストデータから特定の種類の複数の文字列を抽出するステップと、第1のテキストデータから抽出された複数の文字列の各々と、第2のテキストデータから抽出された複数の文字列の各々とを、第1のテキストデータから抽出された各文字列と第2のテキストデータから抽出された各文字列との差分に基づいて関連付けるステップと、第1のテキストデータから抽出された複数の文字列のうちの第1の文字列を特定の記述形式に正規化して得られた第1の正規化文字列と、第2のテキストデータから抽出された複数の文字列のうちの第1の文字列に関連付けられた第2の文字列を特定の記述形式に正規化して得られた第2の正規化文字列とを比較することにより、第1の文字列が表す内容と第2の文字列が表す内容とが整合しているかどうかを判定するステップとを含む、方法も提供する。
更にまた、本発明は、ソフトウェアの国際化の検証を支援する装置としてコンピュータを機能させるプログラムであって、コンピュータを、ソフトウェアを動作させることによって出力されたテキストデータを取得するテキストデータ取得部と、テキストデータ取得部により取得されたテキストデータから、言語に依存する形式で記述される種類として予め定められた特定の種類の複数の文字列を抽出する文字列抽出部と、ソフトウェアを第1の言語環境で動作させることによって出力された第1のテキストデータから文字列抽出部により抽出された複数の文字列のうちの第1の文字列と、ソフトウェアを第2の言語環境で動作させることによって出力された第2のテキストデータから文字列抽出部により抽出された複数の文字列のうちの第2の文字列とを関連付けるかどうかを、第1の文字列と第2の文字列との差分を用いて決定する文字列関連付け決定部と、文字列関連付け決定部により第1の文字列と第2の文字列とを関連付けると決定された場合に、第1の文字列を特定の記述形式に正規化して得られた第1の正規化文字列と、第2の文字列を特定の記述形式に正規化して得られた第2の正規化文字列とを比較することにより、第1の文字列が表す内容と第2の文字列が表す内容とが整合しているかどうかを判定する内容整合性判定部として機能させる、プログラムも提供する。
本発明によれば、言語に依存する形式で記述される文字列の検証の効率性及び確実性を高めることができる。
本発明の実施の形態における検証作業支援装置の機能構成例を示した図である。 本発明の実施の形態のコンテンツ記憶部に記憶される英語のコンテンツの一例を示した図である。 本発明の実施の形態のコンテンツ記憶部に記憶される日本語のコンテンツの一例を示した図である。 本発明の実施の形態におけるコンテンツ解析部の動作例を示したフローチャートである。 本発明の実施の形態のコンテンツ解析部による英語のコンテンツの解析結果の一例を示した図である。 本発明の実施の形態のコンテンツ解析部による日本語のコンテンツの解析結果の一例を示した図である。 本発明の実施の形態における第1検証部の動作例を示したフローチャートである。 本発明の実施の形態の第1検証部で参照される許容度テーブルの一例を示した図である。 本発明の実施の形態の第1検証部による検証の別の例を説明するための図である。 本発明の実施の形態における第2検証部の動作例を示したフローチャートの前半部分である。 本発明の実施の形態における第2検証部の動作例を示したフローチャートの後半部分である。 本発明の実施の形態の第2検証部による欠損ブロックの特定及び欠損ブロックの情報の通知について説明するための図である。 本発明の実施の形態の第2検証部による文字列差分算出処理の動作例を示したフローチャートである。 本発明の実施の形態における検証結果の表示例を示した図である。 本発明の実施の形態を適用可能なコンピュータのハードウェア構成を示した図である。
以下、添付図面を参照して、本発明の実施の形態について詳細に説明する。
まず、本実施の形態におけるソフトウェアの国際化の検証作業を支援する検証作業支援装置1の機能構成について説明する。
図1は、このような検証作業支援装置1の機能構成例を示した図である。
図示するように、この検証作業支援装置1は、コンテンツ記憶部5と、コンテンツ解析部10と、解析結果記憶部20と、第1検証部30と、第2検証部40と、コンテンツ更新部50と、制御部60とを備えている。
コンテンツ記憶部5は、検証作業支援装置1の画面に表示されるコンテンツを記憶する。
コンテンツ解析部10は、コンテンツ記憶部5に記憶されているコンテンツを解析し、検証対象となる要素を抽出する。具体的には、コンテンツに自然言語処理を適用し、地域や文化に依存する記述形式を有するデータ(以下、「地域/文化型データ」という)や、コンテンツの構成に関する情報(以下、「構成情報」という)を取得する。ここで、地域/文化型データとしては、日付、時刻、数値、通貨等がある。また、構成情報としては、パラグラフの情報、言語の情報、地域/文化型データ以外の単語等がある。尚、これらの情報は可能な限り関連付けられる。パラグラフごとに、例えば、そのパラグラフで使われている言語、そのパラグラフに含まれる地域/文化型データの数や出現順序、そのパラグラフに含まれる文の数等が管理される。本実施の形態では、テキストデータを取得するテキストデータ取得部、複数のテキストブロックを取得するテキストブロック取得部、テキストデータから複数のテキストブロックを抽出するテキストブロック抽出部の一例として、コンテンツ解析部10を設けている。また、言語に依存する形式で記述される種類として予め定められた特定の種類の一例として、地域/文化型データのデータ型(日付型、時刻型、数値型、通貨型等)を用いており、テキストデータ又は複数のテキストブロックの各々から特定の種類の文字列を抽出する文字列抽出部の一例として、コンテンツ解析部10を設けている。
解析結果記憶部20は、コンテンツ解析部10による解析結果を保持する。具体的には、コンテンツ解析部10による解析結果をデータベース等に保持する。このとき、コンテンツ解析部10による解析結果は常に解析結果記憶部20にストアすることにする。また、解析結果を他の機能部からのリクエストに応じて参照可能にする。本実施の形態では、後述する第1検証部30及び第2検証部40からのリクエストに応じて参照させる。尚、図には、解析結果記憶部20を1つしか示さなかったが、解析結果記憶部20を複数用意し、1つの解析結果記憶部20が1つの言語に関する解析結果を記憶する構成や、特定の言語に関する解析結果を、複数の解析結果記憶部20に分けて記憶する構成を採用してもよい。この場合、後述する第2検証部40からある言語をURLで指定したリクエストがあったときに、例えば、そのURLから類推したその他の言語のURLの一覧を返すようにすることもできる。
第1検証部30は、コンテンツ解析部10で抽出された要素を検証する。ここでは、例えば、次のような検証を行う。第一に、コンテンツ全体の言語と各パラグラフの言語が一致しているか、といった検証である。第二に、地域/文化型データの表記法がどの言語のルールに従っているか、といった検証である。例えば、「2008年6月」は日本語の日付表記で年月を表すものであるので、この日付表記を検証することにより日本語のルールに従っていることが分かる。第三に、地域/文化型データの表記法が、それを含むコンテンツの言語に適したものであるか、といった検証である。この検証により、例えば、日本語の文中に英語形式の日付表記が出現していること等が分かる。本実施の形態では、テキストデータの言語と文字列の言語とが整合しているかどうかを判定する言語整合性判定部の一例として、第1検証部30を設けている。
第2検証部40は、解析結果記憶部20に保持された複数の言語に関する解析結果を比較して更に高度な検証を行う装置である。例えば、主言語(多くの場合、英語)に関する解析結果と、副言語(日本語等)に関する解析結果とを比較して検証する。具体的には、第1検証部30での検証に加えて、次のような検証を行う。第一に、構成情報に基づくコンテンツの構造に関する検証である。即ち、パラグラフが同数であるか、対応するパラグラフが同数の地域/文化型データを保持しているかを検証することで、パラグラフの抜け落ちを発見する。第二に、対応する日付等が同じか又はその差異が許容される範囲内であるかどうかを、対応する日付等を正規化して比較する。例えば、「2008年6月」と「Jun.2008」は、正規化すると何れも「2008-06-00」となるので、同一と判断される。尚、本実施の形態では、第2検証部40による検証対象である複数の言語に関する解析結果は全て解析結果記憶部20に保持されるものとして説明するが、一部の言語に関する解析結果のみが解析結果記憶部20に保持される構成であってもよい。この場合、例えば、主言語に関する解析結果を解析結果記憶部20に保持しておき、コンテンツ解析部10が副言語のコンテンツを解析しながら、第2検証部40がこれを解析結果記憶部20に記憶された解析結果と比較して検証することになる。本実施の形態では、第1のテキストブロックと第2のテキストブロックとを関連付けるかどうかを決定するテキストブロック関連付け決定部、第1の文字列と第2の文字列とを関連付けるかどうかを決定する文字列関連付け決定部、第1の文字列が表す内容と第2の文字列が表す内容とが整合しているかどうかを判定する内容整合性判定部の一例として、第2検証部40を設けている。
コンテンツ更新部50は、第1検証部30及び第2検証部40による検証結果が検証作業支援装置1の画面に分かり易く表示されるように、コンテンツ記憶部5に記憶されたコンテンツを更新する。この場合、例えば、結果の重要度やカテゴリに応じて強調表示するようにしてもよい。尚、第2検証部40による検証対象である複数の言語に関する解析結果のうち一部の言語に関する解析結果のみが解析結果記憶部20に保持されている場合は、検証作業支援装置1の画面に分かり易く表示する対象の中に、コンテンツ解析部10から得られた情報を含めてもよい。本実施の形態では、内容整合性判定部による判定結果を出力する出力部の一例として、コンテンツ更新部50を設けている。
制御部60は、コンテンツ解析部10、第1検証部30、第2検証部40、コンテンツ更新部50の連携動作を管理する。
次に、本実施の形態における検証作業支援装置1の動作について詳細に説明する。尚、ここでは、国際化されたソフトウェアを英語環境で動作させることによって出力された英語のコンテンツと、同じソフトウェアを日本語環境で動作させることによって出力された日本語のコンテンツがあるものとして説明を進める。また、これらのコンテンツには、地域/文化型データが含まれているものとする。
図2及び図3に、以下の説明で用いるコンテンツを示す。図2は、英語環境で出力された英語のコンテンツを示したものであり、図3は、日本語環境で出力された日本語のコンテンツを示したものである。尚、後述する説明で明らかになるが、図2に示した英語のコンテンツにおけるパラグラフ#4に対応するパラグラフが、図3に示した日本語のコンテンツには存在しておらず、パラグラフの抜け落ちが発生した例となっている。
以下、このようなコンテンツがコンテンツ記憶部5に記憶されているものとして、各機能部の動作を説明する。
まず、コンテンツ解析部10の動作について説明する。
ここで、コンテンツ解析部10は、以下を前提として動作するものとする。
第一に、対象とするコンテンツは、HTTP(HyperText Transfer Protocol)やFTP(File Transfer Protocol)等のプロトコルを用いてネットワーク上のコンピュータから、或いは、ローカルのマシン上から、バイトデータとして取得できるものとする。典型例としては、URL(http://...やfile://...)等で位置を指定できるものであることを前提とする。
第二に、対象とするコンテンツは、その「テキスト表現」をコンテンツ解析部10が何らかの形で取得可能なものであるとする。例えば、画像やアニメーション等のコンテンツであっても、内部に含まれるテキストを抽出できれば、対象とすることができる。
第三に、対象となるコンテンツから取得されたテキストデータ(以下、単に「テキスト」という)は、例えば、図2及び図3に示したパラグラフのようなテキストブロック(以下、単に「ブロック」という)に分割できるものとする。コンテンツは、多くの場合、MIME(Multipurpose Internet Mail Extension)タイプによって、ブロックの分割の目印となる文字列やタグ等が定まっている。例えば、MIMEタイプが「text/html」の場合は、</p>と<p>の間をブロックの区切りとすればよく、MIMEタイプが「text/plain」の場合は、改行のみの行(空白行)をブロックの区切りとすればよい。
このような前提の下、コンテンツ解析部10は、処理対象のテキストを取得すると、次のような動作を行う。
図4は、このときのコンテンツ解析部10の動作例を示したフローチャートである。
まず、コンテンツ解析部10は、処理対象の全テキストを走査し、全体としてどの言語で書かれたものか(ロケール)を推定する(ステップ101)。ここで、推定の結果は、各言語で書かれている可能性を示す指標である推定度を用いて、推定度付きリスト(以下、「ロケール推定リスト」という)として保持する。例えば、英語の推定度が0.85であり、ドイツ語の推定度が0.7であるとすると、ロケール推定リスト「en=0.85;de=0.7;...」が保持される。尚、本明細書では、英語を「en」、ドイツ語を「de」のように、BCP(Best Current Practice)47に準拠した言語タグで用いられる識別子で言語を表すが、必ずしもこれには限らない。
次に、コンテンツ解析部10は、処理対象の全テキストをブロックに分割する(ステップ102)。ここで、ブロックとしては、図2及び図3に示したパラグラフの他、複数の文(センテンス)からなるテキスト列等が挙げられる。尚、ブロックへの分割は、上述したように、例えば、HTML文書の場合であれば</p>と<p>の間で区切ることにより行えばよい。また、このブロックへの分割において、各ブロックには、全テキスト内でブロックを一意に識別可能なブロックIDが割り当てられる。
そして、コンテンツ解析部10は、ブロックごとに以下の処理を繰り返す。
即ち、コンテンツ解析部10は、まず、ブロックのロケールを推定する(ステップ103)。ここでも、推定の結果は、ロケール推定リストとして保持する。例えば、ブロックIDが「1」のブロックについて、英語の推定度が0.9であり、ドイツ語の推定度が0.8であるとすると、ロケール推定リスト「en=0.9;de=0.8;...」がブロックID「1」に関連付けて保持される。
次に、コンテンツ解析部10は、ブロック内のテキストを文(センテンス)に分解する(ステップ104)。尚、このセンテンスへの分解においても、各センテンスには、ブロック内でセンテンスを一意に識別可能なセンテンスIDが割り当てられる。
更に、コンテンツ解析部10は、ロケールによって記述形式が異なる可能性のある文字列(トークン)ごとに、センテンスID、開始位置、終了位置、カテゴリID、ロケール推定リストを決定し、これらを対応付けた文字列テーブルを生成する(ステップ105)。ここで、センテンスIDは、ブロック内でのセンテンスの通し番号であり、開始位置及び終了位置は、処理対象テキスト全体の先頭を基準とした文字列の開始及び終了の位置である。また、カテゴリIDは、文字列のカテゴリ(例えば、日付、時刻、数値、通貨等の種類)のIDであり、ロケール推定リストは、文字列のロケールの推定結果である。尚、この場合、文字列テーブルに含める文字列や、文字列テーブルにおいてその文字列に関連付けるカテゴリID及びロケール推定リストは、次のように決定される。即ち、まず、カテゴリIDとロケールと表記法との対応を予め用意しておく。そして、テキスト中にこの表記法にマッチする文字列があった場合に、その文字列を文字列テーブルに含める文字列として決定し、その表記法に対応付けられたカテゴリID及びロケールをその文字列に関連付けるカテゴリID及びロケールとして決定する。このとき、カテゴリIDとロケールの複数の組に対応付けられた表記法にマッチする文字列があった場合、その文字列に関連付けるロケール推定リストには複数のロケールが含まれることがある。
その後、コンテンツ解析部10は、他に未処理のブロックがあるかどうかを判定する(ステップ106)。その結果、未処理のブロックがあれば、ステップ103に戻る。一方、未処理のブロックがなければ、コンテンツ解析部10は、ステップ101で推定した全体のロケールを含む全体情報と、ブロックID、ステップ103で推定したブロックのロケール、ステップ105で生成した文字列テーブルを含むブロック情報とを、テキストの解析結果として解析結果記憶部20に保存する(ステップ107)。尚、ここで保存される全体情報には、対象テキストの位置情報を含んでもよい。この位置情報としては、「http://www.foo.com/en-us/info.html」等のURLが例示される。また、全体情報には、対象テキストの全体を含めても構わない。
ここで、ステップ107で保存されるブロック情報について、具体例を用いて説明する。
図5は、図2に示した英語のコンテンツのパラグラフ#1に関するブロック情報について説明するための図である。
(a)には、パラグラフ#1から抽出される文字列を、パラグラフ#1のテキスト上に太枠で囲んで示している。
また、(b)には、これらの文字列を含むブロック情報の一例を示している。
即ち、まず、(a)に示したブロックのブロックIDが「1」であることが示されている。
また、このブロックのロケール推定リストが「en=0.9;de=0.8;…」であることも示されている。
(b)には、更に、文字列テーブルも示されている。この文字列テーブルは、前述の通り、センテンスID、開始位置、終了位置、カテゴリID、ロケール推定リストを対応付けたものとなっている。尚、図では、データ型として「固有名詞」も示している。「固有名詞」は、ロケールによって記述形式が異なる可能性のあるデータ型ではないが、後述するブロック欠損等を検証するために役立つので、このようなデータ型も含めている。また、ここでは、データ型として、「固有名詞」、「日付」、「数値」のみが例示されているが、他にURLや通貨等をデータ型として採用してもよい。また、ロケール推定リストには、「*」がセットされる場合もある。この「*」は、ロケールに依存しない、つまり、どのロケールであっても同じ表記法になることを意味する。また、「Western」のように、特定のロケールの集合を表す識別子がセットされることもある。
尚、図示した文字列テーブルは、具体的には、次のような情報を管理している。即ち、「18 Jun 2008」が日付型でロケール推定リストが「en-US」であること、「IBM」が固有名詞でロケール推定リストが「*」であること、「500」が数値型でロケール推定リストが「Western」であること、「1.02」が数値型でロケール推定リストが「Western」であること、「1.02 quadrillion」が数値型でロケール推定リストが「en」であることを管理している。
一方、図6は、図3に示した日本語のコンテンツのパラグラフ#1に関するブロック情報について説明するための図である。
(a)には、パラグラフ#1から抽出される文字列を、パラグラフ#1のテキスト上に太枠で囲んで示している。
また、(b)には、これらの文字列を含むブロック情報の一例を示している。
即ち、まず、(a)に示したブロックのブロックIDが「1」であることが示されている。
また、このブロックのロケール推定リストが「ja=0.9;…」であることも示されている。
(b)には、更に、文字列テーブルも示されているが、この文字列テーブルについての一般的な説明は既に図5に関して行っているので、ここでは省略する。
尚、図示した文字列テーブルは、具体的には、次のような情報を管理している。即ち、「2008年6月18号」が日付型でロケール推定リストが「zh-CN」であること、「IBM」が固有名詞でロケール推定リストが「*」であること、「500」が数値型でロケール推定リストが「Western」であること、「1.02」が数値型でロケール推定リストが「Western」であること、「1.020兆」が数値型でロケール推定リストが「ja」であることを管理している。
次に、第1検証部30の動作について説明する。この第1検証部30は、全体、ブロックごと、文字列ごとのロケール推定リストが一致しない場合、又は、包含しない場合に、その旨を検証者に知らせることができるようにする。具体的には、次のような動作を行う。
図7は、第1検証部30の動作例を示したフローチャートである。
まず、第1検証部30は、解析結果記憶部20に記憶された全体情報のうち、全体のロケール推定リストを取得する(ステップ301)。
そして、第1検証部30は、ブロックごとに、全テキストとのロケールのマッチングを行う。即ち、解析結果記憶部20に記憶されたブロック情報のうち、1つのブロックのロケール推定リストを取得し(ステップ302)、全体のロケールとブロックのロケールが一致するかどうかを判定する(ステップ303)。尚、ここでは、ロケール推定リストにおける言語の第1候補どうしを比較するものとする。つまり、全体のロケール推定リストが「en=0.85;de=0.7;…」であり、ブロックのロケール推定リストが「en=0.9;de=0.8;…」である場合は、「en」だけを比較する。
その結果、ロケールが異なっていれば、ブロックIDとロケールが不一致である旨の情報とをコンテンツ更新部50に通知する(ステップ304)。
一方、ロケールが一致していれば、第1検証部30は、文字列ごとに、ブロックとのロケールのマッチングを行う。即ち、解析結果記憶部20に記憶された文字列テーブルから、1つの文字列に対応するカテゴリID及びロケール推定リストを取得する(ステップ305)。そして、許容度テーブルを参照して、文字列のロケールに対する許容度を決定する(ステップ306)。ここで、許容度テーブルとは、詳しくは後述するが、文字列のカテゴリごとに、ブロックのロケールと文字列のロケールとの組み合わせに対して、予め許容度を設定したテーブルである。これにより、第1検証部30は、決定した許容度を、文字列テーブルにおいて文字列に対応付けられたセンテンスID、開始位置、終了位置と共にコンテンツ更新部50に通知する(ステップ307)。
その後、第1検証部30は、他に未処理の文字列があるかどうかを判定する(ステップ308)。その結果、未処理の文字列があれば、ステップ305に戻る。一方、未処理の文字列がなければ、第1検証部30は、他に未処理のブロックがあるかどうかを判定する(ステップ309)。その結果、未処理のブロックがあれば、ステップ302に戻る。一方、未処理のブロックがなければ、処理を終了する。
ここで、ステップ306で参照する許容度テーブルについて説明する。
図8は、許容度テーブルの一例を示した図である。
図示するように、この許容度テーブルでは、縦方向にブロックのロケールが設定され、横方向にカテゴリごとに文字列のロケールが設定されている。そして、カテゴリごとに、あるブロックのロケールとある文字列のロケールに対応するセルに、そのブロックのロケールにおけるその文字列のロケールがどの程度許容されるかを示す許容度が設定されている。尚、ここでは、許容度を、D(拒否(Decline))、L(低(Low))、M(中(Medium))、H(高(High))の4段階で示しており、これらは、検証結果の表示に関して言えば、それぞれ、「NG」、「警告」、「注意」、「OK」に対応するものである。但し、許容度の段階数やその意味付けはこれに限られるものではない。また、どのセルにどのような許容度を設定するかも、図示したものには限らず、テストの方針や対象のアプリケーションの特性によって自由に決めることができる。
次いで、図7に示した第1検証部30による検証処理について具体的に説明する。
ここでは、図6に示したブロック情報について、図7の検証処理を行う場合を考える。
この場合、ステップ301で全体のロケールが「ja」と推定され、ステップ302でブロックID「1」のブロックのロケールが「ja」と推定され、ステップ303で全体のロケールとブロックのロケールとが一致すると判定される。これにより、コンテンツ更新部50は、検証結果が「OK」であることが分かるように、コンテンツを更新する。
また、ステップ305で文字列テーブルの1行目から「2008年6月18号」のカテゴリ「日付」、ロケール「zh_CN」を取得する。そして、ステップ306では、許容度テーブルのカテゴリ「日付」の部分において、ブロックのロケールが「ja」であり、文字列のロケールが「zh_CN」であるセルを参照し、許容度「M」を取得する。これにより、コンテンツ更新部50は、検証結果が「注意」であることが分かるように、コンテンツを更新する。
更に、ステップ305で文字列テーブルの3行目から「500」のカテゴリ「数値」、ロケール「Western」を取得する。そして、ステップ306では、許容度テーブルのカテゴリ「数値」の部分において、ブロックのロケールが「ja」であり、文字列のロケールが「Western」であるセルを参照し、許容度「H」を取得する。これにより、コンテンツ更新部50は、検証結果が「OK」であることが分かるように、コンテンツを更新する。
尚、上記動作例では、文字列のロケールが適切であるかどうかは、コンテンツ解析部10が抽出した文字列の単位で検証したが、これには限らない。例えば、コンテンツ解析部10が抽出した近接する複数の文字列を単位として検証するようにしてもよい。
以下、この場合の動作について説明する。
図9(a)は、検証対象のコンテンツの例を示した図である。
コンテンツ解析部10は、このコンテンツからブロック情報を生成する。
図9(b)は、コンテンツ解析部10によって生成されたブロック情報を示した図である。
このブロック情報の文字列テーブルにおいて、1行目は「水」に、2行目は「08/08/2007」に、3行目は「10:51」に、4行目は「午後」に、それぞれ対応している。また、1行目の「水」は曜日である可能性があるものとしてそのカテゴリは「日付付加情報」となっており、4行目の「午後」のカテゴリは「時刻付加情報」となっている。この場合、ブロックのロケールは「ja」であるので、曜日である「水」と日付である「08/08/2007」の並び順が日本語には適さないとして、検証結果を「警告」とすることが考えられる。
次に、第2検証部40の動作について説明する。
ここで、第2検証部40は、以下を前提として動作するものとする。
第一に、比較する言語(例えば、言語Aと言語B)に対応するコンテンツの取得位置は、予め第2検証部40に対して与えられているものとする。この取得位置は、例えば、言語Aについては、「http://www.foo.com/en-us/info.html」、言語Bについては、「http://www.foo.com/ja-jp/info.html」のように、URLとして与えられていればよい。尚、ここでは、URLの例として、言語を示す文字列を含めたが、第2検証部40は、URLから言語を推定しないので、URLに必ずしも言語が分かるような情報が入っていなくてもよい。
第二に、コンテンツの翻訳が正しく行われれば、コンテンツに含まれるブロックの数の増減はないものとする。つまり、ブロックへの分割の手がかりとなる文字列は、翻訳対象ではないものとする。
このような前提の下、第2検証部40は、次のような動作を行う。
図10−1及び図10−2は、このときの第2検証部40の動作例を示したフローチャートである。尚、この動作例では、言語Aのコンテンツと言語Bのコンテンツを比較検証するものとして説明する。
まず、図10−1に示すように、第2検証部40は、解析結果記憶部20に記憶された言語Aのコンテンツ及び言語Bのコンテンツの取得位置を示すURLに基づいて、各コンテンツに含まれるブロックの数を取得する(ステップ401)。ここでは、例えば、言語Aのコンテンツに含まれるブロック、言語Bのコンテンツに含まれるブロックの何れも60個である、といった情報や、言語Aのコンテンツに含まれるブロックは60個であるが、言語Bのコンテンツに含まれるブロックは48個である、といった情報を取得する。
次に、第2検証部40は、言語Aの各ブロックの特徴数配列と言語Bの各ブロックの特徴数配列とを作成する(ステップ402)。ここで、1ブロック分の特徴数配列は、カテゴリIDの順に各カテゴリに属する文字列の出現個数を列挙した配列を、センテンスIDの順に並べた配列である。そして、この特徴数配列は、例えば、{ [1,1,1,0,…] , [0,0,2,0,…] }といった形式で表すことができる。この場合、[1,1,1,0,…]は、センテンスID「1」のセンテンスに、カテゴリID「1」の文字列が1個、カテゴリID「2」の文字列が1個、カテゴリID「3」の文字列が1個、カテゴリID「4」の文字列が0個出現したことを示している。また、[0,0,2,0,…]は、センテンスID「2」のセンテンスに、カテゴリID「1」の文字列が0個、カテゴリID「2」の文字列が0個、カテゴリID「3」の文字列が2個、カテゴリID「4」の文字列が0個出現したことを示している。
そして、第2検証部40は、ステップ401で取得した各コンテンツのブロック数が同一かどうかを判定する(ステップ403)。
その結果、ブロック数が同一と判定した場合、第2検証部40は、対応するブロックID同士を関係付けたブロックID対応情報を作成する(ステップ404)。ここで、ブロックID対応情報は、対応するブロックIDの組を、各組に含まれるブロックIDの順に列挙することで作成した情報である。例えば、ステップ401で、言語Aのコンテンツに含まれるブロック、言語Bのコンテンツに含まれるブロックの何れも60個である、といった情報を取得した場合であれば、ブロックID対応情報は、{ [1,1],[2,2] ,…,[60,60] }といった形式で作成することができる。
一方、例えば、翻訳の抜け落ちや統合のミス等により、ブロック数が一致しない場合もある。従って、ブロック数が異なると判定した場合、第2検証部40は、ブロック欠損時処理を行う。
即ち、まず、第2検証部40は、欠損ブロックを特定し、ブロックID対応情報を作成する(ステップ405)。この場合、例えば、ステップ401で、言語Aのコンテンツに含まれるブロックは60個であるが、言語Bのコンテンツに含まれるブロックは48個である、といった情報を取得した場合であれば、ブロックID対応情報は、{ [1,1],[2,2] ,…,[60,48] }といった形式で作成することができる。
図11(a)は、どのブロックが欠損しているかを特定する欠損ブロック特定処理の概略を示す。この欠損ブロック特定処理では、言語Aのブロックの特徴数配列と言語Bのブロックの特徴数配列を比較し、特徴数配列の並びが一致しないブロックの組を探し出す。図示するように、例えば、言語AのブロックID「1」のブロックと、言語BのブロックID「1」のブロックとは、何れも{ [1,1,1,0,…] , [0,0,2,0,…] }であるので、これらのブロックは一致すると判定する。一方、言語BのブロックID「3」のブロックの特徴数配列が{ [1,0,2,0,…] , [0,1,2,0,…] }であるのに対し、言語AのブロックID「3」のブロックの特徴数配列がこれと一致しないものであるとすると、ブロックの組を変更して比較を行う。その結果、言語AのブロックID「6」のブロックと、言語BのブロックID「3」のブロックとは、何れも{ [1,0,2,0,…] , [0,1,2,0,…] }であるので、これらのブロックは一致すると判定する。
そして、この場合、ブロックID対応情報は、{ [1,1],[2,2],[6,3],[7,4],[8,5] }といった形式で作成することができる。
次に、第2検証部40は、欠損ブロックの情報をコンテンツ更新部50に通知する(ステップ406)。
図11(b)は、第2検証部40がどのような情報を通知するかを示した図である。
ブロック欠損の場合は、後述するカテゴリ欠損とは異なり、復元はできない。従って、復元を試みることなく、図示するような位置情報、つまり、言語Aの欠損ブロックの開始位置Xと終了位置Y、及び、言語Bの推定挿入位置Zを通知する。
その後、第2検証部40は、ステップ404又はステップ405で作成されたブロックID対応情報に含まれるブロックIDの各組について、各組に含まれるブロックIDで特定されるブロックが同じブロックであるかどうかの検証を繰り返す。
即ち、まず、第2検証部40は、1つのブロックIDの組に対応する特徴数配列の組、つまり、言語Aのブロックの特徴数配列と言語Bのブロックの特徴数配列を取得する(ステップ407)。そして、言語Aに関する特徴数配列と言語Bに関する特徴数配列とが一致するかどうかを判定する(ステップ408)。
その結果、2つの特徴数配列が一致すると判定されれば、カテゴリごとの対応付け処理に移る。
一方、例えば、データの文字化け等により、カテゴリ数が一致しない場合もある。従って、カテゴリ数が異なると判定した場合、第2検証部40は、カテゴリ欠損時処理を行う。
即ち、第2検証部40は、ブロックのロケール推定リストや前後の文字等を用いて、可能な限り、カテゴリの復元を試みる(ステップ409)。一例として、「2008年11月25日」という文字列の直後又は何文字か後に「(水)」という文字列がある場合を考える。そして、前者の文字列のカテゴリが「日付」、ロケールが「ja」と判定され、後者の文字列のカテゴリが「なし」と判定されたとする。このような場合、この2つの文字列をグループ化し、カテゴリを「日付」、ロケールを「ja」にしてみる。また、別の例として、「11:」という文字列の直後又は何文字か後に「24」という文字列がある場合を考える。そして、前者の文字列も後者の文字列もカテゴリが「数値」、ロケールが「Western」と判定されたとする。このような場合、この2つの文字列をグループ化し、カテゴリを「時刻」、ロケールを「Western」にしてみる。
その後、第2検証部40は、カテゴリの復元に成功したかどうかを判定する(ステップ410)。つまり、上述したような処理を行うことにより、言語Aに関する特徴数配列と言語Bに関する特徴数配列とが一致するようになるかどうかを判定する。
その結果、カテゴリの復元に成功したと判定されれば、つまり、上述したような処理を行うことにより2つの特徴数配列が一致するようになると判定されれば、カテゴリごとの対応付け処理に移る。
一方、カテゴリの復元に失敗したと判定されれば、つまり、上述したような処理を行っても2つの特徴数配列が一致するようにならないと判定されれば、欠損したデータに関する情報をコンテンツ更新部50に通知する(ステップ411)。
続いて図10−2に移り、第2検証部40は、特徴数配列のカテゴリごとに以下の処理を行う。
即ち、まず、第2検証部40は、1つのカテゴリの情報を取得する(ステップ421)。尚、ここで取得するカテゴリの情報には、カテゴリに属する文字列の数だけでなく、各文字列の内容もある。文字列の数は、第2検証部40が保持する特徴数配列から取得することができるが、各文字列の内容は、解析結果記憶部20に記憶された文字列テーブルから取得する。
次に、第2検証部40は、カテゴリに属する文字列の数を判別する(ステップ422)。
ここで、カテゴリに属する文字列の数が「0」の場合、このカテゴリに関する処理はスキップする。
また、カテゴリに属する文字列の数が「1」の場合、後述する文字列差分算出処理を実行する(ステップ423)。この文字列差分算出処理では、言語Aのブロックに出現したあるカテゴリに属する文字列と言語Bのブロックに出現した同じカテゴリに属する文字列との差分を算出する処理であり、2つの文字列の差分が戻り値として返される。
そこで、第2検証部40は、2つの文字列の差分が予め設定された閾値の一例である許容範囲内であるかを判定する(ステップ424)。言語Aのコンテンツを作成してから言語Bのコンテンツを作成するまでに日数があいた場合、言語Aのコンテンツに記載される作成日付と、言語Bのコンテンツに記載される作成日付とが異なる場合がある。そのような場合、全く同じ日付しか許容しないようにすると、ユーザは本来正しいはずの日付にまで目を向けなければならず煩わしい。そこで、ここでは一定の許容範囲内であるかを判定している。このような許容範囲は、日付だけではなく、時刻や、数値、金額、位置情報といったカテゴリに対しても設けることができる。
そして、第2検証部40は、差分が許容範囲内でなければ、文字列が整合しない旨の情報をコンテンツ更新部50に通知する(ステップ425)。また、差分が許容範囲内であれば、そのような情報は通知しない。
更に、カテゴリに属する文字列の数が「2」以上の場合、ブロック内の文字列の出現位置(センテンスID等)を考慮することで、言語Aの文字列と言語Bの文字列との対応を絞り込むことができる。これは、翻訳等によって、言語Aの1つのセンテンスが、言語Bでは複数のセンテンスに分割される、ということが殆どないことを利用したものである。そこで、第2検証部40は、文字列とセンテンスとの対応付けを行う(ステップ415)。そして、全ての文字列とセンテンスが1対1にマッチしたかどうかを判定する(ステップ416)。
その結果、全ての文字列とセンテンスが1対1にマッチしていれば、ステップ433へ進む。例えば、言語Aのブロックから文字列A1、A2、A3が抽出され、各文字列が出現したセンテンスのセンテンスIDが1、2、4であり、言語Bの対応するブロックから文字列B1、B2、B3が抽出され、各文字列が出現したセンテンスのセンテンスIDが1、2、4であったとする。この場合、対応する文字列がセンテンスをまたがないことを前提とすると、A1とB1、A2とB2、A3とB3がそれぞれ対応することが分かる。従って、この場合は、ステップ416で全てが1対1にマッチしたとみなして、ステップ433へ進む。
一方、全ての文字列とセンテンスが1対1にマッチしているわけでなければ、ステップ426以降の処理を行う。例えば、抽出された文字列が出現したセンテンスのセンテンスIDが例えば1、2、2である場合のように全てが1対1にマッチしない場合、1対1にマッチする部分を除いた残りの部分について、ステップ426以降の処理を行う。
即ち、まず、第2検証部40は、言語Aのコンテンツから抽出した文字列のそれぞれに、言語Bのコンテンツから抽出したどの文字列を対応付けるかによって決まる複数の組み合わせのうち、1つの組み合わせに着目する(ステップ426)。例えば、言語Aのコンテンツから文字列A1、A2、A3が抽出され、言語Bのコンテンツから文字列B1、B2、B3が抽出された場合を考える。この場合、組み合わせは、{ [A1,B1],[A2,B2],[A3,B3] } , { [A1,B1],[A2,B3],[A3,B2] } , { [A1,B2],[A2,B1],[A3,B3] } , { [A1,B2],[A2,B3],[A3,B1] } , { [A1,B3],[A2,B1],[A3,B2] } , { [A1,B3],[A2,B2],[A3,B1] }の6通りとなる。一般に、n個の文字列があれば、組み合わせはn!通りとなる。そこで、ステップ426では、これらの組み合わせのうちの1つの組み合わせに着目する。
次に、第2検証部40は、着目した組み合わせに含まれる1つの文字列の組に着目する(ステップ427)。例えば、組み合わせが{ [A1,B1],[A2,B2],[A3,B3] }であるとすると、その中の組[A1,B1]に着目する。
次いで、第2検証部40は、この着目した組について、後述する文字列差分算出処理を実行する(ステップ428)。上述した通り、この文字列差分算出処理では、言語Aのブロックに出現したあるカテゴリに属する文字列と言語Bのブロックに出現した同じカテゴリに属する文字列との差分を算出する処理であり、2つの文字列の差分が戻り値として返される。
その後、第2検証部40は、着目した組み合わせに含まれる複数の組の中に未処理の組があるかどうかを判定する(ステップ429)。
その結果、未処理の組があると判定されれば、ステップ427〜428の処理を繰り返す。
一方、未処理の組がないと判定されれば、第2検証部40は、ステップ428で返された差分に基づいて、現在着目している組み合わせを採用した場合のばらつき度合の一例である標準偏差を算出する(ステップ430)。
その後、第2検証部40は、考えられる複数の組み合わせの中に未処理の組み合わせがあるかどうかを判定する(ステップ431)。
その結果、未処理の組み合わせがあると判定されれば、ステップ426〜430の処理を繰り返す。
一方、未処理の組み合わせがないと判定されれば、ステップ430で算出した標準偏差を最少とする組み合わせを、言語Aの文字列と言語Bの文字列の最適な対応付けとして選択する(ステップ432)。
例えば、文字列A1が「2008/10/20」、文字列A2が「2008/10/22」、文字列A3が「2008/10/24」、文字列B1が「2008/10/22」、文字列B2が「2008/10/24」、文字列B3が「2008/10/26」である場合を考える。この場合、組み合わせとして{ [A1,B1],[A2,B2],[A3,B3] }を採用したとすると、各組の差分は2008/10/22 - 2008/10/20 = 2 , 2008/10/24 - 2008/10/22 = 2 , 2008/10/26 - 2008/10/24 = 2となり、その平均は2となる。従って、ステップ430では、標準偏差として、0(=√((2−2)+(2−2)+(2−2))/3)が算出される。また、組み合わせとして{ [A1,B3],[A2,B1],[A3,B2] }を採用したとすると、各組の差分は2008/10/26 - 2008/10/20 = 6 , 2008/10/22 - 2008/10/22 = 0 , 2008/10/24 - 2008/10/24 = 0となり、その平均は2となる。従って、ステップ430では、標準偏差として、√8(=√((6−2)+(0−2)+(0−2))/3)が算出される。更に、他の組み合わせを採用したとしても、標準偏差が0を下回ることはないので、上記の標準偏差を0とする組み合わせを選択する。
次に、第2検証部40は、選択した組み合わせに含まれる1つの文字列の組に着目する(ステップ433)。例えば、組み合わせが{ [A1,B1],[A2,B2],[A3,B3] }であるとすると、その中の組[A1,B1]に着目する。
次いで、第2検証部40は、この着目した組に含まれる2つの文字列の差分が予め設定された許容範囲内であるかを判定する(ステップ434)。言語Aのコンテンツを作成してから言語Bのコンテンツを作成するまでに日数があいた場合、言語Aのコンテンツに記載される作成日付と、言語Bのコンテンツに記載される作成日付とが異なる場合がある。そのような場合、全く同じ日付しか許容しないようにすると、ユーザは本来正しいはずの日付にまで目を向けなければならず煩わしい。そこで、ここでは一定の許容範囲内であるかを判定している。このような許容範囲は、日付だけではなく、時刻や数値、金額、位置情報といったカテゴリに対しても設けることができる。
そして、第2検証部40は、差分が許容範囲内でなければ、文字列が整合しない旨の情報をコンテンツ更新部50に通知する(ステップ435)。また、差分が許容範囲内であれば、そのような情報は通知しない。
その後、第2検証部40は、選択した組み合わせに含まれる複数の組の中に未処理の組があるかどうかを判定する(ステップ436)。
その結果、未処理の組があると判定されれば、ステップ433〜435の処理を繰り返す。
一方、未処理の組がないと判定されれば、第2検証部40は、他に未処理のカテゴリがあるかどうかを判定する(ステップ437)。
その結果、未処理のカテゴリがあると判定されれば、ステップ421〜436の処理を繰り返す。
一方、未処理のカテゴリがないと判定されれば、未処理のブロックIDの組があるかどうかを判定する(ステップ438)。
その結果、未処理のブロックIDの組があると判定されれば、ステップ407〜437の処理を繰り返す。
一方、未処理のブロックIDの組がないと判定されれば、処理を終了する。
次いで、図10−2のステップ423及びステップ428における文字列差分算出処理について説明する。
図12は、文字列差分算出処理の流れの一例を示したフローチャートである。
まず、第2検証部40は、差分を算出する対象の2つの文字列が完全に一致しているかどうかを判定する(ステップ441)。
その結果、2つの文字列が完全に一致していると判定されると、第2検証部40は、戻り値である差分に「0」をセットする(ステップ442)。
一方、2つの文字列が完全に一致しているわけではないと判定されると、第2検証部40は、2つの文字列を正規化する(ステップ443)。ここで、正規化とは、特定の記述形式に変換することにより、文字列の表記のゆれをなくすことである。例えば、日付に関し、特定の記述形式を「YYYY-MM-DD」とする(「YYYY」は年4桁、「MM」は月2桁、「DD」は日2桁を表す)。すると、「08/08/2007」は「2007-08-08」に、「09/08/2007」は「2007-08-09」又は「2007-09-08」に、「17/10/2007」は「2007-10-17」に、それぞれ正規化される。尚、このとき、ブロックのロケールを参照して、正規化後の候補が2つ以上にならないようにすることもできる。
そして、第2検証部40は、正規化後の文字列(正規化文字列)が一致するかどうかを判定する(ステップ444)。
その結果、正規化文字列が一致すると判定されると、第2検証部40は、戻り値である差分に「0」をセットする(ステップ442)。
一方、正規化文字列が一致しないと判定されると、2つの正規化文字列の差分が許容範囲外で、かつ、文字単位で正規化すべきかどうかを判定する(ステップ445)。ここで、正規化文字列が一致しないと判定される場合の例としては、2つの文字列が、例えば、図5に示した「1.02 quadrillion」と図6に示した「1.020兆」である場合が挙げられる。ここで、「quadrillion」は「千兆」を意味するので、図6の日本語のコンテンツにおいて仮に「1,020兆」と表記されていれば、これは「1.02 quadrillion」と整合する。ところが、3桁区切りの記号を「.」で表す言語が指定されると、このような誤りが生ずる。この場合、「1.02 quadrillion」を正規化すると「1.02 × 1015」となるが、「1.020兆」を正規化すると「1.020 × 1012」となり、正規化文字列は一致しない。尚、この2つの文字列は、図10−2のステップ424又は434で許容範囲内ではないと判定されることになるので、検証結果は、例えば「警告」となる。
また、2つの正規化文字列の差分が許容範囲外で、かつ、文字単位で正規化すべきかどうかの判定は、カテゴリごとに許容範囲及び指示情報を定義したテーブルを参照することによって行われる。ここで、指示情報とは、文字単位で正規化すべきかどうかを指示する情報であり、指示情報「Yes」は文字単位で正規化すべきことを意味し、指示情報「No」は文字単位で正規化すべきでないことを意味する。例えば、カテゴリ「日付」に対して、許容範囲「後方1週間以内」、指示情報「No」がテーブルに定義されている場合に、日付に関する文字列差分算出処理を行ったとする。この場合は、一方の正規化文字列が他方の正規化文字列の後方1週間以内になかったとしても、指示情報が「No」なので、文字列単位での正規化は行われない。一方、カテゴリ「数値」に対して、許容範囲「±100」、指示情報「Yes」がテーブルに定義されている場合に、数値に関する文字列差分算出処理を行ったとする。この場合は、2つの正規化文字列の差分が100を超えていれば、指示情報が「Yes」なので、文字列単位での正規化が行われる。
また、ステップ445での判定の結果、2つの正規化文字列の差分が許容範囲内、又は、文字単位で正規化すべきではないと判定されれば、2つの正規化文字列の差分を、戻り値である差分にセットする(ステップ446)。
一方、2つの正規化文字列の差分が許容範囲外で、かつ、文字単位で正規化すべきと判定されれば、2つの正規化文字列の少なくとも何れか一方を更に文字単位で正規化する(ステップ447)。ここで、文字単位での正規化としては、例えば、漢数字をアラビア数字に置き換えることが考えられる。
そして、文字単位で正規化された文字列における文字の数及び順序(出現頻度及び出現順序)が同じであるかどうかを判定する(ステップ448)。上記のように、漢数字をアラビア数字に置き換えた場合であれば、個々のアラビア数字に着目して、その数及び順序が同じかどうかを判定する。
その結果、文字の数及び順序が同じであると判定されると、第2検証部40は、戻り値である差分に「0」をセットする(ステップ442)。
一方、文字の数及び順序が異なると判定されると、第2検証部40は、文字の数及び順序の違いを示す数値を、戻り値である差分にセットする(ステップ449)。
以下、この文字列差分算出処理について具体例を用いて説明する。尚、この文字列差分算出処理は、1つの文字列に対し1つの文字列を対応付け、差分を算出するものであるが、ここでは、便宜上、1つの文字列に対し複数の文字列を対応付け、組ごとの差分をまとめて算出するものとして説明する。また、カテゴリ「日付」に対して、許容範囲「後方1週間以内」、指示情報「No」が定義され、カテゴリ「数値」に対して、許容範囲「±100」、指示情報「Yes」が定義されたテーブルが保持されていることを前提とする。
第一に、言語Aの文字列「平成19年10月13日」と、言語Bの文字列「08/08/2007」、「09/08/2007」、「17/10/2007」との差分を算出する場合を例にとる。
この場合、文字列「平成19年10月13日」に対し、言語Bの何れの文字列を組み合わせたとしても、ステップ441で完全一致することにはならない。
そこで、ステップ443で文字列を正規化する。即ち、言語Aの文字列「平成19年10月13日」を「2007-10-13」に変換し、言語Bの文字列「08/08/2007」、「09/08/2007」、「17/10/2007」を、それぞれ、「2007-08-08」、「2007-08-09」、「2007-10-17」に変換する。
しかしながら、言語Aの正規化文字列「2007-10-13」に対し、言語Bの正規化文字列の何れを組み合わせても、ステップ444で一致することにはならない。
そこで、この例は日付の差分算出の例で、指示情報が「No」であり、ステップ445で差分の値に関わらず文字単位での正規化は行わないと判断されるので、言語Aの文字列と言語Bの各文字列との組み合わせについて差分を算出する。即ち、ステップ446において、「平成19年10月13日」と「08/08/2007」、「09/08/2007」、「17/10/2007」との差分に、それぞれ、「−66」、「−65」、「4」をセットする。
尚、この例において、最終的な表示における許容範囲としても「後方1週間以内」が定義されているとすると、言語Aの文字列「平成19年10月13日」は言語Bの文字列「17/10/2007」と整合していると判断されることになる。
第二に、言語Aの文字列「参兆弐万」と、言語Bの文字列「3020000」、「400000000」との差分を算出する場合を例にとる。
この場合、文字列「参兆弐万」に対し、言語Bの何れの文字列を組み合わせたとしても、ステップ441で完全一致することにはならない。
そこで、ステップ443で文字列を正規化する。即ち、言語Aの文字列「参兆弐万」を「3000000020000」に変換する。
しかしながら、言語Aの正規化文字列「3000000020000」に対し、言語Bの正規化文字列の何れを組み合わせても、ステップ444で一致することにはならない。
そこで、この例は数値の差分算出の例で、許容範囲が「±100」、指示情報が「Yes」であり、ステップ445で差分が100を超えており文字単位での正規化を行うと判断されるので、ステップ447で文字列を文字単位で正規化する。即ち、言語Aの文字列「参兆弐万」は、文字単位で、「参」を「3」、「兆」を「1000000000000」、「弐」を「2」、「万」を「10000」と正規化できるので、これらを繋げて文字列「31000000000000210000」を生成する。
しかしながら、この正規化文字列の文字の並びが「3, 1, 0, 2, 1, 0」であるのに対し、言語Bの文字列「3020000」、「400000000」のの文字の並びはそれぞれ「3, 0, 2, 0」、「4, 0」であり、ステップ448で一致することにはならない。
そこで、ステップ449において、文字の数及び順序の違いを表す数値を差分にセットすることになる。この場合、文字の数及び順序の違いは、例えば、2つの文字列の一致する部分を対応付け、その他の部分において一方の文字列に存在し、他方の文字列に存在しない文字の数をカウントすることで表すことができる。つまり、「3, 1, 0, 2, 1, 0」と「3, 0, 2, 0」の文字の順序の違いは、前者に現れている2つの「1」が後者に現れていないので「2」とすることができる。また、「3, 1, 0, 2, 1, 0」と「4, 0」の文字の並びの違いは、前者に現れている「3」、「1」、「0」、「2」、「1」が後者に現れておらず、後者に現れている「4」が前者に現れていないので「6」とすることができる。
尚、この例では、「兆」が、日本語では1012を意味するのに対して、中国語では10を意味することを踏まえて、言語Aのコンテンツにおける「参兆弐万」が、言語Bのコンテンツにおいて「3020000」と表記されたことを想定したが、このような誤りであっても発見することができる。
そして、本実施の形態では、コンテンツ更新部50が、コンテンツ記憶部5に記憶されたコンテンツをこれらの検証の結果に基づいて更新し、検証作業支援装置1の画面に分かり易く表示できるようにする。
図13は、このような処理の結果として表示された内容の一例を示した図である。
ここでは、第1検証部30において「注意」と判定された「2008年6月18号」と、第2検証部40において「警告」と判定された「1.020兆」とが、太枠囲みで強調表示されている。尚、図では、「注意」と「警告」を同じ太さの枠で囲んだが、異なる装飾を施すことにより、誤りのレベルを区別できるようにしてもよい。また、図では、地域/文化型データとして抽出された文字列であっても、検証の結果が「OK」であるものについては、何も表示しないようにした。しかしながら、地域/文化型データとして抽出されたことを目立たないマークで示すようにしても構わない。
以上、本実施の形態について説明してきた。
このように、本実施の形態では、地域/文化型データの検証を支援するために、検証者が閲覧する画面上のデータ(主にテキストデータ)から地域/文化型データを自動的に検出し、検証者が視認し易く表示するようにした。また、その際、検出された地域/文化型データに関する正否や、検証を容易にする補助的情報も表示するようにした。
具体的には、上述した各機能部の組み合わせにより、グローバリゼーションテストの効率的かつ正確な実施をサポートする。
即ち、コンテンツ解析部10及びコンテンツ更新部50により、冒頭に述べた問題の(1),(2),(4)に関して、注目すべきデータを検証者が容易に視認し、結果を判定することが可能になる。
また、第1検証部30及びコンテンツ更新部50により、冒頭に述べた問題の(3)に関して、典型的なパターンで表示されているデータの検証結果を確認可能となる。
更に、解析結果記憶部20、第2検証部40、コンテンツ更新部50により、冒頭に述べた問題の(5)に関して、抜け落ちやコンテンツの比較を可能とする。
尚、本実施の形態のユースケースとしては、次のようなものが考えられる。
第一に、アプリケーションが出力するコンテンツを対象として本装置による処理を行い、注意すべき地域/文化型データを視認し易くして、テストを行う、というケースである。これは、単独のコンテンツに対するケースである。
第二に、同一内容を複数の言語で表示するためのアプリケーションの検証者が、ベースとなる言語とそれ以外の言語とを見比べて検証を行う、というケースである。これは、主に、アプリケーションが扱う地域/文化型データをシステムから自動的に取得してコンテンツを生成するケースである。
第三に、プレスリリースや発表レター等の複数の言語に翻訳されるコンテンツを作成した後、検証者が、翻訳に依存しない日付、数値、金額等のデータがそれぞれの言語のコンテンツで一致しているかを検証するケースである。これは、主に人手によって作成されたコンテンツを検証するケースである。
最後に、本実施の形態を適用するのに好適なコンピュータのハードウェア構成について説明する。図14は、このようなコンピュータのハードウェア構成の一例を示した図である。図示するように、コンピュータは、演算手段であるCPU(Central Processing Unit)90aと、M/B(マザーボード)チップセット90bを介してCPU90aに接続されたメインメモリ90cと、同じくM/Bチップセット90bを介してCPU90aに接続された表示機構90dとを備える。また、M/Bチップセット90bには、ブリッジ回路90eを介して、ネットワークインターフェイス90fと、磁気ディスク装置(HDD)90gと、音声機構90hと、キーボード/マウス90iと、フレキシブルディスクドライブ90jとが接続されている。
尚、図14において、各構成要素は、バスを介して接続される。例えば、CPU90aとM/Bチップセット90bの間や、M/Bチップセット90bとメインメモリ90cの間は、CPUバスを介して接続される。また、M/Bチップセット90bと表示機構90dとの間は、AGP(Accelerated Graphics Port)を介して接続されてもよいが、表示機構90dがPCI Express対応のビデオカードを含む場合、M/Bチップセット90bとこのビデオカードの間は、PCI Express(PCIe)バスを介して接続される。また、ブリッジ回路90eと接続する場合、ネットワークインターフェイス90fについては、例えば、PCI Expressを用いることができる。また、磁気ディスク装置90gについては、例えば、シリアルATA(AT Attachment)、パラレル転送のATA、PCI(Peripheral Components Interconnect)を用いることができる。更に、キーボード/マウス90i、及び、フレキシブルディスクドライブ90jについては、USB(Universal Serial Bus)を用いることができる。
ここで、本発明は、全てハードウェアで実現してもよいし、全てソフトウェアで実現してもよい。また、ハードウェア及びソフトウェアの両方により実現することも可能である。また、本発明は、コンピュータ、データ処理システム、コンピュータプログラムとして実現することができる。このコンピュータプログラムは、コンピュータにより読取り可能な媒体に記憶され、提供され得る。ここで、媒体としては、電子的、磁気的、光学的、電磁的、赤外線又は半導体システム(装置又は機器)、或いは、伝搬媒体が考えられる。また、コンピュータにより読取り可能な媒体としては、半導体、ソリッドステート記憶装置、磁気テープ、取り外し可能なコンピュータディスケット、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、リジッド磁気ディスク、及び光ディスクが例示される。現時点における光ディスクの例には、コンパクトディスク−リードオンリーメモリ(CD−ROM)、コンパクトディスク−リード/ライト(CD−R/W)及びDVDが含まれる。
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態には限定されない。本発明の精神及び範囲から逸脱することなく様々に変更したり代替態様を採用したりすることが可能なことは、当業者に明らかである。
1…検証作業支援装置、5…コンテンツ記憶部、10…コンテンツ解析部、20…解析結果記憶部、30…第1検証部、40…第2検証部、50…コンテンツ更新部、60…制御部

Claims (8)

  1. ソフトウェアの国際化の検証を支援する装置であって、
    前記ソフトウェアを動作させることによって出力されたテキストデータを取得するテキストデータ取得部と、
    前記テキストデータ取得部により取得された前記テキストデータから、言語に依存する形式で記述される種類として予め定められた特定の種類の複数の文字列を抽出する文字列抽出部と、
    前記文字列抽出部により抽出された前記複数の文字列を、前記テキストデータのうちの当該複数の文字列の各々が出現する文に関連付けた文字列情報を記憶する記憶部と、
    前記ソフトウェアを第1の言語環境で動作させることによって出力された第1のテキストデータから前記文字列抽出部により抽出された複数の文字列のうちの第1の文字列が前記記憶部に記憶された前記文字列情報で第1の文に関連付けられており、当該第1の文字列以外の文字列が前記記憶部に記憶された前記文字列情報で当該第1の文以外の文に1対1に関連付けられており、前記ソフトウェアを第2の言語環境で動作させることによって出力された第2のテキストデータから前記文字列抽出部により抽出された複数の文字列のうちの第2の文字列が前記記憶部に記憶された前記文字列情報で当該第1の文に対応する第2の文に関連付けられており、当該第2の文字列以外の文字列が前記記憶部に記憶された前記文字列情報で当該第2の文以外の文に1対1に関連付けられていれば当該第1の文字列と当該第2の文字列とを対応付ける文字列対応付け部と、
    前記文字列対応付け部により前記第1の文字列と前記第2の文字列とが対応付けられた場合に、当該第1の文字列を特定の記述形式に正規化して得られた第1の正規化文字列と、当該第2の文字列を前記特定の記述形式に正規化して得られた第2の正規化文字列とを比較し、当該第1の正規化文字列と当該第2の正規化文字列との差分が予め定めた閾値以内であれば、当該第1の文字列が表す内容と当該第2の文字列が表す内容とが整合していると判定する内容整合性判定部と
    を含む、装置。
  2. 前記文字列対応付け部は、前記第1の文字列が前記第1の文に出現する前記特定の種類の2つ以上の文字列の1つであり、前記第2の文字列が前記第2の文に出現する前記特定の種類の2つ以上の文字列の1つであれば、当該第1の文に出現する前記特定の種類の2つ以上の文字列の各々と当該第2の文に出現する前記特定の種類の2つ以上の文字列の各々との複数組の文字列を形成し、当該第1の文字列と当該第2の文字列とを対応付けるかどうかを、各組の文字列の差分の当該複数組におけるばらつき度合に基づいて決定する、請求項1の装置。
  3. 前記内容整合性判定部は、前記第1の正規化文字列及び前記第2の正規化文字列の少なくとも何れか一方を文字ごとに特定の規則で変換して得られた2つの文字列における文字の出現順序及び出現頻度を比較することにより、前記第1の文字列が表す内容と前記第2の文字列が表す内容とが整合しているかどうかを判定する、請求項1の装置。
  4. 前記第1のテキストデータ内の前記第1の文字列及び前記第2のテキストデータ内の前記第2の文字列の少なくとも何れか一方に関連付けて、前記内容整合性判定部による判定結果を出力する出力部を更に含む、請求項1の装置。
  5. 前記テキストデータ取得部により取得された前記テキストデータの言語と、前記文字列抽出部により抽出された前記複数の文字列の各々の言語とが整合しているかどうかを判定する言語整合性判定部を更に含む、請求項1の装置。
  6. ソフトウェアの国際化の検証を支援する装置であって、
    前記ソフトウェアを動作させることによって出力されたテキストデータから複数のテキストブロックを抽出するテキストブロック抽出部と、
    前記テキストブロック抽出部により抽出された前記複数のテキストブロックの各々から、言語に依存する形式で記述される種類として予め定められた特定の種類の複数の文字列を抽出する文字列抽出部と、
    前記文字列抽出部により抽出された前記複数の文字列を、前記テキストブロックの各々のうちの当該複数の文字列の各々が出現する文に関連付けた文字列情報を記憶する第1の記憶部と、
    前記ソフトウェアを第1の言語環境で動作させることによって出力された第1のテキストデータから前記テキストブロック抽出部により抽出された複数のテキストブロックのうちの第1のテキストブロックから前記文字列抽出部により抽出された複数の文字列を、前記第1の記憶部に記憶された前記文字列情報で当該複数の文字列の各々に関連付けられた文の順に列挙した配列である第1の特徴数配列を記憶し、前記ソフトウェアを第2の言語環境で動作させることによって出力された第2のテキストデータから前記テキストブロック抽出部により抽出された複数のテキストブロックのうちの第2のテキストブロックから前記文字列抽出部により抽出された複数の文字列を、前記第1の記憶部に記憶された前記文字列情報で当該複数の文字列の各々に関連付けられた文の順に列挙した配列である第2の特徴数配列を記憶する第2の記憶部と、
    前記第2の記憶部に記憶された前記第1の特徴数配列と、前記第2の記憶部に記憶された前記第2の特徴数配列とが一致すれば、前記第1のテキストブロックと第2のテキストブロックとを対応付けるテキストブロック対応付け部と、
    前記テキストブロック対応付け部により前記第1のテキストブロックと前記第2のテキストブロックとが対応付けられた場合に、当該第1のテキストブロックから前記文字列抽出部により抽出された複数の文字列のうちの第1の文字列が前記第1の記憶部に記憶された前記文字列情報で第1の文に関連付けられており、当該第1の文字列以外の文字列が前記第1の記憶部に記憶された前記文字列情報で当該第1の文以外の文に1対1に関連付けられており、当該第2のテキストブロックから前記文字列抽出部により抽出された複数の文字列のうちの第2の文字列が前記第1の記憶部に記憶された前記文字列情報で当該第1の文に対応する第2の文に関連付けられており、当該第2の文字列以外の文字列が前記第1の記憶部に記憶された前記文字列情報で当該第2の文以外の文に1対1に関連付けられていれば当該第1の文字列と当該第2の文字列とを対応付ける文字列対応付け部と、
    前記文字列対応付け部により前記第1の文字列と前記第2の文字列とが対応付けられた場合に、当該第1の文字列を特定の記述形式に正規化して得られた第1の正規化文字列と、当該第2の文字列を前記特定の記述形式に正規化して得られた第2の正規化文字列とを比較し、当該第1の正規化文字列と当該第2の正規化文字列との差分が予め定めた閾値以内であれば、当該第1の文字列が表す内容と当該第2の文字列が表す内容とが整合していると判定する内容整合性判定部と、
    前記第1のテキストデータ内の前記第1の文字列及び前記第2のテキストデータ内の前記第2の文字列の少なくとも何れか一方に関連付けて、前記内容整合性判定部による判定結果を出力する出力部と
    を含む、装置。
  7. コンピュータがソフトウェアの国際化の検証を支援する方法であって、
    前記コンピュータのテキストデータ取得部が、前記ソフトウェアを第1の言語環境で動作させることによって出力された第1のテキストデータを取得するステップと、
    前記コンピュータの文字列抽出部が、前記第1のテキストデータから、言語に依存する形式で記述される種類として予め定められた特定の種類の複数の文字列を抽出するステップと、
    前記コンピュータの記憶部が、前記第1のテキストデータから抽出された前記複数の文字列を、当該第1のテキストデータのうちの当該複数の文字列の各々が出現する文に関連付けた第1の文字列情報を記憶するステップと、
    前記コンピュータのテキストデータ取得部が、前記ソフトウェアを第2の言語環境で動作させることによって出力された第2のテキストデータを取得するステップと、
    前記コンピュータの文字列抽出部が、前記第2のテキストデータから前記特定の種類の複数の文字列を抽出するステップと、
    前記コンピュータの記憶部が、前記第2のテキストデータから抽出された前記複数の文字列を、当該第2のテキストデータのうちの当該複数の文字列の各々が出現する文に関連付けた第2の文字列情報を記憶するステップと、
    前記コンピュータの文字列対応付け部が、前記第1のテキストデータから抽出された複数の文字列のうちの第1の文字列が前記記憶部に記憶された前記第1の文字列情報で第1の文に関連付けられており、当該第1の文字列以外の文字列が前記記憶部に記憶された前記第1の文字列情報で当該第1の文以外の文に1対1に関連付けられており、前記第2のテキストデータから抽出された複数の文字列のうちの第2の文字列が前記記憶部に記憶された前記第2の文字列情報で当該第1の文に対応する第2の文に関連付けられており、当該第2の文字列以外の文字列が前記記憶部に記憶された前記第2の文字列情報で当該第2の文以外の文に1対1に関連付けられていれば当該第1の文字列と当該第2の文字列とを対応付けるステップと、
    前記コンピュータの内容整合性判定部が、前記第1の文字列と前記第2の文字列とが対応付けられた場合に、当該第1の文字列を特定の記述形式に正規化して得られた第1の正規化文字列と、当該第2の文字列を前記特定の記述形式に正規化して得られた第2の正規化文字列とを比較し、当該第1の正規化文字列と当該第2の正規化文字列との差分が予め定めた閾値以内であれば、当該第1の文字列が表す内容と当該第2の文字列が表す内容とが整合していると判定するステップと
    を含む、方法。
  8. ソフトウェアの国際化の検証を支援する装置としてコンピュータを機能させるプログラムであって、
    前記コンピュータを、
    前記ソフトウェアを動作させることによって出力されたテキストデータを取得するテキストデータ取得部と、
    前記テキストデータ取得部により取得された前記テキストデータから、言語に依存する形式で記述される種類として予め定められた特定の種類の複数の文字列を抽出する文字列抽出部と、
    前記文字列抽出部により抽出された前記複数の文字列を、前記テキストデータのうちの当該複数の文字列の各々が出現する文に関連付けた文字列情報を記憶する記憶部と、
    前記ソフトウェアを第1の言語環境で動作させることによって出力された第1のテキストデータから前記文字列抽出部により抽出された複数の文字列のうちの第1の文字列が前記記憶部に記憶された前記文字列情報で第1の文に関連付けられており、当該第1の文字列以外の文字列が前記記憶部に記憶された前記文字列情報で当該第1の文以外の文に1対1に関連付けられており、前記ソフトウェアを第2の言語環境で動作させることによって出力された第2のテキストデータから前記文字列抽出部により抽出された複数の文字列のうちの第2の文字列が前記記憶部に記憶された前記文字列情報で当該第1の文に対応する第2の文に関連付けられており、当該第2の文字列以外の文字列が前記記憶部に記憶された前記文字列情報で当該第2の文以外の文に1対1に関連付けられていれば当該第1の文字列と当該第2の文字列とを対応付ける文字列対応付け部と、
    前記文字列対応付け部により前記第1の文字列と前記第2の文字列とが対応付けられた場合に、当該第1の文字列を特定の記述形式に正規化して得られた第1の正規化文字列と、当該第2の文字列を前記特定の記述形式に正規化して得られた第2の正規化文字列とを比較し、当該第1の正規化文字列と当該第2の正規化文字列との差分が予め定めた閾値以内であれば、当該第1の文字列が表す内容と当該第2の文字列が表す内容とが整合していると判定する内容整合性判定部と
    して機能させる、プログラム。
JP2009031387A 2009-02-13 2009-02-13 ソフトウェアの国際化の検証を支援する装置及び方法 Expired - Fee Related JP4993319B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2009031387A JP4993319B2 (ja) 2009-02-13 2009-02-13 ソフトウェアの国際化の検証を支援する装置及び方法
US12/703,185 US8447586B2 (en) 2009-02-13 2010-02-09 Apparatus and method for supporting verification of software internationalization

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009031387A JP4993319B2 (ja) 2009-02-13 2009-02-13 ソフトウェアの国際化の検証を支援する装置及び方法

Publications (2)

Publication Number Publication Date
JP2010186406A JP2010186406A (ja) 2010-08-26
JP4993319B2 true JP4993319B2 (ja) 2012-08-08

Family

ID=42560692

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009031387A Expired - Fee Related JP4993319B2 (ja) 2009-02-13 2009-02-13 ソフトウェアの国際化の検証を支援する装置及び方法

Country Status (2)

Country Link
US (1) US8447586B2 (ja)
JP (1) JP4993319B2 (ja)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8731901B2 (en) * 2009-12-02 2014-05-20 Content Savvy, Inc. Context aware back-transliteration and translation of names and common phrases using web resources
JP5124001B2 (ja) * 2010-09-08 2013-01-23 シャープ株式会社 翻訳装置、翻訳方法、コンピュータプログラムおよび記録媒体
CN102467497B (zh) 2010-10-29 2014-11-05 国际商业机器公司 校对程序中的文本翻译的方法和系统
US9552213B2 (en) * 2011-05-16 2017-01-24 D2L Corporation Systems and methods for facilitating software interface localization between multiple languages
US8813046B2 (en) * 2012-03-23 2014-08-19 Infosys Limited System and method for internationalization encoding
JP5948291B2 (ja) * 2013-08-13 2016-07-06 日本電信電話株式会社 監視情報分析装置及び方法
US9870355B2 (en) 2015-07-17 2018-01-16 Ebay Inc. Correction of user input
US9740601B2 (en) 2015-12-01 2017-08-22 International Business Machines Corporation Globalization testing management service configuration
US9767011B2 (en) 2015-12-01 2017-09-19 International Business Machines Corporation Globalization testing management using a set of globalization testing operations
US10229220B2 (en) 2016-05-09 2019-03-12 Coupa Software Incorporated Automatic entry of suggested translated terms in an online application program
KR20180077689A (ko) * 2016-12-29 2018-07-09 주식회사 엔씨소프트 자연어 생성 장치 및 방법
US10235361B2 (en) 2017-02-15 2019-03-19 International Business Machines Corporation Context-aware translation memory to facilitate more accurate translation
US10437935B2 (en) * 2017-04-18 2019-10-08 Salesforce.Com, Inc. Natural language translation and localization
US10318644B1 (en) 2017-07-26 2019-06-11 Coupa Software Incorporated Dynamic update of translations for electronic resources
JP7029557B1 (ja) 2021-02-10 2022-03-03 PayPay株式会社 判定装置、判定方法および判定プログラム
CN115879479A (zh) * 2021-09-26 2023-03-31 北京字节跳动网络技术有限公司 一种应用程序的翻译方法及装置
US11907310B2 (en) * 2021-09-27 2024-02-20 The Yes Platform, Inc. Data correlation system and method

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4771401A (en) * 1983-02-18 1988-09-13 Houghton Mifflin Company Apparatus and method for linguistic expression processing
US4777617A (en) * 1987-03-12 1988-10-11 International Business Machines Corporation Method for verifying spelling of compound words
US5243519A (en) * 1992-02-18 1993-09-07 International Business Machines Corporation Method and system for language translation within an interactive software application
JPH0793335A (ja) * 1993-06-07 1995-04-07 Internatl Business Mach Corp <Ibm> テキストの言語機能を提供する方法
US6442516B1 (en) * 1999-01-29 2002-08-27 International Business Machines Corporation Software tool to perform concurrent national language translation builds
EP1100012A3 (en) 1999-11-02 2004-01-21 General Electric Company A method and kit for assessing and improving internationalization readiness of a software product
WO2002080116A1 (en) * 2001-03-28 2002-10-10 Ron Shimon Estrin Authentication methods, apparatus, media and signals
US7389223B2 (en) * 2003-09-18 2008-06-17 International Business Machines Corporation Method and apparatus for testing a software program using mock translation input method editor
US7617092B2 (en) * 2004-12-01 2009-11-10 Microsoft Corporation Safe, secure resource editing for application localization
JP4301515B2 (ja) * 2005-01-04 2009-07-22 インターナショナル・ビジネス・マシーンズ・コーポレーション 文章表示方法、情報処理装置、情報処理システム、プログラム
JP2006318202A (ja) * 2005-05-12 2006-11-24 Suri Kaiseki Kenkyusho:Kk 翻訳装置、翻訳プログラム及び翻訳システム
JP4143661B2 (ja) 2006-09-11 2008-09-03 インターナショナル・ビジネス・マシーンズ・コーポレーション テスト用リソース・ファイル及びテスト用フォントを用いた国際化ソフトウェアのテスト方法、装置及びプログラム
JP4396994B2 (ja) * 2007-02-09 2010-01-13 インターナショナル・ビジネス・マシーンズ・コーポレーション リソース・ファイルの翻訳検証方法、装置、およびプログラム
JP4894602B2 (ja) * 2007-04-25 2012-03-14 日本電気株式会社 修正対象ファイル検索装置と修正対象ファイル検索方法および修正対象ファイル検索プログラム
JP5105513B2 (ja) * 2007-07-20 2012-12-26 インターナショナル・ビジネス・マシーンズ・コーポレーション 処理対象として適切なテキストを選択する技術
US7949515B2 (en) * 2007-07-26 2011-05-24 International Business Machines Corporation Automatically identifying unique language independent keys correlated with appropriate text strings of various locales by value and key searches
US7953591B2 (en) * 2007-07-26 2011-05-31 International Business Machines Corporation Automatically identifying unique language independent keys correlated with appropriate text strings of various locales by key search

Also Published As

Publication number Publication date
US20100211377A1 (en) 2010-08-19
JP2010186406A (ja) 2010-08-26
US8447586B2 (en) 2013-05-21

Similar Documents

Publication Publication Date Title
JP4993319B2 (ja) ソフトウェアの国際化の検証を支援する装置及び方法
US8990066B2 (en) Resolving out-of-vocabulary words during machine translation
US9384389B1 (en) Detecting errors in recognized text
US8249399B2 (en) Optical character recognition verification
CA3048356A1 (en) Unstructured data parsing for structured information
JP2009026100A (ja) 処理対象として適切なテキストを選択する技術
JP2008198132A (ja) 固有表現抽出プログラム、固有表現抽出方法および固有表現抽出装置
JP2017211993A (ja) 請求の範囲の中の請求の範囲構成要素名詞所属構成要素対応符号を対応検出する方法
WO2014205232A1 (en) Language input method editor to disambiguate ambiguous phrases via diacriticization
US10366142B2 (en) Identifier based glyph search
CN101859295A (zh) 具标记提示的简繁字词转换系统及其方法
US20230186212A1 (en) System, method, electronic device, and storage medium for identifying risk event based on social information
JP7027757B2 (ja) 情報処理装置及び情報処理プログラム
CN101741922A (zh) 一种少数民族文字域名的注册服务器和方法
JP5928733B2 (ja) 文字列からなるテストデータを自動的に生成する方法及び文字列からなるテストデータ中に埋め込まれたシグネチャーを識別する方法、並びに、それらのコンピュータ及びコンピュータ・プログラム
CN106775914B (zh) 一种自动生成键值的代码国际化方法及装置
CN116303888A (zh) 一种生僻字处理方法、装置、存储介质及电子设备
JP7029557B1 (ja) 判定装置、判定方法および判定プログラム
CN101425087A (zh) 构建词典的方法和系统
CN111046096A (zh) 用于生成图文结构化信息的方法和装置
JP6682827B2 (ja) 情報処理装置及び情報処理プログラム
JP2015191430A (ja) 翻訳装置、翻訳方法及び翻訳プログラム
US20230153609A1 (en) Method and system for refining column mappings using byte level attention based neural model
JP5284342B2 (ja) 文字認識システムおよび文字認識プログラム
WO2021056347A1 (en) Method for retrieving information about pronunciation associated with logogram

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20101125

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110208

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110428

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20111025

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120215

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20120221

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: 20120403

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20120404

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120426

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150518

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees