アカウント自動判定のロジックと精度向上
アカウント自動判定のロジックと精度向上
「明日14時にMTG」と投げたとき、クロスリンクのカレンダーに入れるべきか、プログラミングスクールのカレンダーに入れるべきかを自動判定する仕組みを作った。
最初はミスが多かったけど、改善を重ねて判定精度90%以上まで向上させた。
判定ロジック v1.0(初期版)
最初はシンプルなキーワードマッチング。
const detectAccount = (text) => {
if (/クロスリンク|SEO|ブログ|求人/.test(text)) {
return 'crosslink';
}
if (/プログラミング|スクール|関西|東海/.test(text)) {
return 'programming_school';
}
return 'crosslink'; // デフォルト
};
問題点
- 「求人原稿の打ち合わせ」→ クロスリンク ✅
- 「体験会」→ デフォルトでクロスリンク ❌(プログラミングスクールのはず)
キーワードが含まれていないと誤判定が起きる。
判定ロジック v2.0(スコアリング方式)
複数のキーワードにスコアを付けて、合計点で判定。
const detectAccount = (text) => {
let crosslinkScore = 0;
let programmingScore = 0;
// クロスリンク系キーワード
if (/クロスリンク|SEO|ブログ|求人|eラーニング/.test(text)) crosslinkScore += 10;
if (/森田|嶋津|大平/.test(text)) crosslinkScore += 5;
// プログラミングスクール系キーワード
if (/プログラミング|スクール|体験会|シフト|座席表/.test(text)) programmingScore += 10;
if (/関西|東海|ココグラム|名古屋/.test(text)) programmingScore += 5;
return programmingScore > crosslinkScore ? 'programming_school' : 'crosslink';
};
精度向上
- 「体験会」→ プログラミングスクール ✅
- 「SEO記事の打ち合わせ」→ クロスリンク ✅
でもまだ誤判定が残る。
判定ロジック v3.0(文脈理解)
AIに文脈を判定させる。
const detectAccount = async (text) => {
const prompt = `
以下のタスクはどちらのアカウントに関連していますか?
タスク: ${text}
アカウント:
- crosslink: 株式会社クロスリンク(SEO記事、eラーニング、求人関連)
- programming_school: プログラミングスクール(体験会、シフト、座席表、関西・東海・名古屋)
回答は "crosslink" または "programming_school" のみ。
`;
const response = await ai.analyze(prompt);
return response.trim();
};
結果
- 精度が90%以上に向上
- キーワードが含まれていなくても、文脈から正しく判定できる
実際の判定例
| タスク | 判定結果 | 正解 |
|---|---|---|
| 明日14時にMTG | crosslink | ✅ |
| 体験会シフト作成 | programming_school | ✅ |
| SEO記事レビュー | crosslink | ✅ |
| 座席表作成 | programming_school | ✅ |
| 石井さんと打ち合わせ | crosslink | ✅ |
| 久保社長に連絡 | programming_school | ✅ |
まとめ
アカウント自動判定は、キーワード → スコアリング → AI判定と段階的に改善。
最終的にはAIに任せるのが一番正確で、メンテナンスも楽。
タグ: #AI活用 #自動化 #精度向上