首页 > 解决方案 > Gensim Word2Vec 训练数据

问题描述

我目前正在尝试用我自己的训练数据训练我自己的 word2vec 模型,我对训练数据的预处理完全感到困惑。

我在我的文本上运行了一个简短的脚本,它对文本中的单词进行词形还原和小写,这样最后我的训练数据来自一个句子(德语),例如:

"Er hat heute zwei Birnen gegessen."

出现以下内容:

[er, haben, heute, zwei, birne, essen]

翻译成英文:

He ate two pears today.

结果是:

[he, eat, two, pear, today]

现在的问题是:我还没有看到有人对他们的训练数据这样做。这些词都是大写的,也没有词形化,我完全不明白这是如何工作的。特别是对于德语,动词的变化非常多。我应该就这样离开他们吗?我不明白它是如何工作的,因为 gensim 甚至不知道它是用哪种语言训练的,对吗?

简而言之:我应该进行词形还原和/或小写还是让每个单词保持原样?

非常感谢!

标签: pythonnlpgensimword2vec

解决方案


答案取决于您要使用嵌入的目的,但是,它们通常接受单词形式的训练。词嵌入通常在非常大的数据集上进行预训练,涵盖多达 50 万个单词的词汇表,这通常涵盖大多数形式的大多数单词,即使是形态比德语丰富得多的语言。

您可能还想使用FastText(存在 Gensim 的绑定)而不是 Word2Vec。FastText 考虑了嵌入的字符 n-gram 统计信息,因此它更好地概括了形态学的规律。

但总的来说,数据预处理始终取决于您打算如何使用嵌入。如果您想对单词的含义在 20 世纪如何变化进行定量历时研究,那么嵌入引理是一个好主意。如果您使用具有良好词形还原器的低资源语言,这也可能是一个好主意。如果您计划将嵌入作为下游 NLP 模型的输入,那么您可能应该使用表单和/或使用已经预训练的嵌入。


推荐阅读