自然语言00

自然语言001 自然语言 思考和交流的工具 自然而然随文化演化的语言 2 编程语言 计算机程序设计语言 3 自然语言处理 NLP 主要探讨问题 如何让计算机理解人类语言 NaturalLangu NLU

大家好,欢迎来到IT知识分享网。

1、自然语言?  思考和交流的工具,自然而然随文化演化的语言

2、编程语言?  计算机程序设计语言

3、自然语言处理(NLP)主要探讨问题:

如何让计算机理解人类语言(Natural Language Understanding,NLU)

如何让计算机自动“生成”语言( Natural Language Generation,NLG)

  1. NLP的处理流程

计算机处理自然语言的过程具有“四化”:

(1)形式化:把需要研究的问题在语言上建立形式化模型,使其以数学形式严密规整地表示出来,这个过程就是“形式化”。

(2)算法化:把数学模型表示为算法的过程称为“算法化”。

(3)程序化:根据算法建立自然语言处理系统,这个过程就是“程序化”。

(4)实用化:对系统进行评测和改进最终满足现实需求,这个过程就是“实用化”。

自然语言00

自然语言00

  1. 机器学习算法
  2. 语料库

经过科学取样和加工的大规模电子文本库,具有如下四种类型。

(1)异质(Heterogeneous):没有特定的语料收集原则,存储各种语料。

(2)同质(Homogeneous):只收集同一类内容的语料。

(3)系统(Systematic):根据预先确定的原则和比例收集语料,使语料具有平衡性和系统性,能够代表某一范围内的语言事实。

(4)专用(Specialized):只收集用于某一特定用途的语料。

语料库特点:(1)语料库中存放的是在语言的实际使用中真实出现过的语言材料。

(2)语料库以电子计算机为载体承载语言知识的基础资源,但并不等于语言知识。

(3)真实语料需要经过加工(分析和处理),才能成为有用的资源。

语料库种类:语料库的划分一直是标准各异,其中,冯志伟教授的语料库划分比较有影响力且在学术界认可度较高。其划分类型如下。

(1)按语料选取的时间划分,可分为历时语料库和共时语料库。

(2)按语料的加工深度划分,可分为标注语料库和非标注语料库。

(3)按语料库的用途划分,可分为通用语料库和专用语料库。

(4)按语料库的表达形式划分,可分为口语语料库和文本语料库。

语料库的构建原则(1)代表性:在应用领域中,通过在一定的抽样框架范围内采集,并且能在特定的抽样框架内做到代表性和普遍性。

(2)结构性:语料集合的结构性体现在语料库中语料记录的代码、元数据项、数据类型、数据宽度、取值范围、完整性约束。

(3)规模性:语料库规模应根据实际情况而定。大规模的语料对语言研究特别是对自然语言研究处理很有用,但是随着语料库的增大,垃圾语料越来越多,语料达到一定规模以后,语料库功能不能随之增长。

7、Python语言特点

简洁。Python代码的行数往往只有C、C++、Java代码数量的1/5~1/3

语法优美。Python语言是高级语言,它的代码接近人类语言,只要掌握由英语单词表示的助记符,就能大致读懂Python代码

简单易学。Python是一门简单易学的编程语言,它使编程人员更注重解决问题,而非语言本身的语法和结构

开源。Python是FLOSS(自由/开放源码软件)之一,用户可以自由地下载、拷贝、阅读、修改代码

可移植。Python语言编写的程序可以不加修改地在任何平台中运行。

扩展性良好。Python不仅可以引入.py文件,还可以通过接口和库函数调用由其它高级语言(如C语言、C++、Java等)编写的代码

类库丰富。世界各地的程序员通过开源社区又贡献了十几万个几乎覆盖各个应用领域的第三方函数库

通用灵活。Python是一门通用编程语言,可被用于科学计算、数据处理、游戏开发、人工智能、机器学习等各个领域

模式多样。Python既支持面向对象编程,又支持面向过程编程

