刘晓坤 思源参与

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

对于国内自然语言处理的研究者而言,中文词向量语料库是需求很大的资源。近日,来自北京师范大学中文信息处理研究所与中国人民大学 DBIIR 实验室的研究者开源了「中文词向量语料库」,试图为大家解决这一问题,该库包含经过数十种用各领域语料(百度百科、维基百科、人民日报 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 工具包的超集合,其支持抽象上下文特征和模型。

中文词类比基准

词向量的质量通常由类比问题任务进行评估。在该项目中,开发者使用了两个基准来评估。第一个是 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. 

工程词向量数据集中文语料库
131
相关数据
类比推理技术
Analogical reasoning

在两种情况或事件之间感知和使用关系相似性的能力 - 是人类认知的一个基本方面。

神经网络技术
Neural Network

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

fastText技术
fastText

Facebook开发的文本处理工具,是一个用于高效学习单词表示和句子分类的库。

语料库技术
Corpora

语料库一词在语言学上意指大量的文本,通常经过整理,具有既定格式与标记;事实上,语料库英文 "text corpus" 的涵意即为"body of text"。

基准技术
baseline

一种简单的模型或启发法,用作比较模型效果时的参考点。基准有助于模型开发者针对特定问题量化最低预期效果。

自然语言处理技术
Natural language processing

自然语言处理(英语:natural language processing,缩写作 NLP)是人工智能和语言学领域的分支学科。此领域探讨如何处理及运用自然语言;自然语言认知则是指让电脑“懂”人类的语言。自然语言生成系统把计算机数据转化为自然语言。自然语言理解系统把自然语言转化为计算机程序更易于处理的形式。

解析树技术
parse tree

解析树是一个内部结构,由编译器或解释器在解析一些语言结构时创建,解析也被称为“语法分析”。

word2vec技术
word2vec

Word2vec,为一群用来产生词向量的相关模型。这些模型为浅而双层的神经网络,用来训练以重新建构语言学之词文本。网络以词表现,并且需猜测相邻位置的输入词,在word2vec中词袋模型假设下,词的顺序是不重要的。 训练完成之后,word2vec模型可用来映射每个词到一个向量,可用来表示词对词之间的关系。该向量为神经网络之隐藏层。 Word2vec依赖skip-grams或连续词袋(CBOW)来建立神经词嵌入。Word2vec为托马斯·米科洛夫(Tomas Mikolov)在Google带领的研究团队创造。该算法渐渐被其他人所分析和解释。

词嵌入技术
Word embedding

词嵌入是自然语言处理(NLP)中语言模型与表征学习技术的统称。概念上而言,它是指把一个维数为所有词的数量的高维空间嵌入到一个维数低得多的连续向量空间中,每个单词或词组被映射为实数域上的向量。

推荐文章