По сути, нет - вы не можете выполнить анализ настроений без некоторых помеченных данных.
Без каких-либо ярлыков у вас нет возможности оценить, правильно ли вы что-то понимаете. Итак, вы можете просто использовать эту функцию анализа настроений:
get_sentiment(text):
return random.choice(['positive', 'negative'])
Woohoo! У вас есть «настроение» для каждого текста!
Что это? Вы возражаете, что для какого-то текста он дает «неправильный» ответ?
Ну откуда ты знаешь, что не так? У вас есть нужный правильный ответ - метка - для этого текста?
Хорошо, теперь у вас есть надежда, но у вас есть хотя бы один лейбл. И если он у вас есть, вы можете получить больше, даже если он просто аннотирует некоторые тексты, представляющие то, что вы хотите, чтобы ваш код классифицировал.
В другом ответе содержится статья, в которой предполагается провести анализ настроений без присмотра. , Извилистый набор методов этой статьи проникает под контроль благодаря тому, что кодировщик маркирует его два словосочетания как положительные и отрицательные. И он может претендовать на успех только на основе целевых меток для некоторых данных. И данные, как представляется, содержат около 635 000 «положительных» текстов и всего 9800 «отрицательных» текстов, где вы можете получить точность 99,5%, просто ответив «положительно» на каждый текст. Таким образом, его методы могут быть не очень обобщаемыми.
Но статья действительно делает одну вещь, которую можно было бы повторно использовать в другом месте, при очень грубом подходе, если у вас действительно есть только словосочетания и ничего больше: помечать каждое слово как положительное или отрицательное. Это делается путем объединения всех слов в 2 кластера, а затем ручного просмотра кластеров, чтобы выбрать одно как положительное, а другое как отрицательное. (Это может хорошо работать только с определенными типами рецензируемых текстов с сильными лежащими в основе положительными / отрицательными образцами.) Затем оно дает каждому другому слову оценку, основанную на близости к этим центроидам кластера.
Вы можете повторить это для другого языка. Или просто создайте вручную составленный список из нескольких десятков известных «положительных» или «отрицательных» слов, а затем присвойте каждому другому слову положительное или отрицательное значение на основе относительной близости к вашим «якорным» словам. Вы больше не строго «без присмотра» на данном этапе, поскольку вы ввели свою собственную маркировку отдельных слов.
Я думаю, это могло бы работать даже лучше, чем подход с двумя центроидами статья. (Все «положительные» или «отрицательные» слова в реальном семантике c могут быть распределены по координатным областям дикой формы, которые не сводятся к единой итоговой точке центроида.)
Но Опять же, единственный способ проверить, работает ли это, состоит в сравнении большого количества помеченных данных с предпочтительными «правильными» ответами, чтобы увидеть, подсчитывает ли net -позитивный /net -отрицательный балл для текстов на основе их отдельные слова, выполняет удовлетворительно. И как только вы получите эти помеченные данные для оценки, вы сможете использовать гораздо более разнообразный и мощный набор методов классификации текста, чем простой подсчет валентностей.