良好的中文支持。Python 3.x解释器采用UTF-8编码表达所有字符信息,编码支持英文、中文、韩文、法文等各类语言

执行效率不够高,Python程序的效率只有C语言程序的1/10。

Python 3.x和Python 2.x不兼容。

8、Python编辑器PyCharm、Jupyter Notebook、anaconda等

9、模块安装与使用

使用pip在命令行中安装第三方模块的命令为:pip install 模块名。import 模块1,模块2,…

from…import…;from … import *

模块导入后,可通过点字符“.”调用模块中的内容,其语法格式如下:模块.函数;模块.变量

  1. 代码格式

单行注释以“#”开头,用于说明当前行或之后代码的功能。单行注释既可以单独占一行,也可以位于标识的代码之后,与标识的代码共占一行。

多行注释是由三对双引号或单引号包裹的语句,主要用于说明函数或类的功能。

Python代码的缩进可以通过Tab键控制,也可使用空格控制。空格是Python3 首选的缩进方法,一般使用4个表示一级缩进;Python3不允许混合使用Tab和空格。

11、标识符命名

标示符由字母、下划线和数字组成,且数字不能开头。

Python中的标识符是区分大小写的。例如,andy和Andy是不同的标识符。

Python中的标识符不能使用关键字 。

12、数据类型

可变数据类型:当该数据类型对应的变量的值发生了变化时,如果它对应的内存地址不发生改变,那么这个数据类型就是 可变数据类型。

不可变数据类型:当该数据类型对应的变量的值发生了变化时,如果它对应的内存地址发生了改变,那么这个数据类型就是 不可变数据类型。

不可变数据类型:数字类型(int、float、complex)、string(字符串)、tuple(元组)

可变数据类型:list(列表)、dict(字典)

自然语言00

13、变量的输入输出

input([prompt])

prompt表示函数的参数,用于设置接收用户输入时的提示信息。

print(*objects, sep=’ ‘, end=’\n’, file=sys.stdout)

objects:表示输出的对象。输出多个对象时,对象之间需要用分隔符分隔。

sep:用于设定分隔符,默认使用空格作为分隔。

end:用于设定输出以什么结尾,默认值为换行符\n。

file:表示数据输出的文件对象。

14、数字类型

整数类型(int)简称整型,它用于表示整数。整型常用的计数方式有4种,分别是二进制(以“0B”或“0b”开头)、八进制(以数字“0o”或“0O”开头)、十进制和十六进制(以“0x”或“0X”开头)。

自然语言00

浮点型(float)用于表示实数,由整数和小数部分(可以是0)组成例如,较大或较小的浮点数可以使用科学计算法表示:

a×10n (1≤|a|<10,n∈N)

Python程序中省略“×”,使用字母e或E代表底数10,示例如下:

-3.14e2 # 即-314

3.14e-3 # 即0.00314

复数由实部和虚部构成,它的一般形式为:real+imagj,其中real为实部,imag为虚部,j为虚部单位。示例如下:

complex_one = 1 + 2j # 实部为1,虚部为2

complex_two = 2j # 实部为0,虚部为2

自然语言00

15、运算符

自然语言00

Python中的算术运算符既支持对相同类型的数值进行运算,也支持对不同类型的数值进行混合运算。在混合运算时,Python会强制将数值的类型进行临时类型转换,这些转换遵循如下原则:

整型与浮点型进行混合运算时,将整型转化为浮点型。

其他类型与复数运算时,将其他类型转换为复数类型。

复合赋值运算符

自然语言00

比较运算符

自然语言00

逻辑运算符

自然语言00

成员运算符

in:如果指定元素在序列中返回True,否则返回False。

not in:如果指定元素不在序列中返回True,否则返回False。

流程控制

if 条件表达式:   代码块  #尽量不要用括号

if 判断条件:  代码块1  else:   代码段2

if 判断条件1:  代码段1   elif 判断条件2:  代码段2  …  else:   代码段n

while 条件表达式:  代码块

for 临时变量 in 目标对象:   代码块

