【发布时间】: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