Подробный процесс обучения вектору слова GloVe

искусственный интеллект

Перчатки тренировочные слова векторов

Вход: Корпус

вывод: вектор слова

Шаги делятся на загрузку кода, подготовку корпуса и обучение модели.

1. Загрузите код

git clone https: // github . com / stanfordnlp / GloVe . git

После загрузки находится папка, каталог файлов выглядит следующим образом:

2. Подготовьте корпус

Формат корпуса - текст после сегментации слов. Слова разделены пробелами. Метод сегментации слов выбирается самостоятельно, например jieba, следующим образом:

紧急通知 通知 七点 50 准时 武陵 楼 开会 早 开 早 散 十一 十一点 十一点半 一点 一点半 准时 散会 时间 会议

党 服 成员 明天 中午 12 点 30 分 第一 第一次 例会 会地 地点 待定 请 预留 留出 时间 收到 请 回复 全体成员 成员 时间 会议

通知 宣传 宣传部 部将 明天 中午 1230 周三 j4101 开本 本次 部门 例会 请 带好 笔 本次 例会 考评 部 本次 例会 主席 主席团 发 邀请 梁 淑 楠 收到 请 回复 全体成员 成员 时间 会议 议会 会议 议会 会议

Поместите корпус (counts.txt) в каталог Glove и добавьте путь к demo.sh. Исходная часть кода demo.sh выглядит следующим образом:

#!/bin/bash
set -e
# Makes programs, downloads sample data, trains a GloVe model, and then evaluates it.
# One optional argument can specify the language used for eval script: matlab, octave or [default] python
make
if [ ! -e text8 ]; then
  if hash wget 2>/dev/null; then
    wget http://mattmahoney.net/dc/text8.zip
  else
    curl -O http://mattmahoney.net/dc/text8.zip
  fi
  unzip text8.zip
  rm text8.zip
fi
CORPUS=text8
VOCAB_FILE=vocab.txt
COOCCURRENCE_FILE=cooccurrence.bin
COOCCURRENCE_SHUF_FILE=cooccurrence.shuf.bin
BUILDDIR=build
SAVE_FILE=vectors
VERBOSE=2
MEMORY=4.0
VOCAB_MIN_COUNT=5
VECTOR_SIZE=50
MAX_ITER=15
WINDOW_SIZE=15
BINARY=2
NUM_THREADS=8
X_MAX=10

Измененные файлы выглядят следующим образом

#!/bin/bash
set -e
# Makes programs, downloads sample data, trains a GloVe model, and then evaluates it.
# One optional argument can specify the language used for eval script: matlab, octave or [default] python
#make
#if [ ! -e text8 ]; then
#  if hash wget 2>/dev/null; then
#    wget http://mattmahoney.net/dc/text8.zip
#  else
#    curl -O http://mattmahoney.net/dc/text8.zip
#  fi
#  unzip text8.zip
#  rm text8.zip
#fi
CORPUS=counts.txt    #CORPUS改为自己的预训练的文档
VOCAB_FILE=vocab.txt
COOCCURRENCE_FILE=cooccurrence.bin
COOCCURRENCE_SHUF_FILE=cooccurrence.shuf.bin
BUILDDIR=build
SAVE_FILE=vectors
VERBOSE=2
MEMORY=4.0
VOCAB_MIN_COUNT=5   #单词至少出现的次数
VECTOR_SIZE=300     #训练的词向量维度
MAX_ITER=15         #训练迭代次数
WINDOW_SIZE=15      #窗口大小
BINARY=2
NUM_THREADS=8
X_MAX=10

В-третьих, модель обучения.

Сначала выполните команду make в каталоге перчаток (если он не существует, вам может потребоваться установить MinGW)

make

После выполнения команды будет сгенерирована папка сборки и файлы зависимостей, необходимые для обучения.

Затем запустите demo.sh:

./demo.sh  或 bash demo.sh 或 sh demo.sh 

image.png

После обучения вы получите 3 векторных файла:

image.png

Каждая строка в vocab.txt представляет собой слово и его частотность.

Нужные нам векторы слов хранятся в vectors.txt