From 31f03576c5414b452ae62dc30575dbd148a5e290 Mon Sep 17 00:00:00 2001 From: Barbara Vreede Date: Thu, 4 Jan 2024 13:56:54 +0100 Subject: [PATCH] allow user to remove data based on fields --- sktalk/corpus/conversation.py | 11 ++++++++++- tests/corpus/test_conversation.py | 8 ++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/sktalk/corpus/conversation.py b/sktalk/corpus/conversation.py index 0167aee..1d11818 100644 --- a/sktalk/corpus/conversation.py +++ b/sktalk/corpus/conversation.py @@ -142,7 +142,7 @@ def summary(self, n=10, **kwargs): kwargs (dict): key-value pairs with which specific utterances can be selected """ selected = self.select(**kwargs) - for u in selected._utterances[:n]: + for u in selected.utterances[:n]: if len(u.time) != 2: time = "(no timing information)" else: @@ -164,6 +164,15 @@ def select(self, **kwargs): utterances = [Utterance(**fields) for fields in utterances] return Conversation(utterances, suppress_warnings=True) + def remove(self, **kwargs): + """Remove utterances based on content in specific fields + + Args: + kwargs (dict): key-value pairs with which specific utterances can be selected + """ + to_remove = self.select(**kwargs) + self._utterances = [u for u in self._utterances if u not in to_remove._utterances] + def asdict(self): """ Return the Conversation as a dictionary diff --git a/tests/corpus/test_conversation.py b/tests/corpus/test_conversation.py index eff3c95..8c5ce21 100644 --- a/tests/corpus/test_conversation.py +++ b/tests/corpus/test_conversation.py @@ -60,6 +60,14 @@ def test_conversation_summary(self, convo, capfd): captured = capfd.readouterr() assert captured.out.strip() == "(5500 - 7500) C: '6 utterance F'" + def test_conversation_remove(self, convo, convo_meta): + assert convo.n_utterances == 10 + convo.remove(participant = "A") + assert convo.n_utterances == 7 + # metadata is unaffected + assert convo.metadata == convo_meta + convo.remove(time = None) + assert convo.n_utterances == 6 class TestConversationMetrics: @pytest.mark.parametrize("args, error",