如何建立社交媒体情感分析管道

社交媒体上的情感分析对于监测您的品牌、竞争对手或任何其他感兴趣的话题都非常有用。在本文中,我们将向您展示如何构建一个系统,该系统可以监听 Reddit、Hacker News、Linkedin、Twitter 等社交媒体,并利用生成式人工智能自动对内容进行情感分析。

社交媒体情感分析

将社交聆听与情感分析相结合进行品牌情感分析

社交聆听是一种关注和解读社交媒体平台、评论网站和其他在线渠道上围绕任何主题的对话的行为。

另一方面,情感分析是将文本中表达的观点识别并归类为积极、消极或中性的过程。它涉及使用自然语言处理、文本分析和计算语言学来系统地识别、提取、量化和研究情感状态和主观信息。

当您将社交聆听和情感分析结合起来时,您就可以跟踪和分析与您的品牌或竞争对手相关的对话中所表达的情感。这也被称为 "品牌情感分析"。通过品牌情感分析,您可以自动了解消费者对您的品牌或竞争对手的看法,找出需要改进的地方,在社交媒体上与潜在客户展开正确的对话,并做出数据驱动的决策,以提高您的品牌声誉和客户忠诚度。

建立社交聆听平台

创建社交监听平台需要您插入社交媒体平台,并检索包含您要监控的关键字的所有新帖子和评论。

如果您计划监控的平台公开了应用程序接口(API),这就更容易实现。例如,Reddit 提供了一个 API,您可以轻松使用。下面是一个简单的 cURL 请求,可以检索最近 100 篇 Reddit 帖子:

curl https://www.reddit.com/r/all/new/.json?limit=100

以下是其应用程序接口返回的典型响应:

{
    "kind": "Listing",
    "data": {
        "after": "t3_1asad4n",
        "dist": 100,
        "modhash": "ne8fi0fr55b56b8a75f8075df95fa2f03951cb5812b0f9660d",
        "geo_filter": "",
        "children": [
            {
                "kind": "t3",
                "data": {
                    "approved_at_utc": null,
                    "subreddit": "GunAccessoriesForSale",
                    "selftext": "Morning gents. I\u2019m looking to snag up your forgotten factory yellow spring for the 509T. I need to source one for a buddy who lost his and I cannot find any available anywhere! \n\nIf one of you have the yellow spring laying around, looking to pay $50 shipped\u2026 \n\nTo my 509t owners, it\u2019s the \u201clight\u201d spring that comes in a plastic bag in the carrying case. \n\nThanks in advance  ",
                    "author_fullname": "t2_2ezh71n6",
                    "saved": false,
                    "mod_reason_title": null,
                    "gilded": 0,
                    "clicked": false,
                    "title": "[WTB] 509T yellow spring",
                    "link_flair_richtext": [],
                    "subreddit_name_prefixed": "r/GunAccessoriesForSale",
                    [...]
                    "contest_mode": false,
                    "mod_reports": [],
                    "author_patreon_flair": false,
                    "author_flair_text_color": "dark",
                    "permalink": "/r/GunAccessoriesForSale/comments/1asadbj/wtb_509t_yellow_spring/",
                    "parent_whitelist_status": null,
                    "stickied": false,
                    "url": "https://www.reddit.com/r/GunAccessoriesForSale/comments/1asadbj/wtb_509t_yellow_spring/",
                    "subreddit_subscribers": 182613,
                    "created_utc": 1708094934.0,
                    "num_crossposts": 0,
                    "media": null,
                    "is_video": false
                    }
                },
            [...]
            ]
        }
    }

我们专门制作了一个教程,展示如何通过一个简单的 Go 程序来监控 Reddit。 点击此处了解更多有关如何使用 Go 监控 Reddit 的信息。

每个社交媒体平台都有自己的微妙之处,遗憾的是,我们无法在本文中一一介绍。为了轻松监控社交媒体平台(如 Reddit、Linkedin、X、Hacker News 等),您可能需要订阅一个专门的社交监听平台,如我们的 KWatch.io 服务。 点击这里免费试用 KWatch.io。

在 KWatch.io 控制面板中添加关键字 在 KWatch.io 控制面板中添加关键字

在进行社交媒体监听时,面临的一些主要挑战包括:必须处理大量数据;如果请求过多,可能会被社交媒体平台屏蔽;处理数据的方式必须精明。

下一节,我们将介绍如何将收集到的数据整合到系统中。

将社交媒体数据整合到系统中

从社交媒体平台收集数据后,您需要将其存储到数据库或数据仓库中。这样,您就可以对数据进行分析,执行情感分析,并提出见解。

有几种方法可以存储社交媒体数据(基本上是纯文本数据),具体取决于您的要求和处理的数据量。一些常见的选择包括

如果您已经订阅了社交聆听平台,您应该检查他们是否提供将数据传输到您的系统的方法。

Webhooks 通常被称为 "网络回调 "或 "HTTP 推送 API",是应用程序与其他应用程序共享实时数据的一种手段。具体做法是在特定事件发生时生成 HTTP POST 请求,从而及时向其他应用程序提供信息。