for语句一般用于实现遍历循环。遍历指逐一访问目标对象中的数据,例如逐个访问字符串中的字符;遍历循环指在循环中完成对目标对象的遍历

break语句用于结束循环,若循环中使用了break语句,程序执行到break语句时会结束循环;若循环嵌套使用了break语句,程序执行到break语句时会结束本层循环。

continue语句用于在满足条件的情况下跳出本次循环,该语句通常也与if语句配合使用。

字符串

Python支持使用单引号、双引号和三引号定义字符串,其中单引号和双引号通常用于定义单行字符串,三引号通常用于定义多行字符串。

Python使用反斜杠“\”转义。例如,在字符串中的引号前添加“\”,此时Python解释器会将“\”之后的引号视为解释为一个普通字符,而非特殊符号。

自然语言00

格式化字符串:通过%格式符格式化输出: format % values

自然语言00

格式化方法format(): str.format(values)

f-string: f(‘{变量名}’)   或   F(‘{变量名}’)

字符串常见操作

str.find(sub[start, end])

str.replace(old, new, count)

str.split(sep=None, maxsplit=-1)

str.join(iterable)       + 的方式

自然语言00

自然语言00

自然语言00

组合数据类型

Python中常用的序列类型有字符串、列表和元组。

Python中的序列支持双向索引:正向递增索引和反向递减索引正向递增索引从左向右依次递增,第一个元素的索引为0,第二个元素的索引为1,以此类推;反向递减索引从右向左依次递减,从右数第一个元素的索引为-1,第二个元素的索引为-2,以此类推。

自然语言00

列表

list_one = []        # 使用[]创建空列表;li_two = list()        # 使用list()创建空列表

访问:索引或切片;向列表中添加元素:append()、extend()和insert() 。;列表元素的排序:sort()、reverse()、sorted()。;删除列表元素:del语句、remove()方法、pop()方法和clear()方法。;列表推导式:[exp for x in list]

元组

t1 = ()         # 使用()构建元组;t2 = tuple()   # 使用tuple构建元组;t2 = (‘python’ ,   )

访问:元组支持以索引和切片方式访问元组的元素,也支持在循环中遍历元组

集合

Python集合具备确定性、互异性和无序性三个特性。Python要求放入集合中的元素必须是不可变类型,Python中的整型、浮点型、字符串类型和元组属于不可变类型,列表、字典及集合本身都属于可变的数据类型。

自然语言00

集合推导式{exp for x in set if cond}

字典

d1 = {‘A’: 123, 12: ‘python’}        # 使用{}构建集合

d2 = dict({‘A’: ‘123’, ‘B’: ‘135’})  # 使用dict构建元组

字典元素无序,键值必须唯一

字典的值可通过“键”或内置方法get()访问。

字典涉及的数据分为键、值和元素(键值对),除了直接利用键访问值外,Python还提供了内置方法keys()、values()和items()。

字典支持通过为指定的键赋值或使用update()方法添加或修改元素。

Python支持通过pop()、popitem()和clear()方法删除字典中的元素。

字典推导式:{new_key:new_value for key,value in dict.items()}

函数式编程具有以下优点:

将程序模块化,既减少了冗余代码,又让程序结构更为清晰

提高开发人员的编程效率

方便后期的维护与扩展

自然语言00

函数

函数参数的传递:位置参数传递、关键字参数传递、默认参数传递、参数的打包与解包以及混合传递。

优先按位置参数传递的方式。然后按关键字参数传递的方式。之后按默认参数传递的方式。最后按打包传递的方式。

变量:

局部变量、全局变量以及他们的作用范围。global关键字可以将局部变量声明为全局变量;nonlocal关键字可以在局部作用域中修改嵌套作用域中定义的变量

递归函数

解题思路:寻找每一步和前一步、前两步….的关系;寻找边界条件;套格式

def函数名([参数列表]):if 边界条件:rerun 结果else:return 递归公式

匿名函数

lambda <形式参数列表> :<表达式>

