Создайте сеть совместной встречаемости

В этом примере показано, как создать сеть совместной встречаемости использование модели сумки слов.

Учитывая корпус документов, сеть совместной встречаемости является неориентированным графом с узлами, соответствующими уникальным словам в словаре и ребрах, соответствующих частоте co-появления слов в документе. Используйте сети совместной встречаемости, чтобы визуализировать и извлечь информацию отношений между словами в корпусе документов. Например, можно использовать сеть совместной встречаемости, чтобы обнаружить, какие слова обычно появляются с заданным словом.

Импортируйте текстовые данные

Извлеките текстовые данные в файле weekendUpdates.xlsx использование readtable. Файл weekendUpdates.xlsx содержит обновления статуса, содержащие хэш-теги "#weekend" и "#vacation". Считайте данные с помощью readtable функционируйте и извлеките текстовые данные из TextData столбец.

filename = "weekendUpdates.xlsx";
tbl = readtable(filename,'TextType','string');
textData = tbl.TextData;

Просмотрите первые несколько наблюдений.

textData(1:5)
ans = 5x1 string
    "Happy anniversary! ❤ Next stop: Paris! ✈ #vacation"
    "Haha, BBQ on the beach, engage smug mode!   ❤  #vacation"
    "getting ready for Saturday night  #yum #weekend "
    "Say it with me - I NEED A #VACATION!!! ☹"
    " Chilling  at home for the first time in ages…This is the life!  #weekend"

Предварительно обработайте текстовые данные

Маркируйте текст, преобразуйте его в нижний регистр и удалите слова остановки.

documents = tokenizedDocument(textData);

documents = lower(documents);
documents = removeStopWords(documents);

Создайте матрицу подсчетов слов с помощью модели сумки слов.

bag = bagOfWords(documents);
counts = bag.Counts;

Чтобы вычислить совместные встречаемости слова, умножьте матрицу для подсчета количества слов на транспонировать.

cooccurrence = counts.'*counts;

Преобразуйте матрицу совместной встречаемости в сеть с помощью graph функция.

G = graph(cooccurrence,bag.Vocabulary,'omitselfloops');

Визуализируйте сеть с помощью plot функция. Установите толщину линии на кратное весу ребра.

LWidths = 5*G.Edges.Weight/max(G.Edges.Weight);

plot(G,'LineWidth',LWidths)
title("Co-occurence Network")

Figure contains an axes object. The axes object with title Co-occurence Network contains an object of type graphplot.

Найдите соседей слова "большим" использованием neighbors функция.

word = "great"
word = 
"great"
idx = find(bag.Vocabulary == word);
nbrs = neighbors(G,idx);
bag.Vocabulary(nbrs)'
ans = 18x1 string
    "next"
    "#vacation"
    ""
    "#weekend"
    "☹"
    "excited"
    "flight"
    "delayed"
    "stuck"
    "airport"
    "way"
    "spend"
    ""
    "lovely"
    "friends"
    "-"
    "mini"
    "everybody"

Визуализируйте совместные встречаемости слова, "большого" путем извлечения подграфа этого слова и его соседей.

H = subgraph(G,[idx; nbrs]);

LWidths = 5*H.Edges.Weight/max(H.Edges.Weight);
plot(H,'LineWidth',LWidths)
title("Co-occurence Network - Word: """ + word + """");

Figure contains an axes object. The axes object with title Co-occurence Network - Word: "great" contains an object of type graphplot.

Для получения дополнительной информации о графиках и сетевом анализе, см. График и Сетевые Алгоритмы.

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

| | |

Похожие темы