Kaggle word2vec NLP 教程 第二部分:词向量

  • 时间:
  • 浏览:0

.我儿儿还还才能使用most_similar函数来深入了解模型的单词簇:

Word2vec,由 Google 于 2013 年发表,是五种神经网络实现,还才能学习单词的分布式表示。在此以前否则提出了用于学习单词表示的一点层厚或循环神经网络架构,否则那些的主要问题是训练模型所需时长间。 Word2vec 相对于一点模型学习得快。

本教程的一点偏离 将重点介绍使用 Word2Vec 算法创建分布式单词向量。 (层厚学习的概述,以及一点一点教程的链接,请参阅“那些是层厚学习?”页面)。

否则,似乎.我儿儿有相当好的语义意义模型 - 要花费和词袋一样好。 否则,.我儿儿如何才能将那些花哨的分布式单词向量用于监督学习呢? 下一节将对此进行一次尝试。

在双核 Macbook Pro 上,使用 4 个工作进程来运行,花费非要 15 分钟。 否则,它会因你的计算机而异。 幸运的是,日志记录功能还才能打印涵盖信息的消息。

自豪地采用谷歌翻译

原文:Bag of Words Meets Bags of Popcorn

否则你使用的是 Mac 或 Linux 系统,则还才能使用终端内(而后会来自 Python 内部内部结构)的top命令,来查看你的系统算不算在模型训练时成功并行化。 键入:

恭喜你到目前为止成功通过了一切! 我就门儿儿来看看.我儿儿在 75,000 个训练评论中创建的模型。

否则你的 CPU 使用率较低,则否则那个她 的计算机上的 cython 无法正常运行。

接下来,.我儿儿时需五种特定的输入格式。 Word2Vec 时需单个语录,每个语录后会一列单词。 换句话说,输入格式是列表的列表。

.我儿儿的模型才能区分意义上的差异! 它知道男人的女人,男人的女人的女人和孩子彼此更例如,而后会橱房。 更多的探索表明,该模型对意义上更微妙的差异敏感,例如国家和城市之间的差异:

确定参数我太多 说容易,否则一旦.我儿儿确定了参数,创建 Word2Vec 模型就很简单:

分布式词向量强大,可用于一点应用,尤其是单词预测和转换。 在这里,.我儿儿将尝试将它们应用于感情是什么 是那些 分析。

在 Python 中,.我儿儿将使用gensim包中的 word2vec 的优秀实现。 否则你还这么 安装gensim,则时需安装它。 这里有另一个 涵盖 Python Word2Vec 实现的优秀教程。

鉴于.我儿儿特定的训练集,“Latifah”与“女王”的例如性最高,也就严重不足为奇了。

Word2Vec 不时需标签来创建有意义的表示。这很有用,否则现实世界中的大多数数据后会未标记的。否则给网络足够的训练数据(数百亿个单词),它会产生形状极好的单词向量。具有例如含义的词总出 在簇中,否则簇具有间隔,使得还才能使用向量数学来再现诸如借喻的一点词关系。着名的例子是,通过训练好的单词向量,“国王 - 男人的女人 + 男人的女人的女人 = 女王”。

查看 Google 的代码,文章和附带的论文。 此演示也很有帮助。 原始代码是 C 写的,但它已被移植到一点语言,包括 Python。 .我儿儿鼓励你使用原始 C 工具,但否则你是初学进程员(.我儿儿时需手动编辑头文件来编译),请注意它后会用户友好的。

否则,与感情是什么 是那些 分析更相关:

第二偏离 的教程代码在这里。

现在到了细节! 首先,.我儿儿使用pandas读取数据,就像.我儿儿在第 1 偏离 中所做的那样。与第 1 偏离 不同,.我儿儿现在使用unlabeledTrain.tsv,其中涵盖 500,000 个额外的评论,这么 标签。 当.我儿儿在第 1 偏离 中构建词袋模型时,额外的未标记的训练评论这么 用。 否则,否则 Word2Vec 还才能从未标记的数据中学习,现在还才能使用那些额外的 500,000 条评论。

.我儿儿还才能看一下输出,看看它与第 1 偏离 的不同之处:

如何将另一个 段落分成语录我太多 说简单。 自然语言涵盖各种各样的问题。 英语语录否则以“?”,“!”,“"”或“.”等结尾,否则间距和大写也后会可靠的标志。否则,.我儿儿将使用 NLTK 的punkt分词器进行语录分割。为了使用它,你时需安装 NLTK 并使用nltk.download()下载punkt的相关训练文件。

使用精心解析的语录列表,.我儿儿已准备好训练模型。 有一点参数选项会影响运行时间和化成的最终模型的质量。 以下算法的完正信息,请参阅 word2vec API 文档以及 Google 文档。

…嘴笨 .我儿儿使用的训练集相对较小,但肯定不完美:

第 2 偏离 和第 3 偏离 比第 1 偏离 假设你更熟悉Python。.我儿儿在双核 Macbook Pro 上开发了以下代码,否则,.我儿儿还这么 在 Windows 上成功运行代码。否则你是 Windows 用户否则使其正常运行,请在论坛中留言如何进行操作!更多完正信息,请参阅“配置系统”页面。

doesnt_match函数将尝试推断集合中哪个单词与一点单词最不例如:

译者注:原文中这里的解释有误,已修改。

协议:CC BY-NC-SA 4.0

你否则会从BeautifulSoup那里得到一点关于语录中 URL 的警告。 那些后会用担心(尽管你否则时需考虑在清理文本时删除 URL)。

嘴笨 Word2Vec 不像一点层厚学习算法那样时需图形解决单元(GPU),但它是计算密集型的。 Google 的版本和 Python 版本都依赖于多进程(在你的计算机上并行运行多个进程以节省时间)。 为了在合理的时间内训练你的模型,你时需安装 cython(这里是指南)。 Word2Vec 可在这么 安装 cython 的请况下运行,但运行它时需几天而后会几分钟。

时需注意的另一个 小细节是 Python 列表中+=append之间的区别。 在一点应用中,这两者是还才能互换的,但在这里它们后会。 否则要将列表列表附加到原本 列表列表,append仅仅附加外层列表; 你时需使用+=才能连接所有内层列表。

译者:飞龙

.我儿儿为清理数据而编写的函数也与第 1 偏离 例如,尽管现在占据 一点差异。 首先,为了训练 Word2Vec,最好我太多 说删除停止词,否则算法依赖于语录的更广泛的上下文,以便产生高质量的词向量。 否则,.我儿儿将在下面的函数中,将停止词删除变成可选的。 最好我太多 说删除数字,但.我儿儿将其留作读者的练习。

现在.我儿儿还才能应用此函数,来准备 Word2Vec 的输入数据(这将时需几分钟):

最近斯坦福大学的工作也将层厚学习应用于感情是什么 是那些 分析;.我儿的代码以 Java 提供。 否则,.我儿的最好的辦法 依赖于语录解析,非要直接应用于任意长度的段落。

在模型训练时进入终端窗口。 对于 4 个 worker,列表中的第另一个 进程应该是 Python,它应该显示 500-500% 的 CPU 使用率。