JP6665679B2 - 復号化プログラム、復号化方法および復号化装置 - Google Patents

復号化プログラム、復号化方法および復号化装置 Download PDF

Info

Publication number
JP6665679B2
JP6665679B2 JP2016098753A JP2016098753A JP6665679B2 JP 6665679 B2 JP6665679 B2 JP 6665679B2 JP 2016098753 A JP2016098753 A JP 2016098753A JP 2016098753 A JP2016098753 A JP 2016098753A JP 6665679 B2 JP6665679 B2 JP 6665679B2
Authority
JP
Japan
Prior art keywords
code
byte
word
assignment table
conversion unit
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
JP2016098753A
Other languages
English (en)
Other versions
JP2017208644A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2016098753A priority Critical patent/JP6665679B2/ja
Priority to CN201610545992.5A priority patent/CN106354699B/zh
Priority to EP16179064.7A priority patent/EP3119003A3/en
Priority to US15/207,876 priority patent/US9779071B2/en
Priority to US15/722,203 priority patent/US20180052810A1/en
Publication of JP2017208644A publication Critical patent/JP2017208644A/ja
Application granted granted Critical
Publication of JP6665679B2 publication Critical patent/JP6665679B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Document Processing Apparatus (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Description

本発明は、復号化プログラム等に関する。
従来のテキストデータは、ASCIIコードおよびユニコード(Unicode)のコード割当表に基づいて所定のコードに置き換えられる。図30は、従来のASCIIコードおよびユニコードに基づくコード割当表を説明するための図である。図30に示すように、コード割当表の00h〜1Fhには、所定の制御記号が設定され、各制御記号には、1バイトのコードが割り当てられる。コード割当表の20h〜7Fhには、英数字が設定され、各英数字には、1バイトのコードが割り当てられる。コード割当表の80h〜FFhには、CJK文字が設定され、各CJK文字には、3バイトのコードが割り当てられる。
ここで、従来技術1には、コード割当表の制御記号を割り当てる00h〜1Fhに空き領域が存在する場合に、係る空き領域に単語等を登録し、かかるコード割当表を用いてコード化を実行する技術がある。また、従来技術2には、コード割当表の英大文字の領域において、英大文字の代わりに他の文字を設定し、かかるコード割当表を用いて、コード化を実行する技術がある。
特開平7−287716号公報 特開平11−143877号公報
しかしながら、上述した従来技術では、出現頻度が高い単語や一般記号に対して、短いバイトコードを割り当てることができないという問題がある。
例えば、テキストデータを送受信する者同士が、使用しない制御記号や英大文字とそのコード割当表を共有する場合に限り、従来技術1、2のように、制御記号の空き領域等に単語を割り当てることで、出現頻度が高い文字や単語に短いバイトコードに割り当てることができる。
一方、一般のテキストデータを構成する単語や一般記号の出現頻度に応じて可変長符号を割り当てると、約40種の符号長が5〜8ビット、約8千種の符号長が9〜16ビットである。そこで、単語や一般記号に対し、その出現頻度に応じて、32種以上に1バイトコード、8192種以上に2バイトコードを割り当てることで、高い圧縮率を達成する圧縮処理を行うことができる。しかし、かかる従来技術1,2では、多量な単語や一般記号にコード割当てすることができない。
1つの側面では、本発明は、短いコードに割り当てるべき、出現頻度が高い文字や単語に対応付けられたコード等の2バイト以上のコードを1バイトコードに割り当てることができる復号化プログラム、復号化方法および復号化装置を提供することを目的とする。
第1の案では、コンピュータに下記の処理を実行させる。コンピュータは、第2コード割当表を基にして生成された複数のオートマトンを利用し、コード化されたデータを複数のオートマトンのうち、当該データの先頭4ビットの値に応じて選択されるオートマトンにより文字データに復号化する。第2コード割当表は、第1コード割当表の1バイト領域に割り当てられた文字の一部を、2バイト領域に割り当てた変換規則である。また、第2コード割当表は、2バイト領域に割り当てられた前記文字の少なくとも一部に対して、2バイト以上のコードを割り当てることで、入力された文字データをコード化する変換規則である。また、第2コード割当表の変換規則では、コード化された符号データの先頭4ビットの値が当該符号データのコード長に応じて異なる。
出現頻度が高い文字や単語に対して、短いバイトコードを割り当てることができる。
図1aは、本実施例1に係る符号化装置の処理の一例を示す図である。 図1bは、本実施例1に係る復号化装置の処理の一例を示す図である。 図2aは、本実施例1に係る符号化装置の構成を示す機能ブロック図である。 図2bは、本実施例1に係る復号化装置の構成を示す機能ブロック図である。 図3は、本実施例1に係るコード割当表の一例を示す図である。 図4は、本実施例1に係る2バイトコード割当表の一例を示す図である。 図5は、本実施例1に係る3バイトコード割当表の一例を示す図である。 図6aは、本実施例1に係る符号化装置の処理手順を示すフローチャートである。 図6bは、本実施例1に係る復号化装置の処理手順を示すフローチャートである。 図7aは、本実施例2に係る符号化装置の処理の一例を示す図である。 図7bは、本実施例2に係る復号化装置の処理の一例を示す図である。 図8aは、本実施例2に係る符号化装置の構成を示す機能ブロック図である。 図8bは、本実施例2に係る復号化装置の構成を示す機能ブロック図である。 図9は、本実施例2に係るコード割当表の一例を示す図である。 図10は、本実施例2に係る2バイトコード割当表の一例を示す図である。 図11は、本実施例2に係る3バイトコード割当表の一例を示す図である。 図12aは、本実施例2に係る符号化装置の処理手順を示すフローチャートである。 図12bは、本実施例2に係る復号化装置の処理手順を示すフローチャートである。 図13aは、本実施例3に係る符号化装置の処理の一例を示す図である。 図13bは、本実施例3に係る復号化装置の処理の一例を示す図である。 図14aは、本実施例3に係る符号化装置の構成を示す機能ブロック図である。 図14bは、本実施例3に係る復号化装置の構成を示す機能ブロック図である。 図15は、本実施例3に係るコード割当表の一例を示す図である。 図16は、本実施例3に係る英単語2バイトコード割当表の一例を示す図である。 図17は、本実施例3に係る日本単語2バイト割当表の一例を示す図である。 図18は、本実施例3に係る2・3バイト割当表の一例を示す図である。 図19aは、本実施例3に係る符号化装置の処理手順を示すフローチャートである。 図19bは、本実施例3に係る復号化装置の処理手順を示すフローチャートである。 図20aは、第1コード変換処理の処理手順を示すフローチャートである。 図20bは、第2コード変換処理の処理手順を示すフローチャートである。 図21は、本実施例4に係る復号化装置の処理の一例を示す図である。 図22は、第1オートマトンの一例を示す図である。 図23は、第2オートマトンの一例を示す図である。 図24は、第3オートマトンの一例を示す図である。 図25は、本実施例4に係る復号化装置の構成を示す機能ブロック図である。 図26は、本実施例4に係る復号化装置の処理手順を示すフローチャートである。 図27は、コンピュータのハードウェア構成例を示す図である。 図28は、コンピュータで動作するプログラムの構成例を示す図である。 図29は、実施形態のシステムにおける装置の構成例を示す図である。 図30は、従来のASCIIコードおよびユニコードに基づくコード割当表を説明するための図である。
以下に、本願の開示する復号化プログラム、復号化方法および復号化装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
図1aは、本実施例1に係る符号化装置の処理の一例を示す図である。本実施例1に係る符号化装置は、従来技術で用いていたコード割当表50の代わりに、コード割当表110を用いて、テキストデータ10aをコード変換することで、コード変換されたテキストデータ10bを生成する。
従来技術のコード割当表50の00h〜1Fhには、制御記号が設定され、各制御記号には、1バイトのコードが割り当てられる。「h」は16進数を示す記号である。コード割当表50の20h〜7Fhには、英数字が設定され、各英数字には、1バイトのコードが割り当てられる。コード割当表50の80h〜FFhには、CJK文字が設定され、各CJK文字には、3バイトのコードが割り当てられる。
これに対して、本実施例1に係るコード割当表110の00h〜2Fhには、後述する所定の単語が設定され、1バイトのコードが割り当てられる。コード割当表110の00h〜2Fhは、コード割当表50において、制御記号が割り当てられていた領域を含む。
コード割当表110の30h〜5Fhには、高頻度の単語等が設定される。また、コード割当表110の30h〜5Fhには、コード割当表50の00h〜1Fhに設定されていた制御記号や、コード割当表50の20h〜7Fhに設定されていた英数字が設定される。また、コード割当表110の30h〜5Fhには、コード割当表50の80h〜FFhに設定されていたCJK文字の一部が設定される。コード割当表110の30h〜5Fhに設定された高頻度の単語、制御記号、英数字、CJK文字には、2バイトのコードが割り当てられる。
すなわち、コード割当表50の00h〜7Fhに設定され、それまで1バイトのコードが割り当てられていた制御記号および英数字は、コード割当表110の30h〜5Fhの一部に割り当てられ、2バイトのコードが割り当てられる。
コード割当表110の60h〜FFhには、低頻度の単語等が設定される。また、コード割当表110の60h〜FFhには、コード割当表50の80h〜FFhに設定されていたCJK文字の一部が設定される。
本実施例1について、以下の説明では、適宜、コード割当表110の00h〜2Fhの領域を「1バイト領域」と表記する。コード割当表110の30h〜5Fhの領域を「2バイト領域」と表記する。コード割当表110の60h〜FFhの領域を「3バイト領域」と表記する。
コード変換部150は、コード割当表110に基づいて、テキストデータ10aを、テキストデータ10bに変換する。ここでは、テキストデータ10aを「・・・he△is△in△the△house△・・・」とする。テキストデータ10aの「△」はスペースを示すものである。
コード変換部150は、スペース「△」で区切られる単語と、コード割当表110とを比較して、単語をコードに変換する。テキストデータ10aに含まれる単語「he△」は、コード割当表110の1バイト領域に設定された単語であり、コード変換部150は、単語「he△」を1バイトのコード「12h」に変換する。
テキストデータ10aに含まれる単語「is△」は、コード割当表110の1バイト領域に設定された単語であり、コード変換部150は、単語「is△」を1バイトのコード「08h」に変換する。
テキストデータ10aに含まれる単語「in△」は、コード割当表110の1バイト領域に設定された単語であり、コード変換部150は、単語「in△」を1バイトのコード「07h」に変換する。
テキストデータ10aに含まれる単語「the△」は、コード割当表110の1バイト領域に設定された単語であり、コード変換部150は、単語「the△」を1バイトのコード「00h」に変換する。
テキストデータ10aに含まれる単語「house△」は、コード割当表110の2バイト領域に設定された単語であり、コード変換部150は、例えば、単語「house△」を2バイトのコード「4341h」に変換する。
コード変換部150は、テキストデータ10aに含まれる各単語に対して、上記処理を実行することで、テキストデータ10aをテキストデータ10bにコード化する。
図1bは、本実施例1に係る復号化装置の処理の一例を示す図である。本実施例1に係る復号化装置は、従来技術で用いていたコード割当表50の代わりに、コード割当表110を用いて、コード変換されたテキストデータ10bを、文字コード変換することで、テキストデータ10aを生成する。コード割当表110に関する説明は、上記の説明と同様である。
コード変換部550は、コード割当表110に基づいて、テキストデータ10bを、テキストデータ10aに変換する。ここでは、テキストデータ10bを「・・・12h 08h 07h 00h 4341h・・・」とする。
コード変換部550は、コードと、コード割当表110とを比較して、コードを単語に変換する。例えば、コード変換部550は、1バイトのコード「12h」を単語「he△」に変換する。コード変換部550は、1バイトのコード「08h」を単語「is△」に変換する。コード変換部550は、1バイトのコード「07h」を単語「in△」に変換する。コード変換部550は、1バイトのコード「00h」を単語「the△」に変換する。コード変換部550は、2バイトのコード「4341h」を単語「house△」に変換する。
コード変換部550は、テキストデータ10bに含まれる各コードに対して、上記処理を実行することで、テキストデータ10bをテキストデータ10aに変換する。
図2aは、本実施例1に係る符号化装置の構成を示す機能ブロック図である。図2aに示すように、この符号化装置100は、入力部101、出力部102、レジスタ105a,105b、記憶部106、コード変換部150を有する。
入力部101は、コード変換を行うテキストデータを受け付ける処理部である。入力部101は、受け付けたテキストデータを、レジスタ105aに格納する。
出力部102は、レジスタ105bに格納されるコード変換後のテキストデータを出力する処理部である。
レジスタ105aは、コード変換を行う前のテキストデータを格納するものである。レジスタ105bは、コード変換後のテキストデータを格納するものである。
記憶部106は、コード割当表110と、2バイトコード割当表115aと、3バイトコード割当表115bとを有する。記憶部106は、例えば、RAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュメモリ(Flash Memory)などの半導体メモリ素子などの記憶装置に対応する。
図3は、本実施例1に係るコード割当表の一例を示す図である。コード割当表110は、単語等と、所定のコードとを対応付けたテーブルであり、図1aで説明したコード割当表110に対応する。図3に示すように、このコード割当表110は、1バイト領域110Aと、2バイト領域110Bと、3バイト領域110Cとを有する。
1バイト領域110Aは、コード割当表110の00h〜2Fhの領域である。この1バイト領域110Aには、青空文庫、オックスフォード英語辞書、その他の一般的な書籍を基にして、出現頻度の高い上位48個の単語が設定される。
1バイト領域110Aに設定された単語は、1バイト領域110Aの設定位置に応じた1バイトのコードが割り当てられる。単語「the△」は、1バイトのコード「00h」が割り当てられる。1バイト領域110Aに設定された残りの単語も同様に、1バイトのコードが割り当てられる。
2バイト領域110Bは、コード割当表110の30h〜5Fhの領域である。この2バイト領域110Bには、青空文庫、オックスフォード英語辞書、その他の一般的な書籍を基にして、出現頻度が所定値以上となる単語が設定される。以下の説明では、適宜、出現頻度が所定値以上となる単語を高頻度単語と表記する。また、2バイト領域110Bには、英数字、記号、かな、カナ、漢字、数値、時刻、タグ、構文等も含まれる。
ここで、2バイト領域110Bには、係る2バイト領域110Bに設定された高頻度単語等に割り当てる2バイトのコードのうち、前半の1バイトのコードのみが定義されている。2バイト領域110Bに設定された単語等に割り当てる2バイトのコードは、後述する2バイトコード割当表115aに定義されている。
例えば、2バイト領域110Bの英数字、記号、かな、カナ、漢字、数値、時刻、タグ、構文に割り当てる2バイトのコードのうち、前半の1バイトのコードは「30h〜3Fh」となる。そして、前半の1バイトのコードと、残りの1バイトのコードは、2バイトコード割当表115aに定義されている。
2バイト領域110Bの高頻度単語に割り当てる2バイトのコードのうち、前半の1バイトのコードは「40h〜5Fh」となる。そして、前半の1バイトのコードと、残りの1バイトのコードは、2バイトコード割当表115aに定義されている。
3バイト領域110Cは、コード割当表110の60h〜FFhの領域である。この3バイト領域110Cには、青空文庫、オックスフォード英語辞書、その他の一般的な書籍を基にして、出現頻度が所定値未満となる低頻度の単語が設定される。例えば、3バイト領域110Cには、CJK文字、英単語、日本単語、第3国の単語、数値、時刻、タグ、構文意味解析の結果等が含まれる。
ここで、3バイト領域110Cには、係る3バイト領域110Cに設定された単語等に割り当てる3バイトのコードのうち、前半の1バイトのコードのみが定義されている。3バイト領域110Cに設定された単語等に割り当てる3バイトのコードは、後述する3バイトコード割当表115bに定義されている。
例えば、3バイト領域110CのCJK文字、英単語、日本単語、第3国の単語、数値、時刻、タグ、構文意味解析の結果等に割り当てる3バイトのコードのうち、前半の1バイトのコードは「60h〜FFh」となる。そして、前半の1バイトのコードと、残りの2バイトのコードは、3バイトコード割当表115bに定義されている。
図4は、本実施例1に係る2バイトコード割当表の一例を示す図である。図4に示すように、2バイトコード割当表115aは、高頻度単語と、2バイトのコードとを対応付ける。また、2バイトコード割当表115aは、英数字、記号、かな、カナ、漢字、数値、時刻、タグ、構文と、2バイトのコードとを対応付ける。
2バイトコード割当表115aにおいて、「3000h〜3FFFh」には、英数字、記号、かな、カナ、漢字、数値、時刻、タグ、構文が設定され、設定位置に応じた2バイトのコードが割り当てられる。例えば、「NULL」には、2バイトのコード「3000h」が割り当てられる。
2バイトコード割当表115aにおいて、「4000h〜5FFFh」には、高頻度単語が設定され、設定位置に応じた2バイトのコードが割り当てられる。例えば、設定位置「4000h」に設定された高頻度単語には、2バイトのコード「4000h」が割り当てられる。
図5は、本実施例1に係る3バイトコード割当表の一例を示す図である。図5に示すように、3バイトコード割当表115bは、CJK文字、英単語、日本単語、第3国の単語、数値、時刻、タグ、構文意味解析の結果と、3バイトのコードとを対応付ける。なお、3バイトコード割当表115bにおいて、例えば、「E00000h〜FFFFFFh」は、予備の領域となる。
3バイトコード割当表115bにおいて、「800000h〜DFFFFFh」には、日本単語、第3国の単語、数値、時刻、タグ、構文意味解析の結果が設定され、設定位置に応じた3バイトのコードが割り当てられる。例えば、設定位置「800000h」に設定された日本単語には、3バイトのコード「800000h」が割り当てられる。
図2aの説明に戻る。コード変換部150は、コード割当表110、2バイトコード割当表115a、3バイトコード割当表115bを基にして、レジスタ105aに格納されたテキストデータをコード化する処理部である。コード変換部150は、コード化したテキストデータを、レジスタ105bに格納する。
以下において、コード変換部150の処理の一例について説明する。コード変換部150は、テキストデータから、スペース「△」で区切られる単語を取得し、取得した単語が、1バイト領域110Aに設定された単語か、2バイト領域110Bに設定された単語か、3バイト領域110Cに設定された単語かを判定する。
コード変換部150の取得した単語が1バイト領域110Aに設定された単語である場合について説明する。コード変換部150は、取得した単語と、1バイト領域110Aの各単語とを比較して、該当する設定位置の1バイトのコードを特定し、コード化する。例えば、コード変換部150は、取得した単語が「the△」である場合には、かかる単語「the△」を「00h」にコード化する。
続いて、コード変換部150の取得した単語が2バイト領域110Bに設定された単語である場合について説明する。コード変換部150は、取得した単語と、2バイトコード割当表115aとを比較して、該当する設定位置の2バイトのコードを特定し、コード化する。例えば、コード変換部150は、取得した単語が、2バイトコード割当表115aの「4000h」に設定されたある高頻度単語である場合には、かかる高頻度単語を2バイトのコード「4000h」にコード化する。
なお、コード変換部150は、取得した情報が、2バイト領域110Bに設定された英数字、記号、かな、カナ、漢字、数値、時刻、タグ、構文である場合も、2バイトコード割当表115aと比較して、コード化する。例えば、コード変換部150は、「NULL」を取得した場合には、かかる「NULL」を「3000h」にコード化する。
続いて、コード変換部150の取得した単語が3バイト領域110Cに設定された単語である場合について説明する。コード変換部150は、取得した単語と、3バイトコード割当表115bとを比較して、該当する設定位置の3バイトのコードを特定し、コード化する。例えば、コード変換部150は、取得した単語が、3バイトコード割当表115bの「700000h」に設定されたある英単語である場合には、かかる英単語を3バイトのコード「700000h」にコード化する。
なお、コード変換部150は、取得した情報が、3バイト領域110Cに設定された日本単語、第3国の単語、数値、時刻、タグ、構文意味解析の結果である場合も、3バイトコード割当表115bと比較して、コード化する。例えば、コード変換部150は、取得した情報が、3バイトコード割当表115bの「800000h」に設定されたある日本単語である場合には、かかる日本単語を3バイトのコード「800000h」にコード化する。
コード変換部150は、レジスタ105aに格納されたテキストデータに対して、上記処理を繰り返し実行することで、テキストデータをコード化する。コード変換部150は、コード化したテキストデータを、レジスタ105bに格納する。
図2bは、本実施例1に係る復号化装置の構成を示す機能ブロック図である。図2bに示すように、この復号化装置500は、入力部501、出力部502、レジスタ505a,505b、記憶部506、コード変換部550を有する。
入力部501は、コード変換されたテキストデータを受け付ける処理部である。入力部501は、受け付けたテキストデータを、レジスタ505aに格納する。
出力部502は、レジスタ505bに格納されたテキストデータを出力する処理部である。
レジスタ505aは、コード変換されたテキストデータを格納するものである。レジスタ505bは、文字コード変換後のテキストデータを格納するものである。
記憶部506は、コード割当表110と、2バイトコード割当表115aと、3バイトコード割当表115bとを有する。記憶部506は、例えば、RAM、ROM、フラッシュメモリなどの半導体メモリ素子などの記憶装置に対応する。
コード割当表110に関する説明は、図3で説明したコード割当表110に関する説明と同様である。2バイトコード割当表115aに関する説明は、図4で説明した2バイトコード割当表115aに関する説明と同様である。3バイトコード割当表115bに関する説明は、図5で説明した3バイトコード割当表115bに関する説明と同様である。
以下において、コード変換部550の処理の一例について説明する。例えば、コード変換部550は、テキストデータからコードを取得し、取得したコードが1バイト領域110Aに設定された単語に対応するものか、2バイト領域110Bに設定された単語に対応するものか、3バイト領域110Cに設定された単語に対応するものかを判定する。
コード変換部550が取得したコードが1バイト領域110Aに設定された単語に対応するものである場合について説明する。1バイト領域110Aに設定された単語に対応するコードの1バイト目は「00h〜2Fh」に含まれる。コード変換部550は、コードに対応する単語を、1バイト領域110Aに設定された単語から選択し、選択した単語によって文字コード化する。例えば、コード変換部550は、取得したコードが「00h」である場合には、「00h」を「the△」に文字コード化する。
コード変換部550が取得したコードが2バイト領域110Bに設定された単語に対応するものである場合について説明する。2バイト領域110Bに設定された単語に対応するコードの1バイト目は「30h〜5Fh」に含まれる。コード変換部550は、コードの1バイト目と続く2バイト目とを合わせたコードと、2バイトコード割当表115aとを比較して、単語を文字コード化する。例えば、コード変換部550は、2バイトのコードが「4000h」である場合には、2バイトコード割当表115aに設定された「4000h」に対応する単語に文字コード化する。
コード変換部550が取得したコードが3バイト領域110Cに設定された単語に対応するものである場合について説明する。3バイト領域110Cに設定された単語に対応するコードの1バイト目は「60h〜FFh」に含まれる。コード変換部550は、コードの1バイト目と続く2、3バイト目とを合わせたコードと、3バイトコード割当表115bとを比較して、単語を文字コード化する。例えば、コード変換部550は、3バイトのコードが「700000h」である場合には、3バイトコード割当表115bに設定された「700000h」に対応する単語に文字コード化する。
図6aは、本実施例1に係る符号化装置の処理手順を示すフローチャートである。図6aに示すように、符号化装置100の入力部101は、テキストデータをレジスタ105aに格納する(ステップS101)。符号化装置100のコード変換部150は、レジスタ105aに格納されたテキストデータから単語を取得する(ステップS102)。ステップS102では、説明の便宜上、単語と表記するが、コード変換部150が取得するものは、単語の他に、日本単語、第3国の単語、数値、時刻、タグ、構文意味解析の結果等の場合もある。
コード変換部150は、単語とコード割当表110とを比較する(ステップS103)。コード変換部150は、単語がコード割当表110の1バイト領域110Aの単語に対応する単語である場合には(ステップS104,Yes)、ステップS105に移行する。コード変換部150は、コード割当表110に基づいて、単語を1バイトのコードに変換し(ステップS105)、ステップS109に移行する。
一方、コード変換部150は、単語がコード割当表110の1バイト領域110Aの単語に対応する単語でない場合には(ステップS104,No)、ステップS106に移行する。コード変換部150は、単語がコード割当表110の2バイト領域110Bの単語に対応する単語である場合には(ステップS106,Yes)、ステップS107に移行する。コード変換部150は、2バイトコード割当表115aに基づいて、単語を2バイトのコードに変換し(ステップS107)、ステップS109に移行する。
一方、コード変換部150は、単語がコード割当表110の2バイト領域110Bの単語に対応する単語でない場合には(ステップS106,No)、ステップS108に移行する。コード変換部150は、3バイトコード変換表115bに基づいて、単語を3バイトのコードに変換し(ステップS108)、ステップS109に移行する。
コード変換部150は、テキストデータのコード化が終了したか否かを判定する(ステップS109)。コード変換部150は、テキストデータのコード化が終了していない場合には(ステップS109,No)、ステップS102に移行する。
一方、コード変換部150は、テキストデータのコード化が終了した場合には(ステップS109,Yes)、コード化したテキストデータを、レジスタ105bに格納する(ステップS110)。
図6bは、本実施例1に係る復号化装置の処理手順を示すフローチャートである。図6bに示すように、復号化装置500の入力部501は、テキストデータをレジスタ505aに格納する(ステップS501)。復号化装置500のコード変換部550は、レジスタ505aに格納されたテキストデータからコードを取得する(ステップS502)。
コード変換部550は、コードとコード割当表110とを比較する(ステップS503)。コード変換部550は、コードがコード割当表110の1バイト領域110Aの単語に対応するコードである場合には(ステップS504,Yes)、ステップS505に移行する。コード変換部550は、コード割当表110に基づいて、1バイトのコードを単語に変換し(ステップS505)、ステップS509に移行する。
一方、コード変換部550は、コードがコード割当表110の1バイト領域110Aの単語に対応するコードでない場合には(ステップS504,No)、ステップS506に移行する。コード変換部550は、コードがコード割当表110の2バイト領域110Bの単語に対応するコードである場合には(ステップS506,Yes)、ステップS507に移行する。コード変換部550は、2バイトコード割当表115aに基づいて、2バイトのコードを単語に変換し(ステップS507)、ステップS509に移行する。
一方、コード変換部550は、コードがコード割当表110の2バイト領域110Bの単語に対応するコードでない場合には(ステップS506,No)、ステップS508に移行する。コード変換部550は、3バイトコード変換表115bに基づいて、3バイトのコードを単語に変換し(ステップS508)、ステップS509に移行する。
コード変換部550は、テキストデータの復号化が終了したか否かを判定する(ステップS509)。コード変換部550は、テキストデータの復号化が終了していない場合には(ステップS509,No)、ステップS502に移行する。
一方、コード変換部550は、テキストデータの復号化が終了した場合には(ステップS509,Yes)、復号化したテキストデータを、レジスタ505bに格納する(ステップS510)。
次に、本実施例1に係る符号化装置100の効果について説明する。符号化装置100は、従来のコード割当表50の1バイト領域に割り当てられていた文字をコード割当表110の2バイト領域に退避させ、コード割当表110の1バイト領域には厳選した単語を割り当てた割当表を用いたコード変換を行う。係る処理を実行することで、出現頻度が高い文字や単語に対して、短いバイトコードを割り当てることができる。
また、復号化装置500は、上記のコード割当表110を用いて、コード化されたテキストデータを復号化するため、出現頻度が高い単語や一般記号に対して、短いバイトコードを割り当てた場合でも、係るバイトコードを単語や一般記号に変換することができる。
図7aは、本実施例2に係る符号化装置の処理の一例を示す図である。本実施例2に係る符号化装置は、従来技術で用いていたコード割当表50の代わりに、コード割当表210を用いて、テキストデータ20aをコード変換することで、コード変換されたテキストデータ20bを生成する。従来技術のコード割当表50に関する説明は、実施例1で説明したものと同様である。
本実施例2に係るコード割当表210について説明する。コード割当表210の00h〜1Fhには、後述する所定の単語が設定され、1バイトのコードが割り当てられる。コード割当表210の00h〜1Fhは、コード割当表50において、制御記号が割り当てられていた領域を含む。
コード割当表210の20h〜7Fhには、英数字が設定され、1バイトのコードが割り当てられる。コード割当表210の20h〜7Fhに設定される英数字は、コード割当表50の20h〜7Fhに設定される英数字と同様である。
コード割当表210の80h〜9Fhには、高頻度の単語等が設定される。また、コード割当表210の80h〜9Fhには、コード割当表50の00h〜1Fhに設定されていた制御記号や、コード割当表50の80h〜FFhに設定されていたCJK文字の一部が設定される。コード割当表210の80h〜9Fhに設定された高頻度の単語、制御記号、CJK文字には、2バイトのコードが割り当てられる。
コード割当表210のA0h〜FFhには、低頻度の単語等が設定される。また、コード割当表210のA0h〜FFhには、コード割当表50の80h〜FFhに設定されていたCJK文字の一部が設定される。
本実施例2について、以下の説明では、適宜、コード割当表210の00h〜1Fhの領域を「単語1バイト領域」と表記する。コード割当表210の20h〜7Fhの領域を「英数字1バイト領域」と表記する。コード割当表210の80h〜9Fhの領域を「2バイト領域」と表記する。コード割当表210のA0h〜FFhの領域を「3バイト領域」と表記する。
コード変換部250は、コード割当表210に基づいて、テキストデータ20aを、テキストデータ20bに変換する。ここでは、テキストデータ20aを「・・・he△is△in△the△house△・・・」とする。テキストデータ20aの「△」はスペースを示すものである。
コード変換部250は、スペース「△」で区切られる単語と、コード割当表210とを比較して、単語をコードに変換する。テキストデータ20aに含まれる単語「he△」は、コード割当表210の単語1バイト領域に設定された単語であり、コード変換部250は、単語「he△」を1バイトのコード「12h」に変換する。
テキストデータ20aに含まれる単語「is△」は、コード割当表210の単語1バイト領域に設定された単語であり、コード変換部250は、単語「is△」を1バイトのコード「08h」に変換する。
テキストデータ20aに含まれる単語「in△」は、コード割当表210の単語1バイト領域に設定された単語であり、コード変換部250は、単語「in△」を1バイトのコード「07h」に変換する。
テキストデータ20aに含まれる単語「the△」は、コード割当表210の単語1バイト領域に設定された単語であり、コード変換部250は、単語「the△」を1バイトのコード「00h」に変換する。
テキストデータ20aに含まれる単語「house△」は、コード割当表210の2バイト領域に設定された単語であり、コード変換部250は、例えば、単語「house△」を2バイトのコード「8341h」に変換する。
コード変換部250は、テキストデータ20aに含まれる各単語に対して、上記処理を実行することで、テキストデータ20aをテキストデータ20bにコード化する。
図7bは、本実施例2に係る復号化装置の処理の一例を示す図である。本実施例2に係る復号化装置は、従来技術で用いていたコード割当表50の代わりに、コード割当表210を用いて、コード変換されたテキストデータ20bを、文字コード変換することで、テキストデータ20aを生成する。コード割当表210に関する説明は、上記の説明と同様である。
コード変換部650は、コード割当表210に基づいて、テキストデータ20bを、テキストデータ20aに変換する。ここでは、テキストデータ20bを「・・・12h 08h 07h 00h 8341h・・・」とする。
コード変換部650は、コードと、コード割当表210とを比較して、コードを単語に変換する。例えば、コード変換部650は、1バイトのコード「12h」を単語「he△」に変換する。コード変換部650は、1バイトのコード「08h」を単語「is△」に変換する。コード変換部650は、1バイトのコード「07h」を単語「in△」に変換する。コード変換部650は、1バイトのコード「00h」を単語「the△」に変換する。コード変換部650は、2バイトのコード「8341h」を単語「house△」に変換する。
コード変換部650は、テキストデータ20bに含まれる各コードに対して、上記処理を実行することで、テキストデータ20bをテキストデータ20aに変換する。
図8aは、本実施例2に係る符号化装置の構成を示す機能ブロック図である。図8aに示すように、この符号化装置200は、入力部201、出力部202、レジスタ205a,205b、記憶部206、コード変換部250を有する。
入力部201は、コード変換を行うテキストデータを受け付ける処理部である。入力部201は、受け付けたテキストデータを、レジスタ205aに格納する。
出力部202は、レジスタ205bに格納されるコード変換後のテキストデータを出力する処理部である。
レジスタ205aは、コード変換を行う前のテキストデータを格納するものである。レジスタ205bは、コード変換後のテキストデータを格納するものである。
記憶部206は、コード割当表210と、2バイトコード割当表215aと、3バイトコード割当表215bとを有する。記憶部206は、例えば、RAM、ROM、フラッシュメモリなどの半導体メモリ素子などの記憶装置に対応する。
図9は、本実施例2に係るコード割当表の一例を示す図である。コード割当表210は、単語等と、所定のコードとを対応付けたテーブルであり、図7aで説明したコード割当表210に対応する。図9に示すように、このコード割当表210は、単語1バイト領域210Aと、英数字1バイト領域210Bと、2バイト領域210Cと、3バイト領域210Dとを有する。
単語1バイト領域210Aは、コード割当表210の00h〜1Fhの領域である。この単語1バイト領域210Aには、青空文庫、オックスフォード英語辞典、その他の一般的な書籍を基にして、出現頻度の高い上位32個の単語が設定される。
単語1バイト領域210Aに設定された単語は、単語1バイト領域210Aの設定位置に応じた1バイトのコードが割り当てられる。例えば、単語「the△」は、1バイトのコード「00h」が割り当てられる。単語1バイト領域210Aに設定された残りの単語も同様に、1バイトのコードが割り当てられる。
英数字1バイト領域210Bは、コード割当表210の20h〜7Fhの領域である。この英数字1バイト領域210Bには、コード割当表50の20h〜7Fhに設定される英数字と同様の英数字が設定される。
英数字1バイト領域210Bに設定された英数字は、英数字1バイト領域210Bの設定位置に応じた1バイトのコードが割り当てられる。例えば、数値「0」は、1バイトのコード「30h」が割り当てられる。英数字1バイト領域210Bに設定された残りの英数字も同様に、1バイトのコードが割り当てられる。
2バイト領域210Cは、コード割当表210の80h〜9Fhの領域である。この2バイト領域210Cには、青空文庫、オックスフォード英語辞書、その他の一般的な書籍を基にして、出現頻度が所定値以上となる単語が設定される。以下の説明では、適宜、出現頻度が所定値以上となる単語を高頻度単語と表記する。また、2バイト領域210Cには、制御記号等が含まれていても良い。
ここで、2バイト領域210Cには、係る2バイト領域210Cに設定された高頻度単語等に割り当てる2バイトのコードのうち、前半の1バイトのコードのみが定義されている。2バイト領域210Cに設定された単語等に割り当てる2バイトのコードは、後述する2バイトコード割当表215aに定義されている。
例えば、2バイト領域210Cの高頻度単語に割り当てる2バイトのコードのうち、前半の1バイトのコードは「80h〜9Fh」となる。そして、前半の1バイトのコードと、残りの1バイトのコードは、2バイトコード割当表215aに定義されている。
3バイト領域210Dは、コード割当表210のA0h〜FFhの領域である。この3バイト領域210Dには、青空文庫、オックスフォード英語辞書、その他の一般的な書籍を基にして、出現頻度が所定値未満となる低頻度の単語が設定される。例えば、3バイト領域210Dには、CJK文字、英単語、日本単語、数値、タグ、動的コード等が含まれる。動的コードは、例えば、人物名や住所、連結単語等に対応するものである。
ここで、3バイト領域210Dには、係る3バイト領域210Dに設定された単語等に割り当てる3バイトのコードのうち、前半の1バイトのコードのみが定義されている。3バイト領域210Dに設定された単語等に割り当てる3バイトのコードは、後述する3バイトコード割当表215bに定義されている。
図10は、本実施例2に係る2バイトコード割当表の一例を示す図である。図10に示すように、2バイトコード割当表215aは、高頻度単語と、2バイトのコードとを対応付ける。
例えば、2バイトコード割当表215aにおいて、「8000h〜9FFFh」には、高頻度単語が設定され、設定位置に応じた2バイトのコードが割り当てられる。例えば、設定位置「8000h」に設定された高頻度単語には、2バイトのコード「8000h」が割り当てられる。
図11は、本実施例2に係る3バイトコード割当表の一例を示す図である。図11に示すように、3バイトコード割当表215bは、CJK文字、英単語、日本単語、数値、タグ、動的コードと、3バイトのコードとを対応付ける。
図8aの説明に戻る。コード変換部250は、コード割当表210、2バイトコード割当表215a、3バイトコード割当表215bを基にして、レジスタ205aに格納されたテキストデータをコード化する処理部である。コード変換部250は、コード化したテキストデータを、レジスタ205bに格納する。
以下において、コード変換部250の処理の一例について説明する。コード変換部250は、テキストデータから、スペース「△」で区切られる単語を取得する。コード変換部250は、取得した単語が、単語1バイト領域210Aに設定された単語か、英数字1バイト領域210Bに設定された英数字に対応するものか、2バイト領域210Cに設定された単語か、3バイト領域210Dに設定された単語かを判定する。
コード変換部250の取得した単語が単語1バイト領域210Aに設定された単語である場合について説明する。コード変換部250は、取得した単語と、単語1バイト領域210Aの各単語とを比較して、該当する設定位置の1バイトのコードを特定し、コード化する。例えば、コード変換部250は、取得した単語が「the△」である場合には、かかる単語「the△」を「00h」にコード化する。
コード変換部250の取得した情報が英数字1バイト領域210Bに設定された英数字である場合について説明する。コード変換部250は、取得した英数字と、英数字1バイト領域210Bの各英数字とを比較して、該当する設置位置の1バイトのコードを特定し、コード化する。例えば、コード変換部250は、取得した英数字が「A」である場合には、係る英数字「A」を「41h」にコード化する。
コード変換部250の取得した単語が2バイト領域210Cに設定された単語である場合について説明する。コード変換部250は、取得した単語と、2バイトコード割当表215aとを比較して、該当する設定位置の2バイトのコードを特定し、コード化する。例えば、コード変換部250は、取得した単語が、2バイトコード割当表215aの「8000h」に設定されたある高頻度単語である場合には、かかる高頻度単語を2バイトのコード「8000h」にコード化する。
コード変換部250の取得した単語が3バイト領域210Dに設定された単語である場合について説明する。コード変換部250は、取得した単語と、3バイトコード割当表215bとを比較して、該当する設定位置の3バイトのコードを特定し、コード化する。例えば、コード変換部250は、取得した単語が、3バイトコード割当表215bの「B00000h」に設定されたある英単語である場合には、かかる英単語を3バイトのコード「B00000h」にコード化する。
なお、コード変換部250は、取得した情報が、3バイト領域210Dに設定された日本単語、CJK文字、数値、タグ、動的コードである場合も、3バイトコード割当表215bと比較して、コード化する。
図8bは、本実施例2に係る復号化装置の構成を示す機能ブロック図である。図8bに示すように、この復号化装置600は、入力部601、出力部602、レジスタ605a,605b、記憶部606、コード変換部650を有する。
入力部601は、コード変換されたテキストデータを受け付ける処理部である。入力部601は、受け付けたテキストデータを、レジスタ605aに格納する。
出力部602は、レジスタ605bに格納されたテキストデータを出力する処理部である。
レジスタ605aは、コード変換されたテキストデータを格納するものである。レジスタ605bは、文字コード変換後のテキストデータを格納するものである。
記憶部606は、コード割当表210と、2バイトコード割当表215aと、3バイトコード割当表215bとを有する。記憶部606は、例えば、RAM、ROM、フラッシュメモリなどの半導体メモリ素子などの記憶装置に対応する。
コード割当表210に関する説明は、図9で説明したコード割当表210に関する説明と同様である。2バイトコード割当表215aに関する説明は、図10で説明した2バイトコード割当表215aに関する説明と同様である。3バイトコード割当表215bに関する説明は、図11で説明した3バイトコード割当表215bに関する説明と同様である。
以下において、コード変換部650の処理の一例について説明する。例えば、コード変換部650は、テキストデータからコードを取得し、取得したコードが単語1バイト領域210Aに設定された単語に対応するものか、英数字1バイト領域210Bに設定された英数字に対応するものかを判定する。また、コード変換部650は、取得したコードが、2バイト領域210Cに設定された単語に対応するものか、3バイト領域210Dに設定された単語に対応するものかを判定する。
コード変換部650の取得したコードが単語1バイト領域210Aに設定された単語に対応するコードである場合について説明する。単語1バイト領域210Aに設定された単語に対応するコードの1バイト目は「00h〜1Fh」に含まれる。コード変換部650は、コードに対応する単語を、単語1バイト領域210Aに設定された単語から選択し、選択した単語によって文字コード化する。例えば、コード変換部650は、取得したコードが「00h」である場合には、「00h」を「the△」に文字コード化する。
コード変換部650が取得したコードが英数字1バイト領域210Bに設定された英数字に対応するコードである場合について説明する。英数字1バイト領域210Bに設定された英数字に対応するコードの1バイト目は「20h〜7Fh」に含まれる。コード変換部650は、コードに対応する英数字を、英数字1バイト領域210bに設定された英数字から選択し、選択した英数字によって文字コード化する。例えば、コード変換部650は、取得したコードが「41h」である場合には、「41h」を「A」に文字コード化する。
コード変換部650の取得したコードが2バイト領域210Cに設定された単語に対応するコードである場合について説明する。2バイト領域210Cに設定された単語に対応するコードの1バイト目は「80h〜9Fh」に含まれる。コード変換部650は、取得したコードと、2バイトコード割当表215aとを比較して、コードに対応する単語を特定し、文字コード化する。コード変換部650は、取得したコードが「8000h」である場合には、2バイトコード割当表215aの「8000h」に対応する高頻度単語に文字コード化する。
コード変換部650の取得したコードが3バイト領域210Dに設定された単語に対応するコードである場合について説明する。3バイト領域210Dに設定された単語に対応するコードの1バイト目は「A0h〜FFh」に含まれる。コード変換部650は、取得したコードと、3バイトコード割当表215bとを比較して、コードに対応する単語を特定し、文字コード化する。コード変換部650は、取得したコードが「B00000h」である場合には、3バイトコード割当表215bの「B00000h」に対応する英単語に文字コード化する。
図12aは、本実施例2に係る符号化装置の処理手順を示すフローチャートである。図12aに示すように、符号化装置200の入力部201は、テキストデータをレジスタ205aに格納する(ステップS201)。符号化装置200のコード変換部250は、レジスタ205aに格納されたテキストデータから単語を取得する(ステップS202)。ステップS202では、説明の便宜上、単語と表記するが、コード変換部250が取得するものは、単語の他に、英数字、CJK文字、日本単語、英単語、数値、タグ、動的コードの場合もある。
コード変換部250は、単語とコード割当表210とを比較する(ステップS203)。コード変換部250は、単語(情報)がコード割当表210の単語1バイト領域210Aの単語または英数字1バイト領域210Bの英数字に対応する単語である場合には(ステップS204,Yes)、ステップS205に移行する。コード変換部250は、コード割当表210に基づいて、単語または英数字を1バイトのコードに変換し(ステップS205)、ステップS209に移行する。
一方、コード変換部250は、単語(情報)がコード割当表210の単語1バイト領域210Aの単語あるいは英数字1バイト領域210Bの英数字に対応する単語でない場合には(ステップS204,No)、ステップS206に移行する。コード変換部250は、単語がコード割当表210の2バイト領域210Cの単語に対応する単語である場合には(ステップS206,Yes)、ステップS207に移行する。コード変換部250は、2バイトコード割当表215aに基づいて、単語を2バイトのコードに変換し(ステップS207)、ステップS209に移行する。
一方、コード変換部250は、単語がコード割当表210の2バイト領域210Cの単語に対応する単語でない場合には(ステップS206,No)、ステップS208に移行する。コード変換部250は、3バイトコード割当表215bに基づいて、単語を3バイトのコードに変換し(ステップS208)、ステップS209に移行する。
コード変換部250は、テキストデータのコード化が終了したか否かを判定する(ステップS209)。コード変換部250は、テキストデータのコード化が終了していない場合には(ステップS209,No)、ステップS202に移行する。
一方、コード変換部250は、テキストデータのコード化が終了した場合には(ステップS209,Yes)、コード化したテキストデータを、レジスタ205bに格納する(ステップS210)。
図12bは、本実施例2に係る復号化装置の処理手順を示すフローチャートである。図12bに示すように、復号化装置600の入力部601は、テキストデータをレジスタ605aに格納する(ステップS601)。復号化装置600のコード変換部650は、レジスタ605aに格納されたテキストデータからコードを取得する(ステップS602)。
コード変換部650は、コードとコード割当表210とを比較する(ステップS603)。コード変換部650は、コードがコード割当表210の単語1バイト領域210Aの単語または英数字1バイト領域210Bの英数字に対応する対応するコードである場合には(ステップS604,Yes)、ステップS605に移行する。コード変換部650は、コード割当表210に基づいて、1バイトのコードを単語または英数字に変換し(ステップS605)、ステップS609に移行する。
一方、コード変換部650は、コードがコード割当表210の単語1バイト領域210Aの単語あるいは英数字1バイト領域210Bの英数字に対応するコードでない場合には(ステップS604,No)、ステップS606に移行する。コード変換部650は、コードがコード割当表210の2バイト領域210Cの単語に対応するコードである場合には(ステップS606,Yes)、ステップS607に移行する。コード変換部650は、2バイトコード割当表215aに基づいて、2バイトのコードを単語に変換し(ステップS607)、ステップS609に移行する。
一方、コード変換部650は、コードがコード割当表210の2バイト領域210Cの単語に対応するコードでない場合には(ステップS606,No)、ステップS608に移行する。コード変換部650は、3バイトコード割当表215bに基づいて、3バイトのコードを単語に変換し(ステップS608)、ステップS609に移行する。
コード変換部650は、テキストデータの復号化が終了したか否かを判定する(ステップS609)。コード変換部250は、テキストデータの復号化が終了していない場合には(ステップS609,No)、ステップS602に移行する。
一方、コード変換部250は、テキストデータの復号化が終了した場合には(ステップS609,Yes)、復号化したテキストデータを、レジスタ605bに格納する(ステップS610)。
次に、本実施例2に係る符号化装置200の効果について説明する。符号化装置200は、コード割当表210の単語1バイト領域において、厳選した単語を割り当てた割当表を用いたコード変換を行う。なお、英数字1バイト領域には、従来のコード割当表50の20h〜7Fhに設定される英数字と同様の英数字を設定する。係る処理を実行することで、英数字に関しては、従来と同様に1バイトのコードに変換することを可能にしつつ、出現頻度が高い文字や単語に対しては、短いバイトコードを割り当てることができる。
また、復号化装置600は、上記のコード割当表210を用いて、コード化されたテキストデータを復号化するため、出現頻度が高い単語や一般記号に対して、短いバイトコードを割り当てた場合でも、係るバイトコードを単語や一般記号に変換することができる。
図13aは、本実施例3に係る符号化装置の処理の一例を示す図である。本実施例3に係る符号化装置は、従来のコード割当表50と、本実施例3特有のコード割当表310とを切り替えて利用する。例えば、符号化装置は、テキストデータから、制御記号「SI(Shift In)」を検出した場合には、制御記号「SI」以降のテキストデータを、コード割当表310を用いて、コード変換する。一方、符号化装置は、テキストデータから、制御記号「SO(Shift Out)」を検出した場合には、コード割当表50を用いて、コード変換する。従来技術のコード割当表50に関する説明は、実施例1で説明したものと同様である。
コード割当表310について説明する。コード割当表310の00h〜1Fhには、制御記号が設定され、1バイトのコードが割り当てられる。コード変換表310の00h〜1Fhに設定される制御記号は、コード割当表50の00h〜1Fhに設定される制御記号と同様である。
コード割当表310の20h〜3Fhには、後述する所定の英単語が設定され、1バイトのコードが割り当てられる。コード割当表310の40h〜5Fhには、高頻度の英単語が設定され、2バイトのコードが割り当てられる。
コード割当表310の60h〜7Fhには、後述する所定の日本単語が設定され、1バイトのコードが割り当てられる。コード割当表310の80h〜9Fhには、高頻度の日本単語が設定される。
コード割当表310のA0h〜FFhには、低頻度の単語が設定され、2バイトまたは3バイトのコードが割り当てられる。
本実施例3について、以下の説明では、適宜、コード割当表310の00h〜1Fhの領域を「制御記号1バイト領域」と表記する。コード割当表310の20h〜3Fhの領域を「英単語1バイト領域」と表記する。コード割当表310の40h〜5Fhの領域を「英単語2バイト領域」と表記する。コード割当表310の60h〜7Fhの領域を「日本単語1バイト領域」と表記する。コード割当表310の80h〜9Fhの領域を「日本単語2バイト領域」と表記する。コード割当表310のA0h〜FFhの領域を「2・3バイト領域」と表記する。
コード変換部350は、制御記号「SI」あるいは「SO」の検出により、コード割当表50,310を切り替え、切り替えたコード割当表に基づいて、テキストデータ30aを、テキストデータ30bに変換する。ここでは、テキストデータ30aを「・・・Is△he△in△the△house?」とする。
以下の説明では、前提として、コード変換部350は、制御記号「SI」を検出しており、コード割当表310を基にして、テキストデータ30aをコード変換する場合について説明する。なお、コード変換部350が、コード割当表50を基にして、テキストデータ30aをコード変換する処理は、従来技術と同じであるため、説明を省略する。
コード変換部350は、スペース「△」で区切られる単語と、コード割当表310とを比較して、単語をコードに変換する。テキストデータ30aに含まれる単語「Is△」は、コード割当表310の英単語1バイト領域に設定された単語であり、コード変換部350は、単語「Is△」を1バイトのコード「25h」と、「2Fh」とに変換する。ここで、1バイトのコード「25h」は、単語の先頭が大文字であることを示す1バイトのコードである。「2Fh」は、「is△」に対応する1バイトのコードである。
テキストデータ30aに含まれる「he△」は、コード割当表310の英単語1バイト領域に設定された単語であり、コード変換部350は、単語「he△」を1バイトのコード「39h」に変換する。
テキストデータ30aに含まれる「in△」は、コード割当表310の英単語1バイト領域に設定された単語であり、コード変換部350は、単語「in△」を1バイトのコード「2Eh」に変換する。
テキストデータ30aに含まれる「the△」は、コード割当表310の英単語1バイト領域に設定された単語であり、コード変換部350は、単語「the△」を1バイトのコード「27h」に変換する。
テキストデータ30aに含まれる単語「house」は、「house△」と「−△」に分割される。「house△」は、コード割当表310の2バイト領域に設定された単語であり、コード変換部350は、例えば、単語「house△」を2バイトのコード「4341h」に、単語「−△」を1バイトのコード「21h」に変換する。
テキストデータ30aに含まれる単語「?」は、コード割当表310の英単語2バイト領域に設定された記号であり、コード変換部350は、例えば、単語「?」を2バイトのコード「403Fh」に変換する。
コード変換部350は、テキストデータ30aに含まれる各単語に対して、上記処理を実行することで、テキストデータ30aをテキストデータ30bにコード化する。
図13bは、本実施例3に係る復号化装置の処理の一例を示す図である。本実施例3に係る復号化装置は、従来のコード割当表50と、本実施例3特有のコード割当表310とを切り替えて利用する。例えば、復号化装置は、テキストデータから、制御記号「SI」のコードを検出した場合には、制御記号「SI」以降のテキストデータを、コード割当表310を用いて、文字コード変換する。一方、復号化装置は、テキストデータから、制御記号「SO」のコードを検出した場合には、コード割当表50を用いて、文字コード変換する。従来技術のコード割当表50に関する説明は、実施例1で説明したものと同様である。また、コード割当表310に関する説明は、上記の説明と同様である。
コード変換部750は、制御記号「SI」のコードあるいは「SO」のコードの検出により、コード割当表50,310を切り替え、切り替えたコード割当表に基づいて、テキストデータ30bを、テキストデータ30aに変換する。ここでは、テキストデータ30bを「・・・25h 2Fh 39h 2Eh 27h 4341h 21h 403Fh・・・」とする。
以下の説明では、前提として、コード変換部750は、制御記号「SI」のコードを検出しており、コード割当表310を基にして、テキストデータ30bを文字コード変換する場合について説明する。なお、コード変換部750が、コード割当表50を基にして、テキストデータ30bを文字コード変換する処理は、従来技術と同じであるため、説明を省略する。
コード変換部750は、コードと、コード割当表310とを比較して、コードを単語に変換する。例えば、コード変換部750は、1バイトのコード「25h」と、「2Fh」を、単語「Is△」に変換する。コード変換部750は、1バイトのコード「39h」を、単語「he△」に変換する。コード変換部750は、1バイトのコード「2Eh」を、単語「in△」に変換する。コード変換部750は、1バイトのコード「27h」を、単語「the△」に変換する。コード変換部750は、2バイトのコード「4341h」と1バイトのコード「21h」とを、単語「house」に変換する。コード変換部750は、2バイトのコード「403Fh」を、記号「?」に変換する。
コード変換部750は、テキストデータ30bに含まれる各コードに対して、上記処理を実行することで、テキストデータ30bをテキストデータ30aに文字コード化する。
図14aは、本実施例3に係る符号化装置の構成を示す機能ブロック図である。図14aに示すように、この符号化装置300は、入力部301、出力部302、レジスタ305a,305b、記憶部306、コード変換部350を有する。
入力部301は、コード変換を行うテキストデータを受け付ける処理部である。入力部301は、受け付けたテキストデータを、レジスタ305aに格納する。
出力部302は、レジスタ305bに格納されるコード変換後のテキストデータを出力する処理部である。
レジスタ305aは、コード変換を行う前のテキストデータを格納するものである。レジスタ305bは、コード変換後のテキストデータを格納するものである。
記憶部306は、コード割当表50と、コード割当表310と、英単語2バイトコード割当表315aと、日本単語2バイトコード割当表315bと、2・3バイトコード割当表316とを有する。記憶部306は、例えば、RAM、ROM、フラッシュメモリなどの半導体メモリ素子などの記憶装置に対応する。
コード割当表50は、従来のコード割当表である。例えば、コード割当表50の説明は、実施例1で説明したものと同様である。
図15は、本実施例3に係るコード割当表の一例を示す図である。コード割当表310は、単語等と、所定のコードとを対応付けたテーブルであり、図13aで説明したコード割当表310に対応する。図15に示すように、このコード割当表310は、制御記号1バイト領域310Aと、英単語1バイト領域310Bと、英単語2バイト領域310Cと、日本単語1バイト領域310Dと、日本単語2バイト領域310Eと、2・3バイト領域310Fとを有する。
制御記号1バイト領域310Aは、コード割当表310の00h〜1Fhの領域である。制御記号1バイト領域310Aに設定される制御記号は、コード割当表50の00h〜1Fhに設定される制御記号と同様である。なお、制御記号には、「SO」と「SI」が含まれる。制御記号「SO」は、コード変換部350に、コード割当表50を用いてコード変換を行うことを指示する制御記号である。制御記号「SI」は、コード変換部350に、コード割当表310を用いて、コード変換することを指示する制御記号である。
英単語1バイト領域310Bは、コード割当表310の20h〜3Fhの領域である。英単語1バイト領域310Bに設定された英単語には1バイトのコードが割り当てられる。この英単語1バイト領域310Bには、オックスフォード英語辞典、その他の一般的な書籍を基にして、出現頻度の高い上位25個の英単語が設定される。例えば、単語「the」には、1バイトのコード「27h」が割り当てられる。
また、英単語1バイト領域310Bには、スペース「△」、バックスペース「−△」、コンマ「,」、アポストロフィ「’」、単語の先頭が大文字であることを示すコード、単語の全部が大文字であることを示すコードが設定される。例えば、スペース「△」には、1バイトのコード「20h」が割り当てられる。
英単語2バイト領域310Cは、コード割当表310の40h〜5Fhの領域である。この英単語2バイト領域310Cには、オックスフォード英語辞書、その他の一般的な書籍を基にして、出現頻度が所定値以上となる英単語が設定される。以下の説明では、適宜、出現頻度が所定値以上となる単語を高頻度英単語と表記する。
ここで、英単語2バイト領域310Cには、係る英単語2バイト領域310Cに設定された高頻度英単語に割り当てる2バイトのコードのうち、前半の1バイトのコードのみが定義されている。英単語2バイト領域310Cに設定された英単語に割り当てる2バイトのコードは、後述する英単語2バイトコード割当表315aに定義されている。
日本単語1バイト領域310Dは、コード割当表310の60h〜7Fhの領域である。この日本単語1バイト領域310Dは、青空文庫、その他の一般的な書籍を基にして、出現頻度の高い上位の日本語が設定される。例えば、日本単語「の」には、1バイトのコード「65h」が割り当てられる。
また、日本単語1バイト領域310Dは、読点「、」、句点「。」、カギ括弧が設定される。例えば、読点「、」には、1バイトのコード「61h」が割り当てられる。
日本単語2バイト領域310Eは、コード割当表310の80h〜9Fhの領域である。この日本単語2バイト領域310Eは、青空文庫、その他の一般的な書籍を基にして、出現頻度の高い上位の日本語が設定される。以下の説明では、適宜、出現頻度が所定値以上となる単語を高頻度日本単語と表記する。
ここで、日本単語2バイト領域310Eには、係る日本単語2バイト領域310Eに設定された高頻度日本単語に割り当てる2バイトのコードのうち、前半の1バイトのコードのみが設定されている。日本単語2バイト領域310Eに設定された日本語に割り当てる2バイトのコードは、後述する日本単語2バイトコード割当表315bに定義されている。
2・3バイト領域310Fは、コード割当表310のA0h〜FFhの領域である。この2・3バイト領域310Fには、青空文庫、オックスフォード英語辞書、その他の一般的な書籍を基にして、出現頻度が所定値未満となる低頻度の単語が設定される。以下の説明では、適宜、低頻度の単語を、低頻度単語と表記する。2・3バイト領域310Fに設定された低頻度単語には、2バイトまたは3バイトのコードが割り当てられる。
なお、2・3バイト領域310Fには、係る2・3バイト領域310Fに設定された単語に割り当てるバイトコードのうち、前半の1バイトのコードのみが設定されている。2・3バイト領域310Fに設定された単語に割り当てる2バイトまたは3バイトのコードは、後述する2・3バイト割当表316に定義されている。
図16は、本実施例3に係る英単語2バイトコード割当表の一例を示す図である。図16に示すように、英単語2バイトコード割当表315aは、高頻度英単語と、2バイトのコードとを対応付ける。
英単語2バイトコード割当表315aにおいて、「4000h〜5FFFh」には、高頻度英単語が設定され、設置位置に応じた2バイトのコードが割り当てられる。例えば、設定位置「4000h」に設定された高頻度英単語には、2バイトのコード「4000h」が割り当てられる。
図17は、本実施例3に係る日本単語2バイト割当表の一例を示す図である。図17に示すように、この日本単語2バイトコード割当表315bは、高頻度日本単語と、2バイトのコードとを対応付ける。
日本単語2バイト割当表315bにおいて、「8000h〜9FFFh」には、高頻度日本単語が設定され、設置位置に応じた2バイトのコードが割り当てられる。例えば、設定位置「8000h」に設定された高頻度日本単語には、2バイトのコード「8000h」が割り当てられる。
図18は、本実施例3に係る2・3バイト割当表の一例を示す図である。図18に示すように、この2・3バイト割当表316は、低頻度単語と、2バイトのコードまたは3バイトのコードを割り当てる。例えば、A000h〜E7FFh、F000h〜F7FFhに設定される低頻度単語には、2バイトのコードが割り当てられる。E90000h〜EFFFFFh、F90000h〜FFFFFFhに設定される低頻度単語には、3バイトのコードが割り当てられる。
図14aの説明に戻る。コード変換部350は、制御記号に基づいてコード割当表を切り替え、切り替えたコード割当表に基づいて、テキストデータをコード化する処理部である。コード変換部350は、制御記号「SI」以降のテキストデータを、コード割当表310を用いて、コード変換する。一方、符号化装置300は、テキストデータから、制御記号「SO」を検出した場合には、コード割当表50を用いて、コード変換する。従来技術のコード割当表50に関する説明は、実施例1で説明したものと同様である。コード変換部350は、コード化したテキストデータを、レジスタ305bに格納する。
以下において、コード変換部350がコード割当表310を用いてコード化する処理の一例について説明する。コード変換部350は、テキストデータから情報(英単語、日本単語、制御記号等)を取得する。コード変換部350は、テキストデータから取得した情報が、各領域310A〜310Fの何れの領域の情報に対応するか特定し、特定した領域に応じたコード化を行う。
コード変換部350の取得した情報が制御記号1バイト領域310Aに設定された制御記号である場合について説明する。コード変換部350は、取得した制御記号と、制御記号1バイト領域310Aに設定された各制御記号とを比較して、該当する設定位置の1バイトのコードを特定し、コード化する。例えば、コード変換部350は、取得した制御記号が「NUL」である場合には、かかる制御記号「NUL」を「00h」にコード化する。
なお、コード変換部350は、取得した制御記号が「SO」である場合には、かかる制御記号「SO」を「0Eh」にコード化すると共に、利用するコード割当表を、コード割当表50に切り替える。
コード変換部350は、取得した制御記号が「SI」である場合には、かかる制御記号「SI」を「0Fh」にコード化すると共に、利用するコード割当表を、コード割当表310に切り替える。
コード変換部350の取得した情報が英単語1バイト領域310Bに設定された英単語である場合について説明する。コード変換部350は、取得した英単語と、英単語1バイト領域310Bに設定された各英単語とを比較して、該当する設定位置の1バイトのコードを特定し、コード化する。例えば、コード変換部350は、取得した英単語が「the」である場合には、係る英単語「the」を「27h」にコード化する。
コード変換部350が取得した情報が英単語2バイト領域310Cに設定された英単語である場合について説明する。コード変換部350は、取得した英単語と、英単語2バイトコード割当表315aとを比較して、該当する設置位置の2バイトのコードを特定し、コード化する。例えば、コード変換部350は、取得した単語が、英単語2バイトコード割当表315aの「4000h」に設定されたある高頻度英単語である場合には、かかる高頻度英単語を2バイトのコード「4000h」にコード化する。
コード変換部350の取得した情報が日本単語1バイト領域310Dに設定された日本単語である場合について説明する。コード変換部350は、取得した日本単語と、日本単語1バイト領域310Dに設定された各日本単語とを比較して、該当する設定位置の1バイトのコードを特定し、コード化する。例えば、コード変換部350は、取得した日本単語が「の」である場合には、係る日本単語「の」を「65h」にコード化する。
コード変換部350の取得した情報が日本単語2バイト領域310Eに設定された日本単語である場合について説明する。コード変換部350は、取得した日本単語と、日本単語2バイトコード割当表315bとを比較して、該当する設置位置の2バイトのコードを特定し、コード化する。例えば、コード変換部350は、取得した単語が、日本単語2バイトコード割当表315bの「8000h」に設定されたある高頻度日本単語である場合には、かかる高頻度日本単語を2バイトのコード「8000h」にコード化する。
コード変換部350の取得した情報が2・3バイト領域310Fに設定された低頻度単語である場合について説明する。コード変換部350は、取得した単語と、2・3バイトコード割当表316とを比較して、該当する設定位置の2バイトまたは3バイトのコードを特定し、コード化する。例えば、コード変換部350は、取得した単語が、2・3バイトコード割当表316の「A000h」に設定された低頻度単語である場合には、係る低頻度単語を2バイトのコード「A000h」にコード化する。例えば、コード変換部350は、取得した単語が、2・3バイトコード割当表316の「E90000h」に設定された低頻度単語である場合には、係る低頻度単語を3バイトのコード「E90000h」にコード化する。
図14bは、本実施例3に係る復号化装置の構成を示す機能ブロック図である。図14bに示すように、この復号化装置700は、入力部701、出力部702、レジスタ705a,705b、記憶部706、コード変換部750を有する。
入力部701は、コード変換を行うテキストデータを受け付ける処理部である。入力部701は、受け付けたテキストデータを、レジスタ705aに格納する。
出力部702は、レジスタ705bに格納される文字コード変換後のテキストデータを出力する処理部である。
レジスタ705aは、コード変換されたテキストデータを格納するものである。レジスタ705bは、文字コード変換後のテキストデータを格納するものである。
記憶部706は、コード割当表50と、コード割当表310と、英単語2バイトコード割当表315aと、日本単語2バイトコード割当表315bと、2・3バイトコード割当表316とを有する。記憶部706は、例えば、RAM、ROM、フラッシュメモリなどの半導体メモリ素子などの記憶装置に対応する。
コード割当表50の説明は、実施例1で説明したものと同様である。コード割当表310に関する説明は、図15で説明したコード割当表310に関する説明と同様である。英単語2バイトコード割当表315aに関する説明は、図16で説明した英単語2バイトコード割当表315aに関する説明と同様である。日本単語2バイトコード割当表315bに関する説明は、図17で説明した日本単語2バイト割当表315bに関する説明と同様である。2・3バイトコード割当表316に関する説明は、図18で説明した2・3バイトコード割当表316に関する説明と同様である。
コード変換部750は、制御記号のコードに基づいてコード割当表を切り替え、切り替えたコード割当表に基づいて、テキストデータを文字コード化する処理部である。コード変換部750は、制御記号「SI」のコード以降のテキストデータを、コード割当表310を用いて、文字コード変換する。一方、復号化装置700は、テキストデータから、制御記号「SO」のコードを検出した場合には、コード割当表50を用いて、文字コード変換する。コード変換部750は、コード化したテキストデータを、レジスタ705bに格納する。
以下において、コード変換部750がコード割当表310を用いて文字コード化する処理の一例について説明する。コード変換部750は、テキストデータからコードを取得する。コード変換部750は、テキストデータから取得したコードが、各領域310A〜310Fの何れの領域の情報に対応するコードであるかを特定し、特定した領域に応じた文字コード化を行う。
コード変換部750の取得したコードが制御記号1バイト領域310Aに設定された制御記号のコードである場合について説明する。制御記号1バイト領域310Aに設定された制御記号に対応するコードの1バイト目は「00h〜1Fh」に含まれる。コード変換部750は、コードに対応する制御記号を、制御記号1バイト領域310Aに設定された制御記号から選択し、選択した制御記号によって文字コード化する。例えば、コード変換部750は、取得したコードが「00h」である場合には、「00h」を「NUL」に文字コード化する。
なお、コード変換部750は、取得したコードが「0Eh」である場合には、かかるコード「0Eh」を「SO」に文字コード化すると共に、利用するコード割当表を、コード割当表50に切り替える。
コード変換部750は、取得したコードが「0Fh」である場合には、かかるコード「0Fh」を「SI」に文字コード化すると共に、利用するコード割当表を、コード割当表310に切り替える。
コード変換部750の取得したコードが英単語1バイト領域310Bに設定された英単語に対応するコードである場合について説明する。英単語1バイト領域310Bに設定された英単語に対応するコードの1バイト目は「20h〜3Fh」に含まれる。コード変換部750は、取得したコードと、英単語1バイト領域310Bに設定された各英単語のコードとを比較して、該当する設定位置の英単語を特定し、文字コード化する。例えば、コード変換部750は、取得したコードが「27h」である場合には、係るコード「27h」を「the」に文字コード化する。
コード変換部750が取得したコードが英単語2バイト領域310Cに設定された英単語に対応するコードである場合について説明する。英単語2バイト領域310Cに設定された英単語に対応するコードの1バイト目は「40h〜5Fh」に含まれる。コード変換部750は、取得したコードと、英単語2バイトコード割当表315aとを比較して、該当する設置位置の英単語を特定し、文字コード化する。例えば、コード変換部750は、取得したコードが「4000h」である場合には、英単語2バイトコード割当表315aの「4000h」に対応する高頻度英単語に文字コード化する。
コード変換部750の取得したコードが2・3バイト領域310Fに設定された低頻度単語である場合について説明する。2・3バイト領域310Fに設定された低頻度単語に対応するコードの1バイト目は「A0h〜FFh」に含まれる。コード変換部750は、取得したコードと、2・3バイトコード割当表316とを比較して、対応する設定位置の低頻度単語を特定し、文字コード化する。例えば、コード変換部750は、取得したコードが「A000h」である場合には、2・3バイトコード割当表316の「A000h」に対応する低頻度単語に文字コード化する。
図19aは、本実施例3に係る符号化装置の処理手順を示すフローチャートである。図19aに示すように、符号化装置300の入力部301は、テキストデータをレジスタ305aに格納する(ステップS301)。符号化装置300のコード変換部350は、テキストデータから情報を取得する(ステップS302)。ステップS302では、説明の便宜上、情報と表記するが、コード変換部350が取得する情報には、英単語、日本単語、制御記号等の情報が含まれる。
コード変換部350は、取得した情報が制御記号の「SO」または「SI」であるか否かを判定する(ステップS303)。コード変換部350は、情報が制御記号の「SO」または「SI」である場合には(ステップS303,Yes)、ステップS304に移行する。
コード変換部350は、制御記号が「SO」の場合には、コード割当表50を選択し、制御記号が「SI」の場合には、コード割当表310を選択し(ステップS304)、ステップS302に移行する。
一方、コード変換部350は、取得した情報が制御記号の「SO」でもなく、かつ、「SI」でもない場合には(ステップS303,No)、第1コード変換処理を実行する(ステップS305)。コード変換部350は、テキストデータのコード化が終了したか否かを判定する(ステップS306)。
コード変換部350は、テキストデータのコード化が終了していない場合には(ステップS306,No)、ステップS302に移行する。一方、コード変換部350は、テキストデータのコード化が終了した場合には(ステップS306,Yes)、コード化したテキストデータを、レジスタ305bに格納する(ステップS307)。
図20aは、第1コード変換処理の処理手順を示すフローチャートである。このコード変換処理は、図19aのステップS305に示した処理に対応するものである。図20aに示すように、符号化装置300のコード変換部350は、コード割当表50を選択中であるか否かを判定する(ステップS401)。
コード変換部350は、コード割当表50を選択中である場合には(ステップS401,Yes)、コード割当表50を参照し(ステップS402)、コード割当表50に基づいて、情報をバイトコードに変換する(ステップS403)。
一方、コード変換部350は、コード割当表50を選択中ではなく、コード割当表310を選択中である場合には(ステップS401,No)、ステップS404に移行する。コード変換部350は、コード割当表310を参照し(ステップS404)、コード割当表310に基づいて、情報をバイトコードに変換する(ステップS405)。
図19bは、本実施例3に係る復号化装置の処理手順を示すフローチャートである。図19bに示すように、復号化装置700の入力部701は、テキストデータをレジスタ705aに格納する(ステップS701)。復号化装置700のコード変換部750は、テキストデータからコードを取得する(ステップS702)。
コード変換部750は、取得したコードが制御記号の「SO」または「SI」に対応するコードであるか否かを判定する(ステップS703)。コード変換部750は、コードが制御記号の「SO」または「SI」に対応するコードである場合には(ステップS703,Yes)、ステップS704に移行する。
コード変換部750は、コードが「SO」に対応するコードの場合には、コード割当表50を選択し、コードが「SI」に対応するコードの場合には、コード割当表310を選択し(ステップS704)、ステップS702に移行する。
一方、コード変換部750は、取得したコードが「SO」に対応するコードでもなく、かつ、「SI」に対応するコードでもない場合には(ステップS703,No)、第2コード変換処理を実行する(ステップS705)。コード変換部750は、テキストデータの復号化が終了したか否かを判定する(ステップS706)。
コード変換部750は、テキストデータの復号化が終了していない場合には(ステップS706,No)、ステップS702に移行する。一方、コード変換部750は、テキストデータの復号化が終了した場合には(ステップS706,Yes)、復号化したテキストデータを、レジスタ705bに格納する(ステップS707)。
図20bは、第2コード変換処理の処理手順を示すフローチャートである。このコード変換処理は、図19bのステップS705に示した処理に対応するものである。図20bに示すように、復号化装置700のコード変換部750は、コード割当表50を選択中であるか否かを判定する(ステップS801)。
コード変換部750は、コード割当表50を選択中である場合には(ステップS801,Yes)、コード割当表50を参照し(ステップS802)、コード割当表50に基づいて、バイトコードを文字コードに変換する(ステップS803)。
一方、コード変換部750は、コード割当表50を選択中ではなく、コード割当表310を選択中である場合には(ステップS801,No)、ステップS804に移行する。コード変換部750は、コード割当表310を参照し(ステップS804)、コード割当表310に基づいて、バイトコードを文字コードに変換する(ステップS805)。
次に、本実施例3に係る符号化装置300の効果について説明する。符号化装置300は、従来のコード割当表50と、本実施例3特有のコード割当表310とを切り替えて利用する。例えば、符号化装置300は、テキストデータから、制御記号「SI」を検出した場合には、制御記号「SI」以降のテキストデータを、コード割当表310を用いて、コード変換する。一方、符号化装置300は、テキストデータから、制御記号「SO」を検出した場合には、コード割当表50を用いて、コード変換する。このため、従来のコード割当表50を用いたコード変換に対応しつつ、出現頻度が高い文字や単語に対しては、短いバイトコードを割り当てることができる。
また、復号化装置700は、上記のコード割当表50、310を切り替えて使用し、コード化されたテキストデータを復号化するため、従来のコード割当表50を用いた文字コード変換に対応しつつ、出現頻度が高い単語や一般記号に対して、短いバイトコードを割り当てた場合でも、係るバイトコードを単語や一般記号に変換することができる。
図21は、本実施例4に係る復号化装置の処理の一例を示す図である。本実施例4に係る復号化装置は、第1オートマトン806a、第2オートマトン806b、第3オートマトン806cを用いて、コード変換されたテキストデータ10bを、文字コード変換することで、テキストデータ10aを生成する。テキストデータ10bは、例えば、実施例1で説明した符号化装置100によりコード変換されたものである。
第1オートマトン806aは、1バイトのコードと、1バイトのコードに対応する文字とが対応付けられる。図22は、第1オートマトンの一例を示す図である。図22に示すように、第1オートマトン806aは、「00h〜2Fh」と各単語とが対応付けられる。例えば、「00h〜2Fh」に対応付けられた各単語は、図3で説明した1バイト領域110Aの各単語に対応する。
第2オートマトン806bは、2バイトのコードと、所定の文字列、スペース、記号、高頻度単語等とを対応付ける。図23は、第2オートマトンの一例を示す図である。図23に示すように、第2オートマトン806bは、「3000h〜5FFFh」と文字列、スペース、記号、高頻度単語等とが対応付けられる。ここでは図示を省略するが、第2オートマトン806bでは、2バイトのコードと、英数字、記号、かな、カナ、漢字、数値、時刻、タグ、構文とを対応付けてもよい。例えば、「3000h〜5FFFh」に対応付けられる情報は、図4で説明した2バイトコード割当表115aにおいて、「3000h〜5FFFh」と対応付けられる情報に対応する。
第3オートマトン806cは、3バイトのコードと、所定のCJK文字、英単語、日本単語、第3国の単語、数値、時刻、タグ、構文意味解析の結果とを対応付ける。図24は、第3オートマトンの一例を示す図である。図24に示すように、第3オートマトン806cは、「600000h〜FFFFFFh」と、所定のCJK文字、英単語、日本単語、第3国の単語、数値、時刻、タグ、構文意味解析の結果とが対応付けられる。なお、「E00000h〜FFFFFFh」は、予備の領域となる。例えば、「600000h〜FFFFFFh」に対応付けられる情報は、図5で説明した3バイトコード割当表115bにおいて、「600000h〜FFFFFFh」に対応付けられる情報に対応する。
図21の説明に戻る。コード変換部850は、コード変換されたテキストデータ10bからコードを読み出し、コードの先頭4ビットの値に基づいて、第1オートマトン806a、第2オートマトン806b、第3オートマトン806cのいずれかのオートマトンを選択する。そして、コード変換部850は、選択したオートマトンを基にして、コードを変換する。
例えば、コード変換部850は、コードの先頭4ビットが「00h〜2Fh」に含まれる場合には、第1オートマトン806aを選択し、第1オートマトン806aに基づいて、コードを変換する。
コード変換部850は、コードの先頭4ビットが「30h〜5Fh」に含まれる場合には、第2オートマトン806bを選択し、第2オートマトン806bに基づいて、コードを変換する。
コード変換部850は、コードの先頭4ビットが「60h〜FFh」に含まれる場合には、第3オートマトン806cを選択し、第3オートマトン806cに基づいて、コードを変換する。
図21のテキストデータ10bに含まれる各コード「12h、08h、07h、00h」の先頭4ビットは、「00h〜2Fh」に含まれるため、コード変換部850は、第1オートマトン806aを選択し、コードを変換する。例えば、コード変換部850は、「12h、08h、07h、00h」を第1オートマトン806aに基づき「he△、is△、in△、the△」にそれぞれ変換する。
図21のテキストデータ10bに含まれるコード「4341h」の先頭4ビットは、「30h〜5Fh」に含まれるため、コード変換部850は、第2オートマトン806bを選択し、コードを変換する。例えば、コード変換部850は、「4341h」を第2オートマトン806bに基づき「house△」に変換する。コード変換部850が上記処理を実行することで、テキストデータ10bは、テキストデータ10aに変換される。
図25は、本実施例4に係る復号化装置の構成を示す機能ブロック図である。図25に示すように、この復号化装置800は、入力部801、出力部802、レジスタ805a,805b、記憶部806、コード変換部850を有する。
入力部801は、コード変換されたテキストデータを受け付ける処理部である。入力部801は、受け付けたテキストデータを、レジスタ805aに格納する。
出力部802は、レジスタ805bに格納されたテキストデータを出力する処理部である。
記憶部806は、第1オートマトン806aと、第2オートマトン806bと、第3オートマトン806cとを有する。記憶部806は、例えば、RAM、ROM、フラッシュメモリなどの半導体メモリ素子などの記憶装置に対応する。
第1オートマトン806a、第2オートマトン806b、第3オートマトン806cに関する説明は、図21で説明した第1オートマトン806a、第2オートマトン806b、第3オートマトン806cに関する説明と同様である。
コード変換部850は、コード変換されたテキストデータ10bからコードを読み出し、コードの先頭4ビットの値に基づいて、第1オートマトン806a、第2オートマトン806b、第3オートマトン806cのいずれかのオートマトンを選択する。そして、コード変換部850は、選択したオートマトンを基にして、コードを変換する。コード変換部850の具体的な処理は、図21で説明したコード変換部850の処理と同様である。
図26は、本実施例4に係る復号化装置の処理手順を示すフローチャートである。図26に示すように、復号化装置800の入力部801は、テキストデータをレジスタ805aに格納する(ステップS901)。復号化装置800のコード変換部850は、レジスタ805aに格納されたテキストデータからコードを取得する(ステップS902)。
コード変換部850は、コードの先頭の4ビットの値と各オートマトンとを比較する(ステップS903)。コード変換部850は、コードの先頭の4ビットの値が第1オートマトン806aにヒットしたか否かを判定する(ステップS904)。コード変換部850は、コードの先頭の4ビットの値が第1オートマトン806aにヒットした場合には(ステップS904,Yes)、第1オートマトン806aを選択する(ステップS905)。コード変換部850は、第1オートマトン806aに基づいてコードを単語に変換し(ステップS906)、ステップS912に移行する。
一方、コード変換部850は、コードの先頭の4ビットの値が第1オートマトン806aにヒットしていない場合には(ステップS904,No)、コードの先頭の4ビットの値が第2オートマトン806bにヒットしたか否かを判定する(ステップS907)。コード変換部850は、コードの先頭の4ビットの値が第2オートマトン806bにヒットした場合には(ステップS907,Yes)、第2オートマトン806bを選択する(ステップS908)。コード変換部850は、第2オートマトン806bに基づいてコードを単語に変換し(ステップS909)、ステップS912に移行する。
一方、コード変換部850は、コードの先頭の4ビットの値が第2オートマトン806bにヒットしない場合には(ステップS907,No)、第3オートマトン806cを選択する(ステップS910)。コード変換部850は、第3オートマトン806cに基づいてコードを単語に変換する(ステップS911)。
コード変換部850は、テキストデータの復号化が終了したか否かを判定する(ステップS912)。コード変換部850は、テキストデータの復号化が終了していない場合には(ステップS912,No)、ステップS902に移行する。
一方、コード変換部850は、テキストデータの復号化が終了した場合には(ステップS912,Yes)、復号化したテキストデータを、レジスタ805bに格納する(ステップS913)。
次に、復号化装置800の効果について説明する。復号化装置800は、コード変換されたテキストデータ10bからコードを読み出し、コードの先頭4ビットの値に基づいて、第1オートマトン806a、第2オートマトン806b、第3オートマトン906cのいずれかのオートマトンを選択する。そして、復号化装置800は、選択したオートマトンを基にして、コードを変換する。これにより、符号化装置100等により、短いコードに割り当てるべき、出現頻度が高い文字や単語に対応付けられたコード等の2バイト以上のコードを1バイトコードに割り当てた場合でも、復号化装置800を用いて、適切に復号化できる。すなわち、復号化装置800により、短いコードに割り当てるべき、出現頻度が高い文字や単語に対応付けられたコード等の2バイト以上のコードを1バイトコードに割り当てることができる。
下記に、本実施形態に用いられるハードウェア及びソフトウェアについて説明する。図27は、コンピュータ1のハードウェア構成例を示す。コンピュータ1は、例えば、プロセッサ401、RAM(Random Access Memory)402、ROM(Read Only Memory)403、ドライブ装置404、記憶媒体405、入力インターフェース(I/F)406、入力デバイス407、出力インターフェース(I/F)408、出力デバイス409、通信インターフェース(I/F)410、SAN(Storage Area Network)インターフェース(I/F)411およびバス412などを含む。それぞれのハードウェアはバス412を介して接続されている。
RAM402は読み書き可能なメモリ装置であって、例えば、SRAM(Static RAM)やDRAM(Dynamic RAM)などの半導体メモリ、またはRAMでなくてもフラッシュメモリなどが用いられる。ROM403は、PROM(Programmable ROM)なども含む。ドライブ装置404は、記憶媒体405に記録された情報の読み出しか書き込みかの少なくともいずれか一方を行なう装置である。記憶媒体405は、ドライブ装置404によって書き込まれた情報を記憶する。記憶媒体405は、例えば、ハードディスク、SSD(Solid State Drive)などのフラッシュメモリ、CD(Compact Disc)、DVD(Digital Versatile Disc)、ブルーレイディスクなどの記憶媒体である。また、例えば、コンピュータ1は、複数種類の記憶媒体それぞれについて、ドライブ装置404及び記憶媒体405を設ける。
入力インターフェース406は、入力デバイス407と接続されており、入力デバイス407から受信した入力信号をプロセッサ401に伝達する回路である。出力インターフェース408は、出力デバイス409と接続されており、出力デバイス409に、プロセッサ401の指示に応じた出力を実行させる回路である。通信インターフェース410はネットワーク3を介した通信の制御を行なう回路である。通信インターフェース410は、例えばネットワークインターフェースカード(NIC)などである。SANインターフェース411は、ストレージエリアネットワークによりコンピュータ1と接続された記憶装置との通信の制御を行なう回路である。SANインターフェース411は、例えばホストバスアダプタ(HBA)などである。
入力デバイス407は、操作に応じて入力信号を送信する装置である。入力信号は、例えば、キーボードやコンピュータ1の本体に取り付けられたボタンなどのキー装置や、マウスやタッチパネルなどのポインティングデバイスである。出力デバイス409は、コンピュータ1の制御に応じて情報を出力する装置である。出力デバイス409は、例えば、ディスプレイなどの画像出力装置(表示デバイス)や、スピーカーなどの音声出力装置などである。また、例えば、タッチスクリーンなどの入出力装置が、入力デバイス407及び出力デバイス409として用いられる。また、入力デバイス407及び出力デバイス409は、コンピュータ1と一体になっていてもよいし、コンピュータ1に含まれず、例えば、コンピュータ1に外部から接続する装置であってもよい。
例えば、プロセッサ401は、ROM403や記憶媒体405に記憶されたプログラムをRAM402に読み出し、読み出されたプログラムの手順に従って、入力部101,201,301、コード変換部150,250,350、出力部102,202,302の処理を行なう。その際にRAM402はプロセッサ401のワークエリアとして用いられる。記憶部の機能は、ROM403および記憶媒体405がプログラムファイル(後述のアプリケーションプログラム24、ミドルウェア23およびOS22など)やデータファイル(テキストデータ、照合対象となる文字列)を記憶し、RAM402がプロセッサ401のワークエリアとして用いられることによって実現される。プロセッサ401が読み出すプログラムについては、図28を用いて説明する。
図28は、コンピュータで動作するプログラムの構成例を示す。コンピュータ1において、図28に示すハードウェア群21(401〜412)の制御を行なうOS(オペレーティング・システム)22が動作する。OS22に従った手順でプロセッサ401が動作して、ハードウェア群21の制御・管理が行なわれることにより、アプリケーションプログラム24やミドルウェア23に従った処理がハードウェア群21で実行される。さらに、コンピュータ1において、ミドルウェア23またはアプリケーションプログラム24が、RAM402に読み出されてプロセッサ401により実行される。
プロセッサ401が、照合機能が呼び出された場合に、ミドルウェア23またはアプリケーションプログラム24の少なくとも一部に基づく処理を行なうことにより、(それらの処理をOS22に基づいてハードウェア群21を制御して)コード変換部150,250,350の機能が実現される。照合機能は、それぞれアプリケーションプログラム24自体に含まれてもよいし、アプリケーションプログラム24に従って呼び出されることで実行されるミドルウェア23の一部であってもよい。
図29は、実施形態のシステムにおける装置の構成例を示す。図29のシステムは、コンピュータ1a、コンピュータ1b、基地局2およびネットワーク3を含む。コンピュータ1aは、無線または有線の少なくとも一方により、コンピュータ1bと接続されたネットワーク3に接続している。図2a、図8a、図14aに示す符号化装置100,200,300の機能は、図29に示すコンピュータ1aとコンピュータ1bとのいずれに含まれてもよい。また、図2b、図8b、図14b、図25に示す復号化装置500,600,700、800の機能は、図29に示すコンピュータ1aとコンピュータ1bとのいずれに含まれてもよい。
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)コンピュータに、
記憶装置に格納された、第1コード割当表の1バイト領域に割り当てられた文字の一部を、2バイト領域に割り当て、かつ、前記2バイト領域に割り当てられた前記文字の少なくとも一部に対して、2バイト以上のコードを割り当てることで、入力された文字データをコード化する変換規則であって、前記コード化された符号データの先頭4ビットの値は当該符号データのコード長に応じて異なる変換規則を定義した第2コード割当表を参照し、
前記第2コード割当表を基にして生成された複数のオートマトンを利用し、コード化されたデータを前記複数のオートマトンのうち、当該データの先頭4ビットの値に応じて選択されるオートマトンにより文字データに復号化する
処理を実行させることを特徴とする復号化プログラム。
(付記2)コンピュータが実行する復号化方法であって、
記憶装置に格納された、第1コード割当表の1バイト領域に割り当てられた文字の一部を、2バイト領域に割り当て、かつ、前記2バイト領域に割り当てられた前記文字の少なくとも一部に対して、2バイト以上のコードを割り当てることで、入力された文字データをコード化する変換規則であって、前記コード化された符号データの先頭4ビットの値は当該符号データのコード長に応じて異なる変換規則を定義した第2コード割当表を参照し、
前記第2コード割当表を基にして生成された複数のオートマトンを利用し、コード化されたデータを前記複数のオートマトンのうち、当該データの先頭4ビットの値に応じて選択されるオートマトンにより文字データに復号化する
処理を実行することを特徴とする復号化方法。
(付記3)第1コード割当表の1バイト領域に割り当てられた文字の一部を、2バイト領域に割り当て、かつ、前記2バイト領域に割り当てられた前記文字の少なくとも一部に対して、2バイト以上のコードを割り当てることで、入力された文字データをコード化する変換規則であって、前記コード化された符号データの先頭4ビットの値は当該符号データのコード長に応じて異なる変換規則を定義した第2コード割当表を基に生成された複数のオートマトンを記憶する記憶部と、
前記複数のオートマトンを利用し、コード化されたデータを前記複数のオートマトンのうち、当該データの先頭4ビットの値に応じて選択されるオートマトンにより文字データに復号化するコード変換部と
を有することを特徴とする復号化装置。
100,200,300 符号化装置
150,250,350 コード変換部

