慌てずに、個人情報は守られています


ドキュメントやデータ内の個人識別情報をマスキングする
新しいRosetteAPIスクリプト

組織は、道義上であれ法的義務上であれ、個人を特定できる情報を含む可能性のあるドキュメントや情報を共有する必要が多々あります。ドキュメントの内容を目視して、個人情報を漏えいする可能性のあるデータをすべて特定し削除することは、時間とコストがかかり非効率です。しかし怠れば、財政面や組織運営において悲惨な事態を引き起こしかねません。

組織に損害を与えるような情報漏えいを防ぐために、Rosette API では、個人を特定できる情報をドキュメント内で伏せ字にして、この情報を安全に保管・共有できるようにする「個人識別情報のマスキング」 機能を実装しています。

たとえば、以下の文字列でパイプを使用する場合、

$ echo 'John Smith is accused of stealing $1,000,000.'| ./mask_identities.py

以下が返されます。

PERSON1 is accused of stealing IDENTIFIER:MONEY.

最初に、Rosetteがテキストデータ内のエンティティを抽出します。次に、スクリプトを使用して人名、地名、組織名、製品名、役職、国籍、宗教などを文書内で非表示にし、関与する個人や組織を特定できないようにします。

損害を引き起こしかねない情報漏えいを防ぐ

情報漏えいが日々発生しています。生活においてオンラインの使用が増えていくにつれて、クレジットカード、個人番号、銀行口座、電話番号や、愛するペットの名前や母校など、一見無害と思われる情報まで、様々な個人情報をいくつものWebサイトを信頼して託すことによって、自らをも危険に晒しています。

企業レベルにおいては、ユーザーが信頼して託した個人識別情報を守る義務があります。データのマスキングは顧客を守るだけでなく、万一不可避的に漏えいが発生しても、その損害を最小限におさえます。ハッキングの標的となったあるサイトは、クレジットカード情報が漏えいした顧客との紛争解決に1,850万ドルを支払いが課せられました。また、カナダの出会い系サイト「Ashley Madison(アシュレイ・マディソン)」 はハッキングの被害者に1,120万ドル支払うことになっています。しかも、その費用には、もはや不安でたまらない顧客に対する売上機会損失やサイトを運営する両社のガタ落ちした評判は含まれていません。

ハッキングの標的となった出会い系サイト「Ashley Madison(アシュレイ・マディソン)」 や、ハッキング攻撃を受けた他の何十もの企業が情報を漏えいする可能性が最も高いデータをマスキングしてさえいれば、何百万ドルも払使わずにすんだかもしれません。

プライバシーを侵害せずにドキュメントを共有する

多様な背景を持つ数多の企業が機密情報を扱う中、個人識別情報のマスキングは、以下のようにいくつもの用途でメリットをもたらすことができます。

  • 犯罪に関する報告を発表する警察
  • 電子証拠開示手続きにおいてドキュメントを交換する法律事務所
  • 顧客の資産を追跡する銀行
  • 消費者トレンドを調査するマーケットインテリジェンス調査員
  • 米国国勢調査局による分析

特に、プライベートデータのマスキングが義務付けされている環境では、迅速にコスト効率よく機密情報を管理することが必須です。

Rosette API の 個人情報マスキング

弊社のGitHubリポジトリにアクセスしてみてください。RosetteAPIを使ったテキスト内での個人識別情報をマスキングした結果データの利用方法やPythonのサンプルコードをご覧いただけます。

コマンドラインのスクリプトは、以下のように使用できます。

$ ./mask_identities.py -h

usage: mask_identities.py [-h] [-i INPUT] [-u] [-k KEY] [-a API_URL]

                     [-l LANGUAGE] [-t TYPE [TYPE ...]]

オプションの引数:

 -h, --help            show this help message and exit

 

 -i INPUT, --input INPUT

 

                       Path to a file containing input data (if not specified data is read from stdin) (default: None)

 

 -u, --content-uri     Specify that the input is a URI (otherwise load text from file) (default: False)

 

 -k KEY, --key KEY     Rosette API Key (default: None)

 

 -a API_URL, --api-url API_URL

 

                       Alternative Rosette API URL (default: https://api.rosette.com/rest/v1/)

 

 -l LANGUAGE, --language LANGUAGE

 

                       A three-letter (ISO 639-2 T) code that will override automatic language detection (default: None)

 

 -t TYPE [TYPE ...], --entity-types TYPE [TYPE ...]

 

                       A list of named entity types to mask (refer to https://developer.rosette.com/features-and-functions#entity-extraction-entity-types for a full description of supported entity types) (default: ['ORGANIZATION', 'PERSON', 'IDENTIFIER:CREDIT_CARD_NUM', 'IDENTIFIER:EMAIL', 'IDENTIFIER:MONEY', 'IDENTIFIER:PERSONAL_ID_NUM', 'IDENTIFIER:PHONE_NUMBER', 'TEMPORAL:DATE', 'TEMPORAL:TIME', 'IDENTIFIER:LATITUDE_LONGITUDE'])

このスクリプトはあくまでデモンストレーションを目的としています。結果が完全であるとか、個人識別情報をすべて削除してあると想定することはできませんので、ご注意ください。Rosetteの固有表現抽出では統計的機械学習に基づくモデルを使用するため、それをすべてそのまま信用することは賢明ではありません。むしろ、Rosetteを用いた固有表現抽出とマスキングは、人間の目視による確認を加えることで価値のある最初の一歩になります。

スクリプトを実行するたびにRosette APIキーを入力したくない場合、環境変数$ROSETTE_USER_KEYを設定できます。

以下のエンティティタイプのいずれかが複数記述されている場合、インデックスを付与して、エンティティをはっきりと識別できなくても見分けられるようにします。

$ echo "John Smith is accused of stealing \$1,000,000.  Jane Smith was John's accomplice."| ./mask_identities.py

以下を返します。

PERSON1 is accused of stealing IDENTIFIER:MONEY.  PERSON2 was PERSON1's accomplice.

使ってみる

データ中の個人情報を守る準備はできていますか?

最初に、Rosette API キーをご用意いただく必要があります。Rosette APIキーは、1ヵ月あたり最大10,000コール件まで無料で、サインアップ時のクレジットカード情報の提供は不要です。次に、弊社の「GitHub」コミュニティにアクセスし詳細説明を確認し、スクリプトをダウンロードします。

クラウドAPI のデータプライバシーが気になる場合は、オンプレミス版での展開もご用意しています。詳細につきましては、弊社までお問い合わせください。

テキスト解析からさらなる価値を引き出すためのプラグインやスクリプトに関する提案もぜひお聞かせください。