嵌入与文本清理(NLP)

时间:2017-05-10 15:07:56

标签: python-3.x text nlp embedding data-cleaning

我是一名专注于ML和NLP的研究生。我有很多数据(800万行),文本写得很差,包含很多拼写错误。 所以我必须经历一些文本清理和矢量化。为此,我考虑了两种方法:

第一个:

使用hunspell包替换坏词来清理文本,hunspell包是一个拼写检查器和形态分析器 + 符号化 + 使用tf-idf将句子转换为向量

这里的问题是,有时,Hunspell无法提供正确的单词,并用另一个不具有相同含义的单词更改拼写错误的单词。此外,hunspell不会重新缩写首字母缩略词或缩写(在我的情况下非常重要)并且倾向于替换它们。

第二个问题:

标记化 + 使用一些嵌入方法(如word2vec)将单词转换为向量而不清除文本

我需要知道是否有一些(理论或经验)方法来比较这两种方法:)

请不要犹豫回答如果您有任何想法可以分享,我很乐意与您讨论。 提前谢谢

1 个答案:

答案 0 :(得分:1)

我在这里发帖只是为了更长篇幅地总结一下这些评论并给你更多评论。不确定它会回答你的问题。如果有的话,它应该告诉你为什么要重新考虑它。

关于您的问题的要点

在我谈论你的问题之前,让我指出一些关于你的方法的事情。单词嵌入本质上是基于单词分布的意义的数学表示。它们是“你应该知道它所保留的公司的一句话”这一短语的缩影。从这个意义上说,你需要非常规则的拼写错误才能从矢量空间方法中获得有用的东西。例如,可以解决的问题是美国与英国的拼写或缩写,如w8与完整形式如wait

我想澄清的另一点(或者你应该这样做)是你不打算在这里建立一个机器学习模型。你可以考虑你可以生成的嵌入词,一种机器学习模型,但事实并非如此。这只是用数字表示单词的一种方式。

您已经有了问题的答案

你自己已经指出使用hunspell会引入新的错误。毫无疑问,您的其他方法也是如此。如果这只是一个预处理步骤,我建议你留待它。这不是你需要证明的东西。如果由于某种原因你确实想深入研究这个问题,你可以通过@lenz建议的外部任务来评估你的方法的效果。

外部评估如何运作?

当任务太难以直接评估时,我们使用另一个依赖于其输出的任务来得出关于其成功的结论。在您的情况下,您似乎应该选择一个依赖于文档分类等单个单词的任务。假设你有一些与你的文件相关的标签,比如话题或新闻类型。预测这些标签可能是评估方法效率的合法方式。通过与“脏”数据的基线进行比较,您还可以看到它们弊大于利。请记住,这是关于相对差异,任务的实际表现并不重要。