アカウント自動判定のロジックと精度向上
アカウント自動判定のロジックと精度向上
課題
「明日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%