Algorithm 通过';对话'/来自时间戳的隐式会话?

Algorithm 通过';对话'/来自时间戳的隐式会话?,algorithm,heuristics,Algorithm,Heuristics,问题是:我有一系列聊天信息——在两个用户之间——带有时间戳。比如说,我可以一次发布一整天的聊天信息。然而,在整个一天中,有多个离散的对话/会话……对于用户来说,更有用的是将这些对话/会话分割开来,而不是将所有的日子作为一个连续的流 是否有一种算法或启发式方法可以从时间戳“推断”隐式会话/对话开始/中断?除了一个任意的“如果间隔超过x分钟,这是一个单独的会话”。如果这是唯一的情况,这个时间间隔是如何确定的?无论如何,我想避免这种情况 例如,有…50条消息在2:00和3:00之间发送,然后中断,然后

问题是:我有一系列聊天信息——在两个用户之间——带有时间戳。比如说,我可以一次发布一整天的聊天信息。然而,在整个一天中,有多个离散的对话/会话……对于用户来说,更有用的是将这些对话/会话分割开来,而不是将所有的日子作为一个连续的流

是否有一种算法或启发式方法可以从时间戳“推断”隐式会话/对话开始/中断?除了一个任意的“如果间隔超过x分钟,这是一个单独的会话”。如果这是唯一的情况,这个时间间隔是如何确定的?无论如何,我想避免这种情况

例如,有…50条消息在2:00和3:00之间发送,然后中断,然后在4:00和5:00之间发送20条消息。在它们之间会插入一个中断…但是如何确定中断

我确信已经有关于这个主题的文献,但我只是不知道要寻找什么

有一段时间我一直在玩弄边缘检测算法和基于梯度的方法

(更多说明请参见评论)

编辑(更好的主意):

您可以将每条消息视为两种类型:

  • 上一次谈话的继续
  • 全新的对话
  • 您可以将这两种类型的消息建模为独立的消息,其中相邻消息之间的时间差是一个参数

    然后,您可以根据经验手动确定这两类消息的指数参数(如果提供一些初始数据,这并不太难)。现在您有了这两个事件的模型

    最后,当出现一条新消息时,您可以计算该消息属于类型1或类型2的概率。如果输入2,则您有一个新的对话

    澄清:

    假定延迟为一段时间
    T
    ,则消息成为新会话的概率

    P(new conversation | delay=T) = P(new conversation AND delay=T)/P(delay=T)
    
    使用贝叶斯规则:

    = P(delay=T | new conversation)*P(new conversation)/P(delay=T)
    
    同样的计算也适用于
    p(旧对话|延迟=T)

    p(延迟=T |新对话)
    来自模型
    P(新对话)
    很容易从用于生成模型的数据中计算出来
    P(delay=T)
    您根本不需要计算,因为您只需要比较这两种概率


    相邻消息之间的时间戳差异取决于对话类型和参与人员。因此,您需要一个考虑局部特性的算法,而不是全局阈值参数

    我的建议如下:

  • 获取最近10条相邻消息之间的时间差
  • 计算平均值(或中位数)
  • 如果到下一条消息的延迟超过平均值的30倍,则这是一次新的对话

  • 当然,我当场就想到了这些数字。它们必须根据您的目的进行调整。

    我认为您不能根据时间来进行调整,因为在线聊天往往有点脱节。有人可能会问一个问题或其他什么,而另一个人很忙,或者半路上,他们被一个“真实”的人、电话,甚至是另一个聊天会话转移了注意力。也许,我不确定这会是怎样的结果,你可以通过提问和聊天来打破它question@Keith我对“足够好”很感兴趣算法适用于不太理想的情况。例如,边缘检测算法并不完美——它们有时会丢失边缘并添加幻影边缘。但是他们已经足够胜任他们的工作了。而且,我认为,一个让人们离开手机一段时间的会话中断的实现对于满足这种需求来说已经足够好了。我唯一真正想做的就是把一天的信息分成一个更容易理解、更易于阅读的呈现阅读关于聚类算法的内容。我认为您可以使用DBSCAN,尽管可能存在一些更简单的方法,因为您基本上是将点聚集在一条线上。编辑中的建议很吸引人。不过,我对它的数学知识不太熟悉;我如何确定一条消息属于哪种类型的概率?首先使用指数回归确定每种类型的概率分布。一旦你有了分布,你可以通过把它插入密度函数来计算概率。我想我明白你的意思了。每种类型的事件都以给定的频率发生……所以在每一个时间点上,都有概率发生在最后一个时间点之后的x个持续时间,由分布决定。就其本身而言,它是“到期”的概率。当一个类型2“到期”的数量超过一个类型1“到期”的数量时,它可能是一个类型2?是的,这是正确的。让我编辑我的答案,让它更清楚。在考虑了它并开始实施之后,我才意识到…这基本上不是一种寻找固定截止延迟参数的方法吗?各自的概率仅基于T和固定常数。实际上,两个相等的T是每次对话的固定截止值,对吗?