MSQueue

核心思想是:通过将消息按其消息类型语义相关性进行分类管理。

实现方法包括三个队列:

  • queue1 用于存储管理员消息

  • queue2queue3 分别存储与主题高度相关和不相关的用户消息。这里使用Vector Similarity计算语义相似度分数将弹幕消息分为(0~0.4相关,0.4~1不相关)两类

我们在各个消息队列中使用先入先出的策略。即按照 queue1queue2queue3 的顺序依次弹出,实现了管理员消息优先处理和语义相关性较高消息的优先级管理。

class MSQueue(DynamicMessageQueue):
    def push(self, message: Message):
    // 省略

    def pop(self) -> Message:
        if len(self.queue1) != 0 :
            return self.queue1.pop(0)
        if len(self.queue2) != 0 :
            return self.queue2.pop(0)
        if len(self.queue3) != 0 :
            return self.queue3.pop(0)
        raise ValueError("the queue is empty")

最后更新于