- PVSM.RU - https://www.pvsm.ru -

Анализ тональности текста в Excel с помощью Azure Machine Learning и Power Query

Возможно, вы видели пост Joseph Sirosh [1] на прошлой неделе о возможности опубликовать модели Azure Machine Learning в Azure Marketplace, и что MS уже опубликовало некоторое количество API. Для Excel есть специальный аддон [2], который может используется для доступа к этим API, но я заметил, что как минимум одно API (Sentiment Analysis API [3]) может использоваться напрямую через Power Query.

Для того, чтобы сделать это, сперва вам необходимо зайти в Azure Marketplace, войти под вашим Microsoft-аккаунтом и подписаться на Lexicon Based Sentiment Analysis API [3]. В документации говориться, что у вас есть 25000 транзакций в месяц бесплатно. API как таковое очень простое: передайте предложение для оценки, и вам в ответ придет оценка от -1 до 1, где 1 означает положительную тональность, а -1 отрицательную. Для примера, выражение «I had a good day» возвращает значение 1:

Анализ тональности текста в Excel с помощью Azure Machine Learning и Power Query - 1

Тогда как выражение «I had a bad day» возвращает -1:

Анализ тональности текста в Excel с помощью Azure Machine Learning и Power Query - 2

Теперь вы можете проследовать в Power Query и кликнуть «From Azure Marketplace» (вам потребуется ввести свои учетные данные, если это первый раз, когда вы используете Azure Marketplace из Power Query):

Анализ тональности текста в Excel с помощью Azure Machine Learning и Power Query - 3

И затем, когда появится панель «Navigator», дважды щелкните на «Score»:

Анализ тональности текста в Excel с помощью Azure Machine Learning и Power Query - 4

API представляется как функция в Power Query (я думаю из-за того, что это операция OData-сервиса, но я не уверен), и двойной клик на «Score» вызовет функцию. Вы можете ввести выражение в это поле, и откроется Query Editor для отображения результата оценки:

Анализ тональности текста в Excel с помощью Azure Machine Learning и Power Query - 5

Анализ тональности текста в Excel с помощью Azure Machine Learning и Power Query - 6

Однако, для того, чтобы сделать что-то полезное, надо не просто вызвать функцию «прямо сейчас», надо сделать запрос, который возвращает функцию. Для этого следует немного отредактировать запрос. Перейдите в Advanced Editor, и вы увидите M-код для запроса – он будет выглядеть как-то так:

let
    Source = Marketplace.Subscriptions(),
    #"https://api.datamarket.azure.com/data.ashx/aml_labs/lexicon_based_sentiment_analysis/v1/" = Source{[ServiceUrl="https://api.datamarket.azure.com/data.ashx/aml_labs/lexicon_based_sentiment_analysis/v1/"]}[Feeds],
    Score1 = #"https://api.datamarket.azure.com/data.ashx/aml_labs/lexicon_based_sentiment_analysis/v1/"{[Name="Score"]}[Data],
    #"Invoked FunctionScore1" = Score1("I had a good day")
in
    #"Invoked FunctionScore1"

Вам нужно удалить последнюю строчку (#«Invoked FunctionScore1»), которая вызывает функцию, оставив следующий код:

let
    Source = Marketplace.Subscriptions(),
    #"https://api.datamarket.azure.com/data.ashx/aml_labs/lexicon_based_sentiment_analysis/v1/" = Source{[ServiceUrl="https://api.datamarket.azure.com/data.ashx/aml_labs/lexicon_based_sentiment_analysis/v1/"]}[Feeds],
    Score1 = #"https://api.datamarket.azure.com/data.ashx/aml_labs/lexicon_based_sentiment_analysis/v1/"{[Name="Score"]}[Data],
    #"Invoked FunctionScore1" = Score1("I had a good day")
in
    Score1

Теперь вы можете кликнуть «Close & Load» для закрытия окна Query Editor. Сейчас у вас есть функция «Score», которую вы можете вызывать из других запросов. Для примера, сделайте следующую Excel-таблицу:

Анализ тональности текста в Excel с помощью Azure Machine Learning и Power Query - 7

Кликните на кнопке «From Table» для загрузки этой таблицы в Power Query, затем в Query Editor’e нажмите «Add Custom Column» и добавьте новую колонку, названую «Sentiment Score» с выражением Score([Sentence])

Анализ тональности текста в Excel с помощью Azure Machine Learning и Power Query - 8

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

Анализ тональности текста в Excel с помощью Azure Machine Learning и Power Query - 9

Нажмите «Continue» и установите уровень конфиденциальности для этой рабочей книги как «Public» для того что бы данные могли быть отправлены в API:

Анализ тональности текста в Excel с помощью Azure Machine Learning и Power Query - 10

Нажмите «Save», и вы увидите, что была добавлена колонка «Sentiment Score», содержащая значение «Record». Нажмите на иконку «Expand» в этой колонке и затем «Ok»:

Анализ тональности текста в Excel с помощью Azure Machine Learning и Power Query - 11

И, наконец, вы увидите, собственно, оценки:

Анализ тональности текста в Excel с помощью Azure Machine Learning и Power Query - 12

Вот какой получился код:

let
    Source = Excel.CurrentWorkbook(){[Name="Table3"]}[Content],
    #"Added Custom" = Table.AddColumn(Source, "SentimentScore", each Score([Sentence])),
    #"Expand SentimentScore" = Table.ExpandRecordColumn(#"Added Custom", "SentimentScore", {"result"}, {"SentimentScore.result"})
in
    #"Expand SentimentScore"

Вы можете загрузить файл с рабочей книгой тут [4].

Конечно, я не смог устоять и повторил это с моими обновлениями статуса в Facebook – к которым можно очень легко получить доступ из Power Query [5]. Вот среднемесячная оценка тональности моих статусов с июня 2009 года до настоящего времени:

Анализ тональности текста в Excel с помощью Azure Machine Learning и Power Query - 13

Как вы можете видеть, я был в особенно хорошем настроении в августе – возможно, из-за того, что я был в отпуске практически весь месяц.

Автор: jgc128

Источник [6]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/azure/78648

Ссылки в тексте:

[1] пост Joseph Sirosh: http://blogs.technet.com/b/machinelearning/archive/2014/10/16/web-services-and-marketplaces-create-a-new-data-science-economy.aspx

[2] специальный аддон: http://azuremlexcel.codeplex.com/

[3] Sentiment Analysis API: https://datamarket.azure.com/dataset/aml_labs/lexicon_based_sentiment_analysis

[4] тут: http://1drv.ms/1rm82gI

[5] получить доступ из Power Query: http://office.microsoft.com/en-gb/excel-help/connect-to-facebook-HA104019831.aspx

[6] Источник: http://habrahabr.ru/post/247299/