Визуализируйте текстовые графики поля точек Word Embeddings Using

Этот пример показывает, как визуализировать вложения слова с помощью 2D и 3-D t-SNE и текстовых графиков рассеивания.

Вложения Word сопоставляют слова в словаре к векторам действительных чисел. Векторы пытаются получить семантику слов, так, чтобы подобные слова имели подобные векторы. Некоторые вложения также получают отношения между словами как "Италия, во Францию, как Рим в Париж". В векторной форме это отношение Италия-Рим+Париж=Франция.

Чтобы воспроизвести результаты в этом примере, установите rng на 'default'.

rng('default')

Загрузите предварительно обученный Word Embedding

Загрузите предварительно обученное встраивание слова с помощью fastTextWordEmbedding. Эта функция требует Модели Text Analytics Toolbox™ для fastText английских 16 миллиардов Лексем пакет поддержки 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"

Создайте 2D текстовый график поля точек

Визуализируйте встраивание слова путем создания 2D текстового графика рассеивания с помощью tsne и textscatter.

Преобразуйте первые 500 слов в векторы с помощью 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 в 2D текстовом графике рассеивания. Для удобочитаемости textscatter, по умолчанию, не отображает все входные слова и маркеры отображений вместо этого.

figure 
textscatter(XY,words)
title("Word Embedding t-SNE Plot")

Увеличьте масштаб раздела графика.

xlim([-18 -5])
ylim([11 21])

Создайте 3-D текстовый график поля точек

Визуализируйте встраивание слова путем создания 3-D текстового графика рассеивания с помощью tsne и textscatter.

Преобразуйте первые 5 000 слов в векторы с помощью 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])

Выполните кластерный анализ

Преобразуйте первые 5 000 слов в векторы с помощью 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');

Визуализируйте кластеры в текстовом графике рассеивания с помощью 2D t-SNE координат данных, вычисленных ранее.

figure
textscatter(XY,words,'ColorData',categorical(cidx));
title("Word Embedding t-SNE Plot")

Увеличьте масштаб раздела графика.

xlim([13 24])
ylim([-47 -35])

Смотрите также

| | | | | |

Похожие темы