JP6880956B2 - 解析プログラム、解析方法および解析装置 - Google Patents

解析プログラム、解析方法および解析装置 Download PDF

Info

Publication number
JP6880956B2
JP6880956B2 JP2017077561A JP2017077561A JP6880956B2 JP 6880956 B2 JP6880956 B2 JP 6880956B2 JP 2017077561 A JP2017077561 A JP 2017077561A JP 2017077561 A JP2017077561 A JP 2017077561A JP 6880956 B2 JP6880956 B2 JP 6880956B2
Authority
JP
Japan
Prior art keywords
bitmap
index
data
character string
character
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
JP2017077561A
Other languages
English (en)
Other versions
JP2018180808A (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 JP2017077561A priority Critical patent/JP6880956B2/ja
Priority to US15/940,220 priority patent/US10936816B2/en
Priority to CN201810310516.4A priority patent/CN108694229B/zh
Priority to EP18165856.8A priority patent/EP3388953A3/en
Priority to KR1020180039951A priority patent/KR20180114513A/ko
Publication of JP2018180808A publication Critical patent/JP2018180808A/ja
Priority to KR1020200187563A priority patent/KR102355731B1/ko
Application granted granted Critical
Publication of JP6880956B2 publication Critical patent/JP6880956B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/31Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/279Recognition of textual entities
    • G06F40/289Phrasal analysis, e.g. finite state techniques or chunking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/279Recognition of textual entities
    • G06F40/284Lexical analysis, e.g. tokenisation or collocates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/30Semantic analysis

Description

本発明は、解析プログラム等に関する。
対象文書を形態素解析し、単語単位に分割する従来技術(従来技術1)が知られている。従来技術1では、たとえば、形態素解析に用いられる辞書に日本語のフレーズ(熟語)を登録した場合、フレーズが分割候補として最適であると判定したときに、該当するフレーズが出力される。
しかし、従来技術1では、英語のフレーズを登録すると、無条件にスペースで分割され、フレーズは出力されない。たとえば、従来技術1では、形態素解析に用いられる辞書に「White House」を登録しても、最適な分割候補が「White」と「House」と判定され、意味を持つまとまり「White House」が、最適な分割候補として判断されない。
また、対象文書を、単語単位に符号化する従来技術(従来技術2)が知られている。従来技術2では、対象文書群を形態素解析し、対象文書群を単語単位に符号化するとともに、単語の存在有無に関する転置インデックスを生成する。たとえば、従来技術2では、複数回出現する各単語を符号化し、転置インデックスを生成している。
一方、別の従来技術(従来技術3)として、特許文献1に開示の技術が存在する。特許文献1では、対象文献中からフレーズを収集し、共出現統計値を取得することが記載されている。
特開2006−48685号公報
しかしながら、上述した従来技術では、英単語及び独立した意味を持つフレーズを形態素解析に用いられる辞書に登録しても、意味単位に英単語やフレーズを分割できないという問題がある。
たとえば、従来技術1では、複数回出現する英単語やフレーズを辞書に登録しても、分割出力される英単語やフレーズは意味単位の区切りとは必ずしもなっていない。このため、従来技術2にて生成された転置インデックスに対応付けられている英単語やフレーズは、検索の際に十分に役立つとは限らない。
また、特許文献1では、対象案件からフレーズを直接収集し、その共起関係を見る場合、共起関係に基づき良好フレーズのみを抽出する作業が必要となる。更に、特許文献1では、「off」や「out」等のストップワードを、「take off」や「take out」など、他の単語と一体化して取り扱う処理も必要である。
1つの側面では、本発明は、単語及び独立した意味を持つフレーズの識別と、単語およびフレーズに対する、符号割当てや、転置インデックスの生成を行うことができる解析プログラム、解析方法および解析装置を提供することを目的とする。
第1の案では、コンピュータに下記の処理を実行させる。コンピュータは、辞書に登録された単語またはフレーズを基にして、複数の登録項目それぞれを絞り込むためのインデックスを生成する。コンピュータは、インデックスに、複数の登録項目それぞれについて、各項目の先頭と末尾とを判別可能なフラグを設定する。
単語および独立した意味を持つフレーズの識別と、単語およびフレーズに対する符号割当てや、転置インデックスの生成を行うことができる。
図1は、本実施例に係る解析装置の処理の一例を説明するための図である。 図2は、本実施例に係る解析装置の構成を示す機能ブロック図である。 図3は、文字列データのデータ構造の一例を示す図である。 図4は、辞書データのデータ構造の一例を示す図である。 図5は、配列データのデータ構造の一例を示す図である。 図6は、インデックスのデータ構造の一例を示す図である。 図7は、インデックスのハッシュ化を説明するための図である。 図8は、インデックスデータのデータ構造の一例を示す図である。 図9は、ハッシュ化したインデックスを復元する処理の一例を説明するための図である。 図10は、単語またはフレーズを抽出する処理の一例を説明するための図(1)である。 図11は、単語またはフレーズを抽出する処理の一例を説明するための図(2)である。 図12は、解析装置の設定部の処理手順を示すフローチャートである。 図13は、解析装置の抽出部の処理手順を示すフローチャートである。 図14は、解析装置と同様の機能を実現するコンピュータのハードウェア構成の一例を示す図である。
以下に、本願の開示する解析プログラム、解析方法および解析装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
図1は、本実施例に係る解析装置の処理の一例を説明するための図である。図1に示すように、解析装置は、文字列データ140aから、分割候補となる単語及び意味あるフレーズを抽出する場合に、下記の処理を実行する。たとえば、文字列データ140aは、英語で記載された文書のデータであるものとする。
解析装置は、文字列データ140aと、辞書データ140bとを比較する。辞書データ140bは、分割候補となる単語およびフレーズを定義したデータである。本実施例では一例として、フレーズを構成する複数の単語の間に存在するスペースを「△」で示す。
解析装置は、文字列データ140aを先頭から走査し、辞書データ140bに定義された単語またはフレーズにヒットした文字列を抽出し、配列データ140cに格納する。
配列データ140cは、文字列データ140aに含まれる文字列のうち、辞書データ140bに定義された単語またはフレーズを有する。各単語、フレーズの区切りには、<US(unit separator)>を登録する。たとえば、解析装置は、文字列データ140aと、辞書データ140bとを比較により、辞書データ140bに登録された「white」、「White△House」、「white△hunter」が順にヒットした場合には、図1に示す配列データ140cを生成する。
解析装置は、配列データ140cを生成すると、配列データ140cに対応するインデックス140dを生成する。インデックス140dは、文字と、オフセットとを対応づけた情報である。オフセットは、配列データ140c上に存在する該当する文字の位置を示すものである。たとえば、文字「w」が、配列データ140cの先頭からn文字目に存在する場合には、インデックス140dの文字「w」に対応する行(ビットマップ)において、オフセットnの位置にフラグ「1」が立つ。
また、本実施例におけるインデックス140dは、単語またはフレーズの「先頭」、「末尾」、<US>の位置も、オフセットと対応づける。たとえば、単語「white」の先頭は「w」、末尾は「e」となる。単語「white」の先頭「w」が、配列データ140cの先頭からn文字目に存在する場合には、インデックス140dの先頭に対応する行において、オフセットnの位置にフラグ「1」が立つ。単語「white」の末尾「e」が、配列データ140cの先頭からn文字目に存在する場合には、インデックス140dの「末尾」に対応する行において、オフセットnの位置にフラグ「1」が立つ。
フレーズ「White△House」の先頭は「W」、末尾は「e」となる。フレーズ「White△House」の先頭「W」が、配列データ140cの先頭からn文字目に存在する場合には、インデックス140dの「先頭」に対応する行において、オフセットnの位置にフラグ「1」が立つ。フレーズ「White△House」の末尾「e」が、配列データ140cの先頭からn文字目に存在する場合には、インデックス140dの「末尾」に対応する行において、オフセットnの位置にフラグ「1」が立つ。
また、「<US>」が、配列データ140cの先頭からn文字目に存在する場合には、インデックス140dの「<US>」に対応する行において、オフセットnの位置にフラグ「1」が立つ。
解析装置は、インデックス140dを参照することで、文字列データ140aに含まれる単語およびフレーズを構成する文字の位置、文字の先頭、末尾、区切り(<US>)を把握することができる。また、インデックス140dから判断可能な先頭から末尾までに含まれる文字列は、意味ある一つの文字列(フレーズ)であると言える。
解析装置は、インデックス140dを基にして、先頭から末尾までの文字列を区切りの単位として、最長一致文字列を判定することで、文字列データ140aから、分割可能な単語またはフレーズを抽出する。図1に示す抽出結果140eには、単語「White」、意味あるフレーズ「White△House」、「white△hunter」が抽出されている。
上記のように、解析装置は、文字列データ140aおよび辞書データ140bを基にして、辞書データ140bの登録項目に関するインデックス140dを生成し、各登録項目について、先頭と末尾とを判別可能なフラグを設定する。そして、解析装置は、インデックス140dを利用することで、文字列データ140aから複数の分割可能な単語またはフレーズを抽出する。たとえば、インデックス140dは、辞書データ140bに定義された意味ある文字列のかたまりがそれぞれ、先頭・末尾のフラグにより、識別可能となっており、先頭から末尾までの文字列を区切りの単位として、最長一致文字列を判定することで、分割可能な単語またはフレーズを抽出している。このため、単語及び独立した意味を持つフレーズを認識でき、単語およびフレーズに対する値を利用した解析を行うことができる。
たとえば、単語およびフレーズに対する値を利用した解析の一例としては、解析装置が抽出した単語、およびフレーズを処理単位として、文字列データのベクトル化を行うこと処理が上げられる。
また、本実施例に係る解析装置は、インデックス140dを用いて、文字列データ140aから、単語およびフレーズを抽出しており、特許文献1のような共出現統計値を算出してない。このため、計算コストを削減することも可能である。なお、背景事情として、意味単位としてのフレーズ辞書を準備しようとすると、辞書のサイズが大きくなりすぎるため、従来では意味単位としてのフレーズに対応した符号化はなされていない。
図2は、本実施例に係る解析装置の構成を示す機能ブロック図である。図2に示すように、解析装置100は、通信部110と、入力部120と、表示部130と、記憶部140と、制御部150とを有する。
通信部110は、ネットワークを介して、他の外部装置と通信を行う処理部である。通信部110は、通信装置に対応する。たとえば、解析装置100は、外部装置から、文字列データ140a、辞書データ140b等を受信して、記憶部140に格納しても良い。
入力部120は、各種の情報を解析装置100に入力するための入力装置である。たとえば、入力部120は、キーボードやマウス、タッチパネル等に対応する。
表示部130は、制御部150から出力される各種の情報を表示するための表示装置である。たとえば、表示部130は、液晶ディスプレイやタッチパネルに対応する。
記憶部140は、文字列データ140a、辞書データ140b、配列データ140c、インデックスデータ145、抽出結果140eを有する。記憶部140は、(Flash Memory)などの半導体メモリ素子や、HDD(Hard Disk Drive)などの記憶装置に対応する。
文字列データ140aは、処理対象となる文書のデータである。図3は、文字列データのデータ構造の一例を示す図である。図3に示すように、文字列データ140aは、たとえば、英語で記載されたものとなる。図3に示す例では、単語間のスペース「△」の図示を省略する。
辞書データ140bは、分割候補となる単語またはフレーズを定義する情報である。辞書データ140bに含まれるフレーズは、複数の単語から構成され、一つの意味あるフレーズとなる。図4は、辞書データのデータ構造の一例を示す図である。図4に示すように、この辞書データ140bは、単語・フレーズと、品詞と、活用形とを対応づける。このうち、単語・フレーズは、分割候補となる単語またはフレーズを示すものである。品詞は、「単語・フレーズ」の欄に格納された単語の品詞を示すものである。活用形は、「単語・フレーズ」の欄に格納された単語の各活用形を示すものである。
配列データ140cは、文字列データ140aに含まれる文字列のうち、辞書データ140bに定義された単語またはフレーズを有する。図5は、配列データのデータ構造の一例を示す図である。図5に示す例では、配列データ140cは、各単語、各フレーズが<US>により分けられている。なお、配列データ140cの上側に示す数字は、配列データ140cの先頭「0」からのオフセットを示す。
インデックスデータ145は、図1で説明したインデックス140dに対応するデータである。後述するように、インデックス140dは、ハッシュ化され、インデックスデータ145として、記憶部140に格納される。
抽出結果140eは、後述する制御部150の処理により、文字列データ140aから抽出される、分割候補となる単語及び意味あるフレーズの抽出結果を示すものである。
制御部150は、設定部150aおよび抽出部150bを有する。制御部150は、CPU(Central Processing Unit)やMPU(Micro Processing Unit)などによって実現できる。また、制御部150は、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などのハードワイヤードロジックによっても実現できる。
設定部150aは、文字列データ140aおよび辞書データ140bを基にして、配列データ140cを生成し、配列データ140cを基にして、インデックスデータ145を生成する処理部である。
設定部150aが、文字列データ140aと辞書データ140bとを基にして、配列データ140cを生成する処理の一例について説明する。設定部150aは、文字列データ140aと、辞書データ140bとを比較する。設定部150aは、文字列データ140aを先頭から走査し、辞書データ140bに登録された単語・フレーズにヒットした文字列を抽出し、配列データ140cに格納する。設定部150aは、ヒットした文字列を配列データ140cに格納し、次にヒットした文字列を配列データ140cに格納する場合には、先の文字列の次に<US>を設定し、設定した<US>の次に、次にヒットした文字列を格納する。設定部150aは、上記処理を繰り返し実行することで、配列データ140cを生成する。
設定部150aは、配列データ140cを生成した後に、配置インデックス140dを生成する。設定部150aは、配列データ140cを先頭から走査し、文字とオフセット、文字列の先頭とオフセット、文字列の末尾とオフセット、<US>とオフセットとを対応づけることで、インデックス140dを生成する。
図6は、インデックスのデータ構造の一例を示す図である。図6に示すように、インデックス140dは、各文字、△(スペース)、<US>、先頭、末尾に対応するビットマップ21〜32を有する。たとえば、文字「w」、「h」、「i」、「t」、「e」、「△(スペース)」、「o」、「u」、「s」に対応するビットマップを、ビットマップ21〜29とする。図6では、他の文字に対応するビットマップの図示は省略する。
<US>に対応するビットマップをビットマップ30とする。文字の「先頭」に対応するビットマップをビットマップ31とする。文字の「末尾」に対応するビットマップをビットマップ32とする。
たとえば、図5に示した配列データ140cにおいて、文字「w」が、配列データ140cのオフセット「6、12、24」に存在している。このため、設定部150aは、図6に示すインデックス140dのビットマップ21のオフセット「6、12、24」にフラグ「1」を立てる。配列データ140cは、他の文字、<US>についても同様に、フラグを立てる。
図5に示した配列データ140cにおいて、各単語、フレーズの文字の先頭が、配列データ140cのオフセット「6、12、24」に存在している。このため、設定部150aは、図6に示すインデックス140dのビットマップ31のオフセット「6、12、24」にフラグ「1」を立てる。
図5に示した配列データ140cにおいて、各単語、フレーズの文字の末尾が、配列データ140cのオフセット「10、22」に存在している。このため、設定部150aは、図6に示すインデックス140dのビットマップ32のオフセット「10、22」にフラグ「1」を立てる。
設定部150aは、インデックス140dを生成すると、インデックス140dのデータ量を削減するために、インデックス140dをハッシュ化することで、インデックスデータ145を生成する。
図7は、インデックスのハッシュ化を説明するための図である。ここでは一例として、インデックスにビットマップ10が含まれるものとし、かかるビットマップ10をハッシュ化する場合について説明する。
たとえば、設定部150aは、ビットマップ10から、底29のビットマップ10aと、底31のビットマップ10bを生成する。ビットマップ10aは、ビットマップ10に対して、オフセット29毎に区切りを設定し、設定した区切りを先頭とするフラグ「1」のオフセットを、ビットマップ10aのオフセット0〜28のフラグで表現する。
設定部150aは、ビットマップ10のオフセット0〜28までの情報を、ビットマップ10aにコピーする。設定部150aは、ビットマップ10aの29以降のオフセットの情報を下記の様に処理する。
ビットマップ10のオフセット「35」にフラグ「1」が立っている。オフセット「35」は、オフセット「28+7」であるため、設定部150aは、ビットマップ10aのオフセット「6」に「(1)」を立てる。なお、オフセットの1番目を0としている。ビットマップ10のオフセット「42」にフラグ「1」が立っている。オフセット「42」は、オフセット「28+14」であるため、設定部150aは、ビットマップ10aのオフセット「11」にフラグ「(1)」を立てる。
ビットマップ10bは、ビットマップ10に対して、オフセット31毎に区切りを設定し、設定した区切りを先頭とするフラグ「1」のオフセットを、ビットマップ10bのオフセット0〜30のフラグで表現する。
ビットマップ10のオフセット「35」にフラグ「1」が立っている。オフセット「35」は、オフセット「30+5」であるため、設定部150aは、ビットマップ10bのオフセット「4」に「(1)」を立てる。なお、オフセットの1番目を0としている。ビットマップ10のオフセット「42」にフラグ「1」が立っている。オフセット「42」は、オフセット「30+12」であるため、設定部150aは、ビットマップ10bのオフセット「12」にフラグ「(1)」を立てる。
設定部150aは、上記処理を実行することで、ビットマップ10からビットマップ10a、10bを生成する。このビットマップ10a,10bが、ビットマップ10をハッシュ化した結果となる。ここでは、ビットマップ10の長さが0〜43である場合について説明したが、ビットマップ10の長さが43以上になる場合でも、ビットマップ10に設定されたフラグ「1」を、ビットマップ10aおよびビットマップ10bで表現することができる。
設定部150aは、図6に示した各ビットマップ21〜32に対してハッシュ化を行うことで、インデックスデータ145を生成する。図8は、インデックスデータのデータ構造の一例を示す図である。たとえば、図6に示したインデックス140dのビットマップ21に対して、ハッシュ化を行うと、図8に示したビットマップ21aおよびビットマップ21bが生成される。図6に示したインデックス140dのビットマップ22に対して、ハッシュ化を行うと、図8に示したビットマップ22aおよびビットマップ22bが生成される。図6に示したインデックス140dのビットマップ30に対して、ハッシュ化を行うと、図8に示したビットマップ30aおよびビットマップ30bが生成される。図8において、その他のハッシュ化されたビットマップに関する図示を省略する。
図2の説明に戻る。抽出部150bは、インデックスデータ145を基にしてインデックス140dを生成し、インデックス140dを基にして、複数の分割可能な単語または、意味あるフレーズを抽出する処理部である。
まず、抽出部150bが、インデックスデータ145を基にして、インデックス140dを生成する処理の一例について説明する。図9は、ハッシュ化したインデックスを復元する処理の一例を説明するための図である。ここでは一例として、ビットマップ10aとビットマップ10bとを基にして、ビットマップ10を復元する処理について説明する。ビットマップ10、10a、10bは、図7で説明したものに対応する。
ステップS10の処理について説明する。抽出部150bは、底29のビットマップ10aを基にして、ビットマップ11aを生成する。ビットマップ11aのオフセット0〜28のフラグの情報は、ビットマップ10aのオフセット0〜28のフラグの情報と同様となる。ビットマップ11aのオフセット29以降のフラグの情報は、ビットマップ10aのオフセット0〜28のフラグの情報の繰り返しとなる。
ステップS11の処理について説明する。抽出部150bは、底31のビットマップ10bを基にして、ビットマップ11bを生成する。ビットマップ11bのオフセット0〜30のフラグの情報は、ビットマップ10bのオフセット0〜30のフラグの情報と同様となる。ビットマップ11bのオフセット31以降のフラグの情報は、ビットマップ10bのオフセット0〜30のフラグの情報の繰り返しとなる。
ステップS12の処理について説明する。抽出部150bは、ビットマップ11aとビットマップ11bとのAND演算を実行することで、ビットマップ10を生成する。図9に示す例では、オフセット「0、5、11、18、25、35、42」において、ビットマップ11aおよびビットマップ11bのフラグが「1」となっている。このため、ビットマップ10のオフセット「0、5、11、18、25、35、42」のフラグが「1」となる。このビットマップ10が、復元されたビットマップとなる。抽出部150bは、他のビットマップについても同様の処理を繰り返し実行することで、各ビットマップを復元し、インデックス140dを生成する。
抽出部150bは、インデックス140dを生成した後に、インデックス140dを基にして、分割可能な単語またはフレーズを抽出する。図10および図11は、単語またはフレーズを抽出する処理の一例を説明するための図である。図10および図11に示す例では、文字列データ140aに「White△House・・・」が含まれており、係る文字列データ140aの1番目の文字から順に、該当する文字のビットマップを、インデックス140dから読み出して、下記の処理を実行する。
ステップS20について説明する。抽出部150bは、インデックス140dから、先頭のビットマップ31、末尾のビットマップ32、文字「w」のビットマップ21を読み出す。抽出部150bは、先頭のビットマップ31と文字「w」のビットマップ21とのAND演算を実行することで、文字の先頭位置を特定する。先頭のビットマップ31と文字「w」のビットマップ21とのAND演算の結果をビットマップ31Aとする。ビットマップ31Aでは、オフセット「6、12、24」にフラグ「1」が立っており、オフセット「6、12、24」が、単語またはフレーズの先頭であることを示す。
抽出部150bは、末尾のビットマップ32と文字「w」のビットマップ21とのAND演算を実行することで、文字の末尾位置を特定する。末尾のビットマップ32と文字「w」のビットマップ21とのAND演算の結果をビットマップ32Aとする。ビットマップ32Aには、フラグ「1」が立っていないため、「w」に末尾候補が存在しないことを示す。
ステップS21について説明する。抽出部150bは、文字「w」のビットマップ21を左に1つシフトすることで、ビットマップ21Aを生成する。抽出部150bは、インデックス140dから、文字「h」のビットマップ22を読み出す。抽出部150bは、ビットマップ21Aとビットマップ22とのAND演算を実行することで、文字列「wh」に対応するビットマップ50を生成する。
抽出部150bは、末尾のビットマップ32と文字列「wh」のビットマップ50とのAND演算を実行することで、文字の末尾位置を特定する。末尾のビットマップ32と文字列「wh」のビットマップ50とのAND演算の結果をビットマップ32Bとする。ビットマップ32Bには、フラグ「1」が立っていないため、文字列「wh」に末尾候補が存在しないことを示す。
ステップS22について説明する。抽出部150bは、文字列「wh」のビットマップ50を左に一つシフトすることで、ビットマップ50Aを生成する。抽出部150bは、インデックス140dから、文字「i」のビットマップ23を読み出す。抽出部150bは、ビットマップ50Aとビットマップ23とのAND演算を実行することで、文字列「whi」に対応するビットマップ51を生成する。
抽出部150bは、末尾のビットマップ32と文字列「whi」のビットマップ51とのAND演算を実行することで、文字の末尾位置を特定する。末尾のビットマップ32と文字列「whi」のビットマップ51とのAND演算の結果をビットマップ32Cとする。ビットマップ32Cには、フラグ「1」が立っていないため、文字列「whi」に末尾候補が存在しないことを示す。
ステップS23について説明する。抽出部150bは、文字列「whi」のビットマップ51を左に一つシフトすることで、ビットマップ51Aを生成する。抽出部150bは、インデックス140dから、文字「t」のビットマップ24を読み出す。抽出部150bは、ビットマップ51Aとビットマップ24とのAND演算を実行することで、文字列「whit」に対応するビットマップ52を生成する。
抽出部150bは、末尾のビットマップ32と文字列「whit」のビットマップ52とのAND演算を実行することで、文字の末尾位置を特定する。末尾のビットマップ32と文字列「whit」のビットマップ52とのAND演算の結果をビットマップ32Dとする。ビットマップ32Dには、フラグ「1」が立っていないため、文字列「whit」に末尾候補が存在しないことを示す。
ステップS24について説明する。抽出部150bは、文字列「whit」のビットマップ52を左に一つシフトすることで、ビットマップ52Aを生成する。抽出部150bは、インデックス140dから、文字「e」のビットマップ25を読み出す。抽出部150bは、ビットマップ52Aとビットマップ25とのAND演算を実行することで、文字列「white」に対応するビットマップ53を生成する。
抽出部150bは、末尾のビットマップ32と文字列「white」のビットマップ53とのAND演算を実行することで、文字の末尾位置を特定する。末尾のビットマップ32と文字列「white」のビットマップ53とのAND演算の結果をビットマップ32Eとする。ビットマップ32Eには、フラグ「1」が立っているため、文字列「white」に末尾候補「e」が存在することを示す。抽出部120bは、ステップ20で判定した先頭の文字「w」から、ステップ24で判定した末尾の文字「e」までの文字列「white」を分割候補の文字列として抽出する。
ステップS25について説明する。抽出部150bは、文字列「white」のビットマップ53を左に一つシフトすることで、ビットマップ53Aを生成する。抽出部150bは、インデックス140dから、文字「△(スペース)」のビットマップ26を読み出す。抽出部150bは、ビットマップ53Aとビットマップ26とのAND演算を実行することで、文字列「white△」に対応するビットマップ54を生成する。
抽出部150bは、末尾のビットマップ32と文字列「white△」のビットマップ54とのAND演算を実行することで、文字の末尾位置を特定する。末尾のビットマップ32と文字列「white△」のビットマップ54とのAND演算の結果をビットマップ32Fとする。ビットマップ32Fには、フラグ「1」が立っていないため、文字列「white△」に末尾候補が存在しないことを示す。
ステップS26について説明する。抽出部150bは、文字列「white△」のビットマップ54を左に一つシフトすることで、ビットマップ54Aを生成する。抽出部150bは、インデックス140dから、文字「h」のビットマップ22を読み出す。抽出部150bは、ビットマップ54Aとビットマップ22とのAND演算を実行することで、文字列「white△h」に対応するビットマップ55を生成する。
抽出部150bは、末尾のビットマップ32と文字列「white△h」のビットマップ55とのAND演算を実行することで、文字の末尾位置を特定する。末尾のビットマップ32と文字列「white△h」のビットマップ55とのAND演算の結果をビットマップ32Gとする。ビットマップ32Gには、フラグ「1」が立っていないため、文字列「white△h」に末尾候補が存在しないことを示す。
ステップS27について説明する。抽出部150bは、文字列「white△h」のビットマップ55を左に一つシフトすることで、ビットマップ55Aを生成する。抽出部150bは、インデックス140dから、文字「o」のビットマップ27を読み出す。抽出部150bは、ビットマップ55Aとビットマップ27とのAND演算を実行することで、文字列「white△ho」に対応するビットマップ56を生成する。
抽出部150bは、末尾のビットマップ32と文字列「white△ho」のビットマップ56とのAND演算を実行することで、文字の末尾位置を特定する。末尾のビットマップ32と文字列「white△ho」のビットマップ56とのAND演算の結果をビットマップ32Hとする。ビットマップ32Hには、フラグ「1」が立っていないため、文字列「white△ho」に末尾候補が存在しないことを示す。
ステップS28について説明する。抽出部150bは、文字列「white△ho」のビットマップ56を左に一つシフトすることで、ビットマップ56Aを生成する。抽出部150bは、インデックス140dから、文字「u」のビットマップ28を読み出す。抽出部150bは、ビットマップ56Aとビットマップ28とのAND演算を実行することで、文字列「white△hou」に対応するビットマップ57を生成する。
抽出部150bは、末尾のビットマップ32と文字列「white△hou」のビットマップ57とのAND演算を実行することで、文字の末尾位置を特定する。末尾のビットマップ32と文字列「white△hou」のビットマップ57とのAND演算の結果をビットマップ32Iとする。ビットマップ32Iには、フラグ「1」が立っていないため、文字列「white△hou」に末尾候補が存在しないことを示す。
ステップS29について説明する。抽出部150bは、文字列「white△hou」のビットマップ57を左に一つシフトすることで、ビットマップ57Aを生成する。抽出部150bは、インデックス140dから、文字「s」のビットマップ29を読み出す。抽出部150bは、ビットマップ57Aとビットマップ29とのAND演算を実行することで、文字列「white△hous」に対応するビットマップ58を生成する。
抽出部150bは、末尾のビットマップ32と文字列「white△hous」のビットマップ58とのAND演算を実行することで、文字の末尾位置を特定する。末尾のビットマップ32と文字列「white△hous」のビットマップ58とのAND演算の結果をビットマップ32Jとする。ビットマップ32Jには、フラグ「1」が立っていないため、文字列「white△hous」に末尾候補が存在しないことを示す。
ステップS30について説明する。抽出部150bは、文字列「white△hous」のビットマップ58を左に一つシフトすることで、ビットマップ58Aを生成する。抽出部150bは、インデックス140dから、文字「e」のビットマップ25を読み出す。抽出部150bは、ビットマップ58Aとビットマップ25とのAND演算を実行することで、文字列「white△house」に対応するビットマップ59を生成する。
抽出部150bは、末尾のビットマップ32と文字列「white△house」のビットマップ53とのAND演算を実行することで、文字の末尾位置を特定する。末尾のビットマップ32と文字列「white△house」のビットマップ59とのAND演算の結果をビットマップ32Kとする。ビットマップ32Kには、フラグ「1」が立っているため、文字列「white△house」に末尾候補「e」が存在することを示す。抽出部120bは、ステップ20で判定した先頭の文字「w」から、ステップ30で判定した末尾の文字「e」までの文字列「white△house」を分割候補の文字列として抽出する。
抽出部150bは、ステップS20〜ステップS30までの処理を実行することで、単語「white」と、意味あるフレーズ「White△House」を抽出する。抽出部150bは、抽出した単語およびフレーズの情報を、抽出結果140eとして記憶部140に格納する。
次に、本実施例に係る解析装置100の処理手順の一例について説明する。図12は、解析装置の設定部の処理手順を示すフローチャートである。図12に示すように、解析装置100の設定部150aは、文字列データ140aと辞書データ140bの単語・フレーズとを比較する(ステップS101)。
設定部150aは、ヒットした単語・フレーズを配列データ140cに登録する(ステップS102)。設定部150aは、配列データ140cを基にして、インデックス140dを生成する(ステップS103)。設定部150aは、インデックス140dをハッシュ化し、インデックスデータ145を生成する(ステップS104)。
図13は、解析装置の抽出部の処理手順を示すフローチャートである。図13に示すように、解析装置の抽出部150bは、ハッシュ化されたインデックスデータ145からインデックス140dを復元する(ステップS201)。
抽出部150bは、文字列データ140aの先頭から1番目の文字のビットマップを第1ビットマップに設定し、先頭から2番目の文字のビットマップを第2ビットマップに設定する(ステップS202)。
抽出部150bは、第1ビットマップと先頭ビットマップとを「AND演算」し、演算結果に「1」が存在する場合に、第1ビットマップに対応する文字を先頭文字として特定する(ステップS203)。
抽出部150bは、第1ビットマップと末尾ビットマップとを「AND演算」し、演算結果に「1」が存在する場合に、第1ビットマップに対応する文字を、末尾文字として特定し、分割候補を抽出する(ステップS204)。
抽出部150bは、文字列データ140の終端に到達した場合には(ステップS205,Yes)、抽出結果140eを記憶部140に保存する(ステップS206)。一方、抽出部150bは、文字列データ140の終端に到達していない場合には(ステップS205,No)、ステップS207に移行する。
抽出部150bは、第1ビットマップを左に一つシフトする(ステップS207)。抽出部150bは、第1ビットマップと第2ビットマップとを「AND演算」したビットマップを新たな第1ビットマップに設定する(ステップS208)。
抽出部150bは、第2ビットマップの文字の次の文字に対応するビットマップを、新たな第2ビットマップに設定し(ステップS209)、ステップS203に移行する。
次に、本実施例に係る解析装置100の効果について説明する。解析装置100は、文字列データ140aおよび辞書データ140bを基にして、辞書データ140bの登録項目に関するインデックス140dを生成し、各登録項目について、先頭と末尾とを判別可能なフラグを設定する。そして、解析装置100は、インデックス140dを利用することで、文字列データ140aから複数の分割可能な単語またはフレーズを抽出する。たとえば、インデックス140dは、辞書データ140bに定義された意味ある文字列のかたまりがそれぞれ、先頭・末尾のフラグにより、識別可能となっており、先頭から末尾までの文字列を区切りの単位として、最長一致文字列を判定することで、分割可能な単語またはフレーズを抽出している。このため、単語及び独立した意味を持つフレーズを認識でき、単語およびフレーズに対する値を利用した解析を行うことができる。
また、解析装置100が生成するインデックス140dには、複数の登録項目それぞれについて、文字列データ140から生成された配列データ140cのオフセットの情報を含んでおり、分割可能な単語、フレーズの位置を特定することができる。
次に、上記実施例に示した解析装置100と同様の機能を実現するコンピュータのハードウェア構成の一例について説明する。図14は、解析装置と同様の機能を実現するコンピュータのハードウェア構成の一例を示す図である。
図14に示すように、コンピュータ200は、各種演算処理を実行するCPU201と、ユーザからのデータの入力を受け付ける入力装置202と、ディスプレイ203とを有する。また、コンピュータ200は、記憶媒体からプログラム等を読み取る読み取り装置204と、有線または無線ネットワークを介して他のコンピュータとの間でデータの授受を行うインターフェース装置205とを有する。また、コンピュータ200は、各種情報を一時記憶するRAM206と、ハードディスク装置207とを有する。そして、各装置201〜207は、バス208に接続される。
ハードディスク装置207は、設定プログラム207a、抽出プログラム207bを有する。CPU201は、設定プログラム207a、抽出プログラム207bを読み出してRAM206に展開する。
設定プログラム207aは、設定プロセス206aとして機能する。抽出プログラム207bは、抽出プロセス206bとして機能する。
設定プロセス206aの処理は、設定部150aの処理に対応する。抽出プロセス206bの処理は、抽出部150bの処理に対応する。
なお、各プログラム207a、207bについては、必ずしも最初からハードディスク装置207に記憶させておかなくても良い。たとえば、コンピュータ200に挿入されるフレキシブルディスク(FD)、CD−ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に各プログラムを記憶させておく。そして、コンピュータ300が各プログラム206a、207bを読み出して実行するようにしても良い。
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)コンピュータに、
単語またはフレーズが登録された、複数の登録項目を有する辞書を基にして、前記複数の登録項目それぞれに関するインデックスを生成し、
前記インデックスに、前記複数の登録項目それぞれについて、各項目の先頭と末尾とを判別可能なフラグを設定し、
前記インデックスを用いて、入力された文字データから複数の分割可能な単語またはフレーズを抽出する
処理を実行させる解析プログラム。
(付記2)前記辞書に登録されたフレーズそれぞれは、複数の単語で構成され、かつ、独立した意味を持つことを特徴とする付記1に記載の解析プログラム。
(付記3)前記フラグを設定する処理は、前記文字データについて、前記複数の登録項目それぞれの存否を示すインデックスを生成する付記1または2に記載の解析プログラム。
(付記4)前記インデックスは、前記複数の登録項目それぞれについて、前記文字データ中の位置に関する情報を含む付記1、2または3に記載の解析プログラム。
(付記5)コンピュータが実行する解析方法であって、
単語またはフレーズが登録された、複数の登録項目を有する辞書を基にして、前記複数の登録項目それぞれに関するインデックスを生成し、
前記インデックスに、前記複数の登録項目それぞれについて、各項目の先頭と末尾とを判別可能なフラグを設定し、
前記インデックスを用いて、入力された文字データから複数の分割可能な単語またはフレーズを抽出する
処理を実行する解析方法。
(付記6)前記辞書に登録されたフレーズそれぞれは、複数の単語で構成され、かつ、独立した意味を持つことを特徴とする付記5に記載の解析方法。
(付記7)前記フラグを設定する処理は、前記文字データについて、前記複数の登録項目それぞれの存否を示すインデックスを生成する付記5または6に記載の解析方法。
(付記8)前記インデックスは、前記複数の登録項目それぞれについて、前記文字データ中の位置に関する情報を含む付記5、6または7に記載の解析方法。
(付記9)単語またはフレーズが登録された、複数の登録項目を有する辞書を基にして、前記複数の登録項目それぞれに関するインデックスを生成し、前記インデックスに、前記複数の登録項目それぞれについて、各項目の先頭と末尾とを判別可能なフラグを設定する設定部と、
前記インデックスを用いて、入力された文字データから複数の分割可能な単語またはフレーズを抽出する抽出部と
を有することを特徴とする解析装置。
(付記10)前記辞書に登録されたフレーズそれぞれは、複数の単語で構成され、かつ、独立した意味を持つ付記9に記載の解析装置。
(付記11)前記設定部は、前記文字データについて、前記複数の登録項目それぞれの存否を示すインデックスを生成する付記9または10に記載の解析装置。
(付記12)前記インデックスは、前記複数の登録項目それぞれについて、前記文字データ中の位置に関する情報を含む付記9、10または11に記載の解析装置。
100 解析装置
110 通信部
120 入力部
130 表示部
140 記憶部
140a 文字列データ
140b 辞書データ
140c 配列データ
140d インデックス
140e 抽出結果
145 インデックスデータ
150 制御部
150a 設定部
150b 抽出部

