=================
Word Vector Models
================= |
|
Word2vec
Word2Vec是一种将文本中的词进行嵌入的方法,而所谓嵌入,就是将各个词使用一个定长的向量来表示。word2vec工具主要包含两个模型:连续词袋模型(continuous bag of words,简称CBOW)和跳字模型(skip-gram),word2vec词向量可以较好地表达不同词之间的相似和类比关系
CBOW模型,它的目标是:给定一串文本,使用某个词的上下文来预测这个词。例如,对于句子“Old soldiers never die,they just fade away”,预测soldiers这个词时,可以使用never、die、fade、away这四个词,它们构成了soldiers的上下文。这样,从文本中就可以提取一系列的训练样本。得到上下文以后,将这些词的one-hot编码累加起来,输入神经网络,然后神经网络进行一些变换,其目标为得到fox这个词的one-hot编码。训练好之后的神经网络中,隐藏层的权重矩阵就是词嵌入后的向量了。
skip-gram是类似的,它输入当前词soldiers,目标是变换为上下文的词汇,此处上下文词汇的处理与CBOW一样,也是将这些词的one-hot编码相加,作为训练使用的真值。
GloVe
ELMo
ELMo (Embeddings from Language Models) 是由Allen Institute for AI的AllenNLP团队开发的。
Bert
BERT (Bidirectional Encoder Representations from Transformers) 是由Google AI团队开发的。
GPT
GPT (Generative Pre-trained Transformer) 是由OpenAI开发的。其主要版本(如GPT-2和GPT-3)的代码和模型都可以在OpenAI的GitHub页面找到。
以下是GPT-2的官方GitHub仓库地址: https://github.com/openai/gpt-2
至于GPT-3,OpenAI并没有完全开放其训练代码,但提供了API供开发者使用。你可以访问OpenAI的官方网站查看关于GPT-3的更多详情。
TF-IDF
TF-IDF的全称是term frequency–inverse document frequency,翻译为词频-逆向文件频率。TF-IDF的主要思想是:如果某个单词在一篇文章中出现的频率TF高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。
TF-IDF和BOW的缺点相同,无法用于描述词与词之间的关系,从原理上来看,这两种方法是专注与单个词的,而不是整个文本相似度的,所以用这两个方法做文本相似度的度量肯定效果不会太好。
TF-IDF (Term Frequency-Inverse Document Frequency) 是一个常见的文本表示方法,而不是特定于某一个项目或团队的模型,因此没有一个"官方"的GitHub仓库。然而,很多开源工具和库提供了TF-IDF的实现,其中最著名的是scikit-learn,一个用于Python的机器学习库。
如果你想看scikit-learn中TF-IDF的实现,你可以访问其官方GitHub仓库并搜索TF-IDF相关代码: https://github.com/scikit-learn/scikit-learn
BOW
BOW全名叫Bag of words,也称为词袋模型,在信息检索中,BOW假定对于一个文本,忽略其词序和语法,句法,将其仅仅看做是一个词集合,或者说是词的一个组合,文本中每个词的出现都是独立的,不依赖于其他词 是否出现,或者说当这篇文章的作者在任意一个位置选择一个词汇都不受前面句子的影响而独立选择的。
那么在文本相似度中,词袋模型是将两篇文本通过词袋模型变为向量模型,通过计算向量的余弦距离来计算两个文本间的相似度。但这有个明显的缺点,就是严重缺乏相似词之间的表达。比如“我喜欢足球”和“我不喜欢足球”这两个文本是严重不相似的,但词袋模型会判为高度相似。再比如“我喜欢足球”和“我热爱足球”的意思是非常的接近的,但词袋模型不能表示“喜欢”和“爱”之间严重的相似关系。
"Bag of Words" (BoW) 是一个基本的文本表示方法,并没有一个特定的"官方"GitHub仓库。然而,许多开源工具和库提供了BoW的实现。scikit-learn是其中之一,它在Python中为机器学习提供了广泛的工具,其中就包括BoW的实现。
你可以在scikit-learn的官方GitHub仓库中查找BoW相关的代码: https://github.com/scikit-learn/scikit-learn