from Jigsaw Sensemakerとtttc-light-js勉強会 SensemakerにYouTubeの高評価だけ入れたらどうなる?
YouTubeからは高評価データは取れるが低評価データは取れない 高評価データだけを投票に入れたらどうなるか
return new VoteTally(Number(row["agrees"]), Number(row["disagrees"]), Number(row["passes"]));
YouTube由来のデータの場合:
// library/src/stats/stats_util.ts: 58-65行目
export function getPassRate(voteTally: VoteTally, asProbabilityEstimate: boolean = true): number {
const totalCount = voteTally.getTotalCount(true);
if (asProbabilityEstimate) {
return ((voteTally.passCount || 0) + 1) / (totalCount + 2);
} else {
return (voteTally.passCount || 0) / totalCount;
}
}
YouTube由来データでは:
this.filteredComments = comments.filter(isCommentWithVoteInfoType).filter((comment) => {
return getCommentVoteCount(comment, true) >= this.minVoteCount;
});
重要:minVoteCount = 20なので、高評価が20未満のコメントは分析対象外になります。
getCommonGroundAgreeComments(k: number = this.maxSampleSize) {
return this.topK(
(comment) => this.getCommonGroundAgreeScore(comment),
k,
(comment: CommentWithVoteInfo) => this.meetsCommonGroundAgreeThreshold(comment)
);
}
minCommonGroundProb = 0.7(70%)がしきい値です。YouTube由来で高評価があるコメントは賛成率がほぼ100%なので、ほぼすべてがCommon Groundとして抽出されます。高評価数が多いコメントほど優先されます。
getDifferenceOfOpinionComments(k: number = this.maxSampleSize) {
return this.topK(
(comment) => this.getDifferenceOfOpinionScore(comment),
k,
(comment: CommentWithVoteInfo) =>
getTotalAgreeRate(comment.voteInfo, this.includePasses, this.asProbabilityEstimate) >=
this.minDifferenceProb &&
getTotalAgreeRate(comment.voteInfo, this.includePasses, this.asProbabilityEstimate) <=
this.maxDifferenceProb &&
// ... 同様の条件がdisagree rateにも適用される
);
}
賛成率と反対率が両方とも40%-60%の範囲にある必要があります。YouTube由来データでは反対率≈0%なので、この条件を満たすコメントはほぼ存在せず、意見の相違は検出されません。
text = this.input.getCommonGroundNoCommentsMessage();
// "No statements met the thresholds necessary to be considered as a point of common ground
// (at least 20 votes, and at least 70% agreement)."
まとめ YouTube由来で高評価だけを賛成票として入れた場合: