我目前正在尝试用我自己的训练数据来训练我自己的word2vec模型,我对训练数据的预处理感到非常困惑。
我在我的文本上运行了一个简短的脚本,它对文本中的单词进行词汇化和小写,以便最终我的训练数据来自一个句子(德语),如下所示:
"Er hat heute zwei Birnen gegessen."
结果如下:
[er, haben, heute, zwei, birne, essen]
翻译成英文:
He ate two pears today.
结果如下:
[he, eat, two, pear, today]
现在的问题是:我还没有见过任何人对他们的训练数据做这样的事情。单词都是大写的,也不是词汇化的,我完全不明白这是怎么回事。特别是在德语中,动词的屈折变化很多。我是不是应该就让他们这样呢?我不明白它是如何工作的,不做词汇化,因为gensim甚至不知道它是用哪种语言训练的,对吧?
所以简而言之:我应该做词汇化和/或小写,还是只保留每个单词的原样?
非常感谢!
发布于 2021-10-12 08:33:47
答案取决于您将使用嵌入来做什么,但是,它们通常是针对单词形式进行训练的。单词嵌入通常在非常大的数据集上进行预训练,并覆盖多达50万个单词的词汇,这通常涵盖大多数形式的单词,即使在具有比德语丰富得多的词法的语言中也是如此。
您可能还希望使用FastText (bindings for Gensim exist)而不是Word2Vec。FastText考虑了嵌入的字符n元语法统计,因此它更好地推广了形态学中的正则性。
但通常情况下,数据预处理始终取决于您计划如何使用嵌入。如果你想做一个定量的历时研究,研究这些单词在20世纪的词义是如何变化的,那么嵌入引理是一个好主意。如果您使用的是具有良好词法的低资源语言,那么这也可能是一个好主意。如果您计划将嵌入作为下游NLP模型的输入,那么您可能应该使用表单和/或使用已经预先训练好的嵌入。
https://stackoverflow.com/questions/69514666
复制相似问题