Можно ли провести анализ настроений немеченого текста, используя модель word2ve c? - PullRequest
1 голос
/ 13 апреля 2020

У меня есть некоторые текстовые данные, для которых мне нужно провести классификацию настроений. У меня нет положительных или отрицательных ярлыков на этих данных (без маркировки). Я хочу использовать модель Gensim word2ve c для классификации настроений.
Возможно ли это сделать? Потому что до сих пор я не мог найти ничего, что делает это? Каждый блог и статья используют какой-то набор данных с метками (например, набор данных imdb) для обучения и тестирования модели word2ve c. Никто не идет дальше и не предсказывает свои собственные немаркированные данные.

Может кто-нибудь сказать мне возможность этого (хотя бы теоретически)?

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 13 апреля 2020

По сути, нет - вы не можете выполнить анализ настроений без некоторых помеченных данных.

Без каких-либо ярлыков у вас нет возможности оценить, правильно ли вы что-то понимаете. Итак, вы можете просто использовать эту функцию анализа настроений:

get_sentiment(text):
    return random.choice(['positive', 'negative'])

Woohoo! У вас есть «настроение» для каждого текста!

Что это? Вы возражаете, что для какого-то текста он дает «неправильный» ответ?

Ну откуда ты знаешь, что не так? У вас есть нужный правильный ответ - метка - для этого текста?

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

В другом ответе содержится статья, в которой предполагается провести анализ настроений без присмотра. , Извилистый набор методов этой статьи проникает под контроль благодаря тому, что кодировщик маркирует его два словосочетания как положительные и отрицательные. И он может претендовать на успех только на основе целевых меток для некоторых данных. И данные, как представляется, содержат около 635 000 «положительных» текстов и всего 9800 «отрицательных» текстов, где вы можете получить точность 99,5%, просто ответив «положительно» на каждый текст. Таким образом, его методы могут быть не очень обобщаемыми.

Но статья действительно делает одну вещь, которую можно было бы повторно использовать в другом месте, при очень грубом подходе, если у вас действительно есть только словосочетания и ничего больше: помечать каждое слово как положительное или отрицательное. Это делается путем объединения всех слов в 2 кластера, а затем ручного просмотра кластеров, чтобы выбрать одно как положительное, а другое как отрицательное. (Это может хорошо работать только с определенными типами рецензируемых текстов с сильными лежащими в основе положительными / отрицательными образцами.) Затем оно дает каждому другому слову оценку, основанную на близости к этим центроидам кластера.

Вы можете повторить это для другого языка. Или просто создайте вручную составленный список из нескольких десятков известных «положительных» или «отрицательных» слов, а затем присвойте каждому другому слову положительное или отрицательное значение на основе относительной близости к вашим «якорным» словам. Вы больше не строго «без присмотра» на данном этапе, поскольку вы ввели свою собственную маркировку отдельных слов.

Я думаю, это могло бы работать даже лучше, чем подход с двумя центроидами статья. (Все «положительные» или «отрицательные» слова в реальном семантике c могут быть распределены по координатным областям дикой формы, которые не сводятся к единой итоговой точке центроида.)

Но Опять же, единственный способ проверить, работает ли это, состоит в сравнении большого количества помеченных данных с предпочтительными «правильными» ответами, чтобы увидеть, подсчитывает ли net -позитивный /net -отрицательный балл для текстов на основе их отдельные слова, выполняет удовлетворительно. И как только вы получите эти помеченные данные для оценки, вы сможете использовать гораздо более разнообразный и мощный набор методов классификации текста, чем простой подсчет валентностей.

1 голос
/ 13 апреля 2020

ДА, Есть 2 основных метода, чтобы настроиться так же, как любая проблема машинного обучения. Анализ настроений под наблюдением и анализ настроений без присмотра. Во-первых, вам определенно нужен маркированный набор данных. Таким образом, вы можете использовать простую регрессионную или глубокую модель логистики c, такую ​​как "LSTM". Но в неконтролируемом анализе настроений вам не нужны помеченные данные. Таким образом, вы можете использовать алгоритм кластеризации. Кластеризация K-Means является популярным алгоритмом для этой задачи. Следующая средняя статья содержит рабочий пример для вашего решения:

https://towardsdatascience.com/unsupervised-sentiment-analysis-a38bf1906483

Чтобы добавить свой вопрос, встраивание Word, такое как word2ve c или fasttext, не имеет никакого отношения к делать с контролируемым или неконтролируемым анализом настроения. Существуют очень мощные способы представления характеристик вашего набора данных. Кстати, быстрый текст более точен, чем word2ve c, по моему опыту.

...