Comments 9
Алгоритм-то где? )
+2
Присоединюсь к вопросу el777 — более удобоваримое описание было бы не лишним (хоть формулами, хоть побитый на отдельные пункты текст :-) ). А то вроде часть понятна, но смысл ускользает.
И да — как я понимаю — обучал word2vec на наборе текстов и кластеризовал полученные вектора? Было бы интересно получить набор кластеров (ну и вектора word2vec, для которых он составлен, конечно).
«В результате обучения получается список, где почти к каждому слову текста приписан какой-либо класс» — как я понимаю, в его качестве берется N ближайших кластеров? А есть ли смысл это делать на этапе работы с отдельными словами (если я верно помню суть описанного в https://habrahabr.ru/post/277563/ — можно было провести отбор уже на стадии работы с вектором текста)
И да — как я понимаю — обучал word2vec на наборе текстов и кластеризовал полученные вектора? Было бы интересно получить набор кластеров (ну и вектора word2vec, для которых он составлен, конечно).
«В результате обучения получается список, где почти к каждому слову текста приписан какой-либо класс» — как я понимаю, в его качестве берется N ближайших кластеров? А есть ли смысл это делать на этапе работы с отдельными словами (если я верно помню суть описанного в https://habrahabr.ru/post/277563/ — можно было провести отбор уже на стадии работы с вектором текста)
0
Алгоритм, действительно, прост и его достаточно описать на словах. Интереснее само получение моделей. Во второй части будут и формулы, картинки и примеры. Возможно, что-то выложу в гит.
Да, обучал на большом объеме текстов, но не кластеризовал, а использовал при обучении параметр "-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.
И да — как я понимаю — обучал 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.
0
Предлагаю пойти немного глубже.А именно:
1. Один токен имеет отношение к нескольким кластерам. То есть, каждому токену ставится в соответсвие вектор действительных чисел, значения которого — дистанция от токена до центра кластера
2. Проводить нормализацию. Речь о том, что кластеры сильно неравновесны — в одних (обычно наиболее ценных для классификации) располагаются редкие слова — названия и аббревиатуры, в других — частотные слова — общая лексика. Наша цель — выровнять эти кластеры по частоте так, что бы они оказывали соизмеримое влияние на итоговую оценку. Без нормализации документы разделяются более по стилю (общеупотребительным словам), а после нормализации — по смыслу (названия, термины, специфические обороты)
3. Можно пойти ещё дальше и разметить обучающий текстовый файл метками классов, в результате кластеры лягут не случайным образом, а разведутся в векторном пространстве на максимальную дистанцию для документов разных классов.
Почитать об этом можно тут:
https://habrahabr.ru/post/277563/
http://servponomarev.livejournal.com/10604.html
1. Один токен имеет отношение к нескольким кластерам. То есть, каждому токену ставится в соответсвие вектор действительных чисел, значения которого — дистанция от токена до центра кластера
2. Проводить нормализацию. Речь о том, что кластеры сильно неравновесны — в одних (обычно наиболее ценных для классификации) располагаются редкие слова — названия и аббревиатуры, в других — частотные слова — общая лексика. Наша цель — выровнять эти кластеры по частоте так, что бы они оказывали соизмеримое влияние на итоговую оценку. Без нормализации документы разделяются более по стилю (общеупотребительным словам), а после нормализации — по смыслу (названия, термины, специфические обороты)
3. Можно пойти ещё дальше и разметить обучающий текстовый файл метками классов, в результате кластеры лягут не случайным образом, а разведутся в векторном пространстве на максимальную дистанцию для документов разных классов.
Почитать об этом можно тут:
https://habrahabr.ru/post/277563/
http://servponomarev.livejournal.com/10604.html
+1
Спасибо, с ваши публикации читал, разумеется.
1 — пробовал, но выбрал другой вариант (напишу во второй части), более простой (и более быстрый). А поскольку результат удовлетворил, то на том пока и остановился.
2 — именно это и является главным. Если в вкратце: для нормализации использовал df и дисперсию (или sd — без разницы).
3 — интересная мысль, но это уже будет классификация, наподобие обучения с учителем. А нужна чистая кластеризация: идет поток сообщений по всем популярным источникам (сотни сообщений в секунду), нужно поймать основные кластеры, скажем, за четверть часа…
1 — пробовал, но выбрал другой вариант (напишу во второй части), более простой (и более быстрый). А поскольку результат удовлетворил, то на том пока и остановился.
2 — именно это и является главным. Если в вкратце: для нормализации использовал df и дисперсию (или sd — без разницы).
3 — интересная мысль, но это уже будет классификация, наподобие обучения с учителем. А нужна чистая кластеризация: идет поток сообщений по всем популярным источникам (сотни сообщений в секунду), нужно поймать основные кластеры, скажем, за четверть часа…
-1
Тут вопрос в том, что кластеризация тоже не в вакууме делается. Можно ведь кластеризовать текст и по
количеству вхождений буквы А. А если нужна тематическая кластеризация, то нужны темы, относительно которых кластеризуем документы. Можно использовать Вики в качестве источника тем. Но все равно — качественной кластеризуем, если у нее под капотом нет классификации — не получится.
0
В том-то и дело, что темы заранее не определены: может быть поток соц медиа, а может СМИ. Поэтому приходится решать обратную задачу: сначала получить кластеры, а потом с помощью NER или концептов того же вики выяснять между ними отношения.Так просто быстрее на больших объемах.
0
Вместо изнасилования word2vec можно обратить свой взор на целый раздел машинного обучения, который называется тематическое моделирование.
А если жажда применять word2vec неискоренима, то можно посмотреть например на такие штуки:
https://arxiv.org/pdf/1605.02019.pdf
Я и тематически кластера найдутся и самому себе можно будет говорить: «Я юзаю word2vec».
А если жажда применять word2vec неискоренима, то можно посмотреть например на такие штуки:
https://arxiv.org/pdf/1605.02019.pdf
Я и тематически кластера найдутся и самому себе можно будет говорить: «Я юзаю word2vec».
-2
topic models — да, лет 10-15 назад с этого все и началось: LDA, LSA, pLSA etc. Порой что-то получалось. Но, к слову, даже очень неплохая разработка д. ф.-м. н. тов. Воронцова не показала требуемых результатов на Big data. А нам нужен результат, а не досужие опусы.
0
Sign up to leave a comment.
Кластеризация текстовых документов по семантическим признакам (часть первая: описание алгоритма)