Claims (6)

  1. コンピュータに、
    英文字の単語または前記単語と同一の単語を含むフレーズがそれぞれ区別されて登録された、複数の登録項目を有する辞書を基にして、前記複数の登録項目それぞれに関するインデックスを生成し、
    前記インデックスに、前記複数の登録項目それぞれについて、各項目の先頭と末尾とを判別可能なフラグを設定し、
    前記インデックスを用いて、入力された文字データから複数の分割可能な単語またはフレーズを抽出する
    処理を実行させる解析プログラム。
  2. 前記辞書に登録されたフレーズそれぞれは、複数の単語で構成され、かつ、独立した意味を持つ請求項1に記載の解析プログラム。
  3. 前記フラグを設定する処理は、前記文字データについて、前記複数の登録項目それぞれの存否を示すインデックスを生成する請求項1または2に記載の解析プログラム。
  4. 前記インデックスは、前記複数の登録項目それぞれについて、前記文字データ中の位置に関する情報を含む請求項1、2または3に記載の解析プログラム。
  5. コンピュータが実行する解析方法であって、
    英文字の単語または前記単語と同一の単語を含むフレーズがそれぞれ区別されて登録された、複数の登録項目を有する辞書を基にして、前記複数の登録項目それぞれに関するインデックスを生成し、
    前記インデックスに、前記複数の登録項目それぞれについて、各項目の先頭と末尾とを判別可能なフラグを設定し、
    前記インデックスを用いて、入力された文字データから複数の分割可能な単語またはフレーズを抽出する
    処理を実行する解析方法。
  6. 英文字の単語または前記単語と同一の単語を含むフレーズがそれぞれ区別されて登録された、複数の登録項目を有する辞書を基にして、前記複数の登録項目それぞれに関するインデックスを生成し、前記インデックスに、前記複数の登録項目それぞれについて、各項目の先頭と末尾とを判別可能なフラグを設定する設定部と、
    前記インデックスを用いて、入力された文字データから複数の分割可能な単語またはフレーズを抽出する抽出部と
    を有する解析装置。
