藏文情感分析器入门学习实践

🎯 项目目标:

  • 输入一段藏文短句。
  • 自动分析这句话的情感倾向:积极(正面)/消极(负面)/中立。

🔍 技术原理简介

情感分析是什么?

情感分析(Sentiment Analysis)是自然语言处理的一个重要应用,目的是自动识别和提取文本中的情感倾向。

常用的情感分析方法:

  • 基于规则的方法
    使用情感词典,对句子进行简单判断(适合初学)。

  • 基于传统机器学习的方法
    使用分类算法,如支持向量机(SVM),通过特征工程进行分类。

  • 基于深度学习的方法
    使用神经网络模型(如BERT、LSTM),自动学习文本的深层次语义,准确度更高。

我们本次项目使用简单易上手的规则词典方法进行演示,适合初学者理解和操作。


🛠️ 一、项目环境准备

1️⃣ Python安装(已安装可跳过)

  • 推荐安装Python 3.8以上版本。

2️⃣ 安装所需库

在命令行输入:

pip install pybo

📂 二、创建项目文件结构

创建项目文件夹sentiment_analysis,并准备以下文件:

sentiment_analysis/
│
├── sentiment_analyzer.py
├── sentiment_dict.txt
└── test_sentences.txt

📝 三、准备数据与情感词典

1️⃣ 创建藏文情感词典(sentiment_dict.txt)

藏文情感词典示例如下:

# 积极词 Positive(每行:词 空格 正面)
དགའ་པོ་ positive
སྐྱིད་པོ་ positive
བདེ་པོ་ positive# 消极词 Negative(每行:词 空格 负面)
ཁོག་ negative
དཀྲོལ་ negative
སྡུག་པོ་ negative
ངན་པ་ negative

说明

  • 文件用UTF-8格式保存。
  • 每行一个藏文词汇,后面跟情感标签(positive 或 negative)。

中文释义对应如下:

# 积极词 Positive  
喜欢
快乐 
舒服# 消极词 Negative 
坏的
坏人 
坏的 
歪曲

2️⃣ 创建测试短句(test_sentences.txt)

例如:

ང་དགའ་པོ་ཡོད།
ཁོང་གི་སྐྱིད་པོ་མི་འདུག
དེ་ག་རང་ཡིན།

中文分别为:

我愛快乐。
他不高兴。
就这样。

💻 四、编写情感分析代码(sentiment_analyzer.py)

打开sentiment_analyzer.py,输入以下代码:

from pybo import WordTokenizer# 步骤1:加载情感词典
def load_sentiment_dict(filepath):sentiment_dict = {}with open(filepath, "r", encoding="utf-8") as f:for line in f:line = line.strip()if line and not line.startswith("#"):word, sentiment = line.split()sentiment_dict[word] = sentimentreturn sentiment_dict# 步骤2:分析句子情感
def analyze_sentiment(sentence, sentiment_dict, tokenizer):tokens = tokenizer.tokenize(sentence)print("调试:分词结果 =", [token.text for token in tokens])positive_count = 0negative_count = 0for token in tokens:sentiment = sentiment_dict.get(token.text, "neutral")if sentiment == "positive":positive_count += 1elif sentiment == "negative":negative_count += 1# 判断整体情感if positive_count > negative_count:return "积极 (positive)"elif negative_count > positive_count:return "消极 (negative)"else:return "中立 (neutral)"# 主程序运行
if __name__ == "__main__":tokenizer = WordTokenizer()sentiment_dict = load_sentiment_dict("sentiment_dict.txt")# 读取测试句子with open("test_sentences.txt", "r", encoding="utf-8") as f:sentences = f.readlines()print("藏文情感分析结果:")for sentence in sentences:sentence = sentence.strip()sentiment_result = analyze_sentiment(sentence, sentiment_dict, tokenizer)print(f"句子:{sentence}")print(f"情感倾向:{sentiment_result}\n")

▶️ 五、运行程序,查看结果

在命令行中进入你的项目目录并运行:

python sentiment_analyzer.py

输出示例:

藏文情感分析结果:
调试:分词结果 = ['ང་', 'དགའ་པོ་', 'ཡོད', '།']
句子:ང་དགའ་པོ་ཡོད། #中文:我快乐。
情感倾向:积极 (positive)调试:分词结果 = ['ཁོག་', 'དཀྲོལ་', 'གྱི་', 'ཡོད', '།']
句子:ཁོག་དཀྲོལ་གྱི་ཡོད། #中文:他不高兴。
情感倾向:消极 (negative)调试:分词结果 = ['དེ་ག་', 'རང་', 'ཡིན', '།']
句子:དེ་ག་རང་ཡིན། #中文:就这样。
情感倾向:中立 (neutral)

🧠 原理讲解

情感分析步骤(完整流程):

  1. 数据标注
    人工或半自动对文本数据进行标注情感类别(积极、消极、中立)。

  2. 文本特征提取
    对文本进行分词,提取词汇、语法或语义特征。

  3. 模型训练与评估

    • 传统机器学习模型(如SVM):
      • 基于标注数据训练模型,预测情感类别。
    • 深度学习模型(如BERT):
      • 利用预训练模型微调,获得更精准预测能力。

本文采用词典方法,简单直观,适合零基础快速理解并掌握情感分析的概念。


📌 常见问题与解决办法

问题原因解决方法
未识别情感情感词典覆盖不足扩充情感词典,增加积极和消极词汇
中文乱码或文件读取错误文件未用UTF-8编码保存用记事本或其他编辑器重开并以UTF-8格式保存

🚀 拓展练习(推荐):

  • 尝试添加更多藏文句子到测试文件中,丰富你的情感分析结果。
  • 扩展情感词典,增加词汇数量,提高准确性。
  • 探索使用简单机器学习工具,如sklearn的SVM分类器进一步提升性能。

🎉 恭喜你!你已经完成了藏文情感分析器项目的基础实现。

未来可以进一步探索深度学习模型来提升精度,这个初级项目可以是深入学习人工智能的一个起点!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/78177.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

双指针(5)——有效三角形个数

题目: 这道题我们首先可能会想到暴力解法,三个for循环然后进行check()。时间复杂度肯定是不允许的。 同时,验证可以组成三角形的条件是任意两边之和大于第三边,这就意味着我们每组要进行三次比较。但也有捷…

书生实战营之沐曦专场

一:实验环境进入和启动实验容器(D.run平台) 1.1首先进入平台进行注册 D.run平台https://console.d.run/ 注册和登录环节就跳过了。 1.2 启动实验容器--详细步骤如下 1.2.1选择容器的名称、区域、镜像(注意镜像必须选择Dlinfer) 1.2.2可以选…

内置类型成员变量的初始化详解

在 C 中,内置类型(如 int、float、double、char、指针等)的初始化方式与类类型(如 std::string、自定义类)不同。由于内置类型没有构造函数,它们的初始化行为由编译器直接处理。以下是详细解析:…

对第三方软件开展安全测评,如何保障其安全使用?

对第三方软件开展安全测评,能够精准找出软件存在的各类安全隐患,进而为软件的安全使用给予保障。此次会从漏洞发现、风险评估、测试环境等多个方面进行具体说明。 漏洞发现情况 在测评过程中,我们借助专业技术与工具,对第三方软…

11.Spring Boot 3.1.5 中使用 SpringDoc OpenAPI(替代 Swagger)生成 API 文档

Spring Boot 3.1.5 中使用 SpringDoc OpenAPI(替代 Swagger)生成 API 文档 1. 项目结构 假设项目名为 springboot-openapi-demo,以下是项目的基本结构: springboot-openapi-demo/ ├── src/ │ ├── main/ │ │ ├─…

python入门(1)变量与输入输出

一、变量 使用规则 变量名值例子 a13变量名规则 变量名可以用大小写字母、数字、下划线。 数字、下划线不可开头 例子 name name1 1name name_first _first 二、输入输出 输出print print(*objects,sep"",end"\n") objects:多个要输出的值 sep:每个…

TS 安装

TS较JS优势 1 TS静态类型编程语言。编译时发现错误 2 类型系统 强化变量类型概念 3 支持新语法 4 类型推断机制 可以和React框架中的各种hook配合 5 任何地方都有代码提示 tsc 命令 将TS转为JS 1 tsc 文件.ts 生成 js文件 2 执行JS代码

Linux-常用监控工具

