首页 > 其他分享 >PyQt5 自然语言处理学习笔记(一)

PyQt5 自然语言处理学习笔记(一)

时间:2023-03-01 22:32:26浏览次数:55  
标签:__ 分析 文本 self 笔记 情感 PyQt5 file 自然语言

前言

最近想将自然语言处理的项目进行可视化,尽量还是使用回Python语言,因此打算用PyQT来实现相应的功能。

入门案例

一个简单的自然语言处理的demo,使用PyQt框架,该demo可以读取文本文件,对文件中的文本进行情感分析,并生成一个简单的情感分析报告。

在这个demo中,我使用了情感分析的python库textblob来进行情感分析,使用了PyQt5来实现GUI界面。

请确保已经安装了textblob库和PyQt5库。

from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QLabel, QPushButton, QTextEdit, QFileDialog, QMessageBox
from textblob import TextBlob

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle('自然语言处理Demo')
        self.setGeometry(200, 200, 600, 500)

        # 创建文本编辑框
        self.text_edit = QTextEdit(self)
        self.text_edit.setGeometry(50, 50, 500, 300)

        # 创建按钮,用于选择文件
        self.select_file_btn = QPushButton('选择文件', self)
        self.select_file_btn.setGeometry(50, 370, 100, 30)
        self.select_file_btn.clicked.connect(self.select_file)

        # 创建按钮,用于进行情感分析
        self.analyze_btn = QPushButton('进行情感分析', self)
        self.analyze_btn.setGeometry(200, 370, 100, 30)
        self.analyze_btn.clicked.connect(self.analyze)

        # 创建标签,用于显示情感分析结果
        self.result_label = QLabel(self)
        self.result_label.setGeometry(50, 420, 500, 30)
        self.result_label.setAlignment(Qt.AlignCenter)

    def select_file(self):
        # 弹出文件选择框
        file_path, _ = QFileDialog.getOpenFileName(self, '选择文件', '', 'Text files (*.txt)')

        if file_path:
            # 读取文件内容并显示到文本编辑框
            with open(file_path, 'r', encoding='utf-8') as f:
                content = f.read()
            self.text_edit.setPlainText(content)

    def analyze(self):
        # 获取文本编辑框中的文本内容
        text = self.text_edit.toPlainText()

        if text:
            # 进行情感分析
            blob = TextBlob(text)
            sentiment_score = blob.sentiment.polarity

            # 根据情感得分判断情感类型
            if sentiment_score > 0:
                sentiment = '积极'
            elif sentiment_score < 0:
                sentiment = '消极'
            else:
                sentiment = '中性'

            # 在标签中显示情感分析结果
            self.result_label.setText(f'情感分析结果:{sentiment},得分:{sentiment_score:.2f}')
        else:
            QMessageBox.warning(self, '警告', '请先选择文件或输入文本!')

if __name__ == '__main__':
    app = QApplication([])
    window = MainWindow()
    window.show()
    app.exec_()

分析

在上面的代码中,我们首先创建了一个名为MainWindow的类,该类继承自QMainWindow,用于创建主窗口。在该类中,我们创建了文本编辑框、选择文件按钮、进行情感分析按钮和情感分析结果标签,并为选择文件按钮和进行情感分析按钮分别绑定了select_fileanalyze方法。

select_file方法用于弹出文件选择框,读取选择的文件内容,并将内容显示到文本编辑框中。

analyze方法用于获取文本编辑框中的文本内容,使用textblob库进行情感分析,并根据情感得分判断情感类型。最后,将情感分析结果显示在情感分析结果标签中。

if __name__ == '__main__':语句块中,我们创建了一个PyQt应用程序,并将MainWindow实例化,并显示在屏幕上。

当用户点击选择文件按钮时,select_file方法将被调用。该方法首先弹出一个文件选择框,让用户选择要分析的文本文件。如果用户选择了文件,则该方法读取文件内容,并将内容显示在文本编辑框中。

当用户点击进行情感分析按钮时,analyze方法将被调用。该方法首先获取文本编辑框中的文本内容,使用textblob库进行情感分析,并根据情感得分判断情感类型。最后,将情感分析结果显示在情感分析结果标签中。

如果用户在点击进行情感分析按钮之前没有选择文件或者没有输入文本,则会弹出一个警告框提示用户。

标签:__,分析,文本,self,笔记,情感,PyQt5,file,自然语言
From: https://blog.51cto.com/ydlin/6094364

相关文章

  • C++ STL学习笔记-C++ STL基础
    仅自己回忆使用,若有侵权,联系删除algorithm实用库函数sort:迭代器类型必须为随机访问迭代器(first,last),应该支持<运算符,可以自己写比较nth_element()>partial_sort()......
  • CF1799 解题笔记
    A模拟即可。#include<bits/stdc++.h>#defineILinline#defineregregister#defineN50050ILintread(){regintx=0;regcharch=getchar();while(c......
  • Binary GCD 学习笔记
    算是一点杂项吧,感觉没什么机会用上。0x00前言有时你需要大量且快速的求gcd,像P5435。但是对值域预处理gcd又很麻烦,所以这时候我们可以考虑BinaryGCD。0x01原理......
  • TJA1020应用笔记(AN00093)
    1. itisdissuadedtoconnectNSLPdirectlytoaVCCsupplysource.NSLP最好不要与VCC直接连接。 2.(NLSPpin)Therangeoftheinputthresholdis chosento......
  • 扩展欧几里得学习笔记
    温馨提示:本文推式子比较多,建议跟着文章自己推一推。扩展欧几里得是什么扩展欧几里得(exgcd)是一个可以用来求\(ax+by=c\)(\(c\%\gcd(a,b)=0\),否则无解)的解的算法求解\(ax......
  • 均值不等式学习笔记
    从平均数说起我们都知道\(n\)个数的平均数表示为:\[\frac{a_1+a_2+a_3+\cdotsa_n}{n}\]这种最常见的平均数被称为“算术平均数”(ArithmeticMean)。还有一种常用的平均......
  • PyQt5弹框定时关闭(python)
    PyQt5使用QMessageBox,可以设置在几秒后关闭 (作者使用的python3)info_box=QMessageBox()#因为没使用这种方式QMessageBox.information(self,'复制','复制成功',QMe......
  • 博弈论学习笔记
    挖个巨坑,慢慢填。从Nim游戏入手问题:有\(n\)堆石子,第\(i\)堆石子有\(s_i\)个,两个人轮流取石子,每人每次只能从一堆中取任意数量的石子,可以取完,不能不取。问先手必......
  • C#初步学习2(个人笔记,基于老赵.Net的视频自学,不喜勿喷)
    //此笔记仅针对个人学习而写,会有所缺失的内容,不喜勿喷初步学习C#中的基本变量除了最基本的“byte,short,int,long,float,double,char,string(C#中“String”和“string”......
  • 韦东山2440-学习笔记-platform
    1.简介platform是设备驱动总线模型2.示例#include<linux/platform_device.h>#include<linux/module.h>staticstructplatform_device*led_dev;staticstru......