Neural network 如何预处理嵌入的文本?

Neural network 如何预处理嵌入的文本?,neural-network,nlp,Neural Network,Nlp,在传统的“一个热”表示法中,单词作为向量,你有一个与词汇基数相同维度的向量。为了降低维数,通常会删除停止字,并应用词干分析、柠檬化等来规范化要执行某些NLP任务的功能 我无法理解是否/如何预处理要嵌入的文本(例如word2vec)。我的目标是使用这些单词嵌入作为NN的特征,将文本分类为主题a,而不是主题a,然后在主题a的文档上对它们执行事件提取(使用第二个NN) 我的第一反应是预处理删除停止词、词干柠檬化等。但随着我对NN的进一步了解,我意识到应用于自然语言,CBOW和skip-gram模型实际

在传统的“一个热”表示法中,单词作为向量,你有一个与词汇基数相同维度的向量。为了降低维数,通常会删除停止字,并应用词干分析、柠檬化等来规范化要执行某些NLP任务的功能

我无法理解是否/如何预处理要嵌入的文本(例如word2vec)。我的目标是使用这些单词嵌入作为NN的特征,将文本分类为主题a,而不是主题a,然后在主题a的文档上对它们执行事件提取(使用第二个NN)

我的第一反应是预处理删除停止词、词干柠檬化等。但随着我对NN的进一步了解,我意识到应用于自然语言,CBOW和skip-gram模型实际上需要整个词集存在——要能够根据上下文预测一个词,就需要知道实际上下文,不是规范化后的上下文的简化形式。。。是吗?)。词性标记的实际顺序似乎是预测单词人情的关键

我已经发现了,但我仍然很想知道这里的社区是怎么想的:

  • 关于标点符号、词干、柠檬化、停止字、数字、小写等,最近有没有公认的最佳实践
  • 如果是,它们是什么?一般来说,是尽可能少地处理文本更好,还是更重地处理文本以规范化文本更好?是否有一种权衡
  • 我的想法:

    最好删除标点符号(例如,在西班牙语中,不要删除重音符号,因为它传递上下文信息)、将书写的数字更改为数字、不要将所有内容都小写(对实体提取有用)、不使用词干、不使用柠檬化


    这听起来对吗?

    这么多问题。所有这些问题的答案可能都是“视情况而定”。它需要考虑您试图预测的类以及您拥有的文档类型。尝试预测作者身份(那么你肯定需要保留各种标点符号和大小写,这样笔迹分析就可以工作了)与情绪分析(在情绪分析中,你可以摆脱几乎所有的东西,但必须特别注意否定之类的东西)是不一样的。

    我想说,对两端应用相同的预处理。曲面形状是您的链接,因此您无法以不同的方式进行法线化。我确实同意Joseph Valls的观点,但我的印象是,大多数嵌入都是以通用的方式而不是特定的方式进行训练的。我的意思是,谷歌新闻嵌入在各种不同的任务上表现得相当好,我不认为它们有什么奇特的预处理。获取足够的数据往往更为重要。话虽如此,但仍要视情况而定:-)

    我自己已经研究这个问题有一段时间了。我完全同意其他的答案,这实际上取决于你的问题,你必须将你的输入与你期望的输出相匹配。 我发现,对于情绪分析等特定任务,通过预处理消除许多细微差别是可以的,但对于文本生成,保留所有内容是非常必要的

    我目前正致力于生成拉丁语文本,因此我需要在数据中保留相当多的结构

    我发现了一篇非常有趣的论文,对这个话题做了一些分析,但它只涉及一小部分。但是,它可能会给您一些更多提示:

    文本预处理在神经网络结构中的作用:文本分类和情感分析的评价研究 由Jose Camacho Collados和Mohammad Taher Pilehvar创作

    下面引用他们的结论:


    “我们的评估强调了在培训和评估数据中采用一致的预处理策略的重要性。一般来说,简单的标记化语料库与更复杂的预处理技术(如柠檬化或多词分组)的效果相同或更好,但与特定领域(如健康)相对应的数据集除外,在这些领域中,单独的标记化表现较差。此外,当应用于简单的标记化数据集时,在多单词分组语料库上训练的单词嵌入表现出奇地好。”

    我简要回顾了Collados的论文,这篇文章非常好。您知道任何文本简化,例如python或R中的句子简化库使用了这个或类似的东西吗?