Claims (3)

  1. コンピュータに、
    記憶装置に格納された、第1コード割当表の1バイト領域に割り当てられた文字の一部を、2バイト領域に割り当て、かつ、前記2バイト領域に割り当てられた前記文字の少なくとも一部に対して、2バイト以上のコードを割り当てることで、入力された文字データをコード化する変換規則であって、前記コード化された符号データの先頭4ビットの値は当該符号データのコード長に応じて異なる変換規則を定義した第2コード割当表を参照し、
    前記第2コード割当表を基にして生成された複数のオートマトンを利用し、コード化されたデータを前記複数のオートマトンのうち、当該データの先頭4ビットの値に応じて選択されるオートマトンにより文字データに復号化する
    処理を実行させることを特徴とする復号化プログラム。
  2. コンピュータが実行する復号化方法であって、
    記憶装置に格納された、第1コード割当表の1バイト領域に割り当てられた文字の一部を、2バイト領域に割り当て、かつ、前記2バイト領域に割り当てられた前記文字の少なくとも一部に対して、2バイト以上のコードを割り当てることで、入力された文字データをコード化する変換規則であって、前記コード化された符号データの先頭4ビットの値は当該符号データのコード長に応じて異なる変換規則を定義した第2コード割当表を参照し、
    前記第2コード割当表を基にして生成された複数のオートマトンを利用し、コード化されたデータを前記複数のオートマトンのうち、当該データの先頭4ビットの値に応じて選択されるオートマトンにより文字データに復号化する
    処理を実行することを特徴とする復号化方法。
  3. 第1コード割当表の1バイト領域に割り当てられた文字の一部を、2バイト領域に割り当て、かつ、前記2バイト領域に割り当てられた前記文字の少なくとも一部に対して、2バイト以上のコードを割り当てることで、入力された文字データをコード化する変換規則であって、前記コード化された符号データの先頭4ビットの値は当該符号データのコード長に応じて異なる変換規則を定義した第2コード割当表を基に生成された複数のオートマトンを記憶する記憶部と、
    前記複数のオートマトンを利用し、コード化されたデータを前記複数のオートマトンのうち、当該データの先頭4ビットの値に応じて選択されるオートマトンにより文字データに復号化するコード変換部と
    を有することを特徴とする復号化装置。