匿名函数与普通函数的主要区别如下:普通函数在定义时有名称,而匿名函数没有名称;普通函数的函数体中包含有多条语句,而匿名函数的函数体只能是一个表达式;普通函数可以实现比较复杂的功能,而匿名函数可实现的功能比较简单;普通函数能被其他程序使用,而匿名函数不能被其他程序使用。

科学计算

科学计算(scientific computing)是指在科学与工程领域,使用计算机数学建模和数值分析技术分析和解决问题的过程。科学计算属于计算机科学、数学、问题领域的交叉学科。

自然语言00

数据分析相关库

(1)NumPy(Numerical Python)作为Python科学计算最核心的扩展库,将Python转变为强大的科学分析和建模工具。

(2)Matplotlib用于数据可视化,可以绘制线性图、直方图、散点图等各种图。

(3)Scipy在优化、非线性方程求解、常微分方程等方面应用广泛。

(4)Pandas 用于数据清洗,对噪音等数据进行处理,从而便于机器学习和数据分析。

Sklearn

Scikit-learn(sklearn)是机器学习中常用的第三方模块,对常用的机器学习方法进行了封装,具有分类、回归、聚类、降维、模型选择、预处理六大模块,如下所示:

(1)分类:识别某个对象属于哪个类别,常用的算法有:SVM(支持向量机)、KNN(最近邻)、random forest(随机森林)。

(2)回归:预测与对象相关联的连续值属性,常见的算法有:SVR(支持向量机)、 ridge regression(岭回归)。

(3)聚类:将相似对象自动分组,常用的算法有:spectral clustering、K-means。

(4)降维:减少要考虑的随机变量的数量,常见的算法有:PCA(主成分分析)、feature selection(特征选择)。

(5)模型选择:用于比较、验证、选择参数和模型,常用的模块有:grid search(网格搜索)、cross validation(交叉验证)、 metrics(度量)。

(6)预处理:特征提取和归一化,常用的模块有preprocessing和feature extraction。

Sklearn生成数据集

自然语言00

Sklearn机器学习流程:语料清洗;划分数据集;特征工程;选择机器算法;模型评估

NLTK:NLTK被称为“使用Python进行教学和计算语言学工作的绝佳工具”,以及“用自然语言进行游戏的神奇图书馆”。

NLTK 常见语料库有如下:(1)古腾堡语料库 (gutenberg)(2)网络聊天语料库(webtext、nps_chat)(3)布朗语料库(brown)(4)路透社语料库(reuters)(5)就职演讲语料库(inaugural)

NLTK常见命令

nltk.sent_tokenize()对文本按照句子进行分割;nltk.word_tokenize()将句子按照单词进行分割返回一个列表,表示每个句子为单位的分词结果。;nltk.corpus.stopwords模块,查看英文中的停用词表;from nltk.stem import PorterStemmer 词干提取;from nltk.stem import WordNetLemmatizer 词干还原;NLTK提供WordNet进行定义同义词、反义词等词汇数据库的集合;WordNet.wup_similarity()方法,语义相关性计算

语料清洗

由于原始文本含有“脏”数据,无法直接用来训练模型,会严重干扰数据分析的结果,因此需要进行清洗,保留有用的数据。“脏”数据是指缺失值、异常值、离群点等数据。语料清洗用于纠正语料数据中不一致的内容,通常会占据数据分析50%~80%的工作量。经过数据清洗的数据,应该满足以下特点。

(1)所有值都是数字。机器学习算法的所有数据都是数字,需要将非数字值(在类别或文本列中的内容)需要替换为数字标识符。

(2)标识并清除无效值记录。无效值无法反映实际问题。

(3)识别并消除无关类别。所有记录都需要使用一致类别。

清洗策略:一致性检查;格式内容检查;逻辑检查

缺失值

采集数据时,由于各种因素导致部分样本的数据特性缺失。缺失值通常以空白,NaN或其他占位符编码。缺失值处理一般采用如下方法:删除法和数据填充。

删除法:如果某个属性的缺失值过多,可以直接删除整个属性。

