这是我们计划举办的在线编程竞赛。
有什么方法可以解决这个问题?
从随机IRC(Internet中继聊天)日志中,将随机删除一小部分用户昵称。参与者的代码必须能够填写缺少的用户缺口。换句话说,这个事件需要你提出一个智能程序,可以找出“谁可以说什么”。
可以假设所有通信都是现代英语,有或没有标点符号。
例如 -
原创聊天:
...
<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!
...
以下内容仅供参与者使用。
删除了一些缺刻的聊天记录:
...
:嘿! :您好!你来自哪里,user1? :有人可以帮我安装Gnome吗? :印度。 user3,你安装了X Windows系统吗? :很酷。什么是Gnome,user3? &lt; %%%&gt; :我不知道。我该如何检查? &lt; %%%&gt;:它是一个桌面环境user2。 :哦,是的!只是谷歌搜索。 :在命令行中输入“startx”。以root身份登录并输入“apt-get install gnome”。 :谢谢! &lt; %%%&gt; :我是root,顺从我吧! &lt; %%%&gt; :嗯?! :user2,您最好开始使用Linux! ......
参与者的代码将负责用适当的用户缺口替换“&lt; %%%&gt; s”。在模棱两可的情况下,比如上面例子中的随机评论(任何其他用户也可以这么说!),代码应该表明相同。
答案 0 :(得分:3)
我想到了两件事:作者身份归属和 chat disentaglement 。这两者都不是你所描述的,但它们都非常接近。
作者身份归属是试图找出一组已知作者撰写特定文档的问题。经典作者身份归属通常用于大部分文本(例如戏剧,小说,演讲),但人们一直试图在来自互联网资源的较短文本样本上做同样的事情。一个很好的参考可能是Moshe Koppel在标题中用“作者身份”写的任何内容,例如最近的论文Authorship Attribution in the Wild。该任务的通常方法涉及使用典型的文档分类方法,即使用词袋特征和机器学习分类器,对一组通常被认为是停用词(例如,等等)的词。这里的问题是所有这些工作都在文档上,并没有考虑到IRC数据的会话性质。
聊天解开是从聊天数据中识别出一些连贯的“对话”的问题。这是一个非常难的问题,因为您经常需要使用对话的上下文来了解谁回复谁。我想这种方法对这项任务也很重要。例如,如果匿名消息是对话的一部分,则会将作者集限制为对话中的人。我真的只从Elsner和Charniak的论文Disentangling Chat中了解到这一点。他们的“相关工作”部分是对该领域的一个很好的概述。
答案 1 :(得分:0)
一种可能的解决方案是采用朴素贝叶斯分类器“垃圾邮件过滤器”的想法,看看不同的词汇倾向于使用哪些词。根据哪个用户使用“最喜欢”来自未知用户的单词来对消息进行分类。如果他们使用了你之前从未见过的新单词(这很可能),那么你需要了解更高级别的上下文信息。