見出し画像

ChatGPTに入力する文章のマスキングの仕方

ChatGPTはgoogleの検索エンジン分野の技術的な優位性を崩すだけでなく、それ以上の期待感があります。しかし、ChatGPTにあらゆる文章を入力して良いのかは、まだ結論が出ていない状況です。

そこで、ChatGPTに入力する際に、英語の文章を、人物、組織、金額、数字をマスキングしてもらえるPythonプログラムを紹介いたします。

import spacy

def mask_entities(text):
    nlp = spacy.load("en_core_web_sm")
    doc = nlp(text)

    masked_text = ""
    for token in doc:
        if token.ent_type_ == "PERSON":
            masked_text += "[Personal Name] "
        elif token.ent_type_ == "ORG":
            masked_text += "[Organization] "
        elif token.ent_type_ == "MONEY":
            masked_text += "[Money] "
        elif token.ent_type_ == "CARDINAL":
            masked_text += "[Number] "
        else:
            masked_text += token.text + " "

    return masked_text

text = "John works at Microsoft and makes $100,000 per year."
print(mask_entities(text))

このPythonプログラムは、文章中の個人名、組織名、金額、数値のエンティティをマスキングするものです。

このプログラムは、「spacy」というNLPライブラリを使用して実現されています。「spacy」は、文書のトークン化やエンティティ抽出などのタスクを簡単に実行できるようにするものです。

「mask_entities」関数は、与えられた文章を「spacy」のモデルを使って解析し、エンティティをマスキングするものです。「en_core_web_sm」は、「spacy」に含まれている小規模な英語モデルです。このモデルを使って文章をトークン化し、それぞれのトークンに対してエンティティタイプを判定します。

エンティティタイプが「PERSON」、「ORG」、「MONEY」、「CARDINAL」のいずれかであるトークンに対して、「[Personal Name]」、「[Organization]」、「[Money]」、「[Number]」のマスキングを行います。その他のトークンについては、そのトークンのテキストをそのまま使います。

最後に、マスキングされた文章を返すという動作を行います。実行例として、「John works at Microsoft and makes $100,000 per year.」という文章が入力されたときに、「[Personal Name] works at [Organization] and makes [Money] per year.」が出力されます。

この記事が気に入ったらサポートをしてみませんか?