数据填充:对属性缺失的样本采用其他值,如前后值、中位数、均值进行替代。

Pandas: df.fillna()、df.dropna()

sklearn中 imputer 类或SimpleImputer类:from sklearn.preprocessing import Imputer、  from sklearn.impute import SimpleImputer

异常值“异常数据”又称为离群点或噪声数据,具有与其他数据的显著不同。

 通常检测方法如下所示:1)散点图方法2)箱线图方法3)3σ方法

重复值

numpy的unique函数

Pandas中的相关方法:duplicated() 用于判断重复数据记录;drop_duplicates() 用于删除重复记录

数据转换

自然语言00

Missingno:Missingno库用于实现缺失数据可视化,可以快速直观地分析数据集的完整性。

msno.matrix(data, labels=True);msno.bar(data);msno.heatmap(data);msno.dendrogram(data)

WordCloud

词云(word_cloud),也叫做文字云,是对文本中出现频率较高的关键词给予视觉上的突出,直观和艺术的展示文本中词语的重要性,使得读者一眼便能领略文本的主旨。

from wordcloud import WordCloud;text =”dog cat fish cat cat cat cat cat cat dog dog dog”;wc = WordCloud()

wc.generate(text);wc.to_file(“d:/2.png”)

特征工程

特征工程是指通过规范化、标准化、鲁棒化和正则化等方法将数据转换成符合要求的数据。

特征预处理就是通过对特征进行集成、转换、规约等处理,主要包括:归一化、标准化、鲁棒化和正则化等方法。

归一化:X’ = (x-min)/(max-min);标准化:Z = (x-μ)/标准差

One-Hot

词向量是把词语转换成向量矩阵的计算模型,是自然语言处理中的一组语言建模和特征学习技术的统称。最常用的词向量方法是独热编码。

独热编码把文本转换为数值,也称One-Hot编码,又称为一位有效编码。

文本中的n个单词构成n个词向量,单词所在位置为k,则词向量为:第k位为1,其他位置为0.

one-hot编码保证了每一个取值只会使得一种状态处于“激活态”,也就是说这N种状态中只有一个状态位值为1,其他状态位都是0。

独热编码具有操作简单,容易理解的优势。但是,独热编码完全割裂了词与词之间的联系,而且在大语料集下,每个向量的长度过大,占据大量内存。

pandas.get_dummies(data, sparse=False);from sklearn.preprocessing import  OneHotEncoder

特征提取

数据往往具有不同的数据类型,如数值型、字符型、布尔型等。但是,机器学习模型只接收数值型和布尔型,需要特征提取进行转化。特征提取又称为特征抽取,是将任意数据(字典、文本或图像)转换为可用于机器学习的数字特征。

自然语言00

步骤1:计算TF 

自然语言00

步骤2:计算IDF

自然语言00

步骤3:计算TF-IDF  tf-idf算法=tf算法 * idf算法。

常见中文分词方法

基于规则和词表的方法:正向最大匹配、逆向最大匹配

基于统计模型的中文分词方法:(1)基于隐马尔可夫模型(2)基于最大熵模型(3)基于条件随机场模型(4)基于词网格分词;基于理解的方法

Jieba

jieba.cut(“我来到北京清华大学”,cut_all=False)     精确模式,试图将句子最精确地切开,适合文本分析

jieba.cut(“我来到北京清华大学”,cut_all=True);全模式,把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义;

ieba.cut_for_search(“我来到北京清华大学”);搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。

自定义词典

方式1:词典文件,   jieba.load_userdict(file_name)      文件格式UTF-8

方式2:动态修改词频,jieba.suggest_freq(segment, tune=True);jieba.posseg.cut ()   #词性标注;jieba.Tokenizer( )  #断词位置;jieba.analyse.extract_tags(lines, topK=20, withWeight=True, allowPOS=())  #基于TF-IDF关键词抽取

朴素贝叶斯

 朴素贝叶斯模型或朴素贝叶斯分类器(Naive Bayes Classifier ,简称NBC)发源于古典数学理论,是基于贝叶斯理论与特征条件独立假设的分类方法 ,通过单独考量每一特征被分类的条件概率,做出分类预测。

