在训练之前对语料进行词向量化和词形还原处理的word2vec

31

Word2vec似乎主要是在原始语料库数据上进行训练。但是,对于许多语义相似性任务而言,词形归并是一种标准的预处理方法。我想知道是否有人在训练word2vec之前对语料库进行了词形归并处理,以及这是否是一个有用的预处理步骤。


你是指来自gensim的word2vec吗? - alvas
是的,但是一般来说,word2vec算法。 - Luca Fiaschi
例如,土耳其语具有聚合特性(https://en.0wikipedia.org/index.php?q=aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQWdnbHV0aW5hdGlvbg),这是非常复杂的形态学分析。对于这些情况,需要进行词干提取/词形还原,以将语料库缩小到一个非常合理的小集合。 - XentneX
2个回答

9
我认为这取决于你想用它来解决什么问题,这与任务有关。
本质上,通过词形还原,可以使输入空间更稀疏,这在没有足够训练数据的情况下会有所帮助。
但是由于Word2Vec相当庞大,如果你有足够的训练数据,词形还原不应该给你带来太多好处。
更有趣的是,如何根据W2V(或其他任何东西)中现有的单词向量字典进行分词。例如,“Good muffins cost $3.88\nin New York.”需要被分词为['Good', 'muffins', 'cost', '$', '3.88', 'in', 'New York.'],然后你可以用W2V中的向量替换它。挑战在于一些分词器可能将“New York”分词为[‘New’ ‘York’],这没有太多意义。(例如,NLTK就犯了这个错误https://nltk.googlecode.com/svn/trunk/doc/howto/tokenize.html),当你有很多多词组时,这是一个问题。

1
更有趣的是,如何在现有的W2V(或其他任何东西)中考虑单词向量的情况下进行标记化处理。在这个上下文中,您所说的标记化是什么意思?谢谢。 - Luca Fiaschi
1
像“Good muffins cost $3.88\nin New York.”需要进行标记化,变成['Good', 'muffins', 'cost', '$', '3.88', 'in', 'New York.'],然后可以用W2V中的向量替换它。挑战在于一些分词器可能会将“New York”标记为['New' 'York'],这并没有太多意义。(例如NLTK在https://nltk.googlecode.com/svn/trunk/doc/howto/tokenize.html上犯了这个错误)当你有许多多词组时,这是一个问题。 - Daniel
3
基本上,通过词形还原,您可以使输入空间更稀疏。您是不是指如果同时保留词形还原和标记的原始形式?否则,词形还原不会使输入空间更小吗? - samsamara
2
词形还原使数据更加密集,从而减少了进行充分训练所需的数据量。 - Eli Korvigo

3
我目前正在从生物论文摘要中使用Word2Vec创建的向量空间,识别基因名称。如果我们不对语料库进行词形还原,运行算法时会出现两个主要问题:
  • 词汇量过大,因为您有不同形式的单词,最终具有相同的含义。
  • 正如上面所述,您的空间变得不那么稀疏,因为您获得了某个“含义”的更多代表者,但同时,其中一些含义可能会分裂在其代表者之间,让我通过一个例子来澄清这一点

我们目前关注一个名为BAD的缩略语识别的基因。 同时,“bad”是一个英语单词,有不同的形式(badly,worst,...)。 由于Word2vec基于上下文(周围的单词)概率构建其向量,当您不执行词形还原时,您可能会失去某些单词之间的关系。 因此,在BAD情况下,您可能会在向量空间中得到与基因名称而非形容词更接近的单词。


如果首字母缩略词始终为BAD,则使标记区分大小写。 - lucid_dreamer
但是,对于每个以大写字母开头的单词,您会得到很多噪音,因为它们出现在句子开头。另一种方法是使用POS标记来识别“bad”作为名词或形容词。 - N4ppeL

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接