図1は、本発明の実施例のセキュリティインテリジェンス構造化支援システム1の構成を示す図である。
セキュリティインテリジェンス構造化支援システム1は、プロセッサ(CPU)11、メインメモリ12、記憶装置13及び通信インターフェース14、15を有する計算機によって構成される。セキュリティインテリジェンス構造化支援システム1には、ネットワーク19を介してユーザ端末2が接続される。また、セキュリティインテリジェンス構造化支援システム1には入出力装置16が接続されてもよい。
プロセッサ11は、メインメモリ12に格納されたプログラムを実行する演算装置である。具体的には、プロセッサ11が、各種プログラム21〜27を実行することによって、セキュリティインテリジェンス構造化支援システム1の各種機能が実現される。なお、プロセッサ11がプログラムを実行して行う処理の一部を、他の演算装置(例えば、FPGA)で実行してもよい。
メインメモリ12は、不揮発性の記憶素子であるROM及び揮発性の記憶素子であるRAMを含む。ROMは、不変のプログラム(例えば、BIOS)などを格納する。RAMは、DRAM(Dynamic Random Access Memory)のような高速かつ揮発性の記憶素子であり、プロセッサ11が実行するプログラム及びプログラムの実行時に使用されるデータを一時的に格納する。
記憶装置13は、例えば、磁気記憶装置(HDD)、フラッシュメモリ(SSD)等の大容量かつ不揮発性の記憶装置である。記憶装置13は、プロセッサ11がプログラムの実行時に使用するデータ(例えば、インテリジェンス収集先一覧31、インテリジェンス一覧32、アノテーション結果一時保存領域33、アノテーション結果保存領域34)、及びプロセッサ11が実行するプログラムを格納する。すなわち、プログラムは、記憶装置13から読み出されて、メインメモリ12にロードされて、プロセッサ11によって実行される。
具体的には、インテリジェンス収集先一覧31は、インテリジェンス収集プログラム21がインテリジェンスを収集するための情報を格納する。インテリジェンス収集先一覧31の詳細は、図3を参照して後述する。インテリジェンス一覧32は、インテリジェンス収集プログラム21が収集したインテリジェンスの情報を格納する。インテリジェンス一覧32の詳細は、図4を参照して後述する。アノテーション結果一時保存領域33は、ラベル付与プログラム22、アノテーション実施判定プログラム23、見落とし語拾得プログラム24及びアノテーション制御プログラム26によるインテリジェンスのアノテーション処理の途中経過を一時的に格納する。アノテーション結果一時保存領域33の詳細は、図5を参照して後述する。アノテーション結果保存領域34は、インテリジェンスのアノテーション処理の結果を格納する。アノテーション結果保存領域34の詳細は、図6を参照して後述する。
通信インターフェース14、15は、所定のプロトコルに従って、他の装置との通信を制御するネットワークインターフェース装置である。具体的には、通信インターフェース14は、ネットワーク19を介してユーザ端末2と接続する。通信インターフェース15は、ネットワーク17を介してインターネット18と接続する。図1には、二つの通信インターフェース14、15を図示したが、一つの通信インターフェースがネットワーク17及び19と接続してもよい。
入出力装置16は、ユーザからの入力を受ける入力装置(キーボード、マウスなど)、及びプログラムの実行結果をユーザが視認可能な形式で出力する出力装置(ディスプレイ装置、プリンタなど)によって構成される。なお、セキュリティインテリジェンス構造化支援システム1にネットワークを介して接続された端末(例えば、ユーザ端末2)が入出力装置16を提供してもよい。
プロセッサ11が実行するプログラムは、リムーバブルメディア(CD−ROM、フラッシュメモリなど)又はネットワークを介してセキュリティインテリジェンス構造化支援システム1に提供され、非一時的記憶媒体である不揮発性の記憶装置13に格納される。このため、セキュリティインテリジェンス構造化支援システム1は、リムーバブルメディアからデータを読み込むインターフェースを有するとよい。
セキュリティインテリジェンス構造化支援システム1は、物理的に一つの計算機上で、又は、論理的又は物理的に構成された複数の計算機上で構成される計算機システムであり、複数の物理的計算機資源上に構築された仮想計算機上で動作してもよい。
図2は、セキュリティインテリジェンス構造化支援システム1の動作を示すシーケンス図である。
まず、インテリジェンス収集プログラム21がインテリジェンス収集先一覧31に規定されたタイミングで起動し、インテリジェンスを収集する(S101)。具体的には、インテリジェンス収集プログラム21がインテリジェンスの収集先であるオープンインテリジェンスにアクセスして、インテリジェンスを要求し(S102)、オープンインテリジェンスからインテリジェンスを取得する(S103)。
本実施例において、インテリジェンスとは、セキュリティに関する有益な情報である。本実施例のセキュリティインテリジェンス構造化支援システムが収集するインテリジェンスは、情報が構造化されておらず、かつ、未知の語が含まれていてもよい。
インテリジェンスの収集先であるオープンインテリジェンスは、セキュリティ情報を提供しているIPAやJPCERT等の機関のウェブサイトや、セキュリティ情報を提供している会社のウェブサイトや、セキュリティ情報を掲載しているブログやSNSなどである。
次に、ラベル付与プログラム22が、収集したインテリジェンスから単語を抽出し、抽出された単語のラベルを推定し、当該ラベルの信頼度を計算して、アノテーション結果一時保存領域33に記録するラベル付与処理を実行する(S104)。
その後、アノテーション実施判定プログラム23が、信頼度に従って各単語に付されたラベルをランク付けをして、アノテーション結果一時保存領域33に記録するアノテーション実施判定処理を実行する(S105)。
さらに、見落とし語拾得プログラム24が、第一候補が固有表現でないと判定された単語について、第二候補のラベルが固有表現であるかを人手で検証するように設定して、アノテーション結果一時保存領域33に記録する見落とし語拾得処理を実行する(S106)。
次に、画面生成プログラム25が、各単語のラベルを人手で検証するためのアノテーション結果表示画面200を生成する画面生成処理を実行する(S107)。
その後、アノテーション制御プログラム26が、アノテーション結果表示画面200を用いた各単語のラベルの人手による検証を制御するアノテーション制御処理を実行し(S108)、人手によるラベルの検証結果を受け取るアノテーション実施処理を実行する(S109)。
さらに、アノテーション結果反映プログラム27が、アノテーション結果をアノテーション結果保存領域34に保存するアノテーション結果反映処理を実行する(S110)。
画面生成プログラム25は、ユーザ端末A2にアノテーション結果表示画面(図13の200)を表示するためのデータを送信した後、ユーザ端末A2からの指示によって、ユーザ端末B2にアノテーション結果表示画面200を表示するためのデータを送信してもよい。これによって、当該インテリジェンスを処理する権限がユーザ端末A2からユーザ端末B2に移る。この権限の移行は、一般のオペレータで処理が困難なインテリジェンスの処理をエキスパートに依頼する場合に利用するとよい。また、収集したインテリジェンスの内容によって、セキュリティインテリジェンス構造化支援システム1が、当該インテリジェンスを処理するユーザ端末2を決定して、ユーザ端末A2からユーザ端末B2に権限を移行してもよい。
そして、前述したステップS107〜S110と同様に、ステップS111〜S114を実行して、各単語のラベルを人手で検証するためのアノテーション結果表示画面200をユーザ端末B2に送り、人手によるアノテーション結果をアノテーション結果保存領域34に保存する。
図3は、インテリジェンス収集先一覧31の構成例を示す図である。
インテリジェンス収集先一覧31は、インテリジェンスを収集するための情報(収集先、収集タイミング)を格納しており、ID311、URL312及び収集周期313を含む。ID311は、インテリジェンス収集先一覧31においてインテリジェンス収集先を一意に識別するための識別情報である。URL312は、インテリジェンスを収集するアドレスである。収集周期313は、インテリジェンスを収集する時間間隔であり、収集周期313に規定されたタイミングでインテリジェンス収集プログラム21が起動する。
図4は、インテリジェンス一覧32の構成例を示す図である。
インテリジェンス一覧32は、収集したインテリジェンスの状態を格納しており、ID321、URL322及びステータス323を含む。ID321は、インテリジェンス一覧32において収集したインテリジェンスを一意に識別するための識別情報である。URL322は、インテリジェンスの収集先のアドレスである。
ステータス323は、収集したアノテーションの処理状況を表す。例えば、「アノテーション済(手動)」は、ユーザ端末2によってオペレータがアノテーションを完了していることを示し、「アノテーション済(自動)」は、セキュリティインテリジェンス構造化支援システム1が自動的に実行したアノテーションが完了していることを示す。「未アノテーション」は、アノテーションが実施されていない状態を示す。また、「手動アノテーション待ち」は、セキュリティインテリジェンス構造化支援システム1による自動的なアノテーションによって、手動のアノテーションが必要であると判定され、ユーザ端末2による手動のアノテーションが完了していない状態である。すなわち、アノテーション実施判定プログラム23や見落とし語拾得プログラム24によって固有表現性336が「固有表現の可能性有」又は「低」であると判定されて、ユーザ端末2を用いた手動のアノテーションが行われていない状態である。
図5は、アノテーション結果一時保存領域33の構成例を示す図である。
アノテーション結果一時保存領域33は、収集したインテリジェンスのアノテーション結果を一時的に格納しており、ID331、URL332、単語333、第一候補334、第二候補335、固有表現性336及びユーザ選択内容337を含む。
ID331は、アノテーション処理が行われているインテリジェンスを一意に識別するための識別情報である。URL332は、インテリジェンスの収集先のアドレスである。単語333は、インテリジェンスから抽出された単語である。
第一候補334及び第二候補335は、単語333に記録された単語について、アノテーションによって推定されるラベルの候補であり、各ラベルの候補には信頼度が付加されている。その信頼度が最も高いラベルが第一候補334であり、信頼度が次に高いラベルが第二候補335である。ラベルは、各単語の属性、すなわち各単語が持っている意味である。本実施例では、例えば、マルウェアの名前(Malware Name)、攻撃方法(Attack Method)など、セキュリティに関する用語の種類をラベルに使用する。なお、アノテーションの結果、固有表現ではない(すなわち、本実施例ではセキュリティ情報として構造化するための意味を持たない)と判定された場合(Not Named Entity)も、一つのラベルとして取り扱うとよい。
固有表現性336は、当該単語の第一候補のラベルの確からしさをランク付けしたものであり、後述するアノテーション実施判定プログラム23や見落とし語拾得プログラム24によって判定される。例えば、ラベルの信頼度と所定の閾値とを比較した結果に基づいて、信頼度を「高」又は「低」にランク付けする。また、第一候補のラベルが固有表現ではなく、第二候補のラベルの信頼度が所定の閾値以上である場合、当該語の固有表現性を「固有表現の可能性有」に設定する。
例えば、図5に示す、アノテーション結果一時保存領域33では、1行目に記録された単語「Hoge」は、50%の信頼度で固有表現ではない(Not Named Entity)と推定され、40%の信頼度でマルウェアの名前であると推定されている。この場合、第一候補のラベルが固有表現ではなく、第二候補のラベルの信頼度が所定の閾値以上であるため、当該語の固有表現性に「固有表現の可能性有」が記録されている。また、6行目に記録された単語「DoS」は、35%の信頼度で攻撃方法であると推定され、32%の信頼度で脆弱性であると推定されている。この場合、第一候補のラベルの信頼度が所定の閾値より小さいので、当該語の固有表現性に「低」が記録されている。いずれの場合も、第二候補のラベルが正しい可能性があるので、手動によりラベルを検証する。
図6は、アノテーション結果保存領域34の構成例を示す図である。
アノテーション結果保存領域34は、収集したインテリジェンスのアノテーションの最終的な結果を格納しており、ID341、URL342、単語343及び正解ラベル344を含む。
ID341は、アノテーション処理が行われているインテリジェンスを一意に識別するための識別情報である。URL342は、インテリジェンスの収集先のアドレスである。単語343は、インテリジェンスから抽出された単語である。正解ラベル344は、単語343に記録された単語について、アノテーションによって決定されたラベルである。なお、アノテーションの結果、固有表現ではない場合(Not Named Entity)と判定されたラベルが付与される場合もある。
図7は、セキュリティインテリジェンス構造化支援システム1の全体の処理のフローチャートである。
インテリジェンス収集先一覧31の収集周期313に規定されたタイミングでインテリジェンス収集プログラム21が起動して、処理を開始する。すなわち、プロセッサ11はインテリジェンス収集プログラム21を起動し、インテリジェンス収集先一覧31に規定された収集先からインテリジェンスを取得するインテリジェンス収集処理を実行する(S121)。インテリジェンス収集処理は、図8を参照して後述する。
そして、収集したインテリジェンスが新しいインテリジェンスであるかを判定する(S122)。具体的には、インテリジェンス一覧32を参照して、収集したインテリジェンスがインテリジェンス一覧32に格納されていなければ、新しいインテリジェンスであると判定できる。また、収集したインテリジェンスがアノテーション結果一時保存領域33及びアノテーション結果保存領域34のいずれにも格納されていなければ、新しいインテリジェンスであると判定してもよい。
その結果、収集したインテリジェンスに新しいインテリジェンスが含まれていなければ、処理を終了する。一方、収集したインテリジェンスが新しいインテリジェンスであれば、プロセッサ11はラベル付与プログラム22を起動し、収集したインテリジェンスから抽出された単語のラベルを推定し、信頼度と共にアノテーション結果一時保存領域33に記録するラベル付与処理(S123)を実行する。ラベル付与処理は、図9を参照して後述する。
その後、プロセッサ11は、アノテーション実施判定プログラム23を起動し、信頼度に従って各単語に付されたラベルをランク付けをして、アノテーション結果一時保存領域33に記録するアノテーション実施判定処理(S124)を実行する。アノテーション実施判定処理は、図10を参照して後述する。
その後、プロセッサ11は、見落とし語拾得プログラム24を起動し、第一候補が固有表現でないと判定された単語について、第二候補のラベルが固有表現であるかを人手で検証するように設定して、アノテーション結果一時保存領域33に記録する見落とし語拾得処理(S1254)を実行する。見落とし語拾得処理は、図11を参照して後述する。
その後、ループを制御するパラメータiを0に初期設定し(S126)、IDがiのインテリジェンスの処理(S127〜S130)を実行する。
具体的には、プロセッサ11は、アノテーション結果一時保存領域33からID=iのインテリジェンスを取得し、画面生成プログラム25を起動し、各単語のラベルを人手で検証するためのアノテーション結果表示画面200を生成する画面生成処理(S127)を実行する。画面生成処理は、図12を参照して後述する。
さらに、プロセッサ11は、アノテーション制御プログラム26を起動し、アノテーション結果表示画面200を用いた各単語のラベルの人手による検証を制御するアノテーション制御処理(S128)を実行する。アノテーション制御処理は、図14を参照して後述する。
その後、プロセッサ11は、アノテーション結果反映プログラム27を起動し、アノテーション結果をアノテーション結果保存領域34に保存するアノテーション結果反映処理(S129)を実行する。アノテーション結果反映処理は、図15を参照して後述する。
その後、プロセッサ11は、iに1を加算し(S130)、アノテーションが行われていないインテリジェンスがインテリジェンス一覧32にあるかを判定する(S131)。アノテーションが行われていないインテリジェンスがインテリジェンス一覧32にあれば、ステップS127に戻り、次のインテリジェンスを処理する。インテリジェンス一覧32の全てのインテリジェンスについてアノテーションが完了していれば、処理を終了する。
図8は、インテリジェンス収集プログラム21が実行するインテリジェンス収集処理(S121)のフローチャートである。
まず、プロセッサ11(インテリジェンス収集プログラム21)は、インテリジェンス収集先一覧31を参照して、インテリジェンスを収集する(S141)。具体的には、インテリジェンス収集プログラム21がインテリジェンス収集先一覧31のURL312に記録されたアドレスにアクセスして、インテリジェンスを要求し、オープンインテリジェンスからインテリジェンスを取得する。例えば、オープンインテリジェンスがwebサイトである場合、取得するインテリジェンスはHTML形式で記述されているので、取得したHTMLデータからテキストデータを抽出する。さらに、ステップS141では、オープンインテリジェンスから取得したHTML文を解析して、当該HTML文に含まれるリンク先からさらにインテリジェンスを取得するとよい。
そして、インテリジェンス収集プログラム21は、収集したインテリジェンスが新しいインテリジェンスであるかを判定する(S142)。具体的には、ステップS122と同様に、インテリジェンス一覧32を参照して、収集したインテリジェンスがインテリジェンス一覧32に格納されていなければ、新しいインテリジェンスであると判定できる。また、収集したインテリジェンスがアノテーション結果一時保存領域33及びアノテーション結果保存領域34のいずれにも格納されていなければ、新しいインテリジェンスであると判定してもよい。
インテリジェンス収集プログラム21は、収集したインテリジェンスの情報(取得先のURL)をインテリジェンス一覧32へ保存し(S143)、収集したインテリジェンスのステータス323に「未アノテーション」を記録する(S144)。
図9は、ラベル付与プログラム22が実行するラベル付与処理(S123)のフローチャートである。
まず、プロセッサ11(ラベル付与プログラム22)は、インテリジェンス一覧32を走査し、アノテーションが行われていないインテリジェンスを取得する(S151)。
次に、ラベル付与プログラム22は、アノテーションを開始する(S152)。具体的には、インテリジェンスに形態素解析を適用して、単語を抽出する。単語の抽出にAI(Artificial Intelligence)を用いてもよい。
その後、ラベル付与プログラム22は、各単語の第一候補及び第二候補のラベル推定し、推定された各ラベルの信頼度と共にアノテーション結果一時保存領域33へ保存する(S153)。
その後、ラベル付与プログラム22は、アノテーションが行われていないインテリジェンスがインテリジェンス一覧32にあるかを判定する(S154)。アノテーションが行われていないインテリジェンスがインテリジェンス一覧32にあれば、ステップS151に戻り、次のインテリジェンスを処理する。インテリジェンス一覧32の全てのインテリジェンスについてアノテーションが完了していれば、処理を終了する。
図10は、アノテーション実施判定プログラム23が実行するアノテーション実施判定処理(S124)のフローチャートである。
まず、プロセッサ11(アノテーション実施判定プログラム23)は、アノテーション結果一時保存領域33から、インテリジェンス毎にアノテーション結果を取得する(S161)。
その後、アノテーション実施判定プログラム23は、ループを制御するパラメータiを0に初期設定し(S162)、IDがiのインテリジェンスの処理(S163〜S166)を実行する。
具体的には、アノテーション実施判定プログラム23は、第一候補のラベルの信頼度が所定の閾値以上であるかを判定する(S163)。その結果、第一候補のラベルの信頼度が所定の閾値より小さければ、第一候補のラベルが正しくない可能性があるので、固有表現性に「低」を記録する(S164)。第一候補のラベルの信頼度が低い場合、画面生成プログラム25が生成するアノテーション結果表示画面200でユーザによるラベルの検証を促す。一方、第一候補のラベルの信頼度が所定の閾値以上であれば、第一候補のラベルが正しい可能性が高いので、当該単語の固有表現性に「高」を記録する(S165)。第一候補のラベルの信頼度が高い場合、当該単語のラベルは、ユーザによる検証を受けることなく、そのまま決定される。
その後、アノテーション実施判定プログラム23は、未処理の単語があるかを判定する(S166)。未処理の単語があれば、ステップS163に戻り、次の単語を処理する。
当該インテリジェンスに含まれる全ての単語の処理が完了していれば、アノテーション実施判定プログラム23は、iに1を加算し(S167)、処理が行われていないインテリジェンスがアノテーション結果一時保存領域33にあるかを判定する(S168)。処理が行われていないインテリジェンスがアノテーション結果一時保存領域33にあれば、ステップS163に戻り、次のインテリジェンスを処理する。アノテーション結果一時保存領域33の全てのインテリジェンスについて処理が完了していれば、処理を終了する。
図11は、見落とし語拾得プログラム24が実行する見落とし語拾得処理(S125)のフローチャートである。
まず、プロセッサ11(見落とし語拾得プログラム24)は、アノテーション結果一時保存領域33から、インテリジェンス毎にアノテーション結果を取得する(S171)。
その後、見落とし語拾得プログラム24は、ループを制御するパラメータiを0に初期設定し(S172)、IDがiのインテリジェンスの処理(S173〜S176)を実行する。
具体的には、見落とし語拾得プログラム24は、第一候補のラベルが固有表現であるかを判定する(S173)。第一候補のラベルが固有表現であれば、ステップS176に進む。一方、第一候補のラベルが固有表現でなければ、第二候補のラベルの信頼度が所定の閾値以上であるかを判定する(S174)。その結果、第二候補のラベルの信頼度が所定の閾値以上であれば、当該語の第二候補のラベルが正しい可能性があるので、当該語の固有表現性に「固有表現の可能性有」を記録する(S175)。この場合、画面生成プログラム25が生成するアノテーション結果表示画面200でユーザによるラベルの検証を促す。
その後、見落とし語拾得プログラム24は、未処理の単語があるかを判定する(S176)。未処理の単語があれば、ステップS173に戻り、次の単語を処理する。
当該インテリジェンスに含まれる全ての単語の処理が完了していれば、見落とし語拾得プログラム24は、iに1を加算し(S177)、処理が行われていないインテリジェンスがアノテーション結果一時保存領域33にあるかを判定する(S178)。処理が行われていないインテリジェンスがアノテーション結果一時保存領域33にあれば、ステップS173に戻り、次のインテリジェンスを処理する。アノテーション結果一時保存領域33の全てのインテリジェンスについて処理が完了していれば、処理を終了する。
図12は、画面生成プログラム25がアノテーション結果表示画面200を生成する画面生成処理(S128)のフローチャートである。
まず、プロセッサ11(画面生成プログラム25)は、アノテーション結果一時保存領域33から、処理対象のインテリジェンスのアノテーション結果を取得する(S181)。
そして、画面生成プログラム25は、固有表現性が「高」の単語を塗りつぶして描画し(S182)、固有表現性が「低」の単語及び「固有表現の可能性有」の単語を中抜きで描画する(S183)。画面生成プログラム25が生成するアノテーション結果表示画面200の例を図13に示す。
また、画面生成プログラム25は、後述するアノテーション制御処理(図14)において各単語のランクを検証した結果を入力するためのラベル編集画面(図13の210)を表示するためのコードを画面に含める。このとき、固有表現性が「低」の単語及び「固有表現の可能性有」の単語についてランクの検証を促すラベル編集画面210を表示しても、固有表現性が「高」の単語についてもランクの検証を促すラベル編集画面210を表示してもよい。
固有表現性による単語の描画態様は、前述したもの限らず、各単語がどのような固有表現性を有しているかがユーザ端末2で確認できる態様であればよい。また、各単語に付されている固有表現性の種類によって、単語の表示態様を変えてもよい。さらに、固有表現性が「低」の単語と「固有表現の可能性有」の単語とを同じ態様で表示しても、両者を異なる態様で表示してもよい。両者を異なる態様で表示することによって、真に検証が必要な「固有表現の可能性有」の単語を明確に知ることができ、各単語に的確にラベルを付すことができる。
図13は、アノテーション結果表示画面200の例を示す図である。
アノテーション結果表示画面200は、アノテーションの結果、各単語に付されたラベルに従った表示態様を付してインテリジェンスを表示する。各単語の表示態様は、前述したように、固有表現性が「高」の単語を塗りつぶして描画したり、固有表現性が「低」の単語及び「固有表現の可能性有」の単語を中抜きで描画する。
アノテーション結果表示画面200には、「submit」ボタン201が設けられている。アノテーション結果表示画面200の表示後、「submit」ボタン201が操作されるまで、アノテーション制御プログラム26のステップS192からS197の処理が繰り返し実行され、ユーザからの入力を待つ。
アノテーション結果表示画面200において、マウスカーソルが単語と重なるマウスオーバ状態では、当該単語のラベル編集画面210を表示する。ラベル編集画面210は、レベルの推定結果と当該ラベルの信頼度を表示する。ラベル編集画面210に表示されるレベルの推定結果は、固有表現性が「低」の単語では、第一候補のラベルとする。また、固有表現性が「固有表現の可能性有」の単語では、第一候補のラベルが「Not Named Entity」なので、第二候補のラベルを表示して、第二候補が正しいかの検証を受けるとよい。また、固有表現性が「高」の単語のラベル編集画面210を表示する場合、第一候補のラベルをラベル編集画面210に表示するとよい。
また、ラベル編集画面210は、「accept」ボタン211、「modify」ボタン212、及び「reject」ボタン213を含む。
図14は、アノテーション制御プログラム26が実行するアノテーション制御処理(S129)のフローチャートである。
まず、プロセッサ11(アノテーション制御プログラム26)は、ユーザがアノテーション結果表示画面200において「submit」ボタン201を操作するまで、ステップS192からS197の処理を繰り返し実行する(S191)。
アノテーション制御プログラム26は、ユーザが単語をマウスオーバすると、ラベル編集画面210を表示し、ユーザによる入力ボタンの選択を待つ(S192)。アノテーション制御プログラム26が、ユーザによる入力を受けると(S193)、入力内容によって分岐する。
アノテーション制御プログラム26は、ユーザによる「accept」ボタン211の操作を検出すると、ラベル編集画面210に表示されたラベルを正解とする(S194)。すなわち、固有表現性が「低」の単語では、第一候補のラベルがラベル編集画面210に表示されるので、「accept」ボタン211の操作によって、第一候補のラベルが選択される。また、固有表現性が「固有表現の可能性有」の単語では、第二候補のラベルがラベル編集画面210に表示されるので、「accept」ボタン211の操作によって、第二候補のラベルが選択される。
アノテーション制御プログラム26は、ユーザによる「modify」ボタン212の操作を検出すると、ラベル編集画面210にラベル入力欄を表示し(例えば、ラベル編集画面210を下方に拡張し、ラベル入力欄を表示する)、ユーザが入力したラベルを正解とする(S195)。
アノテーション制御プログラム26は、ユーザによる「reject」ボタン213の操作を検出すると、当該単語が固有表現ではないとする(S196)。この場合、「Not Named Entity」が、アノテーション結果一時保存領域33のユーザ選択内容337に記録される。
なお、「reject」ボタン213の操作によって、ラベル編集画面210に表示されていない方のラベルを正解としてもよい。すなわち、固有表現性が「低」の単語では、第一候補のラベルがラベル編集画面210に表示されるので、「reject」ボタン213の操作によって、第二候補のラベルを選択する。また、固有表現性が「固有表現の可能性有」の単語では、第二候補のラベルがラベル編集画面210に表示されるので、「reject」ボタン213の操作によって、第一候補のラベルである「Not Named Entity」が選択される。
ユーザがマウスカーソルを移動し、マウスオーバが解除されると、何もせずに処理を続行する(S197)。
その後、アノテーション制御プログラム26は、ユーザの選択や入力をアノテーション結果一時保存領域33のユーザ選択内容337に記録する(S198)。
図15は、アノテーション結果反映プログラム27が実行するアノテーション結果反映処理(S130)のフローチャートである。
まず、プロセッサ11(アノテーション結果反映プログラム27)は、アノテーション結果一時保存領域33から、当該インテリジェンスのアノテーション結果を取得し(S201)、取得したアノテーション結果をアノテーション結果保存領域34へ保存する(S202)。このとき、URL342及び単語343には、アノテーション結果一時保存領域33のURL332及び単語333を、そのまま記録する。正解ラベル344には、ユーザ選択内容337を記録し、ユーザ選択内容337が記録されていない場合、第一候補334を記録する。このようにして、最も確からしいラベルを正解ラベルとして決定できる。
その後、アノテーション結果反映プログラム27は、アノテーション結果一時保存領域33から、当該インテリジェンスのアノテーション結果を削除する(S203)。
以上に説明したように、本発明の実施例によると、自然言語で記述されたインテリジェンスを所定のタイミングで取得するインテリジェンス収集プログラム21と、取得されたインテリジェンスが新規である場合、当該インテリジェンスに含まれる単語のラベル及び当該ラベルの信頼度を付与するラベル付与プログラム22と、当該単語のラベルに基づいて、ユーザに提示する画面を生成する画面生成プログラム25とを有するので、インテリジェンスの構造化において、ユーザが注意すべき語を的確に提案できる。また、従来の方法では見落とされていた未知語を拾得でき、網羅率を向上できる。
画面生成プログラム25は、当該単語が既知のラベルのいずれにも関連しない信頼度が、当該単語が既知のラベルに関連する信頼度より大きい場合、当該単語に関連する既知のラベルの信頼度が所定の閾値以上であるとき、すなわち、第一候補が当該単語が既知のラベルのいずれにも関連しない(セキュリティ情報として構造化するための意味を持たないNot Named Entity)であり、第二候補が既知のラベルである場合、ラベル編集画面210を表示するためのデータを生成するので、セキュリティ分野で頻繁に生じる未知語を的確に抽出できる。
画面生成プログラム25は、当該単語が既知のラベルのいずれにも関連しない信頼度が、当該単語が既知のラベルに関連する信頼度より大きい場合、当該単語に関連する既知のラベルの信頼度が所定の閾値以上であるとき、すなわち、第一候補がNot Named Entityであり、かつ第二候補の信頼度が所定の閾値以上である場合、ラベル編集画面210を表示するためのデータを生成するので、Not Named Entityではなく他のラベルである可能性が高いもののみ、手動でラベルを検証するので、ユーザの手間を軽減できる。
画面生成プログラム25は、第一候補の信頼度が所定の閾値より小さい場合、ラベル編集画面210を表示するためのデータを生成するので、信頼度が低い(間違っている可能性がある)ラベルを的確なラベルに手動で修正できる。
以上に説明した実施例において、構造化のための辞書を作成して、当該辞書を教師データとした機械学習を用いてアノテーションを行ってもよい。この場合、アノテーション結果を教師データにするだけでなく、構造化されたデータそのものを教師データにしてもよい。
以上に説明した実施例では、信頼度が低いラベルは人手によって検証したが、信頼度が低いアノテーション結果は採用しないことによって、人手を介さず、自動的にアノテーションを行ってもよい。また、信頼度が低いアノテーション結果も採用して、自動的にアノテーションを行ってもよい。
自動的にアノテーションを行う場合の教師データとして、人手を介した信頼度が高いアノテーション結果を採用して、自動的なアノテーションと人手を介したアノテーションとを併存して運用すると、コーパスの精度低下を抑制できる。
本実施例のように、半自動的にアノテーションを実施することによって、コーパスの作成コストを低減できる。また、未知語を拾得することによって、コーパスの精度や網羅率を向上できる。
以上の実施例では、構造化されていないセキュリティ情報を適切に構造化するセキュリティインテリジェンス構造化支援システムについて説明したが、本発明は、セキュリティ情報ではなく、他の種類の情報を構造化するシステムにも適用できる。
なお、本発明は前述した実施例に限定されるものではなく、添付した特許請求の範囲の趣旨内における様々な変形例及び同等の構成が含まれる。例えば、前述した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに本発明は限定されない。また、ある実施例の構成の一部を他の実施例の構成に置き換えてもよい。また、ある実施例の構成に他の実施例の構成を加えてもよい。また、各実施例の構成の一部について、他の構成の追加・削除・置換をしてもよい。
また、前述した各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等により、ハードウェアで実現してもよく、プロセッサがそれぞれの機能を実現するプログラムを解釈し実行することにより、ソフトウェアで実現してもよい。
各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリ、ハードディスク、SSD(Solid State Drive)等の記憶装置、又は、ICカード、SDカード、DVD等の記録媒体に格納することができる。
また、制御線や情報線は説明上必要と考えられるものを示しており、実装上必要な全ての制御線や情報線を示しているとは限らない。実際には、ほとんど全ての構成が相互に接続されていると考えてよい。