哪种(天真的)NLP 方法用于关联聊天室中的人类消息?

数据挖掘 Python scikit-学习 nlp
2022-02-22 08:08:18

假设一个在线聊天室充满了许多“alt”帐户——即,多个帐户由一个用户控制,一个巨魔。该用户利用多个帐户将对话引导到特定方向以满足他们的需求。该用户还可能会更改每个帐户的语音模式,以避免被发现。

假设我想通过使用某种 NLP 分类器来检测这些 alt 帐户。最好的方法是什么?其中“最佳”意味着有效,但设置起来也相对简单——就像你可以在 python 中使用相对基本的 sklearn 模块所做的那样。

到目前为止,我尝试的是收集每个用户最常用的 100 个单词,然后将该语料库放入 sklearn.feature_extraction.text.TfidfVectorizer,然后查看成对相似度。这些大多是停用词,大多数在线 NLP 文章都告诉我忽略这些词。但我认为这些基本的(几乎是无意识地使用的)词不太可能受到混淆。例如,用户可能正在应用不常见单词的不同拼写(实现与实现等) - 但用户无法合理地为 [“the”、“of”、“you”、“one”] 提供替代拼写等等

就像我说的,这不是一种“高级”方法,但它是我愿意承担的一般复杂程度的一个例子。这种方法是否有效?如果没有,你能推荐一个更好的吗?

1个回答

这是一个文体测量任务,更确切地说是某种形式的作者验证/识别任务。如果您想深入挖掘,PAN 研讨会系列是数据集和方法的良好来源。

关于你的方法:

  • 关于选择最常用的词,尤其是停用词,你的直觉是正确的:写作风格更能以频繁的语法结构中的模式为特征,而不是内容词的选择。但是,根据数据的大小,您可能希望对单词的数量更加灵活:如果您有足够的数据,您可能应该多于前 100 个常用词。如果你不这样做,那么......它可能不会很好地工作。另请注意,一些成功的方法不使用高频词,而是使用一系列中频词。
  • 使用 TFIDF 在风格识别方面存在争议。它通常只使用术语频率来代替。

您可以考虑的其他功能:

  • 单词 n-gram,如果有足够的数据,通常是 bigrams 甚至 trigrams。
  • 字符 n-grams(通常是 trigrams)具有令人惊讶的特性,即是样式检测的非常健壮的特征。如果您使用这些,请不要应用任何标记器或删除标点符号。