sklearn.naive_bayes模块具有3种贝叶斯分类方法,分别是GaussianNB、MultinomialNB和BernoulliNB。其中,GaussianNB是高斯分布的朴素贝叶斯。MultinomialNB是多项式分布的朴素贝叶斯。BernoulliNB是伯努利分布的朴素贝叶斯。(1)GaussianNB适合样本特征是正态分布的数值情况。(2)MultinomialNB适合非负离散数值特征的分类情况。(3)BernoulliNB适合二元离散值或者很稀疏的多元离散值情况。

支持向量机

支持向量机(Support Vector Machine,缩写 SVM)的基本思想是在N维数据找到N-1维的超平面(hyperplane)作为分类的决策边界。确定超平面的规则是找到离超平面最近的那些点,使它们离分隔超平面的距离尽可能远。离超平面最近的实心圆和空心圆称为支持向量(support vector),其超平面的距离之和称为“间隔距离”,“间隔距离”越大,分类的准确率越高。Sklearn.svm. SVC(kernel)

kernel取值有RBF(Radial Basis Function), Linear, Poly等核函数,默认取值是”RBF”,即径向基核(高斯核函数),Linear是线性核函数,Poly是多项式核函数。

监督学习和无监督学习

无监督学习又称为非监督学习,着重于发现数据本身的分布特点,是在没有训练数据集的情况下,对没有标签的数据进行分析并建立合适的模型,以便给出问题解决方案的方法。与监督学习不同,无监督学习不需要对数据进行标记,没有目标,因此无法从事预测任务,而适合对数据进行分析。

文本聚类(Text  clustering)是将文档由原有的自然语言文字信息转化成数学信息,以高维空间点的形式展现出来,通过计算哪些点距离比较近,从而将那些点聚成一个簇,簇的中心叫做簇心。一个好的聚类要保证簇内点的距离尽量的近,但簇与簇之间的点要尽量的远。

步骤1:语料清洗。步骤2:特征工程。步骤3:分词处理。步骤4:  选择聚类算法。步骤5:聚类评估。

k均值聚类算法(k-means clustering algorithm)是通过样本之间的距离,把相似度高的样本聚成一簇(簇相似元素的集合),最后形成多个簇,将样本划分到不同的类别。

主成分分析

在多变量的问题中,变量之间往往存在信息重叠,通过正交变换将一组可能存在相关性的变量转换为一组线性不相关的变量,转换后的变量称为主成分。

多个特征中保留主成分特征,删除次要特征,保存信息不会太大损失。

Sklearn . decomposition.PCA (n_components=n)

取值为小数,表示保留百分之多少的信息。取值为整数,则表示减少到多少特征。

评价指标

混淆矩阵;准确率;精确率;召回率;F1 score;ROC曲线; AUC面积;分类评估报告

自然语言00

公式与意义

自然语言00

pandas.crosstab(index, columns, value=None)

sklearn.metrics.confusion_matrix(y_true, y_pred, labels)

sklearn.metrics.accuracy_score(y_true, y_pred, normalize)

sklearn.metrics.precision_score(y_true, y_pred)

 sklearn.metrics.recall_score(y_true, y_pred,average)

sklearn.metrics.roc_curve(y_true,y_score)

sklearn.metrics. classification_report()

中文分词精准率和召回率

自然语言00

登录词召回率

自然语言00

未登录词召回率

自然语言00

信息抽取(Information Extraction,简称IE)是指从自然语言文本中,抽取出特定的事件或事实信息,将海量内容自动分类、提取和重构。这些信息通常包括实体(entity)、关系(relation)、事件(event)。

信息熵是系统中信息含量的量化指标,越不确定的事物,其信息熵越大。信息熵公式如下所示:

自然语言00

P(x)表示事件x出现的概率;P=0 or 1,H=0,即随机变量是完全确定的;P=0.5 ,H=1, 不确定性最大

信息熵的三条性质

