如何识别长多用户互联网聊天记录中的特定用户?

时间:2011-07-06 20:39:41

标签: python nlp machine-learning nltk opennlp

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

有什么方法可以解决这个问题?

从随机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”。在模棱两可的情况下,比如上面例子中的随机评论(任何其他用户也可以这么说!),代码应该表明相同。

2 个答案:

答案 0 :(得分:3)

我想到了两件事:作者身份归属 chat disentaglement 。这两者都不是你所描述的,但它们都非常接近。

作者身份归属是试图找出一组已知作者撰写特定文档的问题。经典作者身份归属通常用于大部分文本(例如戏剧,小说,演讲),但人们一直试图在来自互联网资源的较短文本样本上做同样的事情。一个很好的参考可能是Moshe Koppel在标题中用“作者身份”写的任何内容,例如最近的论文Authorship Attribution in the Wild。该任务的通常方法涉及使用典型的文档分类方法,即使用词袋特征和机器学习分类器,对一组通常被认为是停用词(例如,等等)的词。这里的问题是所有这些工作都在文档上,并没有考虑到IRC数据的会话性质。

聊天解开是从聊天数据中识别出一些连贯的“对话”的问题。这是一个非常难的问题,因为您经常需要使用对话的上下文来了解谁回复谁。我想这种方法对这项任务也很重要。例如,如果匿名消息是对话的一部分,则会将作者集限制为对话中的人。我真的只从Elsner和Charniak的论文Disentangling Chat中了解到这一点。他们的“相关工作”部分是对该领域的一个很好的概述。

答案 1 :(得分:0)

一种可能的解决方案是采用朴素贝叶斯分类器“垃圾邮件过滤器”的想法,看看不同的词汇倾向于使用哪些词。根据哪个用户使用“最喜欢”来自未知用户的单词来对消息进行分类。如果他们使用了你之前从未见过的新单词(这很可能),那么你需要了解更高级别的上下文信息。