exponenta event banner

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

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

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

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

Загрузить предварительно подготовленное вложение слов с помощью fastTextWordEmbedding. Для выполнения этой функции требуется модель Text Analytics Toolbox™ для пакета поддержки внедрения Token Word на английском языке на 16 миллиардов. Если этот пакет поддержки не установлен, функция предоставляет ссылку для загрузки.

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-ю текстовую диаграмму рассеяния

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

Создайте 3D текстовую диаграмму рассеяния

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

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-е t-SNE координаты данных, вычисленные ранее.

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

Увеличьте изображение участка графика.

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

См. также

| | | | | |

Связанные темы