Comments 12
Интересно, а для русского языка это будет также хорошо работать?
Оно и для английского-то не очень работает (всякие вещи типа сарказма и люди-то не всегда понимают, так что гадание на твиттере может быть не очень успешным).
Но если использовать второй подход (word2vec/glove) и сделать word embedding для большого русскоязычного корпуса, то должно работать с более-менее нормальным результатом. По крайней мере, в задачах NER w2v с русским работает очень прилично.
Но если использовать второй подход (word2vec/glove) и сделать word embedding для большого русскоязычного корпуса, то должно работать с более-менее нормальным результатом. По крайней мере, в задачах NER w2v с русским работает очень прилично.
Я не очень понял, как w2v помогает извлекать именованные сущности (под NER вы это имеете ввиду?). И не подскажете, какой точностью обладают системы для распознавания эмоциональной окраски текста в реальных задачах?
NER (Named Entity Recognition) — это выделение из текстов именованных сущностей (такие как собственные имена, местоимения). Уже немало попыток было сделано для использования w2v для выделения NER. Думаю, Вам лучше взглянуть сюда www.aclweb.org/anthology/W15-1830 или же сюда datascience.stackexchange.com/questions/492/word2vec-for-named-entity-recognition.
В реальных задачах, я по крайней мере, выше чем 75-80% не поднимался. Но думаю есть и результаты получше. Например — nlp.stanford.edu/sentiment. Здесь они используют глубокие нейронные сети для анализа тональности.
В реальных задачах, я по крайней мере, выше чем 75-80% не поднимался. Но думаю есть и результаты получше. Например — nlp.stanford.edu/sentiment. Здесь они используют глубокие нейронные сети для анализа тональности.
Согласен с Вами, но даже word2vec/glove не решены таких недостатков как омонимия, многозначность, и т.д. Также во многих случаях нужно учитывать синтаксическую структуру языка. Для достижения лучших результатов одного машинного обучения думаю не достаточно. Нужно использовать гибридные методы (машинное обучение + rule based) для которых в свою очередь нужны размеченные корпуса (с размеченной морфологией и синтаксисом).
По поводу омнимии и полисемии на Word2Vec рекомендую взглянуть сюда.
А как быть со словарями беспощадно большими(даже после стемминга)? Какие подходы оправдывачт себя?
Для обучающей выборки мы использовали открытый набор данных с сайта www.kaggle.com, а именно, набор включающий в себя данные из 50000 обзоров фильма из сайта IMDB, специально отобранных для анализа тональности.Подскажите, пожалуйста, речь идёт о данных из этого учебного соревнования?
word2vec-nlp-tutorial Data
Дело в том, что на форуме сразу была поднята тема, что простенькая (shallow) линейная регрессия на Bags of words (tfidf) без всякого Word2Vec достигает 0,95 accuracy
www.kaggle.com/c/word2vec-nlp-tutorial/forums/t/11261/beat-the-benchmark-with-shallow-learning-0-95-lb
Если мне не изменяет память, на десктопе считалось не так уж и долго (минуты или десятки минут)
(А вот на рецензиях Rotten Tomates www.kaggle.com/c/sentiment-analysis-on-movie-reviews где оценивается каждая фраза рекордный результат не больше 80% )
Или речь идёт о другом датасете?
Здравствуйте! Все верно, речь идет о данных, которые взяты с учебного соревнования. Я попробовал испытать тестовые данные используя Bag-Of-Words + Logistic Regression, но выше чем 0,87 не поднялся. Этот вопрос в форуме я почему-то не заметил, попробую поиграться с их скриптом. Спасибо!
А на счет десяток минут времени, Bag-of-words действительно занимает не более 3-4 минут, а вот обучение word2vec+кластерирезация+обучение заняло с моим ноутбуком больше часа времени.
А на счет десяток минут времени, Bag-of-words действительно занимает не более 3-4 минут, а вот обучение word2vec+кластерирезация+обучение заняло с моим ноутбуком больше часа времени.
«Заменяя предыдущие вектора на индекс слова в словаре получаем следующее»
Вот самый непонятный аспект в статьях про NLP: как получить вектор? И хотя бы: что такое вектор?
В этой статье получилось 3 вектора над {0,1}^9 (не понятно как, конкатенация двоичного представления номера слова в словаре не подходит, т.к. «0, 0, 0» используется 2 раза). В других встречались ℝ^n, но тоже не понятно, откуда.
Вот самый непонятный аспект в статьях про NLP: как получить вектор? И хотя бы: что такое вектор?
В этой статье получилось 3 вектора над {0,1}^9 (не понятно как, конкатенация двоичного представления номера слова в словаре не подходит, т.к. «0, 0, 0» используется 2 раза). В других встречались ℝ^n, но тоже не понятно, откуда.
Подход 1 в этой статье один из самых простых методов представления текста в виде вектора. Если не понятно давайте разберем пример, который дан в этой статье:
Есть словарь, где мы собираем все наши слова и сортируем, допустим — [biography, cinema, feature, film, going, originally, part, remember, see], т.е. понятно, что на самом деле в конечном словаре их намного больше. Но для упрощение представим, что в нашей базе только эти 9 слов. У каждого из них есть порядковый номер: biography — 0, cinema — 1, и т.д. Далее для каждого документа создаем вектор (ну или массив если слово вектор вводит Вас в заблюждение) длиною кол-ву слов в словаре (т.е. 9) изначально все заполненные нулями, назовем его v = [0,0,0,0,0,0,0,0,0]. Затем, если в тексте встретилось слово biography, значит v[0] = 1, и т.д.
Есть словарь, где мы собираем все наши слова и сортируем, допустим — [biography, cinema, feature, film, going, originally, part, remember, see], т.е. понятно, что на самом деле в конечном словаре их намного больше. Но для упрощение представим, что в нашей базе только эти 9 слов. У каждого из них есть порядковый номер: biography — 0, cinema — 1, и т.д. Далее для каждого документа создаем вектор (ну или массив если слово вектор вводит Вас в заблюждение) длиною кол-ву слов в словаре (т.е. 9) изначально все заполненные нулями, назовем его v = [0,0,0,0,0,0,0,0,0]. Затем, если в тексте встретилось слово biography, значит v[0] = 1, и т.д.
Sign up to leave a comment.
Автоматическое определение тональности текста (Sentiment Analysis)