В этом примере показано, как визуализировать вложения слов с помощью 2-D и 3-D t-SNE и текстовых графиков поля точек.
Word embeddings сопоставляют слова в словаре с векторами действительных чисел. Векторы пытаются захватить семантику слов, так что подобные слова имеют похожие векторы. Некоторые вложения также фиксируют отношения между словами «Италия - Франция, а Рим - Париж». В векторной форме это отношение является .
Загрузите предварительно обученное встраивание слов с помощью fastTextWordEmbedding
. Эта функция требует Text Analytics Toolbox™ Model для fastText English 16 млрд Token Word Embedding пакет поддержки. Если этот пакет поддержки не установлен, то функция предоставляет ссылку на загрузку.
emb = fastTextWordEmbedding
emb = wordEmbedding with properties: Dimension: 300 Vocabulary: [1×999994 string]
Исследуйте встраивание слов с помощью word2vec
и vec2word
. Преобразуйте слова Италия, Рим и Париж в векторы с помощью word2vec
.
italy = word2vec(emb,"Italy"); rome = word2vec(emb,"Rome"); paris = word2vec(emb,"Paris");
Вычислите вектор, заданный как italy - rome + paris
. Этот вектор инкапсулирует семантический смысл слова Италия, без семантики слова Рим, а также включает семантику слова Париж.
vec = italy - rome + paris
vec = 1×300 single row vector
0.1606 -0.0690 0.1183 -0.0349 0.0672 0.0907 -0.1820 -0.0080 0.0320 -0.0936 -0.0329 -0.1548 0.1737 -0.0937 -0.1619 0.0777 -0.0843 0.0066 0.0600 -0.2059 -0.0268 0.1350 -0.0900 0.0314 0.0686 -0.0338 0.1841 0.1708 0.0276 0.0719 -0.1667 0.0231 0.0265 -0.1773 -0.1135 0.1018 -0.2339 0.1008 0.1057 -0.1118 0.2891 -0.0358 0.0911 -0.0958 -0.0184 0.0740 -0.1081 0.0826 0.0463 0.0043
Найдите самые близкие слова во внедрении, чтобы vec
использование vec2word
.
word = vec2word(emb,vec)
word = "France"
Визуализируйте встраивание слова путем создания 2-D графики поля точек текста с помощью tsne
и textscatter
.
Преобразуйте первые 5000 слов в векторы с помощью word2vec
. V
является матрицей векторов слов длиной 300.
words = emb.Vocabulary(1:5000); V = word2vec(emb,words); size(V)
ans = 1×2
5000 300
Встройте векторы слов в двумерное пространство с помощью tsne
. Выполнение этой функции может занять несколько минут. Если необходимо отобразить информацию о сходимости, установите 'Verbose'
Пара "имя-значение" к 1.
XY = tsne(V);
Постройте график слов в координатах, заданных XY
в 2-D текстовом графике поля точек. Для читаемости, textscatter
по умолчанию не отображает все входные слова и вместо этого отображает маркеры.
figure
textscatter(XY,words)
title("Word Embedding t-SNE Plot")
Изменение масштаба раздела графика.
xlim([-18 -5]) ylim([11 21])
Визуализируйте встраивание слова путем создания 3-D графики поля точек текста с помощью tsne
и textscatter
.
Преобразуйте первые 5000 слов в векторы с помощью word2vec
. V
является матрицей векторов слов длиной 300.
words = emb.Vocabulary(1:5000); V = word2vec(emb,words); size(V)
ans = 1×2
5000 300
Встройте векторы слов в 3-мерное пространство с помощью tsne
путем определения количества размерностей, которое должно быть три. Выполнение этой функции может занять несколько минут. Если необходимо отобразить информацию о сходимости, можно задать 'Verbose'
Пара "имя-значение" к 1.
XYZ = tsne(V,'NumDimensions',3);
Постройте график слов в координатах, заданных XYZ, на 3-D графике поля точек текста.
figure
ts = textscatter3(XYZ,words);
title("3-D Word Embedding t-SNE Plot")
Изменение масштаба раздела графика.
xlim([12.04 19.48]) ylim([-2.66 3.40]) zlim([10.03 14.53])
Преобразуйте первые 5000 слов в векторы с помощью word2vec
. V
является матрицей векторов слов длиной 300.
words = emb.Vocabulary(1:5000); V = word2vec(emb,words); size(V)
ans = 1×2
5000 300
Обнаружение 25 кластеров с помощью kmeans
.
cidx = kmeans(V,25,'dist','sqeuclidean');
Визуализируйте кластеры на графике поля точек с помощью 2-D координат данных t-SNE, вычисленных ранее.
figure textscatter(XY,words,'ColorData',categorical(cidx)); title("Word Embedding t-SNE Plot")
Изменение масштаба раздела графика.
xlim([13 24]) ylim([-47 -35])
readWordEmbedding
| textscatter
| textscatter3
| tokenizedDocument
| vec2word
| word2vec
| wordEmbedding