带有示例的词嵌入和 Word2Vec 模型
什么是词嵌入?
单词嵌入 是一种词语表示类型,可让机器学习算法理解具有相似含义的单词。它是一种语言建模和特征学习技术,使用神经网络、概率模型或对单词共现矩阵进行降维,将单词映射到实数向量中。一些词嵌入模型包括 Word2vec(谷歌)、Glove(斯坦福)和 fastest(Facebook)。
词嵌入也称为分布式语义模型、分布式表示、语义向量空间或向量空间模型。当你读到这些名字时,你会遇到语义这个词,这意味着将相似的单词归为一类。例如,苹果、芒果、香蕉等水果应该放在附近,而书籍则应该远离这些词。从更广泛的意义上讲,词嵌入将创建水果向量,而水果向量将远离书籍的向量表示。
Word Embedding 用在什么地方?
词嵌入有助于特征生成、文档聚类、文本分类和自然语言处理任务。让我们列出它们并对每个应用进行一些讨论。
- 计算相似的词: 词向量用于建议与预测模型中的单词相似的单词。此外,它还会建议不相似的单词以及最常见的单词。
- 创建一组相关词: 它用于语义分组,将具有相似特征的事物分组在一起,将相差较远的事物分组。
- 文本分类的特征: 文本被映射到向量数组中,这些向量数组被输入到模型中进行训练和预测。基于文本的分类器模型无法在字符串上进行训练,因此这会将文本转换为机器可训练的形式。此外,其构建语义的功能有助于基于文本的分类。
- 文档聚类: 是另一个广泛使用 Word Embedding Word2vec 的应用
- 自然语言处理: 在许多应用中,词嵌入非常有用,并且比特征提取阶段更胜一筹,例如词性标记、情感分析和句法分析。现在我们对词嵌入有了一些了解。还介绍了一些实现词嵌入的不同模型。整个词嵌入教程都集中在其中一个模型(Word2vec)上。
什么是 Word2vec?
词向量 是一种生成词向量以更好地表示单词的技术/模型。它是一种自然语言处理方法,可以捕获大量精确的句法和语义单词关系。它是一种浅层两层神经网络,一旦经过训练,就可以检测同义词并为部分句子建议附加单词。
在进一步学习本 Word2vec 教程之前,请先了解浅层神经网络和深度神经网络之间的区别,如下面的 Word 嵌入示例图所示:
浅层神经网络仅由输入和输出之间的一个隐藏层组成,而深层神经网络在输入和输出之间包含多个隐藏层。输入受节点控制,而隐藏层和输出层包含神经元。
Word2vec 是一个两层网络,其中输入一个隐藏层和一个输出。
Word2vec是由Google的Tomas Mikolov领导的一组研究员开发的,比潜在语义分析模型更好、更高效。
为什么使用 Word2vec?
Word2vec 在向量空间表示中表示单词。单词以向量的形式表示,并且放置方式是将含义相似的单词放在一起,将含义不同的单词放在较远的位置。这也被称为语义关系。神经网络不理解文本,而是只理解数字。词嵌入提供了一种将文本转换为数字向量的方法。
Word2vec 重建了单词的语言上下文。在进一步了解之前,让我们先了解一下什么是语言上下文?在一般的生活场景中,当我们说话或写作进行交流时,其他人会试图弄清楚这句话的目的是什么。例如,“印度的气温是多少”,这里的上下文是用户想知道“印度的气温”,也就是上下文。简而言之,句子的主要目的是上下文。围绕口语或书面语言(披露)的单词或句子有助于确定上下文的含义。Word2vec 通过上下文学习单词的向量表示。
Word2vec 的作用是什么?
词嵌入之前
重要的是要知道在词嵌入之前使用哪种方法以及它的缺点是什么,然后我们将讨论如何使用 Word2vec 方法克服词嵌入的缺点。最后,我们将讨论 Word2vec 的工作原理,因为了解它的工作原理很重要。
潜在语义分析方法
这是在词嵌入之前使用的方法。它使用了词袋的概念,其中单词以编码向量的形式表示。它是一种稀疏向量表示,其维度等于词汇量的大小。如果该词出现在词典中,则将其计入,否则不计入。要了解更多信息,请参阅下面的程序。
Word2vec 示例
from sklearn.feature_extraction.text import CountVectorizer vectorizer = CountVectorizer() data_corpus = ["guru99 is the best site for online tutorials. I love to visit guru99."] vocabulary = vectorizer.fit(data_corpus) X = vectorizer.transform(data_corpus) print(X.toarray()) print(vectorizer.get_feature_names_out())
输出:
[[1 2 1 1 1 1 1 1 1 1]]
[u'best', u'guru99', u'is', u'love', u'online', u'sitefor', u'the', u'to', u'tutorials', u'visit']
代码说明
- CountVectorizer 是用于根据词汇量来存储词汇表的模块。这是从 sklearn 导入的。
- 使用 CountVectorizer 类创建对象。
- 将数据写入要放入 CountVectorizer 中的列表中。
- 数据适合于从 CountVectorizer 类创建的对象。
- 应用词袋法,使用词汇表对数据中的单词进行计数。如果词汇表中没有单词或标记,则将索引位置设置为零。
- 第 5 行中的变量 x 被转换为数组(可用于 x 的方法)。这将提供第 3 行中提供的句子或列表中每个标记的计数。
- 这将显示使用第 4 行中的数据进行拟合时词汇表的一部分的特征。
在潜在语义方法中,行表示唯一单词,而列表示该单词在文档中出现的次数。它是以文档矩阵的形式表示单词。词频逆文档频率 (TFIDF) 用于计算文档中单词的频率,即文档中该词的频率/整个语料库中该词的频率。
词袋方法的缺点
- 它忽略了单词的顺序,例如,this is bad = bad is this。
- 它忽略了单词的上下文。假设我写下“他喜欢读书。最好的教育是在书中找到的”。它会创建两个向量,一个用于“他喜欢读书”,另一个用于“最好的教育是在书中找到的”。它会将它们视为正交的,这使它们独立,但实际上,它们是相互关联的
为了克服这些限制,开发了词嵌入,并且 Word2vec 是一种实现词嵌入的方法。
Word2vec 如何工作?
Word2vec 通过预测单词周围的上下文来学习单词。例如,让我们以“He 爱 足球。”
我们要计算“loves”这个词的Word2vec。
假设
loves = Vin. P(Vout / Vin) is calculated where, Vin is the input word. P is the probability of likelihood. Vout is the output word.
Word 爱 在语料库中的每个单词上移动。对单词之间的句法和语义关系进行编码。这有助于找到相似和类似的单词。
单词的所有随机特征 爱 计算得出。这些特征会根据相邻词或上下文词的变化或更新, 反向传播 方法。
另一种学习方式是,如果两个词的上下文相似或者两个词具有相似的特征,那么这些词就是相关的。
词向量 Archi质地
Word2vec 使用两种架构:
- 连续词袋(CBOW)
- 跳过克
在进一步学习 Word2vec 教程之前,让我们从单词表示的角度讨论一下这些架构或模型为何如此重要。学习单词表示本质上是无监督的,但需要目标/标签来训练模型。Skip-gram 和 CBOW 将无监督表示转换为监督形式以进行模型训练。
在 CBOW 中,使用周围上下文窗口的窗口来预测当前单词。例如,如果 wI-1,wI-2,wi + 1,wi + 2给定单词或上下文,该模型将提供 wi
Skip-Gram 与 CBOW 相反,这意味着它根据单词预测给定的序列或上下文。你可以反转示例来理解它。如果 wi 给出,这将预测上下文或 wI-1,wI-2,wi + 1,wi+2。
Word2vec 提供了在 CBOW(连续词袋)和 skim-gram 之间进行选择的选项。这些参数是在模型训练期间提供的。可以选择使用负采样或分层 softmax 层。
连续的词袋
让我们画一个简单的Word2vec示例图来理解连续词袋架构。
让我们用数学方法计算一下这些方程。假设 V 是词汇表大小,N 是隐藏层大小。输入定义为 { xI-1,X我-2, x我+ 1, xi + 2}。我们通过将 V * N 相乘来获得权重矩阵。通过将输入向量与权重矩阵相乘来获得另一个矩阵。这也可以通过以下等式来理解。
h=xitW
其中 xit?W 分别为输入向量和权重矩阵,
要计算上下文和下一个单词之间的匹配度,请参考以下公式
u=预测表示*h
其中,预测表示是通过上式中的模型 h 获得的。
Skip-Gram 模型
Skip-Gram 方法用于根据输入词预测句子。为了更好地理解它,让我们绘制如下 Word2vec 示例中的图表。
我们可以将其视为连续词袋模型的逆模型,其中输入是单词,模型提供上下文或序列。我们还可以得出结论,目标被输入到输入层,输出层被复制多次以适应所选的上下文单词数量。所有输出层的误差向量被相加,以通过反向传播方法调整权重。
选择哪种型号?
CBOW 比 skip gram 快几倍,并为常用词提供更好的频率,而 skip gram 需要少量的训练数据,甚至可以表示罕见的单词或短语。
Word2vec 与 NLTK 的关系
NLTK 是自然语言工具包。它用于文本的预处理。可以执行不同的操作,例如词性标记、词形还原、词干提取、停用词删除、删除罕见词或最少使用的词。它有助于清理文本,也有助于从有效词中准备特征。另一方面,Word2vec 用于语义(紧密相关的项目在一起)和句法(序列)匹配。使用 Word2vec,可以找到相似的词、不相似的词、降维等等。Word2vec 的另一个重要特性是将文本的高维表示转换为低维向量。
在哪里使用 NLTK 和 Word2vec?
如果要完成如上所述的一些通用任务,如标记化、POS 标记和解析,则必须使用 NLTK,而要根据某些上下文、主题建模或文档相似性预测单词,则必须使用 Word2vec。
通过代码说明 NLTK 与 Word2vec 的关系
NLTK 和 Word2vec 可以一起使用来查找相似的单词表示或句法匹配。NLTK 工具包可用于加载 NLTK 附带的许多包,并且可以使用 Word2vec 创建模型。然后可以在实时单词上进行测试。让我们在下面的代码中看看两者的组合。在进一步处理之前,请查看 NLTK 提供的语料库。您可以使用命令下载
nltk(nltk.download('all'))
请参阅屏幕截图中的代码。
import nltk import gensim from nltk.corpus import abc model= gensim.models.Word2Vec(abc.sents()) X= list(model.wv.vocab) data=model.most_similar('science') print(data)
输出:
[('law', 0.9415997266769409), ('practice', 0.9276568293571472), ('discussion', 0.9259148836135864), ('agriculture', 0.9257254004478455), ('media', 0.9232194423675537), ('policy', 0.922248125076294), ('general', 0.9166069030761719), ('undertaking', 0.916458249092102), ('tight', 0.9129181504249573), ('board', 0.9107444286346436)]
代码说明
- 导入了 nltk 库,您可以从中下载我们将在下一步中使用的 abc 语料库。
- Gensim 已导入。如果未安装 Gensim Word2vec,请使用命令“pip3 install gensim”进行安装。请参见下面的屏幕截图。
- 使用nltk.download('abc')导入已下载的语料库abc。
- 将文件传递给模型 Word2vec,使用 Gensim 将该文件作为句子导入。
- 词汇以变量的形式存储。
- 由于这些文件与科学相关,因此在样本词科学上对模型进行了测试。
- 这里模型预测了类似的单词“science”。
激活器和 Word2Vec
神经元的激活函数定义了给定一组输入时该神经元的输出。从生物学上讲,它受到我们大脑中一种活动的启发,即使用不同的刺激激活不同的神经元。让我们通过下图来了解激活函数。
这里 x1,x2,..x4 是神经网络的节点。
w1, w2, w3 是节点的权重,
? 是作为激活函数的所有权重和节点值的总和。
为什么要有激活函数?
如果不使用激活函数,输出将是线性的,但线性函数的功能是有限的。要实现复杂的功能,如对象检测、图像分类、使用语音输入文本和许多其他非线性输出,需要使用激活函数来实现。
词嵌入(Word2vec)中激活层的计算方式
Softmax 层(归一化指数函数)是激活或触发每个节点的输出层函数。另一种方法是分层 softmax,其复杂度通过 O(log2V),其中 softmax 为 O(V),V 是词汇量。它们之间的区别在于分层 softmax 层的复杂性降低。要了解其(分层 softmax)功能,请查看下面的 Word embedding 示例:
假设我们要计算观察到这个词的概率 爱 给定一个特定的上下文。从根节点到叶节点的流动将首先移动到节点 2,然后移动到节点 5。因此,如果我们的词汇量为 8,则只需要进行三次计算。因此,它允许分解、计算一个单词的概率(爱).
除了 Hierarchical Softmax 之外还有哪些其他可用选项?
如果从一般意义上讲,对于词嵌入,可用的选项有区分 Softmax、CNN-Softmax、重要性采样、自适应重要性采样、噪声对比估计、负采样、自规范化和不频繁规范化。
具体来说,对于 Word2vec,我们有负采样可用。
负采样是一种对训练数据进行采样的方法。它有点像随机梯度下降,但有一些区别。负采样只寻找负面训练示例。它基于噪声对比估计,随机采样单词,而不是在上下文中。这是一种快速训练方法,随机选择上下文。如果预测词出现在随机选择的上下文中,则两个向量彼此接近。
可以得出什么结论?
激活器激发神经元,就像我们的神经元使用外部刺激激发一样。Softmax 层是输出层函数之一,在词嵌入的情况下激发神经元。在 Word2vec 中,我们有分层 softmax 和负采样等选项。使用激活器,可以将线性函数转换为非线性函数,并可以使用此类函数实现复杂的机器学习算法。
什么是 Gensim?
金西姆 是一个开源主题建模和自然语言处理工具包,实现于 Python 和 Cython。Gensim 工具包允许用户导入 Word2vec 进行主题建模,以发现文本主体中的隐藏结构。Gensim 不仅提供了 Word2vec 的实现,还提供了 Doc2vec 和 FastText 的实现。
本教程全部涉及 Word2vec,因此我们将坚持当前主题。
如何使用 Gensim 实现 Word2vec
到目前为止,我们已经讨论了什么是 Word2vec、它的不同架构、为什么从词袋转向 Word2vec,以及 Word2vec 与 NLTK 以及实时代码和激活函数之间的关系。
以下是使用 Gensim 实现 Word2vec 的分步方法:
步骤1)数据收集
实现任何机器学习模型或实现自然语言处理的第一步是数据收集
请观察数据来构建智能聊天机器人,如下面的 Gensim Word2vec 示例所示。
[{"tag": "welcome", "patterns": ["Hi", "How are you", "Is any one to talk?", "Hello", "hi are you available"], "responses": ["Hello, thanks for contacting us", "Good to see you here"," Hi there, how may I assist you?"] }, {"tag": "goodbye", "patterns": ["Bye", "See you later", "Goodbye", "I will come back soon"], "responses": ["See you later, thanks for visiting", "have a great day ahead", "Wish you Come back again soon."] }, {"tag": "thankful", "patterns": ["Thanks for helping me", "Thank your guidance", "That's helpful and kind from you"], "responses": ["Happy to help!", "Any time!", "My pleasure", "It is my duty to help you"] }, {"tag": "hoursopening", "patterns": ["What hours are you open?", "Tell your opening time?", "When are you open?", "Just your timing please"], "responses": ["We're open every day 8am-7pm", "Our office hours are 8am-7pm every day", "We open office at 8 am and close at 7 pm"] }, {"tag": "payments", "patterns": ["Can I pay using credit card?", " Can I pay using Mastercard?", " Can I pay using cash only?" ], "responses": ["We accept VISA, Mastercard and credit card", "We accept credit card, debit cards and cash. Please don’t worry"] } ]
以下是我们从数据中了解到的情况
- 这些数据包含标签、模式和响应三部分。标签是意图(讨论的主题是什么)。
- 数据为 JSON 格式。
- 模式是用户向机器人提出的问题
- 响应是聊天机器人对相应问题/模式提供的答案。
步骤2)数据预处理
处理原始数据非常重要。如果将清理过的数据输入到机器中,那么模型将做出更准确的反应,并更有效地学习数据。
此步骤涉及删除停用词、词干提取、不必要的单词等。在继续之前,重要的是加载数据并将其转换为数据框。请参阅下面的代码
import json json_file =’intents.json' with open('intents.json','r') as f: data = json.load(f)
代码说明:
- 由于数据是 JSON 格式,因此导入的是 JSON
- 文件存储在变量中
- 文件已打开并加载到数据变量中
现在数据已导入,是时候将数据转换为数据框了。请参阅以下代码以了解下一步
import pandas as pd df = pd.DataFrame(data) df['patterns'] = df['patterns'].apply(', '.join)
代码说明:
1.使用上面导入的pandas将数据转换成数据框。
2. 它会将列模式中的列表转换为字符串。
from nltk.corpus import stopwords from textblob import Word stop = stopwords.words('english') df['patterns'] = df['patterns'].apply(lambda x:' '.join(x.lower() for x in x.split())) df['patterns't']= df['patterns''].apply(lambda x: ' '.join(x for x in x.split() if x not in string.punctuation) df['patterns']= df['patterns'].str.replace('[^\w\s]','') df['patterns']= df['patterns'].apply(lambda x: ' '.join(x for x in x.split() if not x.isdigit())) df['patterns'] = df['patterns'].apply(lambda x:' '.join(x for x in x.split() if not x in stop)) df['patterns'] = df['patterns'].apply(lambda x: " ".join([Word(word).lemmatize() for word in x.split()]))
代码说明:
1. 使用 nltk 工具包中的停用词模块导入英语停用词
2. 使用条件和 lambda 函数将文本的所有单词转换为小写。 拉姆达函数 是一个匿名函数。
3. 检查数据框中文本的所有行是否存在字符串标点符号,并对其进行过滤。
4. 使用正则表达式删除数字或点等字符。
5. Digits 从文本中删除。
6. 在此阶段,停用词被删除。
7. 至此,单词已经过滤完毕,并且通过词形还原去除了同一个单词的不同形式。至此,数据预处理就完成了。
输出:
, patterns, responses, tag 0,hi one talk hello hi available,"['Hello, thanks for contacting us', 'Good to see you here', ' Hi there, how may I assist you?']",welcome 1,bye see later goodbye come back soon,"['See you later, thanks for visiting', 'have a great day ahead', 'Wish you Come back again soon.']",goodbye 2,thanks helping thank guidance thats helpful kind,"['Happy to help!', 'Any time!', 'My pleasure', 'It is my duty to help you']",thankful 3,hour open tell opening time open timing please,"[""We're open every day 8am-7pm"", 'Our office hours are 8am-7pm every day', 'We open office at 8 am and close at 7 pm']",hoursopening 4,pay using credit card pay using mastercard pay using cash,"['We accept VISA, Mastercard and credit card', 'We accept credit card, debit cards and cash. Please don’t worry']",payments
步骤3)使用Word2vec构建神经网络
现在是时候使用 Gensim Word2vec 模块构建模型了。我们必须从 Gensim 导入 Word2vec。让我们这样做,然后我们将构建模型,并在最后阶段,我们将在实时数据上检查模型。
from gensim.models import Word2Vec
现在,在本 Gensim Word2vec 教程中,我们可以成功使用 Word2Vec 构建模型。请参阅下一行代码以了解如何使用 Word2Vec 创建模型。文本以列表的形式提供给模型,因此我们将使用以下代码将文本从数据框转换为列表
Bigger_list=[] for i in df['patterns'] li = list(i.split("")) Bigger_list.append(li) Model= Word2Vec(Bigger_list,min_count=1,size=300,workers=4)
代码说明:
1. 创建了 greater_list,其中附加了内部列表。这是输入到模型 Word2Vec 的格式。
2. 实现循环,并迭代数据框模式列的每个条目。
3. 将列模式的每个元素拆分并存储在内部列表 li 中
4. 将内部列表附加到外部列表。
5.此列表提供给Word2Vec模型。让我们了解一下这里提供的一些参数
最小计数: 它将忽略所有总频率低于此值的单词。
规格: 它告诉了词向量的维数。
工人: 这些是训练模型的线程
还有其他可用选项,下面解释一些重要的选项
窗口: 句子中当前单词和预测单词之间的最大距离。
新加坡: 它是一种训练算法,1 表示 skip-gram,0 表示连续词袋。我们在上面已经详细讨论过这些内容。
HS: 如果为 1,则我们使用分层 softmax 进行训练,如果为 0,则使用负采样。
Α: 初始学习率
让我们在下面显示最终的代码:
#list of libraries used by the code import string from gensim.models import Word2Vec import logging from nltk.corpus import stopwords from textblob import Word import json import pandas as pd #data in json format json_file = 'intents.json' with open('intents.json','r') as f: data = json.load(f) #displaying the list of stopwords stop = stopwords.words('english') #dataframe df = pd.DataFrame(data) df['patterns'] = df['patterns'].apply(', '.join) # print(df['patterns']) #print(df['patterns']) #cleaning the data using the NLP approach print(df) df['patterns'] = df['patterns'].apply(lambda x:' '.join(x.lower() for x in x.split())) df['patterns']= df['patterns'].apply(lambda x: ' '.join(x for x in x.split() if x not in string.punctuation)) df['patterns']= df['patterns'].str.replace('[^\w\s]','') df['patterns']= df['patterns'].apply(lambda x: ' '.join(x for x in x.split() if not x.isdigit())) df['patterns'] = df['patterns'].apply(lambda x:' '.join(x for x in x.split() if not x in stop)) df['patterns'] = df['patterns'].apply(lambda x: " ".join([Word(word).lemmatize() for word in x.split()])) #taking the outer list bigger_list=[] for i in df['patterns']: li = list(i.split(" ")) bigger_list.append(li) #structure of data to be taken by the model.word2vec print("Data format for the overall list:",bigger_list) #custom data is fed to machine for further processing model = Word2Vec(bigger_list, min_count=1,size=300,workers=4) #print(model)
步骤4)模型保存
模型可以以 bin 和 model 形式保存。Bin 是二进制格式。请参阅以下几行来保存模型
model.save("word2vec.model") model.save("model.bin")
上面代码的解释
1.模型以.model文件的形式保存。
2.模型以.bin文件形式保存
我们将使用该模型进行实时测试,例如相似词、不相似词和最常见词。
步骤5)加载模型并进行实时测试
使用以下代码加载模型:
model = Word2Vec.load('model.bin')
如果您想打印词汇表,可以使用以下命令:
vocab = list(model.wv.vocab)
请看结果:
['see', 'thank', 'back', 'thanks', 'soon', 'open', 'mastercard', 'card', 'time', 'pay', 'talk', 'cash', 'one', 'please', 'goodbye', 'thats', 'helpful', 'hour', 'credit', 'hi', 'later', 'guidance', 'opening', 'timing', 'hello', 'helping', 'bye', 'tell', 'come', 'using', 'kind', 'available']
步骤 6)检查最相似的单词
让我们实际地实施这些事情:
similar_words = model.most_similar('thanks') print(similar_words)
请看结果:
[('kind', 0.16104359924793243), ('using', 0.1352398842573166), ('come', 0.11500970274209976), ('later', 0.09989878535270691), ('helping', 0.04855936020612717), ('credit', 0.04659383371472359), ('pay', 0.0329081267118454), ('thank', 0.02484947443008423), ('hour', 0.0202352125197649), ('opening', 0.018177658319473267)]
步骤 7) 与提供的单词不匹配
dissimlar_words = model.doesnt_match('See you later, thanks for visiting'.split()) print(dissimlar_words)
我们已经提供了文字 “待会儿见,感谢您的访问”。 这将 打印这些单词中最不相似的单词。让我们运行此代码并找出结果
上述代码执行后的结果:
Thanks
步骤 8)查找两个单词之间的相似度
这将得出两个单词之间相似性的概率。请参阅下面的代码来了解如何执行此部分。
similarity_two_words = model.similarity('please','see') print("Please provide the similarity between these two words:") print(similarity_two_words)
上述代码的结果如下
0.13706
您可以通过执行以下代码进一步查找类似的单词
similar = model.similar_by_word('kind') print(similar)
上述代码的输出:
[('credit', 0.11764447391033173), ('cash', 0.11440904438495636), ('one', 0.11151769757270813), ('hour', 0.0944807156920433), ('using', 0.0705675333738327), ('thats', 0.05206916481256485), ('later', 0.04502468928694725), ('bye', 0.03960943967103958), ('back', 0.03837274760007858), ('thank', 0.0380823090672493)]
结语
- 词嵌入是一种词语表示,可以让机器学习算法理解具有相似含义的词语
- 词向量用于计算相似的词,创建一组相关的词,用于文本分类、文档聚类、自然语言处理的特征
- Word2vec 解释:Word2vec 是一种浅层两层神经网络模型,用于生成词嵌入,从而更好地表示单词
- Word2vec 在向量空间表示中表示单词。单词以向量的形式表示,并且以这样的方式进行放置:意思相近的单词出现在一起,意思不相近的单词则位于较远的位置
- Word2vec 算法使用 2 种架构:连续词袋 (CBOW) 和 skip gram
- CBOW 比 skip gram 快几倍,并为常用词提供更好的频率,而 skip gram 需要少量的训练数据,甚至可以表示罕见的单词或短语。
- NLTK 和 Word2vec 可以一起使用来创建强大的应用程序
- 神经元的激活函数定义了给定一组输入时该神经元的输出。在 Word2vec 中,Softmax 层(归一化指数函数)是激活或触发每个节点的输出层函数。Word2vec 还具有负采样功能
- Gensim 是一个用 Python 实现的主题建模工具包