资源 | Chinese Word Vectors:目前最全的中文预训练词向量集合

作者:shenshen-hungry

机器之心编译

参与:刘晓坤、思源

对于国内自然语言处理的研究者而言,中文词向量语料库是需求很大的资源。近日,北京师范大学等机构的研究者开源了「中文词向量语料库」,试图为大家解决这一问题,该库包含经过数十种用各领域语料(百度百科、维基百科、人民日报 1947-2017、知乎、微博、文学、金融、古汉语等)训练的词向量,涵盖各领域,且包含多种训练设置。目前,该研究的论文《Analogical Reasoning on Chinese Morphological and Semantic Relations》已经被 ACL2018 大会接收。

项目链接:https://github.com/Embedding/Chinese-Word-Vectors

该项目提供使用不同表征(稀疏和密集)、上下文特征(单词、n-gram、字符等)以及语料库训练的中文词向量(嵌入)。在这里,你可以轻松获得具有不同属性的预训练向量,并将它们用于各类下游任务。

此外,开发者还在该工具中提供了一个中文类比推理数据集 CA8 及其评估工具包,用户可以以此评估自己词向量的质量。

格式

本资源中的预训练词向量文件以文本格式存储。每一行包含一个单词及其词向量。每个值由空格分开。第一行记录元信息:第一个数字表示该单词在文件中的排序,第二个数字表示维度大小。

除了密集单词向量(以 SGNS 训练),该项目还提供了稀疏向量(以 PPMI 训练)。它们与 liblinear 格式相同,其中「:」前的数字代表维度索引,「:」后的数字表示值。

预训练中文词向量

基本设定

多领域词汇

中文词向量在不同的表征、上下文特征和语料库上进行了训练。

*该项目提供了汉字嵌入,因为古中文大多数汉字就是一个词。

多种共现信息

开发者发布了在不同的共现(co-occurrence)统计数据上的词向量。目标和上下文向量在相关的论文中一般称为输入和输出向量。

在这一部分中,我们可以获取词层面之上的任意语言单元向量。例如,汉字向量包含在词-汉字的上下文向量中。所有向量都在百度百科上使用 SGNS 训练。

表征

现有的词表征方法一般可分为两种,即密集型和稀疏型的词嵌入表征。SGANS 模型(word2vec 工具包中的模型)和 PPMI 模型分别是这两种表征的典型案例。SGNS 模型通过一个浅层神经网络学习低维度的密集向量,这也称为神经嵌入方法。PPMI 模型是一种稀疏的特征袋(bag-of-feature)表征方法,且它会使用正逐点互信息(PPMI)对特征进行加权。

上下文特征

三种上下文特征:单词、n-gram 和字符在词嵌入文献中很常用。大多数词表征方法本质上利用了词-词的共现统计,即使用词作为上下文特征(词特征)。受语言建模问题的启发,开发者将 n-gram 特征引入了上下文中。词到词和词到 n-gram 的共现统计都被用于训练 n-gram 特征。对于中文而言,字符(即汉字)通常表达了很强的语义。为此,开发者考虑使用词-词和词-字符的共现统计来学习词向量。字符级的 n-gram 的长度范围是从 1 到 4(个字符特征)。

除了词、n-gram 和字符或汉字以外,还有其它对词向量的属性具有重要影响的特征。例如,使用整个文本作为上下文特征能将更多的主题信息引入到词嵌入向量中,使用依存关系解析树作为上下文特征能为词向量添加语法信息等。本项目考虑了 17 种同现类型。

语料库

开发者做了大量工作来收集多个领域的语料库。所有的文本数据都通过删除 html 和 xml 标记进行了预处理。只有纯文本被保留并使用 HanLP(v_1.5.3) 进行词分割。语料库的详细信息如下:

所有的单词都被包含其中,包括低频词。

工具包

所有的词向量由 ngram2vec 工具包训练。ngram2vec 工具包是 word2vec 和 fasttext 工具包的超集合,其支持抽象上下文特征和模型。

  • ngram2vec:https://github.com/zhezhaoa/ngram2vec/
  • word2vec:https://github.com/svn2github/word2vec
  • fasttext:https://github.com/facebookresearch/fastText

中文词类比基准

