В этом примере показано, как визуализировать встраивание слов с помощью графиков 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-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
Встраивание векторов слов в трехмерное пространство с помощью 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])

readWordEmbedding | textscatter | textscatter3 | tokenizedDocument | vec2word | word2vec | wordEmbedding