例如,在我们的平台 KWatch.io,您应进入 "通知 "部分并设置指向您系统的 webhook URL。

KWatch.io 上的 API 网络钩子 KWatch.io 上的 API 网络钩子

下面是 KWatch.io 网络钩子的外观(它是一个 JSON 有效负载):

{
    "platform": "reddit",
    "query": "Keywords: vllm",
    "datetime": "19 Jan 24 05:52 UTC",
    "link": "https://www.reddit.com/r/LocalLLaMA/comments/19934kd/sglang_new/kijvtk5/",
    "content": "sglang runtime has a different architecture on the higher-level part with vllm.",
}

如果您是新手,可以使用 FastAPI 在 Python 中毫不费力地接收这些网络钩子。

使用 Uvicorn 服务器安装 FastAPI:

pip install fastapi uvicorn

现在创建一个新的 Python 文件,并粘贴以下代码(您可能需要调整此脚本):

# Import necessary modules
from fastapi import FastAPI
from pydantic import BaseModel

# Initialize your FastAPI app
app = FastAPI()

# Update the Pydantic model to properly type-check and validate the incoming data
class WebhookData(BaseModel):
    platform: str
    query: str
    datetime: str
    link: str
    content: str

# Define an endpoint to receive webhook data
@app.post("/kwatch-webhooks")
async def receive_webhook(webhook_data: WebhookData):
    # Process the incoming data
    # For demonstration, we're just printing it
    print("Received webhook data:", webhook_data.dict())
    
    # Return a response
    return {"message": "Webhook data received successfully"}

if __name__ == "__main__":
    # Run the server with Uvicorn
    import uvicorn
    uvicorn.run(app, host="0.0.0.0", port=8000)

保存文件并使用以下命令运行服务器:

uvicorn webhook_server:app — reload — host 0.0.0.0 — port 8000

您的服务器现在已经运行,可以接收来自 KWatch.io 的网络钩子。

利用 GPT-4 或 LLaMA 3 等生成式人工智能模型对数据进行情感分析

收集并存储社交媒体数据后,就可以对其进行情感分析。

如今,对有关特定关键词的文本进行情感分析的最准确方法是使用生成式人工智能模型,如 GPT-4、LLaMA 3、ChatDolphin 等。这些 LLM 的速度不一定很快,而且在大规模使用时可能成本较高,但它们能保证获得最先进的结果。如果您需要分析非常大量的关键词,您可能希望通过使用较小的模型来降低成本,或者对自己的模型进行微调。

您可以部署自己的人工智能模型,也可以接入 OpenAI 或 NLP Cloud 等人工智能 API。在本文中,我们将插入 NLP Cloud AI API。

您可以在 NLP Cloud 上注册,并在此处获取您的 API 密钥。

您的请求不必太复杂。例如,以下是 Reddit 上关于 OpenAI 的评论:

Reddit 上关于 OpenAI 的评论 Reddit 上关于 OpenAI 的评论

让我们使用 NLP Cloud 上的 ChatDolphin 模型来分析 Reddit 评论中有关 OpenAI 的情绪。首先,安装 NLP Cloud Python 客户端:

pip install nlpcloud

现在,您可以用以下 Python 代码分析 Reddit 评论的情感:

import nlpcloud

brand = "OpenAI"
reddit_comment = "Wasn't it the same with all OpenAI products? Amazing and groundbreaking at first, soon ruined by excessive censorship and outpaced by the competitors"

client = nlpcloud.Client("chatdolphin", "your api token", gpu=True)
print(client.generation(f"What is the sentiment about {brand} in the following comment? Positive, negative, or neutral? Answer with 1 word only.\n\n{reddit_comment}"))

答复是

Negative

现在我们来总结一下,编写监听 API 网络钩子并对数据进行情感分析的最终代码:

from fastapi import FastAPI
from pydantic import BaseModel
import nlpcloud

client = nlpcloud.Client("dolphin", "your api token", gpu=True)

app = FastAPI()

class WebhookData(BaseModel):
    platform: str
    query: str
    datetime: str
    link: str
    content: str

@app.post("/kwatch-webhooks")
async def receive_webhook(webhook_data: WebhookData):
    brand = "OpenAI"
    print(client.generation(f"""What is the sentiment about {brand} in the following comment? Positive, negative, or neutral? Answer with 1 word only.\n\n
            {webhook_data.content}"""))
    
    return {"message": "Webhook data received successfully"}

if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="0.0.0.0", port=8000)
    

结论

正如您所看到的,在现代生成式人工智能模型和高效社交监听工具的帮助下,社交媒体数据的情感分析可以实现自动化。这种方法可应用于各种社交媒体监测场景。以下是一些想法:

不过,制作这样的程序可能具有挑战性。首先是因为社交媒体并不容易监控,其次是因为在大量数据上使用人工智能生成模型的成本很高。

如果您不想自己建立和维护这样一个系统,我们建议您使用我们的 KWatch.io 平台,因为我们会自动监控社交媒体,并对检测到的帖子和评论进行情感分析: 点击此处在 KWatch.io 上注册。

Arthur
KWatch.io 首席技术官