パターンマッチ認識器
正規表現パターンによる高速な認識器です。社員番号、契約番号、注文番号など、 フォーマットが明確に決まっている識別子の検出に最適です。
✅ こんな場面に最適
- 社員番号(EMP-123456)
- 契約番号(CNT-2024-A001)
- 注文番号(ORD-2024-00001)
- 自社独自のID体系
特徴
⚡
極めて高速
正規表現エンジンによる高速マッチング。大量テキストでも数ミリ秒オーダーで処理。
🎯
高精度
厳密なパターン定義により、誤検出を最小化。チェックサム検証も可能。
🔧
即時反映
API経由でサービス無停止のまま追加・更新・削除。次のリクエストから即時反映。
追加できるエンティティの例
| タイプ例 | 説明 | パターン例 |
|---|---|---|
JPII_EMPLOYEE_ID |
社員番号 | EMP-123456、E12345 |
JPII_CUSTOMER_ID |
顧客ID | CUS-12345-01、C123456 |
JPII_ORDER_NUMBER |
注文番号 | ORD-2024-00001 |
JPII_CONTRACT_ID |
契約番号 | CNT-2024-A001 |
JPII_PROJECT_CODE |
プロジェクトコード | PRJ-ABC-001 |
JPII_MEMBER_ID |
会員番号 | M-12345678 |
JPII_PATIENT_ID |
患者ID | PT-000001 |
JPII_INVOICE_NUMBER |
請求書番号 | INV-2024-001234 |
基本的な使い方
認識器の登録
bash
# ETag取得
ETAG=$(curl -s -I https://api.pii-fi.com/api/policy/active \
-H "Authorization: Bearer YOUR_API_KEY" | grep -i etag | awk '{print $2}' | tr -d '\r')
# 社員番号認識器を登録
curl -X POST https://api.pii-fi.com/api/policy/recognizers \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "If-Match: $ETAG" \
-d '{
"id": "rec.employee_id",
"name": "社員番号認識器",
"entity_type": "JPII_EMPLOYEE_ID",
"pattern": "EMP-\\d{6}",
"priority": 90
}'
Pythonでの使用例
python
import requests
class PatternRecognizerManager:
# base_url: デモ環境(本番環境では専用エンドポイントを提供)
def __init__(self, api_key, base_url="https://api.pii-fi.com/api"):
self.api_key = api_key
self.base_url = base_url
self.headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {api_key}"
}
def _get_etag(self):
"""アクティブポリシーからETagを取得"""
response = requests.get(
f"{self.base_url}/policy/active",
headers=self.headers
)
response.raise_for_status()
return response.headers.get("ETag")
def add_recognizer(self, recognizer_config):
"""認識器を追加(ETag必須)"""
etag = self._get_etag()
headers = {**self.headers, "If-Match": etag}
response = requests.post(
f"{self.base_url}/policy/recognizers",
headers=headers,
json=recognizer_config
)
response.raise_for_status()
return response.json()
def list_recognizers(self):
"""認識器一覧を取得"""
response = requests.get(
f"{self.base_url}/policy/recognizers",
headers=self.headers
)
response.raise_for_status()
return response.json()
def delete_recognizer(self, recognizer_id):
"""認識器を削除(ETag必須)"""
etag = self._get_etag()
headers = {**self.headers, "If-Match": etag}
response = requests.delete(
f"{self.base_url}/policy/recognizers/{recognizer_id}",
headers=headers
)
response.raise_for_status()
return response.json()
# === 使用例 ===
manager = PatternRecognizerManager("YOUR_API_KEY")
# 社員番号認識器を追加
manager.add_recognizer({
"id": "rec.employee_id",
"name": "社員番号認識器",
"entity_type": "JPII_EMPLOYEE_ID",
"pattern": r"EMP-\d{6}",
"priority": 90
})
# 契約番号認識器を追加
manager.add_recognizer({
"id": "rec.contract_id",
"name": "契約番号認識器",
"entity_type": "JPII_CONTRACT_ID",
"pattern": r"CNT-\d{4}-[A-Z]\d{3}",
"priority": 85
})
# 認識器一覧を確認
recognizers = manager.list_recognizers()
for rec in recognizers.get("recognizers", []):
print(f"- {rec['name']}: {rec['pattern']}")
設定パラメータ
| パラメータ | 必須 | 説明 |
|---|---|---|
id |
Required | 認識器の一意ID(例: rec.employee_id) |
name |
Required | 認識器の名前 |
entity_type |
Required | 検出時に割り当てるエンティティタイプ |
pattern |
Required | 正規表現パターン(Python互換) |
priority |
Optional | 優先度(default: 80)。高いほど優先 |
context_words |
Optional | 周辺に存在すべきキーワード(精度向上用) |
score |
Optional | 検出時の信頼度スコア(default: 0.85) |
高度な設定
コンテキストワードによる精度向上
context_wordsを設定すると、パターンマッチに加えて周辺のキーワードも確認し、
誤検出を減らせます。
json
{
"id": "rec.employee_id",
"name": "社員番号認識器",
"entity_type": "JPII_EMPLOYEE_ID",
"pattern": "EMP-\\d{6}",
"context_words": ["社員", "担当者", "連絡先", "従業員"],
"priority": 90
}
複数パターンの登録
同じエンティティタイプに対して複数の認識器を登録できます。
python
# 同じエンティティタイプで複数パターン
patterns = [
{"id": "rec.emp_v1", "pattern": r"EMP-\d{6}", "name": "社員番号(新形式)"},
{"id": "rec.emp_v2", "pattern": r"E\d{5}", "name": "社員番号(旧形式)"},
{"id": "rec.emp_v3", "pattern": r"社員[##]\d+", "name": "社員番号(日本語形式)"},
]
for p in patterns:
manager.add_recognizer({
**p,
"entity_type": "JPII_EMPLOYEE_ID",
"priority": 90
})
ベストプラクティス
💡 推奨事項
- IDの命名規則:
rec.プレフィックスで統一すると管理しやすい - 優先度の設計: 禁止ワードは100、業務ID系は80-90、一般パターンは70程度
- テスト: 本番投入前に検出APIでパターンの動作を確認
- 正規表現のエスケープ: JSONではバックスラッシュを二重にする必要あり
API Reference
パターンマッチ認識器の詳細なAPI仕様は以下を参照してください。