这是我们计划举办的在线编程竞赛。
有哪些可能的解决方法?
从随机的 IRC(互联网中继聊天)日志中,一小部分用户昵称将被随机删除。参与者的代码必须能够填补缺失的用户昵称。换句话说,这个事件需要你想出一个智能程序,可以弄清楚“谁能说什么”。
可以假设所有交流都将使用现代英语,有或没有标点符号。
例如-
原始聊天:
...
<user1>: Hey!
<user2>: Hello! Where are you from, user1?
<user3>: Can anybody help me out with Gnome installation?
<user1>: India. user3, do you have the X Windows System installed?
<user2>: Cool. What is Gnome, user3?
<user3>: I don’t know. How do I check?
<user3>: Its a desktop environment, user2.
<user2>: Oh yeah! Just googled.
<user1>: Type “startx” on the command line. Login as root and type “apt-get install gnome”.
<user3>: Thanks!
<user5>: I’m root, obey me!
<user2>: Huh?!
<user3>: user2, you better start using Linux!
...
以下内容只会提供给参与者。
删除了一些昵称的聊天记录:
..
:嘿! :您好!用户 1,你来自哪里? :有人可以帮我安装 Gnome 吗? :印度。 user3,你有没有安装X Windows 系统? :很酷。什么是 Gnome,用户 3? <%%%>:我不知道。我如何检查? <%%%>: 是桌面环境,user2。 :哦耶!刚刚用谷歌搜索。 :在命令行输入“startx”。以 root 身份登录并键入“apt-get install gnome”。 :谢谢! <%%%>:我是 root,服从我! <%%%>:啊?! :user2,你最好开始使用Linux! ...
参与者的代码将负责用适当的用户昵称替换“<%%%>s”。在模棱两可的情况下,如上例中的随机评论(其他任何用户也可能说过!),代码应指示相同。
最佳答案
我想到了两件事:作者归属 和聊天分离。两者都不完全符合您的描述,但它们都非常接近。
作者归属是试图找出已知作者中的哪位作者撰写了特定文档的问题。经典作者署名通常用于大段文本(例如戏剧、小说、演讲),但人们一直在尝试对来自互联网资源的较短文本样本做同样的事情。一个很好的引用可能是 Moshe Koppel 写的任何东西标题中带有“作者身份”,例如最近的论文 Authorship Attribution in the Wild .此任务的常用方法涉及使用典型的文档分类方法,即在一组通常被认为是停用词(例如 as、of、the 等)上使用词袋特征和机器学习分类器。这里的问题是所有这些工作都是在文档上进行的,并没有考虑到 IRC 数据的对话性质。
聊天解耦是从聊天数据中识别多个连贯的“对话”的问题。这是一个相当困难的问题,因为您经常需要使用对话的上下文来了解谁在回复谁。我想这种方法对这项任务也很重要。例如,如果匿名消息是对话的一部分,则将作者集限制为对话中的人。我真的只从论文中知道这个Disentangling Chat埃尔斯纳和查尼亚克。他们的“相关工作”部分很好地概述了该领域。
关于python - 如何在冗长的多用户互联网聊天记录中识别特定用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6602664/