单调性:发生概率越高事件,信息熵越低。例如,“太阳从东方升起”是确定事件,没有消除任何不确定性,所以不携带任何信息量。

非负性:信息熵不能为负。

累加性:多个事件发生总的信息熵等于各个事件的信息熵之和。

互信息是指两个离散型随机变量X和Y相关程度的度量。

正则表达式,又称规则表达式、常规表示法,(英语:Regular Expression,在代码中常简写为regex、regexp或RE)。正则表达式是指通过事先定义好的特定字符(“元字符”)组成的“规则字符串”,对字符串进行过滤逻辑。凡是符合规则的字符串,认为“匹配”,否则,不“匹配”。通常被用来检索、替换那些符合某个模式(规则)的文本。(熟悉常见元字符)

Re模块

自然语言00

NLTK命名实体识别

命名实体(named entity,缩写NE)就是人名、机构名、地名以及其他所有以名称为标识的实体,命名实体类别一般根据问题而定,常见有机构名、人名、地名等,也可以有时间、日期、数量短语等。命名实体的任务一般包括如下三个子任务:1、实体名(Entity Name),包括人名、地名、机构名2、时间表达式(Temporal Expressions),包括日期、时间和持续时间3、数字表达式(Number Expressions),包括钱、度量衡、百分比以及基数

步骤1:使用句子分隔器将文档分隔成句,采用nltk.sent_tokenize(text)实现。步骤2:使用分词器将句子分隔成词,采用nltk.word_tokenize(sent)实现。步骤3:标记词性,采用nltk.pos_tag(sent)实现。步骤4:实体识别,得到一个树的列表。步骤5:关系识别,寻找实体之间的关系,得到一个元组列表。

情感分析

情感分析的主要内容包括:主客观分类、情感分类、情感极性判断等。

主客观性文本:指用户对某一件事件、产品、事物的观点和看法,情感分析的对象是主观性文本,文本的主客观分类是情感分析的基础性工作。

情感分类:指将一段文本、句子、词语分为喜、怒、哀、乐等类别。

情感极性判断:指分析一段文章的总体态度是肯定还是否定,褒义或贬义。

情感分析常用方法有3种。基于情感词典的方法。基于文本分类的方法。基于LDA模型的方法。

基于情感词典的情感分析流程如下。

对文本进行分词和去停用词,去除跟情感词无关的词语。

对分词结果进行分类,找出其中的情感词、程度副词和否定词。

计算情感词的得分,得分函数如式所示。

自然语言00

其中w为权重,默认为1,s(i) 为情感词得分,p(i) 为情感词对应的程度副词和否定词的乘积,程度副词和否定词默认为1。

于文本分类是采用标注好情感类别的文本进行训练,获得情感分类器,最后对情感分类器进行测试,输出结果为多个概率值,选择概率最高的情感倾向为分类结果。

基于文本分类的情感分析流程如下。

特征提取:就是分类对象所展现的部分特点,是实现分类的依据。

文本转化为特征向量:机器学习无法直接将中文文本作为输入数据,在进行分类算法时,需要进行转换。

划分训练集与测试集:训练集用于训练文本,测试集用于测试分类算法的效果。

构建分类器:构建分类器是运用机器学习的算法训练数据集,得出分类器。

验证分类器:使用测试数据集对分类器进行测试,通过比对测试结果,获得测试数据的准确率,分析测试结果,给出改进建议。

基于LDA的情感分析

基于LDA(潜在类利克雷分布)主题模型情感分析主要是通过挖掘用户评论所蕴含的主题,以及用户对这些主题的情感偏好,从而提高文本情感分析的性能。

基于主题模型的情感分析流程如下。评论信息采集与预处理(如网页爬取、中文分词、停用词处理等)。主题抽取、情感词抽取(可能涉及到情感词典构建)。主题的情感分类或评分。主题情感摘要生成(方便用户直接了解主题)。系统评测。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/133857.html

(0)
上一篇 2025-07-17 14:15
下一篇 2025-07-17 14:20

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信