В этом примере показано, как создать сеть совместной встречаемости использование модели сумки слов.
Учитывая корпус документов, сеть совместной встречаемости является неориентированным графом с узлами, соответствующими уникальным словам в словаре и ребрах, соответствующих частоте 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")
Найдите соседей слова "большим" использованием 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 + """");
Для получения дополнительной информации о графиках и сетевом анализе, см. График и Сетевые Алгоритмы.
tokenizedDocument
| bagOfWords
| removeStopWords
| graph