如何根据上下文将 WhatsApp 上的对话分成多个块?

How to split a conversation on WhatsApp in multiple blocks based on the context?

假设我下载了一个 csv 文件,其中包含过去 6 个月我与朋友的所有对话(WhatsApp 聊天)。我想将该 csv 文件分成多个“块”(每个块定义不同的对话)。例如:

第 1 天:

第 2 天:

第 3 天:

所以想法是确定在我的 WhatsApp 聊天中,如果我们按照我提供的示例,应该有 3 个不同的对话块,两个由 U1 发起,一个由 U2 发起。

我无法按时间拆分,因为有些用户可能需要足够长的时间才能回复上一条消息。所以看来我应该能够确定聊天中出现的新句子是否与之前的对话“块”有关,或者它是否真的开始了一个新的块。

如果我想在一次聊天中识别不同的对话,或者如果一个句子继续前一个 conversation/starting 一个新的句子,我需要遵循哪些步骤?

谢谢!!

我认为即使您不喜欢时间作为一个对话集团的代表,它的表现也可能与更复杂的 NLP 一样好。

如果您想尝试更复杂的事情,您需要对文本之间的语义相关性进行某种度量。一个经典的方法是嵌入你的 sentences/messages 例如使用句子 BERT(参见 sbert.net)并使用句子之间的余弦相似度。你可以说,一旦最后一个句子的嵌入与前面的句子太不相似,一个集团就结束了。或者,您甚至可以使用 BERT 进行下一句预测,以测试哪些句子可以跟随其他句子。 但尚不清楚这是否比简单的时间代理性能更好。有时越简单越好:)