Analiza nastrojów za pomocą funkcji PubNub i HuggingFace
Published: 2024-04-04 18:47:19

Ponieważ sztuczna inteligencja stale zyskuje na popularności pod względem sposobu, w jaki można ją wykorzystać we własnej aplikacji lub firmie, ważne jest, aby omówić, w jaki sposób można ją wykorzystać podczas tworzenia systemów czasu rzeczywistego. Wiele przypadków użycia należy do tej kategorii, niezależnie od tego, czy tworzysz [czat w aplikacji](https://www.pubnub.com/solutions/chat/), [IoT](https://www.pubnub.com/solutions/iot-device-control/)lub [wydarzenia na żywo](https://www.pubnub.com/solutions/live-audience-engagement/) rozwiązanie; prawie zawsze istnieje sposób, w jaki można zastosować sztuczną inteligencję do rozwiązania, aby uczynić je jeszcze lepszym.

Na tym blogu dowiesz się, jak monitorować czat na żywo pod kątem "pozytywnych" lub "negatywnych" zachowań za pomocą analizy nastrojów. Aplikacja ta ma kilka przypadków użycia, takich jak monitorowanie czatu pomocy technicznej pod kątem nieodpowiedniego klienta lub, z drugiej strony, monitorowanie czatu wydarzeń na żywo, aby sprawdzić, czy klienci cieszą się z oglądanego wydarzenia. W każdym razie wiele aplikacji można uznać za wykorzystujące sztuczną inteligencję, zwłaszcza podczas tworzenia systemów czasu rzeczywistego.

To jest właśnie miejsce, w którym PubNub pasuje. [PubNub](https://www.pubnub.com/) zapewnia wysoce dostępną platformę komunikacji w czasie rzeczywistym [platformę](https://www.pubnub.com/products/pubnub-platform/). Można jej używać do tworzenia [czat](https://www.pubnub.com/solutions/chat/), [systemy kontroli urządzeń IoT](https://www.pubnub.com/solutions/iot-device-control/), [aplikacje geolokalizacyjne](https://www.pubnub.com/solutions/geolocation/)i wiele innych systemów komunikacyjnych. Aby dowiedzieć się więcej o możliwościach PubNub, odwiedź naszą stronę [dokumenty](https://www.pubnub.com/docs) lub [ceny](https://www.pubnub.com/pricing/) aby rozpocząć.

Czym są integracje PubNub?
--------------------------

Po pierwsze, dla tych, którzy nie znają [PubNub Functions](https://www.pubnub.com/docs/serverless/functions/overview)PubNub Functions umożliwiają przechwytywanie zdarzeń zachodzących w instancji PubNub. Umożliwia to pisanie kodu w celu wykorzystania istniejących integracji lub przekształcania, przekierowywania, rozszerzania, filtrowania, a nawet agregowania danych. Co to dokładnie oznacza? Zasadniczo załóżmy, że wysyłasz wiadomość, sygnał, plik itp. (dane) przez PubNub. W takim przypadku możesz napisać kod przed jego odebraniem przez klienta lub po nim, aby zablokować przesyłane dane, zmodyfikować je, a nawet skierować dane do innego systemu innej firmy.

[PubNub Integrations](https://www.pubnub.com/integrations/) to rozszerzenie PubNub Functions, które pozwala szybko skonfigurować funkcję PubNub i zintegrować ją z niektórymi usługami innych firm, takimi jak AWS, Giphy, Google Cloud itp. Zasadniczo jest to wstępnie napisany kod umożliwiający połączenie systemu czasu rzeczywistego z dowolnymi systemami innych firm w naszym katalogu Functions. Katalog ten znajduje się na portalu PubNub lub w zakładce "Strona główna".

Zapoznaj się z poniższym obrazkiem i kliknij "Discover & Integrate", aby przejrzeć gotowe funkcje PubNub.

![](https://www.pubnub.com/cdn/3prze68gbwl1/4MMaTasjLUbSmmJIAkfgEc/d181be4a7a3b4626341e7fcdafec6035/Screenshot_2024-04-03_at_9.32.46_PM.png)

Pierwsze kroki z HuggingFace
----------------------------

W tym momencie prawdopodobnie każdy słyszał o OpenAI, GPT-4, Claude lub którymkolwiek z popularnych dużych modeli językowych (LLM). Jednak korzystanie z tych LLM w środowisku produkcyjnym może być kosztowne lub niedeterministyczne pod względem wyników. Wydaje mi się, że jest to wada bycia dobrym we wszystkim; mógłbyś być lepszy w wykonywaniu jednego konkretnego zadania. W tym miejscu można wykorzystać HuggingFace.[HuggingFace](https://huggingface.co/) zapewnia modele sztucznej inteligencji i uczenia maszynowego typu open source, które można łatwo wdrożyć w samym HuggingFace lub systemach innych firm, takich jak [Amazon SageMaker](https://aws.amazon.com/sagemaker/) lub [Azure ML](https://azure.microsoft.com/)Użytkownik może łączyć się z tymi wdrożeniami za pośrednictwem interfejsu API i kontrolować skalowanie tych modeli, co sprawia, że doskonale nadają się one do środowisk produkcyjnych. Modele te różnią się wielkością, ale generalnie są to małe modele sztucznej inteligencji, które są dobre w wykonywaniu jednego konkretnego zadania. Dzięki możliwościom dostrajania tych modeli lub używania wstępnie wytrenowanego modelu do określonych zadań, osadzanie ich w różnych aplikacjach staje się bardziej wydajne, zwiększając automatyzację i wydajność. Łączenie tych modeli może tworzyć nowe i skomplikowane aplikacje AI. W tym przypadku, wykorzystując modele HuggingFace, nie trzeba polegać na aplikacji produkcyjnej od zewnętrznego dostawcy, takiego jak [OpenAI](https://openai.com/) lub [Google](https://gemini.google.com/)zapewniając bardziej ukierunkowane i konfigurowalne podejście do wdrażania rozwiązań głębokiego uczenia się w swoich operacjach.

Poniższy zrzut ekranu pokazuje, jak wiele różnych modeli AI zapewnia HuggingFace.

![](https://www.pubnub.com/cdn/3prze68gbwl1/59ab7LYEGEFRK4ypXiEh1x/b2fa83f8e8de8af87ba990b98429af5d/Screenshot_2024-04-03_at_10.09.09_PM.png)

Czym jest analiza nastrojów
---------------------------

[Analiza nastrojów](https://en.wikipedia.org/wiki/Sentiment_analysis) (określana również jako eksploracja opinii lub sztuczna inteligencja emocji) to wykorzystanie przetwarzania języka naturalnego i analizy tekstu w celu określenia, czy emocje lub ton wiadomości są pozytywne, negatywne czy neutralne. Obecnie firmy mają ogromne ilości danych tekstowych, takich jak e-maile, wiadomości obsługi klienta, komentarze w mediach społecznościowych, recenzje itp. Analiza nastrojów może skanować te teksty w celu określenia nastawienia autora do danego tematu. Firmy mogą następnie wykorzystać te dane do poprawy obsługi klienta lub reputacji marki.

### Przypadki użycia analizy nastrojów

**Moderacja**: Analizę sentymentu można wykorzystać do monitorowania wydarzeń na żywo, pomocy technicznej lub czatu w aplikacji, aby sprawdzić, czy któryś z klientów zachowuje się niewłaściwie i szybko zablokować i usunąć jego wiadomości. Pozwoliłoby to na stworzenie zdrowego środowiska na platformie.

**Analiza danych**: Firmy czasami chcą przeskanować tysiące e-maili lub SMS-ów, aby zobaczyć, jak klienci reagują na wydarzenie lub markę firmy. Mogą wykorzystać te dane, aby określić, co robią dobrze, a co źle, w zależności od ich działań i podejmować lepsze decyzje dotyczące dalszych działań.

### Wdrażanie analizy nastrojów w funkcji PubNub

Korzystając z integracji HuggingFace PubNub, zaimplementujmy analizę sentymentu bezpośrednio w funkcjach PubNub. Najpierw przejdź do portalu PubNub i otwórz katalog funkcji na stronie głównej. W katalogu funkcji kliknij "HuggingFace Serverless API".

![](https://www.pubnub.com/cdn/3prze68gbwl1/1V2CWr9MvssSvP5DJYrulk/b344b52bb22fff541e29d0692e6f48cf/Screenshot_2024-04-03_at_10.25.01_PM.png)

Po wybraniu integracji PubNub postępuj zgodnie z instrukcjami, wybierając zestaw kluczy i aplikację, dla której chcesz skonfigurować funkcję PubNub. Po przejściu do kroku zmiennych będziemy musieli pobrać klucz API z HuggingFace. Przejdź do ustawień swojego profilu w Huggingface i wybierz opcję [Tokeny dostępu](https://huggingface.co/settings/tokens)ponieważ będziemy musieli dodać je do sekretów PubNub Functions. Następnie kliknij Utwórz, a oficjalnie zintegrujemy Twoją instancję PubNub z HuggingFace. To takie proste. Powinieneś teraz zobaczyć funkcję PubNub z następującą próbką kodu.

```js
//
// **                                             **
// ** Add your API Key to MY SECRETS (Left Panel) **
// **                                             **
// **             HUGGINGFACE_API_KEY             **
// **                                             **
//
const FunctionConfig = {
    "HUGGINGFACE_API_KEY": "HuggingFace"
};
//
// Import Modules
//
const http = require('xhr');
const vault = require('vault');
//
// Main
//
export default async (request) => {
    let message = request.message.text;
    console.log('Sentiment:');
    let model = 'distilbert-base-uncased-finetuned-sst-2-english';
    let response = await query(message, model);
    console.log(response);
    console.log('GPT2:');
    model = 'gpt2';
    response = await query(message, model);
    console.log(response);
    console.log('Google\'s Gemma:');
    model = 'google/gemma-7b-it';
    response = await query(`<start_of_turn>user\n${message}\n<start_of_turn>model`, model);
    console.log(response);
    console.log('Capture:');
    model = 'dbmdz/bert-large-cased-finetuned-conll03-english';
    response = await query(message, model);
    console.log(response);
    return request.ok()
};
//
// HuggingFace API Call
//
async function query(text, model='distilbert-base-uncased-finetuned-sst-2-english') {
    const apikey = await vault.get(FunctionConfig.HUGGINGFACE_API_KEY);
    const response = await http.fetch( `https://api-inference.huggingface.co/models/${model}`, {
        headers: { Authorization: `Bearer ${apikey}`, 'Content-Type': 'application/json' },
        method: "POST",
        body: JSON.stringify({inputs:text}),
    });
    return await response.json();
}
```

Skupimy się na pierwszym modelu używanym w tej funkcji PubNub, którym jest "distilbert-base-uncased-finetuned-sst-2-english". Aby dowiedzieć się więcej o tej funkcji, przejdź do strony [distilbert-base-uncased-finetuned-sst-2-english](https://huggingface.co/distilbert/distilbert-base-uncased-finetuned-sst-2-english) lub modelu, na którym jest oparta, czyli [distilbert/distilbert-base-uncased](https://huggingface.co/distilbert/distilbert-base-uncased). Możesz również sprawdzić model na [github](https://github.com/aws-neuron/aws-neuron-sdk/blob/master/src/benchmark/pytorch/distilbert-base-uncased-finetuned-sst-2-english_compile.py). Model ten wykona za nas całą ciężką pracę i określi analizę sentymentu wiadomości PubNub po wysłaniu przez sieć.

Zmodyfikowałem moją obecną funkcję, aby wyglądała tak:

```js
//
// **                                             **
// ** Add your API Key to MY SECRETS (Left Panel) **
// **                                             **
// **             HUGGINGFACE_API_KEY             **
// **                                             **
//
const FunctionConfig = {
    "HUGGINGFACE_API_KEY": "HuggingFace"
};
//
// Import Modules
//
const http = require('xhr');
const vault = require('vault');
//
// Main
//
export default async (request) => {
    let message = request.message.text;
    console.log('Sentiment:');
    let model = 'distilbert-base-uncased-finetuned-sst-2-english';
    let response = await query(message, model);
    // Get the negative score
    if(response[0][0].label == "NEGATIVE"){
        request.message.score = response[0][0].score;
    }
    else{
        request.message.score = response[0][1].score;
    }
    console.log(request.message.score);
    return request.ok()
};
//
// HuggingFace API Call
//
async function query(text, model='distilbert-base-uncased-finetuned-sst-2-english') {
    const apikey = await vault.get(FunctionConfig.HUGGINGFACE_API_KEY);
    const response = await http.fetch( `https://api-inference.huggingface.co/models/${model}`, {
        headers: { Authorization: `Bearer ${apikey}`, 'Content-Type': 'application/json' },
        method: "POST",
        body: JSON.stringify({inputs:text}),
    });
    return await response.json();
}
```

Ten kod wywołuje teraz model Sentiment Analysis HuggingFace i dołącza go do ładunku wiadomości pod `wynikiem`. Podczas testów, jeśli prześlę wiadomość taką jak:

```js
{
    "text": "That was not cool"
}
```

Otrzymamy ujemny wynik `0.9997703433036804,` który jest wysokim ujemnym wynikiem i taka wiadomość może zostać oflagowana. Ważne jest, aby pamiętać, że zakres wyników tego modelu wynosi od `0 do 1`, przy czym 0 oznacza bardzo niski wynik, a 1 najwyższy. Z drugiej strony, jeśli wyślemy wiadomość taką jak:

```js
{
    "text": "Thats so Cool!"
}
```

Otrzymamy negatywny wynik `0.00014850986190140247,` który jest naprawdę niskim wynikiem negatywnym, co oznacza, że wiadomość ma pozytywny wydźwięk.

Rozpoczęcie pracy z PubNub
--------------------------

W zaledwie kilku krokach wdrożyliśmy analizę sentymentu w sieci PubNub, wykorzystując integracje PubNub. Jeśli chcesz dowiedzieć się więcej na temat sztucznej inteligencji i PubNub, zapoznaj się z naszymi innymi blogami, takimi jak:

[Zbuduj Chatbota z PubNub i ChatGPT / OpenAI](https://www.pubnub.com/blog/build-a-chatbot-with-pubnub-and-chatgpt-openai/): Przeprowadzimy Cię przez proces konfigurowania własnego Chatbota przy użyciu integracji OpenAI i PubNub.

[Zbuduj chatbota LLM z niestandardową bazą wiedzy](https://www.pubnub.com/blog/build-chatbot-with-custom-knowledge-base/): Tutaj pokażemy, jak zbudować własną bazę wiedzy LLM Chatbot z wykorzystaniem funkcji PubNub. Oznacza to, że możesz odpowiadać na pytania dotyczące danych własnej firmy.

[Przewodnik dla programistów po Prompt Engineering i LLM](https://www.pubnub.com/blog/developers-guide-to-prompt-engineering/): Przewodnik po inżynierii podpowiedzi i sposobach uzyskiwania odpowiedzi z dużych modeli językowych.

[Samouczek geolokalizacji zintegrowany z ChatGPT](https://www.pubnub.com/tutorials/geolocation-tracker/): W tym samouczku dowiesz się, jak zbudować aplikację do śledzenia geolokalizacji, która umożliwia użytkownikom udostępnianie lokalizacji i wysyłanie wiadomości w czasie rzeczywistym, a także integrację z ChatGPT w celu dostarczania informacji o Twojej lokalizacji.

Jak PubNub może ci pomóc?
=========================

Ten artykuł został pierwotnie opublikowany na [PubNub.com](https://www.pubnub.com/blog/sentiment-analysis-with-pubnub-functions-and-huggingface/)

Nasza platforma pomaga programistom tworzyć, dostarczać i zarządzać interaktywnością w czasie rzeczywistym dla aplikacji internetowych, aplikacji mobilnych i urządzeń IoT.

Podstawą naszej platformy jest największa w branży i najbardziej skalowalna sieć komunikacyjna w czasie rzeczywistym. Dzięki ponad 15 punktom obecności na całym świecie obsługującym 800 milionów aktywnych użytkowników miesięcznie i niezawodności na poziomie 99,999%, nigdy nie będziesz musiał martwić się o przestoje, limity współbieżności lub jakiekolwiek opóźnienia spowodowane skokami ruchu.

Poznaj PubNub
-------------

Sprawdź [Live Tour](https://www.pubnub.com/tour/introduction/), aby zrozumieć podstawowe koncepcje każdej aplikacji opartej na PubNub w mniej niż 5 minut.

Rozpocznij konfigurację
-----------------------

Załóż [konto](https://admin.pubnub.com/signup/) PubNub, aby uzyskać natychmiastowy i bezpłatny dostęp do kluczy PubNub.

Rozpocznij
----------

[Dokumenty](https://www.pubnub.com/docs) PubNub pozwolą Ci rozpocząć pracę, niezależnie od przypadku użycia lub [zestawu SDK](https://www.pubnub.com/docs).