词向量的质量通常由类比问题任务进行评估。在该项目中,开发者使用了两个基准来评估。第一个是 CA-translated,其中大多数类比问题直接从英语基准中翻译得到。虽然 CA-translated 在很多中文词嵌入论文中被广泛应用,但它仅包含了三个语义问题和 134 个中文词。相对的,CA8 是专门为中文语言设计的。它包含了 17813 个类比问题,覆盖了综合的词法和语义关联。CA-translated、CA8 和它们的详细信息在 testets 文件夹中。

评估工具包

评估工具包在 evaluation 文件夹中。

运行以下代码可评估密集向量:

$ python ana_eval_dense.py -v <vector.txt> -a CA8/morphological.txt
$ python ana_eval_dense.py -v <vector.txt> -a CA8/semantic.txt

运行以下代码可评估稀疏向量:

$ python ana_eval_sparse.py -v <vector.txt> -a CA8/morphological.txt
$ python ana_eval_sparse.py -v <vector.txt> -a CA8/semantic.txt

参考文献

如果要使用这些嵌入和 CA8 数据集,请引用开发者的论文:

Shen Li, Zhe Zhao, Renfen Hu, Wensi Li, Tao Liu, Xiaoyong Du, Analogical Reasoning on Chinese Morphological and Semantic Relations, ACL 2018.

原文发布于微信公众号 - 机器之心(almosthuman2014)

原文发表时间:2018-05-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小小挖掘机

推荐系统遇上深度学习(一)--FM模型理论和实践

1、FM背景 在计算广告和推荐系统中,CTR预估(click-through rate)是非常重要的一个环节,判断一个商品的是否进行推荐需要根据CTR预估的点击...

1.1K10
来自专栏深度学习自然语言处理

基于汉语短文本对话的立场检测系统理论与实践

汉语短文本对话立场检测的主要任务就是通过以对话的一个人的立场为主要立场,而判断另一个人针对该人的回话的立场。立场包括支持,反对,中立三种立场。基于对话的立场检测...

881
来自专栏机器之心

教程 | 基于Keras的LSTM多变量时间序列预测

2958
来自专栏人工智能LeadAI

GAN学习指南:从原理入门到制作生成Demo

生成式对抗网络(GAN)是近年来大热的深度学习模型。最近正好有空看了这方面的一些论文,跑了一个GAN的代码,于是写了这篇文章来介绍一下GAN。 本文主要分为三...

5149
来自专栏量子位

如何用sklearn创建机器学习分类器?这里有一份上手指南

原作:Kasper Fredenslund 林鳞 编译自 Data Science Central 量子位 出品 | 公众号 QbitAI 分类器是数据挖掘中对...

33316
来自专栏人工智能

机器学习(五)——k-近邻算法进一步探究

机器学习(五) ——k-近邻算法进一步探究 (原创内容,转载请注明来源,谢谢) 一、概述 现采用k-近邻算法,进行分类应用。数据源采用《机器学习实战》提供的数据...

17210
来自专栏机器之心

资源 | textgenrnn:只需几行代码即可训练文本生成网络

选自GitHub 作者:minimaxir 机器之心编译 参与:Geek AI、路 本文是一个 GitHub 项目,介绍了 textgenrnn,一个基于 K...

2646
来自专栏人工智能LeadAI

条件概率,全概率,贝叶斯公式理解

简介 学过概率理论的人都知道条件概率的公式:P(AB)=P(A)P(B|A)=P(B)P(A|B);即事件A和事件B同时发生的概率等于在发生A的条件下B发生的概...

4119
来自专栏AI科技大本营的专栏

AI 技术讲座精选:如何在时序预测问题中在训练期间更新LSTM网络

使用神经网络解决时间序列预测问题的好处是网络可以在获得新数据时对权重进行更新。 在本教程中,你将学习如何使用新数据更新长短期记忆(LTCM)递归神经网络。 在...

3286
来自专栏AI科技大本营的专栏

AI 技术讲座精选:​通过学习Keras从零开始实现VGG网络

Keras代码示例多达数百个。通常我们只需复制粘贴代码,而无需真正理解这些代码。通过学习本教程,您将搭建非常简单的构架,但是此过程会带给您些许好处:您将通过阅读...

3488

扫码关注云+社区