以下是对 Linux 系统中常用监控工具(netstat、ss、dmesg)的系统性介绍,涵盖其核心功能、典型用法及实际应用场景,帮助您分析系统状态和内核参数调整后的效果: 1. netstat -s:网络协议栈统计监控 功能 net…

Linux系统:详解文件描述符与重定向原理以及相关接口(open,read,write,dup2)

本节重点 从狭义与广义角度理解文件理解文件描述符掌握open,write,read系统调用理解重定向的概念与原理掌握重定向的指令操作stdout与stderr的比较为什么存在stderr? 一、理解“文件” 1.1 狭义角度 在狭义层面,Linux文件是磁盘或存储设备上连续或分…

美国市场变局:沃尔玛95%覆盖率的3个流量入口重构策略

过去几年,美国零售市场经历了极大的变化。电商发展迅猛,加上疫情影响,消费者购物习惯出现转向。而作为美国零售巨头,沃尔玛(Walmart)凭借高达95%的线下覆盖率,始终是品牌和卖家不可忽视的渠道。…

一文详解 Linux下的开源打印系统CUPS(Common UNIX Printing System)

文章目录 前言一、CUPS 简介二、CUPS 常用指令解析2.1 安装 CUPS2.2 启动/重启服务2.3 添加打印机(核心操作)2.4 设置默认打印机2.5 打印文件2.6 查看打印任务2.7 取消打印任务2.8 查看、移除已添加的打印机 三、调试与常见问题3.1 日志查看3.2 驱动问题…

React useCallback函数

应用场景:父组件向子组件传递函数类型的props时

python 桌面程序开发简述及示例

Python桌面程序开发简述及示例 Python凭借其简洁的语法和丰富的库支持,非常适合开发跨平台的桌面应用程序。本文将介绍Python桌面开发的主要方法,并提供实际代码示例。 一、Python桌面开发主要方法 1.1 Tkinter(标准库) Python内置的GUI库,适合开发简单桌面应用 1.2 …

数字智慧方案5875丨智慧交通枢纽综合解决方案(43页PPT)(文末有下载方式)

篇幅所限,本文只能提供部分资料内容,完整资料请看下面链接 https://download.csdn.net/download/2301_78256053/89575708 资料解读:智慧交通枢纽综合解决方案 详细资料请看本解读文章的最后内容。 随着城市化进程的加速和交通需求的不断增…

企业级分布式 MCP 方案

飞书原文档链接地址:https://ik3te1knhq.feishu.cn/wiki/D8kSwC9tFi61CMkRdd8cMxNTnpg 企业级分布式 MCP 方案 [!TIP] 背景:现阶段 MCP Client 和 MCP Server 是一对一的连接方式,若当前 MCP Server 挂掉了,那么 MCP Client 便不…

【AI提示词】奥卡姆剃刀思维模型专家

提示说明 一位专注于奥卡姆剃刀思维模型的专业人士,擅长将简洁性原则应用于复杂问题的分析与解决。 提示词 # Role: 奥卡姆剃刀思维模型专家## Profile - language: 中文 - description: 一位专注于奥卡姆剃刀思维模型的专业人士,擅长将简洁性原则应用…

2.1 行列式

引言 行列式是线性代数的核心工具,贯穿矩阵运算、特征值计算与微分方程求解。本文系统梳理2.1节核心考点,结合公式速查与典型例题,助你高效突破行列式难点! 考点一:数值型行列式计算 1️⃣ 行列式的定义 (1) 定义方…

单词规律(简单)

思路和同构字符串那道题一样。、但是这道题要注意的地方就是,检查 pattern 和 s 的单词数量是否一致以及在进行字符串比较的时候应该用equals来进行比较,而不能用“!”,“!”比较的是对象引用而非内容。 class Soluti…

【C++】认识map和set

目录 前言: 一:认识map和set 二:map和set的使用 1.set的使用 2.map的使用 三:map的insert方法返回值 四:map的[ ]的使用 五:multiset和multimap 六:map和set的底层数据结构 七&#x…

Mybatis中的一级二级缓存扫盲

思维导图: MyBatis 提供了一级缓存和二级缓存机制,用于提高数据库查询的性能,减少对数据库的访问次数。(本质上是减少IO次数)。 一级缓存 1. 概念 一级缓存也称为会话缓存,它是基于 SqlSession 的缓存。在同…