JP2017077561A 2017-04-10 2017-04-10 解析プログラム、解析方法および解析装置 Active JP6880956B2 (ja)

Priority Applications (6)

Application Number Priority Date Filing Date Title
JP2017077561A JP6880956B2 (ja) 2017-04-10 2017-04-10 解析プログラム、解析方法および解析装置
US15/940,220 US10936816B2 (en) 2017-04-10 2018-03-29 Non-transitory computer-readable storage medium, analysis method, and analysis device
CN201810310516.4A CN108694229B (zh) 2017-04-10 2018-04-03 串数据分析装置以及串数据分析方法
EP18165856.8A EP3388953A3 (en) 2017-04-10 2018-04-05 Non-transitory computer-readable storage medium, string data analysis method, and string data analysis device
KR1020180039951A KR20180114513A (ko) 2017-04-10 2018-04-05 해석 프로그램, 해석 방법 및 해석 장치
KR1020200187563A KR102355731B1 (ko) 2017-04-10 2020-12-30 해석 프로그램, 해석 방법 및 해석 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017077561A JP6880956B2 (ja) 2017-04-10 2017-04-10 解析プログラム、解析方法および解析装置

Publications (2)

Publication Number Publication Date
JP2018180808A JP2018180808A (ja) 2018-11-15
JP6880956B2 true JP6880956B2 (ja) 2021-06-02

