中文词向量
本项目提供100多种中文词向量(嵌入),这些词向量使用不同的表示方法(密集和稀疏)、上下文特征(词、n-gram、字符等)和语料库进行训练。用户可以轻松获取具有不同属性的预训练向量,并将其用于下游任务。
此外,我们还提供了一个中文类比推理数据集CA8和评估工具包,供用户评估其词向量的质量。
参考文献
如果使用这些词嵌入和CA8数据集,请引用以下论文。
Shen Li, Zhe Zhao, Renfen Hu, Wensi Li, Tao Liu, Xiaoyong Du, Analogical Reasoning on Chinese Morphological and Semantic Relations, ACL 2018.
@InProceedings{P18-2023,
author = "Li, Shen
and Zhao, Zhe
and Hu, Renfen
and Li, Wensi
and Liu, Tao
and Du, Xiaoyong",
title = "Analogical Reasoning on Chinese Morphological and Semantic Relations",
booktitle = "Proceedings of the 56th Annual Meeting of the Association for Computational Linguistics (Volume 2: Short Papers)",
year = "2018",
publisher = "Association for Computational Linguistics",
pages = "138--143",
location = "Melbourne, Australia",
url = "http://aclweb.org/anthology/P18-2023"
}
关于中文词嵌入内在评估和外在评估之间关系的详细分析,请参见以下论文:
Yuanyuan Qiu, Hongzheng Li, Shen Li, Yingdi Jiang, Renfen Hu, Lijiao Yang. Revisiting Correlations between Intrinsic and Extrinsic Evaluations of Word Embeddings. Chinese Computational Linguistics and Natural Language Processing Based on Naturally Annotated Big Data. Springer, Cham, 2018. 209-221. (CCL & NLP-NABD 2018 最佳论文奖)
@incollection{qiu2018revisiting,
title={Revisiting Correlations between Intrinsic and Extrinsic Evaluations of Word Embeddings},
author={Qiu, Yuanyuan and Li, Hongzheng and Li, Shen and Jiang, Yingdi and Hu, Renfen and Yang, Lijiao},
booktitle={Chinese Computational Linguistics and Natural Language Processing Based on Naturally Annotated Big Data},
pages={209--221},
year={2018},
publisher={Springer}
}
格式
预训练的向量文件采用文本格式。每行包含一个词及其向量。每个值之间用空格分隔。第一行记录元信息:第一个数字表示文件中的词数,第二个数字表示维度大小。
除了密集词向量(使用SGNS训练)外,我们还提供稀疏向量(使用PPMI训练)。它们采用与liblinear相同的格式,其中":"前的数字表示维度索引,":"后的数字表示值。
预训练中文词向量
基本设置
窗口大小 | 动态窗口 | 下采样 | 低频词 | 迭代次数 | 负采样* |
5 | 是 | 1e-5 | 10 | 5 | 5 |
*仅适用于SGNS。
各种领域
使用不同表示方法、上下文特征和语料库训练的中文词向量。
词向量 / 带负采样的跳字模型 (SGNS) | ||||
语料库 | 上下文特征 | |||
词 | 词 + N元组 | 词 + 字符 | 词 + 字符 + N元组 | |
百度百科 | 300维 | 300维 | 300维 | 300维 / 提取码: 5555 |
中文维基百科 | 300维 | 300维 | 300维 | 300维 |
人民日报 | 300维 | 300维 | 300维 | 300维 |
搜狗新闻 | 300维 | 300维 | 300维 | 300维 |
金融新闻 | 300维 | 300维 | 300维 | 300维 |
知乎问答 | 300维 | 300维 | 300维 | 300维 |
微博 | 300维 | 300维 | 300维 | 300维 |
文学作品 | 300维 | 300维 / 提取码: z5b4 | 300维 | 300维 / 提取码: yenb |
四库全书* | 300维 | 300维 | 无 | 无 |
综合语料 百度网盘 / 谷歌云盘 |
300维 300维 |
300维 300维 |
300维 300维 |
300维 300维 |
正向点互信息(PPMI) | ||||
语料库 | 上下文特征 | |||
词 | 词 + N元组 | 词 + 字符 | 词 + 字符 + N元组 | |
百度百科 | 稀疏 | 稀疏 | 稀疏 | 稀疏 |
中文维基百科 | 稀疏 | 稀疏 | 稀疏 | 稀疏 |
人民日报 | 稀疏 | 稀疏 | 稀疏 | 稀疏 |
搜狗新闻 | 稀疏 | 稀疏 | 稀疏 | 稀疏 |
金融新闻 | 稀疏 | 稀疏 | 稀疏 | 稀疏 |
知乎问答 | 稀疏 | 稀疏 | 稀疏 | 稀疏 |
微博 | 稀疏 | 稀疏 | 稀疏 | 稀疏 |
文学作品 | 稀疏 | 稀疏 | 稀疏 | 稀疏 |
四库全书* | 稀疏 | 稀疏 | 无 | 无 |
综合 | 稀疏 | 稀疏 | 稀疏 | 稀疏 |
*由于古汉语中大多数汉字就是词,所以提供了字符嵌入。
多种共现信息
我们发布了基于不同共现统计的词向量。目标向量和上下文向量在一些相关论文中也被称为输入向量和输出向量。
在这部分中,可以获得超出词的任意语言单位的向量。例如,字符向量在词-字符的上下文向量中。
所有向量都是在百度百科上使用SGNS训练的。
特征 | 共现类型 | 目标词向量 | 上下文词向量 |
词 | 词 → 词 | 300维 | 300维 |
N元语法 | 词 → N元语法 (1-2) | 300维 | 300维 |
词 → N元语法 (1-3) | 300维 | 300维 | |
N元语法 (1-2) → N元语法 (1-2) | 300维 | 300维 | |
字符 | 词 → 字符 (1) | 300维 | 300维 |
词 → 字符 (1-2) | 300维 | 300维 | |
词 → 字符 (1-4) | 300维 | 300维 | |
部首 | 部首 | 300维 | 300维 |
位置 | 词 → 词(左/右) | 300维 | 300维 |
词 → 词(距离) | 300维 | 300维 | |
全局 | 词 → 文本 | 300维 | 300维 |
句法特征 | 词 → 词性 | 300维 | 300维 |
词 → 依存关系 | 300维 | 300维 |
表示方法
现有的词表示方法可以分为两类:密集和稀疏表示。SGNS模型(word2vec工具包中的一个模型)和PPMI模型分别是这两类方法的典型代表。SGNS模型通过浅层神经网络训练低维实数(密集)向量。它也被称为神经嵌入方法。PPMI模型是一种稀疏的特征袋表示,使用正向点互信息(PPMI)加权方案进行加权。
上下文特征
在词嵌入文献中,常用的三种上下文特征是:词、N元语法和字符。大多数词表示方法本质上利用词-词共现统计,即使用词作为上下文特征(词特征)。受语言建模问题的启发,我们将N元语法特征引入上下文。训练时同时使用词-词和词-N元语法共现统计(N元语法特征)。对于中文,汉字通常具有强烈的语义。为此,我们考虑使用词-词和词-字符共现统计来学习词向量。字符级N元语法的长度范围从1到4(字符特征)。
除了词、N元语法和字符之外,还有其他特征对词向量的属性有重要影响。例如,使用整个文本作为上下文特征可以为词向量引入更多主题信息;使用依存句法分析作为上下文特征可以为词向量添加句法约束。本项目考虑了17种共现类型。
语料库
我们付出了巨大努力,收集了跨越多个领域的语料库。所有文本数据都经过预处理,删除了html和xml标签。只保留纯文本,并使用HanLP(v_1.5.3)进行分词。此外,使用开放中文转换(OpenCC)将繁体中文字符转换为简体字符。详细的语料库信息如下:
语料库 | 大小 | 词数 | 词汇量 | 描述 |
百度百科 | 4.1G | 745M | 5422K | 来自https://baike.baidu.com/的中文百科数据 |
中文维基百科 | 1.3G | 223M | 2129K | 来自https://dumps.wikimedia.org/的中文维基百科数据 |
人民日报 | 3.9G | 668M | 1664K | 来自人民日报(1946-2017)的新闻数据 http://data.people.com.cn/ |
搜狗新闻 | 3.7G | 649M | 1226K | 搜狗实验室提供的新闻数据 http://www.sogou.com/labs/ |
金融新闻 | 6.2G | 1055M | 2785K | 从多个新闻网站收集的金融新闻 |
知乎问答 | 2.1G | 384M | 1117K | 来自https://www.zhihu.com/的中文问答数据 |
微博 | 0.73G | 136M | 850K | NLPIR实验室提供的中文微博数据 http://www.nlpir.org/wordpress/download/weibo.7z |
文学作品 | 0.93G | 177M | 702K | 8599部现代中文文学作品 |
综合 | 22.6G | 4037M | 10653K | 我们通过合并上述语料库构建了大型语料库。 |
四库全书 | 1.5G | 714M | 21.8K | 中国前现代最大的文献集合。 |
所有词都被考虑在内,包括低频词。
工具包
所有词向量都使用ngram2vec工具包进行训练。Ngram2vec工具包是word2vec和fasttext工具包的超集,支持任意上下文特征和模型。
中文词类比基准测试
词向量的质量通常通过类比问题任务来评估。本项目利用两个基准测试进行评估。第一个是CA-translated,其中大多数类比问题直接从英语基准翻译而来。尽管CA-translated已在许多中文词嵌入论文中广泛使用,但它仅包含三种语义问题,涵盖134个中文词。相比之下,CA8是专门为中文语言设计的。它包含17813个类比问题,涵盖了全面的形态和语义关系。CA-translated、CA8及其详细描述可在testsets文件夹中找到。
评估工具包
我们在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