【问题标题】:Disabling Gensim's removal of punctuation etc. when parsing a wiki corpus解析 wiki 语料库时禁用 Gensim 删除标点符号等
【发布时间】:2017-04-19 16:14:54
【问题描述】:

我想使用带有 gensim 的 python 在英文维基百科上训练 word2vec 模型。为此,我密切关注https://groups.google.com/forum/#!topic/gensim/MJWrDw_IvXw

它对我有用,但我不喜欢生成的 word2vec 模型是命名实体被拆分,这使得该模型无法用于我的特定应用程序。我需要的模型必须将命名实体表示为单个向量。

这就是为什么我计划用 spacy 解析维基百科文章并将“北卡罗来纳州”之类的实体合并到“北卡罗来纳州”中,以便 word2vec 将它们表示为单个向量。到目前为止一切顺利。

spacy 解析必须是预处理的一部分,我最初按照链接讨论中的建议使用:

...
wiki = WikiCorpus(wiki_bz2_file, dictionary={})
for text in wiki.get_texts():
    article = " ".join(text) + "\n"
    output.write(article)
...

这会删除标点符号、停用词、数字和大小写,并将每篇文章保存在生成​​的输出文件中的单独行中。问题是 spacy 的 NER 并不真正适用于这个预处理文本,因为我猜它依赖于 NER 的标点符号和大写(?)。

有谁知道我是否可以“禁用”gensim 的预处理,使其不会删除标点符号等,但仍将维基百科文章直接从压缩的维基百科转储中解析为文本?或者有人知道更好的方法来实现这一点吗?提前致谢!

【问题讨论】:

  • 更新:我从 Gensim 复制了 WikiCorpus 类,以便自己在需要的地方添加 spaCy 操作。现在,如果您想更改 gensim 预处理维基百科文本的方式,这似乎是要走的路
  • 顺便说一句,如果你已经实现了这个并解决了这个问题,如果你能在这里分享这个方法会很棒。

标签: python nlp gensim word2vec spacy


【解决方案1】:

如果 spacy 是在句子级别上运行的,我不会感到惊讶。为此,它很可能使用句子边界(点、问号等)。这就是为什么 spacy NER(或者甚至是管道中早期的 POS Tagger)可能对您失败的原因。

至于为 gensim 的 LSI 表示命名实体的方式 - 我建议添加一个人工标识符(一个不存在的词)。从模型的角度来看,它没有任何区别,并且可以为您减轻重新处理 gensim 预处理的负担。

您可能需要参考model.wv.vocab 其中model = gensim.models.Word2Vec(...) 为此,您必须训练模型两次。或者,尝试从原始文本创建一个词汇集,然后随机选择词汇表中不存在的字母集。

【讨论】:

    【解决方案2】:

    您可以在 spaCy 中使用 gensim word2vec 预训练模型,但这里的问题是您的处理管道的顺序:

    1. 您将文本传递给 gensim
    2. Gensim 解析和标记字符串
    3. 您将标记标准化
    4. 您将令牌传递回 spaCy
    5. 您制作了一个 w2v 语料库(使用 spaCy)(?)

    这意味着当 spaCy 获取文档时,文档已经被标记化,是的,它的 NER 很复杂:https://www.youtube.com/watch?v=sqDHBH9IjRU

    你可能想做的是:

    1. 您将文本传递给 spaCy
    2. spaCy 用 NER 解析它们
    3. spaCy 对它们进行相应的标记,将实体保持为一个标记
    4. 您使用 spacy.load() 加载 gensim w2v 模型
    5. 您使用加载的模型在 spaCy 中创建 w2v 语料库

    您需要做的就是从 gensim 下载模型并告诉 spaCy 从命令行中查找它:

    1. wget [模型的网址]
    2. python -m init-model [选项] [刚刚下载的文件]

    这里是 init-model 的命令行文档:https://spacy.io/api/cli#init-model

    然后像 en_core_web_md 一样加载它,例如您可以使用 .txt、.zip 或 .tgz 模型。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-23
      • 1970-01-01
      • 1970-01-01
      • 2016-03-19
      • 2012-06-25
      • 2021-10-03
      • 2019-04-09
      • 1970-01-01
      相关资源
      最近更新 更多