Family

ID=62044474

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017077561A Active JP6880956B2 (ja) 2017-04-10 2017-04-10 解析プログラム、解析方法および解析装置

Country Status (5)

Country Link
US (1) US10936816B2 (ja)
EP (1) EP3388953A3 (ja)
JP (1) JP6880956B2 (ja)
KR (2) KR20180114513A (ja)
CN (1) CN108694229B (ja)

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0724055B2 (ja) * 1984-07-31 1995-03-15 株式会社日立製作所 単語分割処理方法
US4807181A (en) * 1986-06-02 1989-02-21 Smith Corona Corporation Dictionary memory with visual scanning from a selectable starting point
US4868750A (en) * 1987-10-07 1989-09-19 Houghton Mifflin Company Collocational grammar system
JP2833580B2 (ja) * 1996-04-19 1998-12-09 日本電気株式会社 全文インデックス作成装置および全文データベース検索装置
JP3143079B2 (ja) * 1997-05-30 2001-03-07 松下電器産業株式会社 辞書索引作成装置と文書検索装置
JP3696745B2 (ja) * 1999-02-09 2005-09-21 株式会社日立製作所 文書検索方法及び文書検索システム及び文書検索プログラムを記録したコンピュータ読み取り可能な記録媒体
JP3636941B2 (ja) 1999-07-19 2005-04-06 松下電器産業株式会社 情報検索方法と情報検索装置
JP2001043221A (ja) * 1999-07-29 2001-02-16 Matsushita Electric Ind Co Ltd 中国語単語分割装置
JP3318834B2 (ja) * 1999-07-30 2002-08-26 三菱電機株式会社 データファイルシステム及びデータ検索方法
CN100559463C (zh) * 2002-11-11 2009-11-11 松下电器产业株式会社 声音识别用辞典编制装置和声音识别装置
US7536408B2 (en) 2004-07-26 2009-05-19 Google Inc. Phrase-based indexing in an information retrieval system
US8131758B2 (en) * 2007-12-26 2012-03-06 Novell, Inc. Techniques for recognizing multiple patterns within a string
JP5204244B2 (ja) * 2008-11-27 2013-06-05 インターナショナル・ビジネス・マシーンズ・コーポレーション 誤訳の検出を支援する装置及び方法
EP3121739B1 (en) * 2009-10-13 2021-04-28 Open Text Software GmbH Method for performing transactions on data and a transactional database
US20130262486A1 (en) * 2009-11-07 2013-10-03 Robert B. O'Dell Encoding and Decoding of Small Amounts of Text
CN101714172B (zh) * 2009-11-13 2012-03-21 华中科技大学 一种支持访问控制的索引结构的检索方法
CN102169495B (zh) * 2011-04-11 2014-04-02 趣拿开曼群岛有限公司 行业词典生成方法及装置
KR101247346B1 (ko) 2012-03-09 2013-03-26 윤기오 사전 검색 서비스 시스템 및 방법
US20140129543A1 (en) * 2012-11-02 2014-05-08 Microsoft Corporation Search service including indexing text containing numbers in part using one or more number index structures
CN103544309B (zh) * 2013-11-04 2017-03-15 北京中搜网络技术股份有限公司 一种中文垂直搜索的检索串拆分方法
CN104572994B (zh) * 2015-01-06 2018-12-14 华为技术有限公司 用于搜索数据的方法和装置
CN105404677B (zh) * 2015-11-20 2018-12-18 四川神琥科技有限公司 一种基于树形结构的检索方法

