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

  • 时间:
  • 浏览:0

分布式词向量强大,可用于或多或少应用,尤其是单词预测和转换。 在这里,我们 都都 将尝试将它们应用于感情说说的说说分析。

第二每项的教程代码在这里。

在双核 Macbook Pro 上,使用 4 个工作进程来运行,花费如此 15 分钟。 而且,它会因你的计算机而异。 幸运的是,日志记录功能可不可不后能 打印含晒 信息的消息。

我们 都都 的模型也能区分意义上的差异! 它知道女人爱,女人爱和孩子彼此更累似 ,而就有厨房橱柜。 更多的探索表明,该模型对意义上更微妙的差异敏感,累似 国家和城市之间的差异:

接下来,我们 都都 还要什儿 特定的输入格式。 Word2Vec 还要单个说说,每个说说就有一列单词。 换句话说,输入格式是列表的列表。

你肯能会从BeautifulSoup那里得到或多或少关于说说中 URL 的警告。 那先 就有用担心(尽管你肯能还要考虑在清理文本时删除 URL)。

查看 Google 的代码,文章和附带的论文。 此演示也很有帮助。 原始代码是 C 写的,但它已被移植到或多或少语言,包括 Python。 我们 都都 鼓励你使用原始 C 工具,但肯能你是初学进程员(我们 都都 还要手动编辑头文件来编译),请注意它就有用户友好的。

而且,似乎我们 都都 有相当好的语义意义模型 - 大约和词袋一样好。 而且,我们 都都 何如也能将那先 花哨的分布式单词向量用于监督学习呢? 下一节将对此进行一次尝试。

不言而喻 Word2Vec 不像或多或少高度学习算法那样还要图形避免单元(GPU),但它是计算密集型的。 Google 的版本和 Python 版本都依赖于多进程(在你的计算机上并行运行多个进程以节省时间)。 为了在合理的时间内训练你的模型,你还要安装 cython(这里是指南)。 Word2Vec 可在如此安装 cython 的状况下运行,但运行它还要几天而就有几分钟。

我们 都都 为清理数据而编写的函数也与第 1 每项累似 ,尽管现在存在或多或少差异。 首先,为了训练 Word2Vec,最好太久删除停止词,肯能算法依赖于说说的更广泛的上下文,以便产生高质量的词向量。 而且,我们 都都 将在下面的函数中,将停止词删除变成可选的。 最好太久删除数字,但我们 都都 将其留作读者的练习。

本教程的什儿 每项将重点介绍使用 Word2Vec 算法创建分布式单词向量。 (高度学习的概述,以及或多或少或多或少教程的链接,请参阅“那先 是高度学习?”页面)。

使用精心解析的说说列表,我们 都都 已准备好训练模型。 有或多或少参数选项会影响运行时间和生成的最终模型的质量。 以下算法的完整信息,请参阅 word2vec API 文档以及 Google 文档。

Word2Vec 不还要标签来创建有意义的表示。这很有用,肯能现实世界中的大多数数据就有未标记的。肯能给网络足够的训练数据(数百亿个单词),它会产生价值形式极好的单词向量。具有累似 含义的词经常经常出现在簇中,而且簇具有间隔,使得可不可不后能 使用向量数学来再现诸如移觉的或多或少词关系。着名的例子是,通过训练好的单词向量,“国王 - 女人爱 + 女人爱 = 女王”。

译者:飞龙

…不言而喻我们 都都 使用的训练集相对较小,但肯定不完美:

肯能,与感情说说的说说分析更相关:

何如将4个 段落分成说说太久简单。 自然语言含晒 各种各样的问提。 英语说说肯能以“?”,“!”,“"”或“.”等结尾,而且间距和大写也就有可靠的标志。而且,我们 都都 将使用 NLTK 的punkt分词器进行说说分割。为了使用它,你还要安装 NLTK 并使用nltk.download()下载punkt的相关训练文件。

最近斯坦福大学的工作也将高度学习应用于感情说说的说说分析;我们 都都 的代码以 Java 提供。 而且,我们 都都 的方法依赖于说说解析,如此直接应用于任意长度的段落。

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

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

还要注意的4个 小细节是 Python 列表中+=append之间的区别。 在或多或少应用中,这两者是可不可不后能 互换的,但在这里它们就有。 肯能要将列表列表附加到所以我列表列表,append仅仅附加外层列表; 你还要使用+=也能连接所有内层列表。

在 Python 中,我们 都都 将使用gensim包中的 word2vec 的优秀实现。 肯能你还如此安装gensim,则还要安装它。 这里有4个 含晒 Python Word2Vec 实现的优秀教程。

现在我们 都都 可不可不后能 应用此函数,来准备 Word2Vec 的输入数据(这将还要几分钟):

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

第 2 每项和第 3 每项比第 1 每项假设你更熟悉Python。我们 都都 在双核 Macbook Pro 上开发了以下代码,而且,我们 都都 还如此在 Windows 上成功运行代码。肯能你是 Windows 用户而且使其正常运行,请在论坛中留言何如进行操作!更多完整信息,请参阅“配置系统”页面。

Word2vec,由 Google 于 2013 年发表,是什儿 神经网络实现,可不可不后能 学习单词的分布式表示。在此前一天肯能提出了用于学习单词表示的或多或少高度或循环神经网络架构,而且那先 的主要问提是训练模型所需时长间。 Word2vec 相对于或多或少模型学习得快。

鉴于我们 都都 特定的训练集,“Latifah”与“女王”的累似 性最高,也就匮乏为奇了。

选折 参数太久容易,而且一旦我们 都都 选折 了参数,创建 Word2Vec 模型就很简单:

我们 都都 还可不可不后能 使用most_similar函数来深入了解模型的单词簇:

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

我们 都都 可不可不后能 看一下输出,看看它与第 1 每项的不同之处:

原文:Bag of Words Meets Bags of Popcorn

现在到了细节! 首先,我们 都都 使用pandas读取数据,就像我们 都都 在第 1 每项中所做的那样。与第 1 每项不同,我们 都都 现在使用unlabeledTrain.tsv,其含晒 晒 100,000 个额外的评论,如此标签。 我们 都都都 在第 1 每项中构建词袋模型时,额外的未标记的训练评论如此用。 而且,肯能 Word2Vec 可不可不后能 从未标记的数据中学习,现在可不可不后能 使用那先 额外的 100,000 条评论。

肯能你的 CPU 使用率较低,则肯能如此你的计算机上的 cython 无法正常运行。

doesnt_match函数将尝试推断集合中哪个单词与或多或少单词最不累似 :

协议:CC BY-NC-SA 4.0

自豪地采用谷歌翻译