Python 如何在长的多用户internet聊天日志中识别特定用户?

Python 如何在长的多用户internet聊天日志中识别特定用户?,python,nlp,machine-learning,nltk,opennlp,Python,Nlp,Machine Learning,Nltk,Opennlp,这是我们计划举办的一场在线编程竞赛 解决同样问题的可能方法是什么? 从随机IRC(Internet中继聊天)日志中,一小部分用户昵称将被随机删除。参与者的代码必须能够填写缺失的用户缺口。换句话说,这项活动需要你拿出一个智能程序,可以找出“谁说了什么” 可以假设所有的交流都是用现代英语进行的,无论有没有标点符号 比如说- 原创聊天: 。。。 :嘿! :你好!你从哪里来,用户1? :有人能帮我安装Gnome吗? :印度。user3,你安装了X Windows系统吗? :酷。什么是侏儒,用户3? 例如

这是我们计划举办的一场在线编程竞赛

解决同样问题的可能方法是什么?

从随机IRC(Internet中继聊天)日志中,一小部分用户昵称将被随机删除。参与者的代码必须能够填写缺失的用户缺口。换句话说,这项活动需要你拿出一个智能程序,可以找出“谁说了什么”

可以假设所有的交流都是用现代英语进行的,无论有没有标点符号

比如说-

原创聊天:
。。。
:嘿!
:你好!你从哪里来,用户1?
:有人能帮我安装Gnome吗?
:印度。user3,你安装了X Windows系统吗?
:酷。什么是侏儒,用户3?
例如我不知道。我怎么检查?
:这是一个桌面环境,user2。
:哦,是的!只是谷歌搜索。
:在命令行上键入“startx”。以root用户身份登录并键入“apt get install gnome”。
:谢谢!
字体我是根,听我的!
:啊?!
:user2,你最好开始使用Linux!
…

以下仅提供给参与者

删除了一些刻痕的聊天日志:

:嘿! :你好!你从哪里来,用户1? :有人能帮我安装Gnome吗? :印度。user3,你安装了X Windows系统吗? :酷。什么是侏儒,用户3? :我不知道。我怎么检查? 这是一个桌面环境,用户2。 :哦,是的!只是谷歌搜索。 :在命令行中键入“startx”。以root用户身份登录并键入“apt get install gnome”。 :谢谢! :我是根,服从我! :嗯?! :用户2,你最好开始使用Linux! ...


参与者代码的任务是用适当的用户刻痕替换“s”。在模棱两可的情况下,如上面示例中的随机注释(任何其他用户也可能会这样说!),代码应该表明相同的情况。

一个可能的解决方案是采用朴素贝叶斯分类器“垃圾邮件过滤器”的思想,看看不同的尼克倾向于使用哪些词。根据哪些用户使用“最像”未知用户发送的消息对消息进行分类。这样做的缺点是,如果他们使用的是你以前没有见过的新词(很可能),那么你就需要理解更高层次的上下文信息。

我想到两件事:作者归属聊天分离。两者都不是你描述的那样,但它们都非常接近

作者归属是一个问题,即试图找出一组已知的作者中谁写了一个特定的文档。经典的作者归属通常用于大量文本(如戏剧、小说、演讲),但人们一直试图在互联网来源的较短文本样本上使用相同的方法。一个好的参考文献可能是任何在标题中带有“作者身份”的作者所写的东西,例如最近的论文。此任务的常用方法包括使用典型的文档分类方法,即在一组通常被认为是停止词(例如as、of、The等)上使用单词包特征和机器学习分类器。这里的问题是,所有这些工作都是在文档上进行的,没有考虑IRC数据的会话性质


聊天分离是从聊天数据中识别大量连贯的“对话”的问题。这是一个相当困难的问题,因为你经常需要使用对话的上下文来知道谁在回答谁。我认为这种方法对这项任务也很重要。例如,如果匿名消息是对话的一部分,则将作者集限制为对话中的人。我只从埃尔斯纳和查尼亚克的报纸上知道这一点。他们的“相关工作”部分很好地概述了该领域。

问题很酷!你会提供一个完全标记聊天的训练集吗?你给出的例子已经删除了所有的刻痕,并要求重建一小部分。亲爱的贝尼,请忽略这个例子。在www.robotix.in/events/echelon上查找完整的问题陈述和示例聊天日志。