JP2016098753A 2015-07-13 2016-05-17 復号化プログラム、復号化方法および復号化装置 Active JP6665679B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2016098753A JP6665679B2 (ja) 2016-05-17 2016-05-17 復号化プログラム、復号化方法および復号化装置
CN201610545992.5A CN106354699B (zh) 2015-07-13 2016-07-12 编码方法、编码装置、解码方法以及解码装置
EP16179064.7A EP3119003A3 (en) 2015-07-13 2016-07-12 Encoding computer program, encoding method, encoding apparatus, decoding computer program, decoding method, and decoding apparatus
US15/207,876 US9779071B2 (en) 2015-07-13 2016-07-12 Non-transitory computer-readable recording medium, encoding method, encoding apparatus, decoding method, and decoding apparatus
US15/722,203 US20180052810A1 (en) 2015-07-13 2017-10-02 Non-transitory computer-readable recording medium, encoding method, encoding apparatus, decoding method, and decoding apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016098753A JP6665679B2 (ja) 2016-05-17 2016-05-17 復号化プログラム、復号化方法および復号化装置

Publications (2)

Publication Number Publication Date
JP2017208644A JP2017208644A (ja) 2017-11-24
JP6665679B2 true JP6665679B2 (ja) 2020-03-13

Family

ID=60417172

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016098753A Active JP6665679B2 (ja) 2015-07-13 2016-05-17 復号化プログラム、復号化方法および復号化装置

