(更新: 2026.03.25)

アカウント自動判定のロジックと精度向上

アカウント自動判定のロジックと精度向上

課題

「明日14時にMTG」

これ、どのアカウントのカレンダーに登録すればいい?
– クロスリンクアカウント?
– プログラミングスクールアカウント?

毎回聞くのは面倒。自動判定したい。

解決策:キーワードマッチング

タスクの内容から、キーワードで判定:

def determine_account(text: str) -> str:
    crosslink_keywords = [
        'a社', 'b社', 'プロシーズ',
        'seo', 'ブログ', '記事',
        'ラーニング', '朝会', '求人'
    ]

    school_keywords = [
        '体験会', 'ココグラム', 'シフト', '座席表',
        '名古屋', '関西', '東海', '大阪'
    ]

    text_lower = text.lower()

    crosslink_score = sum(1 for kw in crosslink_keywords if kw in text_lower)
    school_score = sum(1 for kw in school_keywords if kw in text_lower)

    if crosslink_score > school_score:
        return 'crosslink'
    elif school_score > crosslink_score:
        return 'programming_school'
    else:
        return 'crosslink'  # デフォルト

精度向上の工夫

1. キーワードの追加

実際の使用ログから、判定ミスが起きたケースを分析:
– 「プロシーズさん定例会」 → crosslink
– 「一宮の体験会」 → programming_school

これらをキーワードに追加。

2. 重み付け

重要なキーワードにはスコアを2倍に:

important_keywords = {
    'a社': 2,
    '体験会': 2,
    'ココグラム': 2
}

score = sum(
    important_keywords.get(kw, 1)
    for kw in keywords
    if kw in text_lower
)

3. 確認フロー

自動判定でも、不確実な場合は確認:

if crosslink_score == school_score:
    # 同点 → 確認する
    return ask_user_for_confirmation(text)
else:
    # 明確 → 即登録
    return determined_account

現在の精度

  • 正解率: 約92%
  • 誤判定の主な原因: 新しい固有名詞

今後の改善

  • 過去の判定履歴から学習
  • 文脈を考慮(前後のタスクから判断)

開発時間: 1週間
誤判定率: 8%