Pull to refresh

Comments 9

Присоединюсь к вопросу el777 — более удобоваримое описание было бы не лишним (хоть формулами, хоть побитый на отдельные пункты текст :-) ). А то вроде часть понятна, но смысл ускользает.

И да — как я понимаю — обучал word2vec на наборе текстов и кластеризовал полученные вектора? Было бы интересно получить набор кластеров (ну и вектора word2vec, для которых он составлен, конечно).

«В результате обучения получается список, где почти к каждому слову текста приписан какой-либо класс» — как я понимаю, в его качестве берется N ближайших кластеров? А есть ли смысл это делать на этапе работы с отдельными словами (если я верно помню суть описанного в https://habrahabr.ru/post/277563/ — можно было провести отбор уже на стадии работы с вектором текста)
Алгоритм, действительно, прост и его достаточно описать на словах. Интереснее само получение моделей. Во второй части будут и формулы, картинки и примеры. Возможно, что-то выложу в гит.
И да — как я понимаю — обучал word2vec на наборе текстов и кластеризовал полученные вектора? Было бы интересно получить набор кластеров (ну и вектора word2vec, для которых он составлен, конечно).

Да, обучал на большом объеме текстов, но не кластеризовал, а использовал при обучении параметр "-classes", например:
time $BIN_DIR/word2vec -train $TEXT_DATA -output $CLASSES_DATA -cbow 0 -size 200 -window 5 -negative 0 -hs 1 -sample 1e-3 -threads 12 -classes 500
— там уже вшит k-mean.
Предлагаю пойти немного глубже.А именно:

1. Один токен имеет отношение к нескольким кластерам. То есть, каждому токену ставится в соответсвие вектор действительных чисел, значения которого — дистанция от токена до центра кластера
2. Проводить нормализацию. Речь о том, что кластеры сильно неравновесны — в одних (обычно наиболее ценных для классификации) располагаются редкие слова — названия и аббревиатуры, в других — частотные слова — общая лексика. Наша цель — выровнять эти кластеры по частоте так, что бы они оказывали соизмеримое влияние на итоговую оценку. Без нормализации документы разделяются более по стилю (общеупотребительным словам), а после нормализации — по смыслу (названия, термины, специфические обороты)
3. Можно пойти ещё дальше и разметить обучающий текстовый файл метками классов, в результате кластеры лягут не случайным образом, а разведутся в векторном пространстве на максимальную дистанцию для документов разных классов.

Почитать об этом можно тут:
https://habrahabr.ru/post/277563/
http://servponomarev.livejournal.com/10604.html
Спасибо, с ваши публикации читал, разумеется.
1 — пробовал, но выбрал другой вариант (напишу во второй части), более простой (и более быстрый). А поскольку результат удовлетворил, то на том пока и остановился.
2 — именно это и является главным. Если в вкратце: для нормализации использовал df и дисперсию (или sd — без разницы).
3 — интересная мысль, но это уже будет классификация, наподобие обучения с учителем. А нужна чистая кластеризация: идет поток сообщений по всем популярным источникам (сотни сообщений в секунду), нужно поймать основные кластеры, скажем, за четверть часа…

Тут вопрос в том, что кластеризация тоже не в вакууме делается. Можно ведь кластеризовать текст и по
количеству вхождений буквы А. А если нужна тематическая кластеризация, то нужны темы, относительно которых кластеризуем документы. Можно использовать Вики в качестве источника тем. Но все равно — качественной кластеризуем, если у нее под капотом нет классификации — не получится.

В том-то и дело, что темы заранее не определены: может быть поток соц медиа, а может СМИ. Поэтому приходится решать обратную задачу: сначала получить кластеры, а потом с помощью NER или концептов того же вики выяснять между ними отношения.Так просто быстрее на больших объемах.
Вместо изнасилования word2vec можно обратить свой взор на целый раздел машинного обучения, который называется тематическое моделирование.

А если жажда применять word2vec неискоренима, то можно посмотреть например на такие штуки:
https://arxiv.org/pdf/1605.02019.pdf

Я и тематически кластера найдутся и самому себе можно будет говорить: «Я юзаю word2vec».
topic models — да, лет 10-15 назад с этого все и началось: LDA, LSA, pLSA etc. Порой что-то получалось. Но, к слову, даже очень неплохая разработка д. ф.-м. н. тов. Воронцова не показала требуемых результатов на Big data. А нам нужен результат, а не досужие опусы.
Sign up to leave a comment.

Articles