Country Status (1)

Country Link
JP (1) JP6665679B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7159557B2 (ja) * 2017-12-28 2022-10-25 富士通株式会社 動的辞書の生成プログラム、動的辞書の生成方法および復号化装置
JP2020061641A (ja) * 2018-10-09 2020-04-16 富士通株式会社 符号化プログラム、符号化方法、符号化装置、復号化プログラム、復号化方法および復号化装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4475174A (en) * 1981-09-08 1984-10-02 Nippon Telegraph & Telephone Public Corporation Decoding apparatus for codes represented by code tree
JPH09298470A (ja) * 1996-05-08 1997-11-18 Sony Corp 符号復号化装置
JP2005135086A (ja) * 2003-10-29 2005-05-26 Casio Comput Co Ltd 辞書データ圧縮装置、電子辞書装置、圧縮辞書データ製造方法及びプログラム
JP6476647B2 (ja) * 2014-08-20 2019-03-06 富士通株式会社 圧縮プログラム、圧縮装置、圧縮方法、伸長プログラム、伸長装置および伸長方法

Also Published As

Publication number Publication date
JP2017208644A (ja) 2017-11-24

Similar Documents

Publication Publication Date Title
JP5831298B2 (ja) プログラム、情報処理装置およびインデックス生成方法
US10360183B2 (en) Encoding device, encoding method, decoding device, decoding method, and computer-readable recording medium
CN106354699B (zh) 编码方法、编码装置、解码方法以及解码装置
JP6648620B2 (ja) 符号化プログラム、符号化装置および符号化方法
KR100490240B1 (ko) 데이타압축장치,데이타복원장치,데이타압축방법,데이타복원방법및프로그램기록매체
JP6641857B2 (ja) 符号化プログラム、符号化方法、符号化装置、復号化プログラム、復号化方法および復号化装置
JP6686639B2 (ja) 符号化プログラム、符号化装置、符号化方法、復号化プログラム、復号化装置および復号化方法
JP6665679B2 (ja) 復号化プログラム、復号化方法および復号化装置
JP6540308B2 (ja) 符号化プログラム、符号化方法、符号化装置、復号化プログラム、復号化方法および復号化装置
JP6834327B2 (ja) 符号化プログラム、符号化装置および符号化方法
CN106354746B (zh) 搜索方法和搜索设备
US11055328B2 (en) Non-transitory computer readable medium, encode device, and encode method
JP6540306B2 (ja) 符号化プログラム、符号化方法、符号化装置、復号化プログラム、復号化方法および復号化装置
JP6805720B2 (ja) データ検索プログラム、データ検索装置およびデータ検索方法
JP7210130B2 (ja) 符号化プログラム、符号化方法および符号化装置
JP7159557B2 (ja) 動的辞書の生成プログラム、動的辞書の生成方法および復号化装置
WO2014030189A1 (ja) 圧縮プログラム、圧縮方法、圧縮装置、伸張プログラム、伸張方法、伸張装置およびデータ転送システム
JP6737117B2 (ja) 符号化データ検索プログラム、符号化データ検索方法および符号化データ検索装置
JP6135788B2 (ja) 圧縮プログラム、圧縮方法、圧縮装置、伸張プログラム、伸張方法、伸張装置およびデータ転送システム
JP2020061641A (ja) 符号化プログラム、符号化方法、符号化装置、復号化プログラム、復号化方法および復号化装置
JPWO2014030180A1 (ja) 符号化情報生成プログラム、符号化情報生成方法、符号化情報生成装置、復号化情報生成プログラム、復号化情報生成方法及び復号化情報生成装置
JP6065914B2 (ja) 制御プログラム、制御方法および制御装置
JP2017195628A (ja) 符号化プログラム、符号化方法、符号化装置、復号化プログラム、復号化方法及び復号化装置
JP6028393B2 (ja) 照合プログラム、照合方法および照合装置
JP2005275880A (ja) 字句をデータに変換する装置、方法及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190212

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20191218

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200203

R150 Certificate of patent or registration of utility model

Ref document number: 6665679

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150