
コメントサンプルの準備
まず、仕様が分かっている収集ツールで公開スレッドを収集します。Reddit Commentsの公開ビルド1.0.7では、postUrlsに既知の公開Reddit投稿URLを1〜50件、maxCommentsPerPostに1〜500を指定できます。試行用には、サンプルのスレッドを置き換え、保存済みの上限値を250から3に変更してください。
OUTPUTの項目を確認します。確認対象には、`commentsSaved`、`duplicatesSkipped`、`hiddenBranchesRemaining`、`completionReason`、`status`、`isComplete`、`inputResults`と、入力ごとの`commentsFound`、`commentsSaved`、`status`、`reason`を含めてください。処理の完了と、スレッド全体を取得できたかどうかは分けて扱います。
データセットから、`postId`、`commentId`、`body`、`authorName`、`status`、`statusReason`、`observedAt`などの項目を抽出します。データセットのstatusの値は、`ok`、`deleted`、`removed`のみです。取得できない本文、削除された本文、管理者などにより除去された本文、IDの欠損、収集失敗は、分類に使える単位から除外してください。これらは別の判定欠損の記録表に残します。一意なコメント数を示す出力項目を探すのではなく、作業用の表で既知のIDを重複を除いて数えてください。
現行の公開ビルド1.0.7で実施したAskMarketingの対照テストでは、重複のない既知のコメントIDが3件と、それぞれ空白ではない本文が返されました。これは保存済みのLocalLLaMAサンプルの結果ではありません。このテストでは、処理のisCompleteがtrueであると同時に、入力の取得状態は部分取得または上限到達でした。この結果が示すのは試行用サンプルの取得であり、スレッド全体の取得ではありません。Parent、depth、hiddenBranchesRemainingはnullであり、このコーダー間の一致度を確認する方法では使いません。
独立した分類と一致度の確認を行う8つの手順
- 研究上の問いと、explicit_current_failureなどの対象を絞った二値判定ルールのバージョンを1つ明記します。該当例、非該当例、曖昧な例も示します。
- 両方のコーダーに同じ、件数を限定した公開サンプルを選びます。既知のコメントIDとソースURLを、非公開の作業用台帳に登録します。
- 使えない本文を対象サンプルから除外します。理由を明記し、判定欠損の記録表に残します。
- 各コーダーに、同じ本文と文脈、同じバージョンのルール、個別の判定シートを渡します。互いの作業を見ずに独立して判定してもらい、unknownも認めます。
- 確認済みのコメント単位IDで2枚の判定シートを結合します。不明、未記入、無効の判定は、判定欠損の記録表に残します。
- 両者の判定が確定している単位だけで2×2の表を作り、観測一致率、期待一致率、Cohenのκ係数を計算します。
- 独立した判定が終わった後に、不一致を元の文脈で確認し、ルールを明確にします。判定調整は、最初の統計量と分けて扱います。
- 独立して記入した元のシートを変更せずに保存します。改訂したルールにバージョンを付け、新しいサンプル、または再分類したことを明示したサンプルで検証します。
ルールの文書化と独立した分類の実施
研究上の問いと、対象を絞った二値判定ルールを1つ明記します。このガイドでは、分類コードをexplicit_current_failureとします。現在の製品の不具合が明記されている場合はyes、明記されていない本文にはnoを付けます。コーダー向けに、該当例、非該当例、曖昧な例を示してください。本文の意味や対象を特定できない場合は、unknownを認めます。
両方のコーダーに同じ、件数を限定した公開サンプルを選びます。既知のコメントIDとソースURLは、非公開の作業用台帳に保持してください。1件のコメント全体を1つの分類単位と定義します。使えない本文は、理由を明記して対象サンプルから除外します。各コーダーに、同じ本文と文脈、同じバージョンのルール、個別の判定シートを渡します。この判定作業中は、互いの判定を見てはいけません。コーダーはunknownを付けることができます。yesかnoの選択を強制しないでください。
一致率とκ係数の計算
確認済みのコメント単位IDで2枚の判定シートを結合します。コーダーAの判定、コーダーBの判定、ルールのバージョン、両者の判定が確定しているかどうかを記録してください。片方のシートにソースがない場合、それは不一致ではありません。両者の判定が確定している単位だけで2×2の表を作ります。
観測一致率をp_oと表します。これは、対角線上の両方の度数の合計をnで割った値です。期待一致率をp_eと表します。これは、対応するカテゴリについて、各コーダーの周辺比率を掛け合わせ、その積を合計した値です。Cohenのκ係数は、分母が非零の場合に、(p_o − p_e) ÷ (1 − p_e)で計算します。期待一致率は、これらのコーダーの周辺比率に基づくものであり、既知の母集団の正解ラベルに基づくものではありません。
架空の監査例と判定記録表
以下のコメント、判定、件数は、すべて独自に作成した架空のものです。対象となる本文の単位が22件あるとします。20件には独立した2つの確定判定があり、1件はコーダーAの判定がunknown、もう1件はコーダーBの判定が未記入です。一致度の集計表に含めるのは20件だけです。
架空の判定欠損の記録表
| 単位ID | コーダーA | コーダーB | ルールのバージョン | 両者の判定が確定 | 除外理由 |
|---|---|---|---|---|---|
| cmt_fictional_01 | unknown | yes | v1.0 | false | コーダーAの判定が不明 |
| cmt_fictional_02 | no | absent | v1.0 | false | コーダーBの判定が未記入 |
この記録表は、対象となる22件のソース単位のうち、判定の欠損によって除外した2件の詳細を示しています。残る20件は両者の判定が確定しており、一致度の集計表に含めます。判定の欠損は不一致ではなく、n = 20という分母には含めません。
主な一致度の集計表(両者の判定がそろった20件)
| コーダーA | コーダーB:Yes | コーダーB:No | 行合計 |
|---|---|---|---|
| Yes | 8 | 2 | 10 |
| No | 1 | 9 | 10 |
| 列合計 | 9 | 11 | 20 |
コーダーAの周辺度数は、yesが10件、noが10件です。コーダーBの周辺度数は、yesが9件、noが11件です。両者の判定がそろった20件のうち17件が一致しているため、観測一致率p_oは0.85です。
期待一致率p_eは、(10 ÷ 20 × 9 ÷ 20) + (10 ÷ 20 × 11 ÷ 20)で計算し、0.50になります。
Cohenのκ係数は、(0.85 − 0.50) ÷ (1 − 0.50)で計算し、0.70になります。
両者の判定がそろった中での不一致3件と、判定の欠損によって除外した2件は、分けて扱います。この小さな検証用テストケースは、実在する顧客にラベルを付けたものではなく、分類コードが正しいことを証明するものでもありません。
コメント本文の例とルールの適用
- 両者がyesと判定したコメント:「カレンダーの同期が毎朝失敗します。」(現在の不具合を直接述べています)。
- 両者がnoと判定したコメント:「カレンダーの色は青です。」(不具合を述べていません)。
- 希望を述べた曖昧なコメント:「カレンダーの同期ができればいいのに。」(現在の不具合を述べている可能性も、望む機能を述べている可能性もあります。書き手が機能を要望していると証明するものではありません。意図を決めつけず、不明または曖昧という判定と、後から得られた文脈やルールの明確化の内容を残してください)。
診断表1(一致率は高いがκ係数は低い場合)
| コーダーA | コーダーB:Yes | コーダーB:No | 行合計 |
|---|---|---|---|
| Yes | 18 | 1 | 19 |
| No | 1 | 0 | 1 |
| 列合計 | 19 | 1 | 20 |
コーダーの周辺度数は、コーダーAがyesを19件、noを1件、コーダーBもyesを19件、noを1件としています。単位の総数nは20です。観測一致率p_oは0.90です。期待一致率p_eは0.905です。κ係数は−1 ÷ 19で、約-0.05263です。
診断表2(κ係数が未定義になる場合)
| コーダーA | コーダーB:Yes | コーダーB:No | 行合計 |
|---|---|---|---|
| Yes | 20 | 0 | 20 |
| No | 0 | 0 | 0 |
| 列合計 | 20 | 0 | 20 |
コーダーの周辺度数は、コーダーAがyesを20件、noを0件、コーダーBもyesを20件、noを0件としています。単位の総数nは20です。観測一致率p_oと期待一致率p_eは、どちらも1です。このため、κ係数は未定義になります。未定義の値を完全一致のκ係数と呼んだり、あらゆる場合に適用できる合格基準を作り出したりしないでください。
不一致の確認とルールの改訂
独立した判定が終わった後に、不一致となったコメントを元の文脈で読みます。希望を述べたコメントでは、ルールの解釈によって、現在の不具合とも、望まれている機能とも判断できます。不一致を記録し、ルールの文面を明確にしてください。判定調整は後から共同で行う判断であり、元の一致度の統計量には含めません。
独立して記入した元のシートと集計表は、変更せずに保存します。改訂したルールにバージョンを付け、新しいサンプル、または再分類したことを明示したサンプルで検証してください。分類コードをより広く適用する前に、一致度の集計表、判定欠損の記録表、ルールの具体的な変更内容を提出します。
出典と参考資料
- https://online.stat.psu.edu/stat509/Lesson07#713-cohens-kappa-statistic-for-measuring-agreement
- https://online.stat.psu.edu/stat504/Lesson11
- https://www.reddit.com/r/ProductMarketing/comments/1liklfb/best_tactics_for_customer_research/
- https://www.reddit.com/r/SaaS/comments/1tb26ri/customer_research_on_reddit/
著者 Chronometrica · 更新日
ページの先頭へ ↑

