見出し画像

AIに学習させるデータについて その弐

前回の記事で人名などをマスクする方法をCopilotくんへ聞いたあと
これはパターンを考えないといけないし、面倒すぎる。
他にもっと良いものはないかと、今度はChatGPTくんへ相談した次第です。
プロンプトから執拗にねほりはほり聞いていくと、Python使ってspaCyとJanomeを使えとの解決策を提示してくれました。
ということで自分のWindowsPCへ、Pythonと必要モジュールをインストールし、導き出してくれたシェルを動かしみることに。

ChatGPTが答えてくれたPythonシェル

こちらがtest1.pyの元となったシェル
要約がまたシンプルで分かりやすい

インストールと実行したコマンドはこちら

Pythonバージョン確認
PS C:\Users\user> python --versionPython 3.12.4
pipバージョン確認
PS C:\Users\user> pip --versionpip 24.0 from C:\Users\user\AppData\Local\Programs\Python\Python312\Lib\site-packages\pip (python 3.12)
Spacy(pythonで動かす自然言語処理ライブラリ)インストール
PS C:\Users\user> pip install -U spacyCollecting spacy
英語の名前を特定するためのnlpモデルをロード
PS C:\Users\user\Python> python -m spacy download en_core_web_sm
Janomeインストール
PS C:\Users\user\Python> pip install Janome

シェルスクリプト test1.py

import spacy

# 英語の名前を特定するためのnlpモデルをロード
nlp = spacy.load("en_core_web_sm")

# テキストデータの例
text = "Taro Yamada sent an email to John Smith regarding the meeting."


# nlpモデルでテキストを解析
doc = nlp(text)

# 固有名詞(人名など)を'XXX'に置き換える
masked_text = text
for ent in doc.ents:
    if ent.label_ == "PERSON":  # 固有名詞のうち「人名」に該当するもの
        masked_text = masked_text.replace(ent.text, "XXX")

print(masked_text)


from janome.tokenizer import Tokenizer

# 日本語のテキストデータ例
text = "山田 太郎さんが佐藤 花子さんと鈴木一郎太にメールを送りました。"

# janomeを使って形態素解析
tokenizer = Tokenizer()
tokens = tokenizer.tokenize(text)

# 固有名詞に該当する部分を置き換える
masked_text = text
for token in tokens:
    if "名詞,固有名詞,人名" in token.part_of_speech:
        masked_text = masked_text.replace(token.surface, "XXX")

print(masked_text)
実行させてみました

PS C:\Users\syspro\Python> python .\test1.py
XXX sent an email to XXX regarding the meeting.
XXX XXXさんがXXX XXXさんとXXXXXXXXXにメールを送りました。
PS C:\Users\syspro\Python>

という具合で、名前の苗字と名前がひっついてようが、半角空白、全角空白が入ってましても、XXXに置き換わりました。
これならば、文節のどこに出現しようともいけそうな気がします。
Pythonコーディングの知識がなくても使えるのはありがたいことです。
自分の場合、Python環境がLinuxサーバにあったため、そちらでやろうとした
ために、少し(いや、だいぶかも)遠回りしてしまいました。
Windows環境のほうが、情報も多いし近道かと思います。

結構なレコードの処理しないといけないので、そのあたり工夫はまだまだ
必要かもしれませんが、主要なパートはこんな感じでChatGPTくんに頼みながら作っていく、若手のプログラマではないところが時代は進んだものだと実感しました。
つづく・・・

(自社サービス紹介)
ワーカーネットでは自動化と機能簡素化で1名1日、勤務時間問わずで利用料500円となっておりますが、シスプロ・ワーカーズプロレギュラーでは、雇用管理を含めきめ細やかな管理ができる日々紹介サービスです。

この記事が参加している募集