Jus*_* L. 6 algorithm heuristics
问题:我有一系列聊天消息 - 两个用户之间 - 带有时间戳.比如说,我可以同时呈现一整天的聊天消息.然而,在一整天中,存在多个离散的对话/会话......并且对于用户而言,将这些分开而不是作为一个连续流的所有日子将更有用.
是否存在可以"推断"隐式会话/会话从时间戳开始/中断的算法或启发式算法?除了任意'如果差距大于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)
Run Code Online (Sandbox Code Playgroud)
使用贝叶斯规则:
= P(delay=T | new conversation)*P(new conversation)/P(delay=T)
Run Code Online (Sandbox Code Playgroud)
同样的计算也适用于P(old conversation | delay=T)。
P(delay=T | new conversation)来自模型。P(new conversation)可以根据用于生成模型的数据轻松计算。P(delay=T)您根本不需要计算,因为您要做的只是比较两个概率。
相邻消息之间的时间戳差异取决于对话类型和参与人员。因此,您需要一种考虑局部特征的算法,而不是全局阈值参数。
我的建议如下:
当然,这些数字是我当场得出的。它们必须进行调整以适应您的目的。
| 归档时间: |
|
| 查看次数: |
651 次 |
| 最近记录: |