精华内容
下载资源
问答
  • python中文情感分析
    2022-07-31 12:54:08

    1. 情感分析综述

    情感分析也称为意见挖掘,是自然语言处理(NLP)中的一个领域,它试图在文本中识别和提取意见。

    情感分析有很多的应用场景,例如社交媒体监控、品牌监控、客户之声、客户服务、员工分析、产品分析、市场研究与分析等等。

    实现情感分析的方法有很多,大体上分为两大类,第一类为基于词典规则的方法,第二类为基于机器学习的方法。

    1.1 基于词典的方法

    基于词典的方法主要通过制定一系列的情感词典和规则,对文本进行拆句、分析及匹配词典(一般有词性分析,句法依存分析),计算情感值,最后通过情感值来作为文本的情感倾向判断的依据。

    基于词典的情感分析大致步骤如下:

    • 对大于句子力度的文本进行拆解句子操作,以句子为最小分析单元;
    • 分析句子中出现的词语并按照情感词典匹配;
    • 处理否定逻辑及转折逻辑;
    • 计算整句情感词得分(根据词语不同,极性不同,程度不同等因素进行加权求和);
    • 根据情感得分输出句子情感倾向性。

    如果是对篇章或者段落级别的情感分析任务,按照具体的情况,可以以对每个句子进行单一情感分析并融合的形式进行,也可以先抽取情感主题句后进行句子情感分析,得到最终情感分析结果。

    1.2 基于机器学习的方法

    机器学习的方法是将情感分析作为一个有监督的分类问题。对于情感极性的判断,将目标情感分为三类:正、中、负。对训练文本进行人工标注,然后进行有监督的机器学习过程,并对测试数据用模型来预测结果。

    基于机器学习的情感分析大致步骤如下:

    首先进行文本预处理。文本的预处理过程是使用机器学习作用于文本分类的基础操作。由于文本是非结构化数据及其特殊性,计算机并不能直接理解,所以需要一系列的预处理操作后,转换为计算机可以处理的结构化数据。在实际分析中,文本更为复杂,书写规范也更为随意,且很有可能掺杂部分噪声数据。整体上来说,文本预处理模块包括去噪、特征提取、文本结构化表示等。

    • 特征抽取:

    中文最小语素是字,但是往往词语才具有更明确的语义信息,但是随着分词,可能出现词语关系丢失的情况。n-元文法正好解决了这个问题,它也是传统机器学习分类任务中最常用的方法。

    • 文本向量化:

    对抽取出来的特征,向量化是一个很重要的过程,是实现由人可以理解的文本转换为计算机可以处理数据的重要一步。这一步最常用到的就是词袋模型(bag-of-words )以及最近新出的连续分布词向量模型(word Embedding)。词袋模型长度为整个词表的长度,词语对应维度置为词频,文档的表示往往比较稀疏且维度较高。Embedding 的表示方式,能够有效的解决数据稀疏且降维到固定维度,更好的表示语义信息。对于文档表示,词袋模型可以直接叠加,而 Embedding 的方法可以使用深度学习的方法,通过 pooling 得到最终表示。

    • 特征选择:

    在机器学习分类算法的使用过程中,特征好坏直接影响机器的准确率及召回率。选择有利于分类的特征,可以有效的减少训练开支及防止模型过拟合,尤其是数据量较大的情况下,这一部分工作的重要性更加明显。其选择方法为,将所有的训练语料输入,通过一定的方法,选择最有效的特征,主要的方法有卡方,信息熵,dp 深层感知器等等。

    目前也有一些方法,从比句子粒度更细的层次去识别情感,如基于方面的情感分析(Aspect based Sentiment Analysis),他们从产品的评价属性等更细粒度的方面对评价主体进行情感倾向性分析。

    文本转换为机器可处理的结构后,接下来便要选择进行机器学习的分类算法。目前,使用率比较高的是深度学习(CNN,RNN)和支持向量机(SVM)。深度学习的方法,运算量大,准确率有一定的提高,所以都在做这方面的尝试。而支持向量机则是比较传统的方法,其准确率及数据处理能力也比较出色,很多人都在用它来做分类任务。

    2. 系统方法

    本次实验的任务如下:

    设计和实现分类系统,完成对文本的情感分类任务,这里包含三种情感:中性,积极和消极。程序语言、框架、学习方法不限,可使用外部语料,不可使用已有的情感分析或文本分类库。

    由于不能使用现有的词典,考虑到仅仅用现有的 8606 条样例可能无法搭建出一个精准度较高的词典,如果使用基于词典的方法可能准确率不尽如人意。同时,基于词典的方法的召回率一般而言会比较低。因此,我优先准备使用机器学习的方法,将情感分析当作一个有监督的三分类问题。分类算法方面,我是用支持向量机(SVM),主要是因为 SVM 分类速度比较快,也比较容易实现,而且准确率也有一定的保证。(还因为不会 LSTM)

    3. 实验设置

    实验使用机器学习方法,其中分词工具使用 jieba 分词,使用 sklearn 中的 TfidfVectorizer 来进行词组向量化,使用 sklearn 中的 MultinomialNB 来进行标签分类。

    代码说明如下:

    def read_json(path):
            = open(path, 'rb')
              return json.load(f)
    

    该函数用于读取 JSON 类型的数据,采用二进制读入,避免了由于中文产生的问题。

    def analyzes(text):
    

    该函数用于处理读入的数据,首先进行分词操作,如果数据带标签,那么就给分好的词附带标签,以便之后进行分类。具体核心实现如下:

    for line in text:
        = re.sub('[’@!,.:;\'\"#!?。:;、]+', '', line['content'])
              words.append(' '.join(jieba.lcut(t, cut_all=True)))
    

    读入的数据是一个字典,键分别为‘id’、‘content’、‘label’,其中‘content’索引到的内容为具体的评论内容。对于每一条评论,去除评论中的标点符号以及特殊字符,然后使用 jieba 分词工具进行分词。分词后的单词用空格分隔。

    if len(line) == 2:
        continue
    

    如果是不带标签的数据,那么仅进行分词就结束

    if line['label'] == 'positive':
        labels.append(1)
    elif line['label'] == 'neutral':
        labels.append(0)
    elif line['label'] == 'negative':
        labels.append(2)
    

    如果是带标签的数据,那么对其附加标签。其中,积极赋予 1,中性赋予 0,消极赋予 2。

    def train_model(path):
    

    该函数用于训练分类器。核心实现如下:

    text = read_json(path)
           words, labels = analyzes(text)
    

    读入数据,进行标签分类。

    tf = TfidfVectorizer()
         x_train = tf.fit_transform(words).toarray()
    

    将分词过的句子进行向量化,作为贝叶斯分类器的 X 向量

    y_train = labels
    

    Y 向量为词语的情感标签

    mt = MultinomialNB(alpha=0.1)
         mt.fit(x_train, y_train)
         return tf, mt
    

    训练分类器,并将分类器返回。

    主函数如下:

    tf, mt = train_model('train_data.json')
    

    训练分类器

    test_text = read_json('test.json')
                test_words = analyzes(test_text)
    

    处理待分类的数据

    x_test = tf.transform(test_words).toarray()
             predict = mt.predict(x_test)
    

    使用分类器对待分类的数据进行情感分析

    ans = []
          for i in range(len(predict)):
                  ans.append([i + 1, int(predict[i])])
                  = open('1180300315-周牧云.csv', 'w', encoding='utf-8', newline='')
                    csv_writer = csv.writer(f)
                                 csv_writer.writerows(ans)
                                 close()
    

    将答案写入 CSV 中

    print("finish")
    
    更多相关内容
  • python实现人工智能中文情感分析
  • python实现人工智能中文情感分析
  • 利用python 实现knn算法的情感分类
  • python 中文情感分析 Snownlp库的使用

    千次阅读 2020-11-29 09:19:58
    文章目录一、Snownlp 简介SnowNLP是一个python写的类库,可以方便的处理中文文本内容,是受到了TextBlob的启发而写的,由于现在大部分的自然语言处理库基本都是针对英文的,于是写了一个方便处理中文的类库,并且和...

    不甘心的时候,就是在进步;痛苦的时候,就是在成长。

    文章目录

    一、Snownlp 简介

    SnowNLP是一个python写的类库,可以方便的处理中文文本内容,是受到了TextBlob的启发而写的,由于现在大部分的自然语言处理库基本都是针对英文的,于是写了一个方便处理中文的类库,并且和TextBlob不同的是,这里没有用NLTK,所有的算法都是自己实现的,并且自带了一些训练好的字典。注意本程序都是处理的unicode编码,所以使用时请自行decode成unicode编码。# 安装

    pip install snownlp -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

    二、Snownlp 特性中文分词(Character-Based Generative Model)

    词性标注(TnT 3-gram 隐马)

    情感分析(官网没有介绍具体原理,但是指明购物类的评论的准确率较高,其实是因为它的语料库主要是购物方面的)

    文本分类(原理是朴素贝叶斯)

    转换成拼音 (Trie树实现的最大匹配)

    繁体转简体 (Trie树实现的最大匹配)

    提取文本关键词(TextRank算法)

    提取文本摘要(TextRank算法)

    tf,idf

    Tokenization(分割成句子)

    文本相似(BM25)

    三、Snownlp库的基本使用from snownlp import SnowNLP

    word = u'这个姑娘真好看'

    s = SnowNLP(word)

    print(s.words) # 分词

    print(list(s.tags)) # 词性标注

    print(s.sentiments) # 情感分数

    print(s.pinyin) # 拼音

    print(SnowNLP(u'蒹葭蒼蒼,白露為霜。所謂伊人,在水一方。').han) # 繁体字转简体

    运行结果如下:

    ['这个', '姑娘', '真', '好看']

    [('这个', 'r'), ('姑娘', 'n'), ('真', 'd'), ('好看', 'a')]

    0.9002381975487243

    ['zhe', 'ge', 'gu', 'niang', 'zhen', 'hao', 'kan']

    蒹葭苍苍,白露为霜。所谓伊人,在水一方。from snownlp import SnowNLP

    text = u'''

    自然语言处理是计算机科学领域与人工智能领域中的一个重要方向。

    它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。

    自然语言处理是一门融语言学、计算机科学、数学于一体的科学。

    因此,这一领域的研究将涉及自然语言,即人们日常使用的语言,

    所以它与语言学的研究有着密切的联系,但又有重要的区别。

    自然语言处理并不是一般地研究自然语言,

    而在于研制能有效地实现自然语言通信的计算机系统,

    特别是其中的软件系统。因而它是计算机科学的一部分。

    '''

    s = SnowNLP(text)

    print(s.keywords(limit=3)) # 关键词提取

    print('--------------------------------')

    summary = s.summary(limit=4) # 文本概括

    for i in summary:

    print(i)

    print('--------------------------------')

    print(s.sentences) # 句子

    运行结果如下:

    ['语言', '自然', '计算机']

    --------------------------------

    因而它是计算机科学的一部分

    自然语言处理是计算机科学领域与人工智能领域中的一个重要方向

    自然语言处理是一门融语言学、计算机科学、数学于一体的科学

    所以它与语言学的研究有着密切的联系

    --------------------------------

    ['自然语言处理是计算机科学领域与人工智能领域中的一个重要方向', '它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法', '自然语言处理是一门融语言学、计算机科学、数学于一体的科学', '因此', '这一领域的研究将涉及自然语言', '即人们日常使用的语言', '所以它与语言学的研究有着密切的联系', '但又有重要的区别', '自然语言处理并不是一般地研究自然语言', '而在于研制能有效地实现自然语言通信的计算机系统', '特别是其中的软件系统', '因而它是计算机科学的一部分']

    Process finished with exit code 0# 评价词语对文本的重要程度

    # TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。

    # TF词频越大越重要,但是文中会的“的”,“你”等无意义词频很大,却信息量几乎为0,这种情况导致单纯看词频评价词语重要性是不准确的。因此加入了idf

    # IDF的主要思想是:如果包含词条t的文档越少,也就是n越小,IDF越大,则说明词条t越重要

    # TF-IDF综合起来,才能准确的综合的评价一词对文本的重要性。

    from snownlp import SnowNLP

    s = SnowNLP([[u'这篇', u'文章', u'写得', u'不错'],

    [u'那篇', u'论文', u'好'],

    [u'这个', u'东西', u'好吃']])

    print(s.tf) # tf 意思是词频(Term Frequency)

    print('---------------------------------------------------')

    print(s.idf) # idf 意思是逆文本频率指数(Inverse Document Frequency)

    print('-----------------------------------------------------')

    # 文本相似度

    print(s.sim([u'文章']))

    print(s.sim([u'好']))

    运行结果如下:

    [{'这篇': 1, '文章': 1, '写得': 1, '不错': 1}, {'那篇': 1, '论文': 1, '好': 1}, {'这个': 1, '东西': 1, '好吃': 1}]

    ---------------------------------------------------

    {'这篇': 0.5108256237659907, '文章': 0.5108256237659907, '写得': 0.5108256237659907, '不错': 0.5108256237659907, '那篇': 0.5108256237659907, '论文': 0.5108256237659907, '好': 0.5108256237659907, '这个': 0.5108256237659907, '东西': 0.5108256237659907, '好吃': 0.5108256237659907}

    -----------------------------------------------------

    [0.4686473612532025, 0, 0]

    [0, 0.5348959411162205, 0]# 关于训练

    # 现在提供训练的包括分词,词性标注,情感分析,都是用的snownlp库自带的原始文件 以分词为例 分词在snownlp/seg目录下

    from snownlp import seg

    sentiment.train('neg.txt', 'pos.txt')

    seg.save('seg.marshal')

    # 这样训练好的文件就保存为seg.marshal了,之后修改snownlp/seg/__init__.py里的data_path指向刚训练好的文件即可

    四、NLP测试

    1. 获取数据

    爬取部分好评、中评和差评数据,分别保存到三个txt里。

    2. 处理数据from pathlib import Path

    import pandas as pd

    # 获取当前目录下 存储好评 中评 差评数据的txt

    p = Path(r'D:\python\pycharm2020\program\数据分析\中文情感分析')

    review_txt = list(p.glob('**/*.txt'))

    all_data = pd.DataFrame()

    for item in review_txt:

    emotion = item.stem # 获取文件名 除后缀的部分

    with Path(item).open(mode='r') as f:

    con = f.read().split('\n')

    data = pd.DataFrame({'评论内容': con, '标签': [emotion] * len(con)})

    all_data = all_data.append(data)

    all_data.to_excel('评论数据.xlsx', index=False)

    3. NLP测试from snownlp import SnowNLP

    import pandas as pd

    import re

    df = pd.read_excel('评论数据.xlsx')

    content = df['评论内容']

    # 去除一些无用的字符 只提取出中文出来

    content = [' '.join(re.findall('[\u4e00-\u9fa5]+', item, re.S)) for item in content]

    # 对每条评论进行情感打分

    scores = [SnowNLP(i).sentiments for i in content]

    emotions = []

    # 根据分数来划定好评 中评 差评

    for i in scores:

    if i >= 0.75:

    emotions.append('好评')

    elif 0.45 <= i < 0.75:

    emotions.append('中评')

    else:

    emotions.append('差评')

    df['情感分数'] = scores

    df['情感'] = emotions

    df.to_excel('NLP测试后数据.xlsx')import pandas as pd

    # 计算预测准确率

    df = pd.read_excel('NLP测试后数据.xlsx')

    # 看准确率 通过Snownlp情感打分 设置梯度得出的情感 好评 中评 差评 与实际标签相比较

    data = df[df['标签'] == df['情感']]

    print('准确率为:{:.3%}'.format(len(data) / len(df)))

    运行结果如下:

    准确率为:72.292%

    Process finished with exit code 0准确率还可以,但还不算高,分析原因可能为如下方面:

    因为只是做练习、熟悉Snownlp库的基本使用,通过情感打分和设置梯度来判断情感,没有自己构建该领域的语料库,如果构建了相关语料库,替换默认语料库,准确率会高很多。所以语料库是非常关键的,如果要正式进行文本挖掘,建议要构建自己的语料库。

    这个商品下的评论,中评、差评的界限比较模糊,每条评论的标签用的是爬取时默认标签:属于什么评论,没有人工去看,会有相当的误差。

    对文本的处理也只是滤掉其他字符,提取中文。

    展开全文
  • 文本情感分析(也称为意见挖掘)是指用自然语言处理、文本挖掘以及计算机语言学等方法来识别和提取原素材中的主观信息。 本文使用python来做文本情感分析
  • 中文情感分析 Python

    2022-05-15 13:19:23
    中文情感分析的实质是文本分类问题,本项目分别采用CNN和BI-LSTM两种模型解决文本分类任务,并用于情感分析,达到不错的效果。 两种模型在小数据集上训练,在验证集的准确率、号回率及F1因子均接近90% 项目设计的...
  • python可以直接下载百度情感分析的调用模块。 安装方法: pip install baidu-aip 使用方法:创建一个python文件写入如下代码 from aip import AipNlp """ 你的 APPID AK SK """ APP_ID = '你的 App ID' API_

    这里我给大家推荐一个现成的轮子,百度提供的情感倾向分析API(搜索“百度AI开放平台”即可)。文章开始的集体情感变化曲线就是用这个实现的。

    使用的方法也很简单,在官网注册之后,可以得到每月免费使用的10W次权限。python可以直接下载百度情感分析的调用模块。 安装方法:

    pip install baidu-aip
    

    使用方法:创建一个python文件写入如下代码

    from aip import AipNlp
    
    """ 你的 APPID AK SK """
    APP_ID = '你的 App ID'
    API_KEY = '你的 Api Key'
    SECRET_KEY = '你的 Secret Key'
    
    client = AipNlp(APP_ID, API_KEY, SECRET_KEY)
    

    这里的APP ID和APP KEY以及Secret Key要用自己的,先在百度智能云要先注册或者登陆一下,然后创建的应用
    例如:
    在这里插入图片描述

    在这里插入图片描述
    接着写入:

    text="非常感动。很幸运遇到您的视频。大一C++学得很累,慕课,爱课程,以及其他的课我都很不适应。看了您的视频,非常感动。希望在期末考试中,能够向满分冲刺!"
    text = text.encode().decode("utf-8")
    result=client.sentimentClassify(text)
    
    print(result)
    

    然后运行就可以得到运行结果:
    在这里插入图片描述
    里面的专业名词参考这个图:在这里插入图片描述

    展开全文
  • A Chinese sentiment analyze lib with Python #simple to use: ##example ##first,you can import python lib like this: import pos_neg_senti_dict_feature as pn import textprocessing as tp ##for single ...
  • python实现了情感分析的完整项目,包含训练样本,训练好的模型,完整代码。python实现了情感分析的完整项目,包含训练样本,训练好的模型,完整代码。python实现了情感分析的完整项目,包含训练样本,训练好的模型,...
  • python实现基于情感词典的情感分析 大数据分析 用python实现基于情感词典的情感分析 大数据分析 用python实现基于情感词典的情感分析 大数据分析 用python实现基于情感词典的情感分析 大数据分析
  • 本文实例讲述了Python实现购物评论文本情感分析操作。分享给大家供大家参考,具体如下: 昨晚上发现了snownlp这个库,很开心。先说说我开心的原因。我本科毕业设计做的是文本挖掘,用R语言做的,发现R语言对文本处理...
  • 深度学习,中文情感分析python程序,包含中文酒店用户评论语料数据。
  • 3月31日,3月最后的一天接到了腾讯HR终面,看着招聘官网...正则表达式数据源app公众号文章:Python有趣|中文文本情感分析罗罗攀在里面有发数据,你们之后能够跟着他的公众号进行学习,很是适合我这种小白哈哈哈哈...

    3月31日,3月最后的一天接到了腾讯HR终面,看着招聘官网变成已完成还有点小自豪呢python

    07c5940ff64e01ab76ab3b9f0b911b31.png

    而后百度搜了搜显示“已完成”是否是稳了,原来不是,好多最后被通知没被录取。。。。web

    b048a02d6ecb4bab21fccd983f0614ad.png

    随缘吧~代码还要继续码,博客还要继续更,论文还要继续写。。。。。正则表达式

    数据源app

    公众号文章:Python有趣|中文文本情感分析

    罗罗攀在里面有发数据,你们之后能够跟着他的公众号进行学习,很是适合我这种小白哈哈哈哈哈哈

    这是大众点评上的评论数据(王树义老师提供)dom

    原始数据svg

    import pandas as pd

    import csv

    import numpy as np

    data = pd.read_csv(r'C:\Users\xuxiaojielucky_i\Desktop\data1.csv',encoding='utf-8')

    data.head()

    df1a01cc8ce5f00873daa9f604d8fc0f.png

    情感分析——分类函数

    能够看到数据中有一列是平分(star)数据,咱们看先这个数据有哪些分值。能够看到分值有1,2,4,5四中等级。学习

    data['star'].unique()

    4f8945ddf575400909a510bdfaa5342d.png

    对数据进行标注,咱们假定分数小于3的为消极并标注为0,大于3的分数为积极并标注为1,经过1和0 对数据进行分类,所以咱们定义一个函数,用apply方法获得一个新的列(分类的列)。测试

    def make_label(star):

    if star > 3:

    return 1

    else:

    return 0

    data['setiment'] = data.star.apply(make_label)

    data.head()

    d95019be72b4869d6fabc05ecf1bb4fc.png

    snownlpui

    python最强大的地方就是第三方库,其实有现成的库能够直接对文本进行情感分析,如snownlp,直接调用返回的是积极情绪的几率,咱们来调用一下吧~

    1b637a699fd02047ba720436a1c3c23b.png

    import snownlp

    text1 = '个人卷发棒在哪?'

    text2 = '你的卷发棒就棒在十分撑托你的美!'

    s1 = Snownlp(text1)

    s2 = Snownlp(text2)

    print(s1.sentiments,s2.sentiments)

    b7eaed99da95906d7121ba3b044be997.png

    啊哈哈哈哈不咋准,由于没有进行训练,他不知道“卷发棒”是一个词,一直都以为人工智能这个领域产生了一个很是廉价枯燥的工做岗位——数据标注实习生 = =

    from snownlp import SnowNLP

    text1 = '这个通常般!'

    text2 = '这个太棒了!'

    s1 = SnowNLP(text1)

    s2 = SnowNLP(text2)

    print(s1.sentiments,s2.sentiments)

    a923fe7bc2927af5294dc7fda20f2d7d.png

    一样,咱们对他进行一个定义,大于0.5的咱们认为是积极,小于0.5的咱们认为是消极。

    def snow_result(comment):

    s = SnowNLP(comment)

    if s.sentiments >= 0.5:

    return 1

    else:

    return 0

    data['snlp_result'] = data.comment.apply(snoe_result)

    data.head()

    e24478baf41af771c4172bfae65ff485.png

    效果不咋地哇,但可能只是这5个效果很差,总体来看也许还行,就算下他的准确度吧~

    counts = 0

    for i in range(len(data)):

    if data.iloc[i,2] == data.iloc[i,3]:

    counts+=1

    print(counts/len(data))

    3b9c4dbfb50710009d16799b7a98fb1d.png

    效果确实不咋地,还有就是这个库是通用的,一些有针对性的词可能都不能识别,好比香精,可能认为“香”的积极性会比较高。

    朴素贝叶斯

    以前用的是snownlp库,没有针对性,咱们能够训练本身的模型,这里咱们使用sklearn实现朴素贝叶斯模型。

    分词

    使用jieba分词对评论数据进行分词。

    import jieba

    def chinese_word_cut(mytext):

    return "/".join(jieba.cut(mytext))

    data['cut_comment'] = data.comment.apply(chinese_word_cut)

    data.head()

    d6cc35e74972f304542d4551457be5e4.png

    划分数据集

    先学习下sklearn的划分数据集的基本用法

    基本用法

    from sklearn.model_selection import train_test_split

    X_train, X_test, y_train, y_test = train_test_split(train_data,train_target,test_size=0.2, random_state=22)

    train_data:样本特征集

    train_target:样本标签集

    test_size:样本占比,测试集占数据集的比重

    random_state:是随机数的种子。在同一份数据集上,相同的种子产生相同的结果,不一样的种子产生不一样的划分结。其实就是保证每次的随机数是同样的,否则每次实验随机出来的结果不一样。作一个实验写同样就行。

    X_train,y_train:构成了训练集

    X_test,y_test:构成了测试集

    X = data['cut_comment']

    y = data.sentiment

    from sklearn.model_selection import train_test_split

    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=19113122)

    词向量

    天然语言处理第一步就是词向量特征的提取。

    语言的特征提取在sklearn模块中有至关完善的方法和模块,而针对中文其实也能够同分词软件作分词而后再按照英文文本的思路开展特征提取。

    这里就用到sklearn的CountVectorize

    几个关键的参数

    参数

    做用

    token_pattern

    过滤规则,表示token的正则表达式,通常用来过滤数字和标点符号

    max_df

    能够设置为范围在[0.0 1.0]的float,也能够设置为没有范围限制的int,默认为1.0。若是这个参数是float,则表示词出现的次数与语料库文档数的百分比,若是是int,则表示词出现的次数。

    min_df

    同max_df

    stop_words

    设置停用词,若是是英文使用内置的英语停用词,设为list可以使用自定义停用词,设为None不使用停用词,设为None且max_df∈[0.7, 1.0)将自动根据当前的语料库创建停用词表

    设置中止词表

    若是使用自定义的中止词表,须要转换成list的形式

    from sklearn.feature_extraction.text import CountVectorizer

    def get_custom_stopwords(stop_words_file):

    with open(stop_words_file) as f:

    stopwords = f.read()

    stopwords_list = stopwords.split('\n')

    custom_stopwords_list = [i for i in stopwords_list]

    return custom_stopwords_list

    stop_words_file = r'C:\Users\xuxiaojielucky_i\Desktop\停用词表.txt'

    stopwords = get_custom_stopwords(stop_words_file)

    stopwords

    d08469b08c71faafa05720cbb7dad81a.png

    Vectorizer = CountVectorizer(max_df = 0.8,

    min_df = 3,

    token_pattern = u'(?u)\\b[^\\d\\W]\\w+\\b',

    stop_words =frozenset(stopwords) )

    u或者U:表示unicode字符串 ,通常英文字符在使用各类编码下, 基本均可以正常解析, 因此通常不带u;可是中文, 必须代表所需编码, 不然一旦编码转换就会出现乱码。

    '(?u)\\b[^\\d\\W]\\w+\\b'

    其实就是

    '(?u)\b[^\d\W]\w+\b' #\是显示出来的字符串是用r的模式解读出来,自动带了转义

    “(?u)“放在前面的意思是匹配中对大小写不敏感

    ”\b"和末尾的”\b"表示定位符规定匹配模式必须出如今目标字符串的开头或结尾的两个边界之一

    CountVectorizer是经过fit_transform函数将文本中的词语转换为词频矩阵,矩阵元素a[i][j] 表示j词在第i个文本下的词频。即各个词语出现的次数,经过get_feature_names()可看到全部文本的关键字,经过toarray()可看到词频矩阵的结果。

    test = pd.DataFrame(Vectorizer.fit_transform(X_train).toarray(),

    columns=Vectorizer.get_feature_names())

    test.head()

    4445711f198424b35ee84070c7cb240d.png

    训练模型

    from sklearn.naive_bayes import MultinomialNB

    nb = MultinomialNB()

    X_train_vect = Vectorizer.fit_transform(X_train)

    nb.fit(X_train_vect, y_train)

    train_score = nb.score(X_train_vect, y_train)

    print(train_score)

    d1dcc06062af6c5c72a6a6b7b042e957.png

    训练过的模型明显好多了

    测试数据

    X_test_vect = Vectorizer.transform(X_test)

    print(nb.score(X_test_vect, y_test))

    46b4a2947554265745ee0798660e6671.png

    X_vec = Vectorizer.transform(X)

    nb_result = nb.predict(X_vec)

    data['nb_result'] = nb_result

    01675e97fdc4098322ffe058bcbb0b42.png

    展开全文
  • 深度学习,中文情感分析python程序,包含中文酒店用户评论语料数据。
  • 中文情感分析python程序,基于python情感分析案例,Python源码.rar
  • SnowNLP是国人开发的python类库,可以方便的处理中文文本内容,是受到了TextBlob的启发而写的,由于现在大部分的自然语言处理库基本都是针对英文的,于是写了一个方便处理中文的类库,并且和TextBlob不同的是,这里...
  • 中文ULMFiT 情感分析 文本分类
  • python实现中文情感分析与可视化

    千次阅读 多人点赞 2021-07-16 16:57:15
    目录 一、导入原始数据 二、结巴分词/绘制词云图 三、计算情感值,情感分析 # 方法一、SnowNLP计算情感得分 # 方法二、使用字典计算情感得分 四、# 数据可视化展示 五、绘制相关系数热力图 一、导入原始数据 #导入...
  • 中文情感分析python程序,基于python情感分析案例,Python源码.zip.zip
  • Python:snownlp中文文本情感分析

    千次阅读 2021-06-19 17:34:38
    hello,大家好,我是wangzirui32,今天来教大家如何使用snownlp的中文文本情感分析功能,开始学习吧! 1. pip 安装 命令: pip install snownlp -i https://pypi.douban.com/simple 因为下载速度很慢,所以使用国内...
  • 一、 使用微博应用获取微博文本,代码地址 二、 SVM初步分类(svm_temp.py) 三、 利用贝叶斯定理进行情感分析 四、 利用AdaBoost加强分类器
  • 基于Python情感分析项目--《流浪地球》
  • 重复值处理重复数据对文本分析和建模没有帮助。#删除重复记录()文本内容清理文本中的表达符号和特殊字符通常对文本分析影响不大。通过常规匹配删除文本中指定的字符。清洁前#清理文字内容,特殊符号使用正则表达式...
  • 人工智能-项目实践-情感分析-利用Python实现酒店评论的中文情感分析 情感极性分析,即情感分类,对带有主观情感色彩的文本进行分析、归纳。情感极性分析主要有两种分类方法:基于情感知识的方法和基于机器学习的...
  • 本文采用机器学习方法实现对酒店评论数据的情感分类,利用Python语言实现情感分类模型的构建和预测,不包含理论部分,旨在通过实践一步步了解、实现中文情感极性分析。 详细介绍参考:...
  • python中文文本情感分析

    千次阅读 2021-03-07 14:34:34
    要做一个项目要用到中文文本情感分析,查找了多种资料,在网上看了很多博客后,终于完成,对自己帮助最大的两篇博客为【python机器学习】中文情感分析和 [Python开发 之 Sklearn的模型 和 CountVectorizer 、...
  • python实现文本情感分析

    千次阅读 2020-11-23 15:19:04
    注:本文转载自知乎专栏情感分析就是分析一句话说得是很主观还是客观描述,分析这句话表达的是积极的情绪还是消极的情绪。原理比如这么一句话:“这手机的画面极好,操作也比较流畅。不过拍照真的太烂了!系统也不好...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,332
精华内容 2,932
关键字:

python中文情感分析