Визуализация встраиваний в Word с помощью графиков Поля Точек

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

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

Загрузка предварительно обученного встраивания в Word

Загрузите предварительно обученное встраивание слов с помощью 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 график поля точек текста

Визуализируйте встраивание слова путем создания 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 график поля точек текста

Визуализируйте встраивание слова путем создания 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])

См. также

| | | | | |

Похожие темы