Skip to main content

用于从微小数据生成词嵌入的 python 模块

项目描述

GitHub 发布 PyPI 发布 建造 麻省理工学院许可证

随机数2vec

欢迎来到 Nonce2Vec!

该存储库的主要分支现在指的是 Kabbach 等人。(2019) ACL SRW 2019 论文Towards incremental learning of word embeddings using context informativeness

如果您正在寻找 Herbelot 和 Baroni (2017) 存储库,请查看emnlp2017分支。

如果您使用此代码,请引用:

@inproceedings{kabbach-etal-2019-towards,
    title = "Towards Incremental Learning of Word Embeddings Using Context Informativeness",
    author = "Kabbach, Alexandre  and
      Gulordava, Kristina  and
      Herbelot, Aur{\'e}lie",
    booktitle = "Proceedings of the 57th Conference of the Association for Computational Linguistics: Student Research Workshop",
    month = jul,
    year = "2019",
    address = "Florence, Italy",
    publisher = "Association for Computational Linguistics",
    url = "https://www.aclweb.org/anthology/P19-2022",
    pages = "162--168"
}

抽象的

在本文中,我们研究了以增量、认知合理的方式从非常稀疏的数据中学习词嵌入的任务。我们专注于信息量的概念,即某些内容对学习过程比其他内容更有价值的想法。我们进一步强调了在线学习的挑战,并认为以前的系统没有实现增量。具体而言,我们将信息性纳入先前提出的随机数学习模型中,将其用于上下文选择和学习率调制。我们测试我们的系统从定义中学习新词的任务,以及从潜在的无信息上下文中学习新词的任务。我们证明,信息量对于在真正的增量设置中获得最先进的性能至关重要。

代码注释

我们对原始 Nonce2Vec 代码进行了重大重构,以使复制更容易并使其与 gensim v3.x 一起使用。您可以使用 Nonce2Vec v2.x 来复制 SRW 论文的结果。但是,要复制原始 ENMLP 论文的结果,请参阅在emnlp2017 分支下找到的 Nonce2Vec v1.x,因为我们不能保证 v1.x 和 v2.x 之间的公平复制。

安装

您可以通过 pip 安装 Nonce2Vec:

pip3 install nonce2vec

或者,在 git clone 之后,通过:

python3 setup.py install

先决条件

要运行 Nonce2Vec,您需要两个 gensim Word2Vec 模型(一个 skipgram 模型和一个 cbow 模型来计算信息量指标)。您可以从以下位置下载 skipgram 模型:

wget backup.3azouz.net/gensim.w2v.skipgram.model.7z

和 cbow 模型来自:

wget backup.3azouz.net/gensim.w2v.cbow.model.7z

或按照以下说明自行生成。

从 Wikipedia 转储生成 Word2Vec 模型

您可以在此处下载 2019 年 1 月的英文维基百科转储:

wget backup.3azouz.net/enwiki.20190120.7z

如果您想为英语或任何其他语言生成一个全新的(标记化的每行一个句子)维基百科转储,请查看WiToKit

一旦你有一个 Wikipedia txt 转储,你可以通过以下方式生成一个 gensim Word2Vec skipgram 模型:

n2v train \
  --data /absolute/path/to/wikipedia/tokenized/text/dump \
  --outputdir /absolute/path/to/dir/where/to/store/w2v/model \
  --alpha 0.025 \
  --neg 5 \
  --window 5 \
  --sample 1e-3 \
  --epochs 5 \
  --min-count 50 \
  --size 400 \
  --num-threads number_of_cpu_threads_to_use \
  --train-mode skipgram

和一个 gensim Word2Vec cbow 模型,通过:

n2v train \
  --data /absolute/path/to/wikipedia/tokenized/text/dump \
  --outputdir /absolute/path/to/dir/where/to/store/w2v/model \
  --alpha 0.025 \
  --neg 5 \
  --window 5 \
  --sample 1e-3 \
  --epochs 5 \
  --min-count 50 \
  --size 400 \
  --num-threads number_of_cpu_threads_to_use \
  --train-mode cbow

要检查您的 word2vec 模型与 MEN 数据集的相关性,请运行:

n2v check-men \
  ---model /absolute/path/to/gensim/w2v/model

运行代码

在嵌合体数据集的定义上运行 Nonce2Vec 是通过n2v test命令完成的。您可以传入--reload参数以在one-shot模式下运行,没有它的代码默认以增量模式运行。您可以--shuffle在运行 n2v 之前进一步传入参数以对测试集进行洗牌。

您将在下面找到与 SRW 2019 论文中报告的实验相对应的命令列表。例如,要测试 SUM CWI 模型(具有基于上下文词信息性过滤的基本求和模型),它为增量设置中的所有数据集提供了相当稳健的基线,运行定义数据集:

n2v test \
  --on def \
  --model /absolute/path/to/gensim/w2v/skipgram/model \
  --info-model /absolute/path/to/gensim/w2v/cbow/model \
  --sum-only \
  --sum-filter cwi \
  --sum-threshold 0

要在 chimera L4 测试集上运行 N2V CWI alpha 模型,使用改组和一次性评估设置(提供 SOTA 性能),请执行以下操作:

n2v test \
  --on l4 \
  --model /absolute/path/to/gensim/w2v/skipgram/model \
  --info-model /absolute/path/to/gensim/w2v/cbow/model \
  --sum-filter cwi \
  --sum-threshold 0 \
  --train-with cwi_alpha \
  --alpha 1.0 \
  --beta 1000 \
  --kappa 1 \
  --neg 3 \
  --epochs 1 \
  --reload

要按原样测试 N2V(没有背景冻结的原始 N2V 代码),在定义数据集的增量设置中,请执行以下操作:

n2v test \
  --on def \
  --model /absolute/path/to/gensim/w2v/skipgram/model \
  --sum-filter random \
  --sample 10000 \
  --alpha 1.0 \
  --neg 3 \
  --window 15 \
  --epochs 1 \
  --lambda 70 \
  --sample-decay 1.9 \
  --window-decay 5 \
  --replication

要在一次性评估设置中的定义数据集上测试 N2V CWI init(具有基于 CWI 和初始化的原始 N2V),请执行以下操作:

n2v test \
  --on def \
  --model /absolute/path/to/gensim/w2v/skipgram/model \
  --info-model /absolute/path/to/gensim/w2v/cbow/model \
  --sum-filter cwi \
  --sum-threshold 0 \
  --alpha 1.0 \
  --neg 3 \
  --window 15 \
  --epochs 1 \
  --lambda 70 \
  --sample-decay 1.9 \
  --window-decay 5 \
  --replication \
  --reload

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

nonce2vec-2.0.2.tar.gz (22.5 kB 查看哈希

已上传 source