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

标签 python nlp machine-learning nltk opennlp

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

有哪些可能的解决方法?

从随机的 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/

相关文章:

nlp - 如何理解和添加这个例子中的音节中断?

machine-learning - libsvm 不提供支持向量/无支持向量

machine-learning - Scikit learn 的 Spectral clustering 函数可以处理多大的矩阵大小?

python - 如何生成此自定义字母数字序列?

python - 属性错误 : 'MSVCCompiler' object has no attribute 'linker_exe'

python - 如何从BoundField获取数据?

machine-learning - 线性回归和逻辑回归有什么区别?

java - 用于查找规范覆盖或最小数量的函数依赖项的程序

python - 使用 Word Mover Distance 和 Bert-Embedding 记录相似度

machine-learning - 从自然语言文本中提取数据