【问题标题】:Use proxy sentences from cleaned data使用来自已清理数据的代理语句
【发布时间】:2018-07-10 15:26:20
【问题描述】:

Gensim 的Word2Vec 模型将列表列表作为输入,内部列表包含句子的单个标记/单词。据我了解,Word2Vec 用于使用向量“量化”文本中单词的上下文。 我目前正在处理一个文本语料库,该语料库已经被分割成单独的标记,不再包含明显的句子格式(标点符号已被删除)。我想知道我应该如何将它输入到Word2Vec 模型中?

假设我只是将语料库拆分为长度一致的“句子”(例如,每个句子 10 个标记),这是将数据输入模型的好方法吗?

本质上,我想知道输入句子的格式(列表列表)如何影响 Word2Vec 的输出?

【问题讨论】:

    标签: python nlp gensim word2vec word-embedding


    【解决方案1】:

    这听起来像是一个合理的解决方案。如果您可以访问与已清理数据相似的数据,则可以从该数据集中获得平均句子长度。否则,您可以使用您正在使用的语言(来自维基百科或其他来源)找到其他数据,并从那里获得平均句子长度。

    当然,你的输出向量不会像你有正确的句子边界那样可靠,但听起来词序被保留了,所以不应该有来自不正确句子边界的太多噪音。

    【讨论】:

      【解决方案2】:

      大多数情况下,文本以逻辑单元(如句子或段落)传递给Word2Vec。此外,已发表的论文和早期的演示代码也倾向于将标点符号转换为标记。

      但是没有标点符号的文本以及文本之间的任意中断是一种合理的解决方法,并且仍然可以提供相当好的结果。

      例如,演示中经常使用的text8/text9 语料库(包括word2vec intro Jupyter notebook bundled in gensim)只是大量的单词,缺少标点符号和换行符。因此,gensim 中使用的实用程序 LineSentence 类会将它们分解为单独的 10,000 个令牌文本。

      在你的任意间隔(例如 10,000)中更大可能会更好,而不是更小(例如 10),原因如下:

      • 源文本通常超过 10 个字
      • 通常一起运行的源材料在其原始边界上仍然与语义相关
      • 优化的算法在更大的数据块上效果更好
      • “错误上下文窗口”(由连接创建)的危害可能只是没有净偏差效应的噪声,而更多“真实窗口”(通过创建尽可能少的错误拆分)可能会保留更多的原始语料库' 可学习的词对词关系信号
      • 您始终可以使用较小的 window 参数来模拟更保守的上下文(如果原始源确实包含不按顺序相关的小句子)

      但是,gensim 的 cython 优化训练路径的实现限制为每个文本 10,000 个标记 - 任何更多的标记都会被静默忽略 - 因此您不会出于任何原因故意提供更长的文本。

      【讨论】:

        猜你喜欢
        • 2014-07-11
        • 2019-04-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-04
        • 1970-01-01
        • 2016-09-08
        相关资源
        最近更新 更多