Talk-Time Sharing Dynamics¶
The TalkTimeSharing transformer measures how talk-time is distributed between speakers throughout a conversation—–capturing both the overall conversation-level imbalance and the fine-grained dynamics that lead to it. The method and analysis are presented in the paper: Time is On My Side: Dynamics of Talk-Time Sharing in Video-chat Conversations.
Our approach surfaces patterns in how speakers alternate dominance, engage in back-and-forths, or maintain relatively equal control of the floor. We show that even when conversations are similarly balanced overall, their temporal talk-time dynamics can lead to diverging speaker experiences. This framework can be extended to a wide range of dialogue settings, including multi-party and role-asymmetric interactions.
We present a demo, which applies the TalkTimeSharing transformer to the CANDOR corpus, highlighting conversational patterns in video-chat settings. We then extend the analysis to Supreme Court oral arguments to demonstrate the method’s adaptability across different conversational domains. The demo is publically available: Talk-Time Sharing Dynamics in CANDOR Corpus and Supreme Court Oral Arguments
-
class
convokit.talktimesharing.talktimesharing.
TalkTimeSharing
(primary_threshold=0.50001, window_ps_threshold=0.6, window_ss_threshold=None, window_size=2.5, sliding_size=30, min_utt_words=0, remove_first_last_utt=True)¶ The TalkTimeSharing transformer quantifies and annotates conversations’ talk-time sharing dynamics between predefined speaker groups within a corpus.
It assigns each conversation a primary speaker group (more talkative), a secondary speaker group (less talkative), and a scalar imbalance score. It also computes a list of windowed imbalance scores over a sliding windows of the conversation to capture how talk-time sharing distribution unfolds over time.
Each utterance is expected to have a speaker group label under utt.meta[‘utt_group’], which can be precomputed or inferred from convo.meta[‘speaker_groups’]. Annotation of speaker groups for each utterance is required before using the TalkTimeSharing transformer. The transform() function assumes either convo.meta[‘speaker_groups’] or utt.meta[‘utt_group’] is already presented in the corpus for correct computation.
- Parameters
primary_threshold – Minimum talk-time share to label a group as the primary speaker.
window_ps_threshold – Talk-time share threshold for identifying dominance in a time window for primary speaker group.
window_ss_threshold – Talk-time share threshold for identifying dominance in a time window for secondary speaker group. If not provided, defaults to window_ps_threshold.
window_size – Length (in minutes) of each analysis window.
sliding_size – Step size (in seconds) to slide the window forward.
min_utt_words – Exclude utterances shorter than this number of words from the analysis.
remove_first_last_utt – Whether to exclude the first and last utterance.
-
fit_transform
(corpus: convokit.model.corpus.Corpus, selector: Callable[[convokit.model.conversation.Conversation], bool] = <function TalkTimeSharing.<lambda>>)¶ Same as transform.
- Parameters
corpus – Corpus to transform
selector – (lambda) function selecting conversations to include in this accuracy calculation;
-
summarize
(corpus: convokit.model.corpus.Corpus, selector: Callable[[convokit.model.conversation.Conversation], bool] = <function TalkTimeSharing.<lambda>>, high_balance_threshold: float = 0.5, mid_balance_threshold: float = 0.55, low_balance_threshold: float = 0.65, dominating_throughout_threshold: float = 75.0, back_and_forth_threshold: float = 60.0, alter_dominance_threshold: float = 25.0)¶ Summarizes the talk-time sharing dynamics across conversations in the corpus.
Categorizes conversations into balance types (high_balance, mid_balance, low_balance) and more fine-grained talk-time sharing dynamics types introduced in the paper (dominating_throughout, back_and_forth, alter_dominance) based on configurable thresholds.
If conversations are missing required metadata (balance_score, balance_lst), the transformer will automatically run on those conversations to annotate them before categorization.
- Parameters
corpus – Corpus to summarize
selector – (lambda) function selecting conversations to include in the summary
high_balance_threshold – Minimum balance score for high_balance category (default: 0.5)
mid_balance_threshold – Minimum balance score for mid_balance category (default: 0.55)
low_balance_threshold – Minimum balance score for low_balance category (default: 0.65)
dominating_throughout_threshold – Percentage threshold for dominating_throughout type (default: 75.0)
back_and_forth_threshold – Percentage threshold for back_and_forth type (default: 60.0)
alter_dominance_threshold – Percentage threshold for alter_dominance type (default: 25.0)
- Returns
Dictionary containing counts for each category
-
transform
(corpus: convokit.model.corpus.Corpus, selector: Callable[[convokit.model.conversation.Conversation], bool] = <function TalkTimeSharing.<lambda>>)¶ Computes and annotate talk-time sharing information for each conversation in the corpus.
Annotates the corpus with speaker group labels and if utterances utt_group metadata is missing, the data is assumed to be labeled in convo.meta[‘speaker_groups’].
Each conversation is then annotated with its primary and secondary speaker groups, an overall conversation level imbalance score, and a list of windowed imbalance score computed via sliding window analysis.
- Parameters
corpus – Corpus to transform
selector – (lambda) function selecting conversations to include in this accuracy calculation;
- Returns
The input corpus where selected data is annotated with talk-time sharing dynamics information