情感分析代码(阅读+书写+注释)

对影评数据进行NLP情感分类(二分类的问题)

kaggle竞赛试题地址:https://www.kaggle.com/c/word2vec-nlp-tutorial/
数据集地址:链接:https://pan.baidu.com/s/1eR27IG5LmSBULJHtYGQi2Q 提取码:gh70
复制这段内容后打开百度网盘手机App,操作更方便哦
注意事项-首先要对影评数据做一些预处理

  • 去掉html标签
  • 移除标点
  • 切分成词
  • 去除停用词
  • 重新组成新的句子

1- 第一步导入实验过程中所需要的包

import os
import re
import numpy as np
import pandas as pd

#解析网页
from bs4 import BeautifulSoup


from sklearn.feature_extraction.text import  CountVectorizer
from sklearn.ensemble import  RandomForestClassifier
#校验
from sklearn.metrics import confusion_matrix

import nltk
#nltk.download()

from nltk.corpus import stopwords

2-利用pandas读入训练数据

datafile="./labeledTrainData.tsv"
#以\t做切分
df = pd.read_csv(datafile,sep="\t",escapechar="\\")
print("Number of reviews:{}".format(len(df)))

3-提取表格中的第一条语句

raw_example=df["review"][0]

4-将语句中的html标签进行去除

# #BeautifulSoup(raw_example,"html.parser").get_text()用来对网页内容进行处理并且提取文字内容
example=BeautifulSoup(raw_example,"html.parser").get_text()

5-使用正则表达式去除标点符号

example_letters = re.sub(r"[^a-zA-Z]"," ",example)

6-进行大小写的统一

words=example_letters.lower().split()

7-去除停用词

words_notstop=[ w for w in words if w not in stopwords.words("english")]

所有的影评都要运用上面的处理所以将上面的几步处理写入到一个函数当中

eng_stopwords=set(stopwords.words("english"))

def clean_text(text):
    text=BeautifulSoup(text,"html_parser").get_text()
    text=re.sub(r"[a-zA-Z]"," ",text)
    words=text.lower().split()
    words=[ w for w in words if w not in eng_stopwords]
    #','.join('abc')-----'a,b,c'
    return " ".join(words)

调用函数对数据进行清洗

clean_text(raw_example)

将清洗数据添加到表格中,并且要对所有的影评进行清洗

#DataFrame.apply(func, axis=0, broadcast=False, raw=False, reduce=None, args=(), **kwds)
#对表格中的每一个review运用clean_text函数
df["clean_review"]=df.review.apply(clean_text)

使用bag of words特征

#CountVectorizer是属于常见的特征数值计算类,是一个文本特征提取方法
#CountVectorizer会将文本中的词语转换为词频矩阵,它通过fit_transform函数计算各个词语出现的次数
# max_features个作为关键词集
# CountVectorizer是通过fit_transform函数将文本中的词语转换为词频矩阵\toarray()可看到词频矩阵的结果
vectorizer=CountVectorizer(max_features=5000)
# 对df表格中的clean_review(清洗后的数据)使用CountVectorizer向量化
train_data_features=vectorizer.fit_transform(df.clean_review).toarray()

训练分类器

##训练分类器

forest = RandomForestClassifier(n_estimators=100)
forest=forest.fit(train_data_features,df.sentiment)

在训练集上验证

#在训练集上做predict验证效果
confusion_matrix(df.sentiment,forest.predict(train_data_features))

我们如果要对测试数据集进行测试时,要将测试数据集中的影评采用相同的数据清洗

  • 6
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Grbl是一款开源的运动控制程序,为了增强代码的可读性,Grbl的源代码中附有中文注释,方便开发者理解和调试程序。 Grbl的中文注释涉及的内容包括:存储、运动控制、状态指示、报警和通信等方面。在存储方面,注释解释了程序在运行时对EEPROM、缓存区、状态变量和读取命令的处理逻辑;在运动控制方面,注释解释了各种运动模式下的运动参数、限位检测和离线指令处理等;在状态指示方面,注释解释了状态灯的闪烁方式和编号的含义;在报警方面,注释解释了各种报警的说明和打印方式;在通信方面,注释解释了Grbl支持的通信协议、命令和通信缓存等。 这些中文注释不仅方便了中文开发者阅读和理解Grbl源代码,而且对于英文阅读能力稍差的开发者来说也是十分有用的。通过仔细研读Grbl源代码中的中文注释,开发者可以深入了解Grbl的运作原理,为实现类似的运动控制程序提供参考和帮助。 ### 回答2: GRBL运动控制源代码是一种广泛使用的驱动器及控制器的开源代码,被广泛应用于各种数控设备如雕刻机、高精度打印机等。其核心是一个基于Arduino(开源电子平台) 的固件,它是由 C/C++ 语言编写的。 中文注释是对GRBL源代码的解释和说明。因为源代码中的注释是以英文方式解释的,可能不易理解,用中文注释可以使程序员更容易读懂代码的功能和结构。 在GRBL源代码中,这些中文注释通常包括对每个函数的解释,程序的结构和作用以及变量和常量的意义等等。例如,对于步进电机的控制部分,注释会说明相关代码的功能所在以及编写者在编写这个部分时要用的命名规则,比如step_pulse和dir_pin。 中文注释在理解源代码及修改其功能时非常重要。因为在代码中,有些变量或者参数并没有直接的文本描述,而只有注释能够解释清楚,比如GRBL源代码中的$130-$132参数,它们分别是电机在每个轴上的移动速度限制,通过注释,我们可以清楚地知道如何调整这些限制参数,从而得到更好的电机控制效果。 总之,中文注释是GRBL源代码的有价值的补充,它可以帮助程序员理解代码的意义和实现过程,从而更好地进行修改、调整和优化。这对于GRBL在控制数控设备领域的应用将会发挥重要的作用。 ### 回答3: GRBL是一个基于Arduino的开源运动控制软件,用于CNC机器人控制。GRBL源代码中包含了许多中文注释,这些注释有助于理解代码的含义和执行流程。 首先,代码中的注释解释了各种变量和常量的含义,包括步进电机控制、限位开关状态、速度控制参数和加速度控制参数等。 其次,注释还详细解释了固件如何处理运动指令,并控制与运动有关的Pin引脚。例如,当机器人在单轴上移动时,注释展示了如何使用pinMode函数控制电机方向,使用digitalWrite函数设置步进脉冲信号并改变电机步进状态。 此外,GRBL中的中文注释还解释了处理G代码的方式,包括G0和G1指令,以及如何根据G代码指令计算速度和加速度参数。 最后,注释还提供了关于固件完整性的信息,其中包括执行流程、错误处理和循环。这有助于用户理解固件的整个工作原理和可能的问题。 总之,GRBL源代码中的中文注释是非常有用的,帮助人们更好地理解和使用这个强大的开源运动控制软件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值