Also Published As

Publication number Publication date
KR20210002435A (ko) 2021-01-08
JP2018180808A (ja) 2018-11-15
US10936816B2 (en) 2021-03-02
KR102355731B1 (ko) 2022-01-25
KR20180114513A (ko) 2018-10-18
CN108694229A (zh) 2018-10-23
EP3388953A3 (en) 2018-12-12
EP3388953A2 (en) 2018-10-17
CN108694229B (zh) 2022-06-03
US20180293225A1 (en) 2018-10-11

Similar Documents

Publication Publication Date Title
JP5599662B2 (ja) 統計的な方法を用いて漢字を自国語の発音列に変換するシステムおよび方法
JP4744317B2 (ja) 単語検索装置、単語検索方法、及びコンピュータプログラム
US20080059146A1 (en) Translation apparatus, translation method and translation program
JP2004348591A (ja) 文書検索方法及び装置
US20130086086A1 (en) Information generating computer product, apparatus, and method; and information search computer product, apparatus, and method
US7941311B2 (en) System and method for linguistic collation
JP5430312B2 (ja) データ処理装置、データ名生成方法及びコンピュータプログラム
KR20130137048A (ko) 사전 생성 장치, 사전 생성 방법 및 사전 생성 프로그램을 기억하는 컴퓨터 판독 가능 기록 매체
JP5930228B2 (ja) 情報処理装置、方法及びプログラム
US8135573B2 (en) Apparatus, method, and computer program product for creating data for learning word translation
JP6880956B2 (ja) 解析プログラム、解析方法および解析装置
JP7102710B2 (ja) 情報生成プログラム、単語抽出プログラム、情報処理装置、情報生成方法及び単語抽出方法
JP4486324B2 (ja) 類似単語検索装置、この方法、このプログラム、および情報検索システム
CN106250354B (zh) 处理文书的信息处理装置、信息处理方法以及程序
WO2014051015A1 (en) Character recognition apparatus, method and program
JP4953440B2 (ja) 形態素解析装置、形態素解析方法、形態素解析プログラム及びコンピュータプログラムを格納した記録媒体
JP6972653B2 (ja) 解析プログラム、解析方法および解析装置
JP2003242446A (ja) 文字列予測装置及び方法並びに当該方法を具現化するコンピュータ実行可能なプログラム
CN111340029A (zh) 用于识别收件人地址中的至少部分地址的装置和方法
JP7095264B2 (ja) 情報生成プログラム、単語抽出プログラム、情報処理装置、情報生成方法及び単語抽出方法
JP2011180687A (ja) 多言語文書解析装置
US10515297B2 (en) Recognition device, recognition method, and computer program product
JP2004206659A (ja) 読み情報決定方法及び装置及びプログラム
JP5876144B2 (ja) デジタル情報分析システム、デジタル情報分析方法、及びデジタル情報分析プログラム
JP5741298B2 (ja) 辞書作成装置、辞書作成方法、およびプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200115

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200925

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20201006

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201201

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210419

R150 Certificate of patent or registration of utility model

Ref document number: 6880956

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150