如何在长的多用户互联网聊天日志中识别特定用户?
作者:互联网
这是我们计划举行的在线编程竞赛.
解决该问题的可能方法是什么?
从随机IRC(Internet中继聊天)日志中,一小部分用户昵称将被随机删除.参与者的代码必须能够填写缺少的用户昵称.换句话说,此事件要求您提出一个智能程序,该程序可以弄清楚“谁可以说什么”.
可以假定所有通信都将使用现代英语(带有或不带有标点符号).
例如 –
原始聊天:
…
< user1> ;:嗨!
< user2> ;:您好!您来自哪里,user1?
< user3> ;:有人可以帮我安装Gnome吗?
< user1> ;:印度. user3,您是否安装了X Windows系统?
< user2> ;:太酷了.什么是Gnome,user3?
< user3> ;:我不知道.我该如何检查?
< user3> ;:桌面环境user2.
< user2> ;:哦,是的!刚刚谷歌.
< user1> ;:在命令行上键入“ startx”.以root用户身份登录,然后键入“ apt-get install gnome”.
< user3> ;:谢谢!
< user5> ;:我是root,服从我!
< user2> ;:嗯?
< user3> ;: user2,最好开始使用Linux!
…
以下内容仅提供给参与者.
删除了一些缺刻的聊天记录:
..
:嘿!
: 你好!您来自哪里,user1?
:有人可以帮我安装Gnome吗?
:印度. user3,您是否安装了X Windows系统?
:好酷.什么是Gnome,user3?
< %%%> ;:我不知道.我该如何检查?
< %%%> ;:它是桌面环境user2.
: 哦耶!刚刚谷歌.
:在命令行上键入“ startx”.以root用户身份登录,然后键入“ apt-get install gnome”.
: 谢谢!
< %%%> ;:我是根,服从我!
< %%%> ;:嗯?
:user2,您最好开始使用Linux!
…
参与者的代码将负责用适当的用户昵称替换“< %%%> s”.在模棱两可的情况下,例如上面示例中的随机注释(其他用户也可能说过!),代码应指出相同的内容.
解决方法:
我想到两件事:作者身份归属和聊天脱离.两者都不完全是您所描述的,但是两者都非常接近.
作者身份归因是试图找到已知作者中的哪一组撰写了特定文档的问题.经典著作权归属通常用于大段文字(例如戏剧,小说,演讲),但人们一直在尝试从互联网上获取较短的文字样本.一个很好的参考文献可能是Moshe Koppel标题中带有“作者”字样的任何内容,例如最近的论文Authorship Attribution in the Wild.完成此任务的常用方法是使用典型的文档分类方法,即使用单词袋功能和机器学习分类器,在通常被视为停用词的一组词(例如,of,the等)上.这里的问题是所有这些工作都在文档上,没有考虑IRC数据的对话性质.
聊天纠缠是从聊天数据中识别许多连贯的“对话”的问题.这是一个非常棘手的问题,因为您通常需要使用对话的上下文来知道谁在回复谁.我想这种方法对这项任务也很重要.例如,如果匿名消息是对话的一部分,则将作者集限制为对话中的人员.我真的只从Elsner和Charniak的论文Disentangling Chat中知道这一点.他们的“相关工作”部分很好地概述了该领域.
标签:machine-learning,nlp,nltk,opennlp,python 来源: https://codeday.me/bug/20191208/2089693.html