pos机语言切换,中文语言处理的必备工具

 新闻资讯2  |   2023-05-28 12:34  |  投稿人:pos机之家

网上有很多关于pos机语言切换,中文语言处理的必备工具的知识,也有很多人为大家解答关于pos机语言切换的问题,今天pos机之家(www.poszjia.com)为大家整理了关于这方面的知识,让我们一起来看下吧!

本文目录一览:

1、pos机语言切换

pos机语言切换

我是@老K玩代码,专注分享实战项目和最新行业资讯,已累计分享超1000实战项目!

前言

自然语言处理是当下人工智能最热的几个方向之一,很多致力于人工智能的小伙伴都选择自然语言处理作为自己的研究方向。但对于中文nlp工作来说,由于汉语和英语语法构造上的不同,国际上通用的几个基础的nlp库在汉语处理上的表现并不出众,而SnowNLP就给中文自然语言处理的研究者一个不一样的选择。

SnowNLP是一个基于Python写就的工具库,能相当方便处理好中文的文本内容。 SnowNLP的技术框架参考了英语自然语言处理工具库TextBlob,不过SnowNLP不引用NLTK库,所有的算法都是isnowfy大神实现的。

接下来就跟随我一步一步了解这个库吧!

安装

打开cmd,通过pip命令安装snownlp工具,具体代码如下:

pip install snownlp导入库

通过from...import...语句,把SnowNLP类从snownlp导入到项目中来,具体代码如下:

from snownlp import SnowNLP中文分词

通过Character-Based Generatvie Model模型实现中文分词的功能,模型的具体内容可以参考论文《Which is More Suitable for Chinese Word Segmentation,the Generative Model or the Discriminative One? 》,具体代码如下:

s = SnowNLP(u'SnowNLP类似NLTK,是针对中文处理的一个Python工具库。')words = s.wordsprint(words)

打印结果:

['SnowNLP', '类似', 'NLTK,', '是', '针对', '中文', '处理', '的', '一个', 'Python', '工具', '库', '。']词性标注

采用隐马尔科夫模型实现词性标注的功能,使用TnT和3-gram,具体可以参考论文《TnT -- A Statistical Part-of-Speech Tagger》,具体代码如下:

s = SnowNLP(u'SnowNLP类似NLTK,是针对中文处理的一个Python工具库。')tags = s.tagsprint(list(tags))

打印结果:

[('SnowNLP', 'Dg'), ('类似', 'v'), ('NLTK,', 'Dg'), ('是', 'v'), ('针对', 'p'), ('中文', 'nz'), ('处理', 'v'), ('的', 'u'), ('一个', 'm'), ('Python', 'q'), ('工具', 'n'), ('库', 'n'), ('。', 'w')]情感分析

使用通用的情感分析模型实现,不过目前的训练集来自在线商城平台的评价,如果需要对特定领域进行情感分析,可以导入数据进行训练,来提高自己情感分析模型在应用场景下的准确性(自主训练参见后续模型训练),具体代码如下:

s = SnowNLP(u'SnowNLP类似NLTK,是针对中文处理的一个Python工具库。')sentiments = s.sentimentsprint(sentiments)

打印结果:

0.8483635366341422

这里表示这段话是积极情绪的概率为84%。一般我们以50%为分界区分积极和消极。

文本分类

通过对源码的阅读,我们可以看到情感分析模型是通过朴素贝叶斯方法实现的。我们可以调用Bayes接口,通过自己的数据进行训练、或加载自己的模型,实现自定义的文本分类功能,具体代码如下:

from snownlp.classification.bayes import Bayescls = Bayes()cls.load(r'需要加载的文件名')c = cls.classify(u'SnowNLP类似NLTK,是针对中文处理的一个Python工具库。')

打印结果:

(1, 0.828933234545427)

这里表示该文本被归到1类的概率为82%

转换成拼音

该功能是通过Trie树实现的最大匹配,具体代码如下:

s = SnowNLP(u'SnowNLP类似NLTK,是针对中文处理的一个Python工具库。')pin = s.pinyinprint(pin)

打印结果:

['SnowNLP', 'lei', 'si', 'NLTK,', 'shi', 'zhen', 'dui', 'zhong', 'wen', 'chu', 'li', 'de', 'yi', 'ge', 'Python', 'gong', 'ju', 'ku', '。']繁体转简体

该功能也是通过Trie树实现的最大匹配,具体代码如下:

s = SnowNLP(u'SnowNLP類似NLTK,是針對中文處理的一個Python工具庫。')han = s.hanprint(han)

打印结果:

SnowNLP类似NLTK,是针对中文处理的一个Python工具库。文本断句

可以通过极简洁的语句实现文本断句的功能,具体代码如下:

paragraph = u'SnowNLP类似NLTK,是针对中文处理的一个Python工具库。使用简单、功能强大。'u'可以实现包括中文分词、词性标注、情感分析等在内的功能。是中文语言处理研究者不可多得的研究工具。'u'工具库参考了TextBlob的文档结构,对新手使用者相当友好...'s = SnowNLP(paragraph)sent = s.sentencesprint(sent)

打印结果:

['SnowNLP类似NLTK', '是针对中文处理的一个Python工具库', '使用简单、功能强大', '可以实现包括中文分词、词性标注、情感分析等在内的功能', '是中文语言处理研究者不可多得的研究工具', '工具库参考了TextBlob的文档结构', '对新手使用者相当友好...']提取文本关键词

通过从google的page-rank模型启发而来的text-rank模型,实现对文本关键词的判断和提取,模型的具体细节可以参考论文《TextRank: Bringing Order into Texts》,具体代码如下:

s = SnowNLP(paragraph)keys = s.keywords(3)print(keys)

打印结果:

['中文', '工具', '标注']

keywords是SnowNLP类下的一个方法,调用时需要输入的可选参数有2个:

limit: 类型为int,默认值为5,表示提取的关键词数量merge: 类型为boolean,默认值为False,表示是否需要把相关的关键词合并起来提取文本摘要

选用的模型为text-rank,详情可参见提取文本关键词,具体代码如下:

s = SnowNLP(paragraph)summ = s.summary(2)print(summ)

打印结果:

['是针对中文处理的一个Python工具库', '可以实现包括中文分词、词性标注、情感分析等在内的功能']

summary是SnowNLP类下的一个方法,调用时需要输入的可选参数有1个:

limit: 类型为int,默认值为5,表示提取的摘要分句数量tf-idf

tf-idf是一个常见的信息检索和数据加权的统计模型工具,是通过词频(TF)和逆文本频率(IDF)的比值来判断字词在文档中的重要性。SnowNLP也提供计算tf-idf的工具。要进行tf-idf计算,以及后文中提到的相似度计算,首先要对语句断句、分词,具体代码如下:

splits = [['SnowNLP', '类似', 'NLTK,', '是', '针对', '中文', '处理', '的', '一个', 'Python', '工具', '库', '。'], ['使用', '简单', '、', '功能', '强大', '。'], ['可以', '实现', '包括', '中文', '分词', '、', '词', '性', '标注', '、', '情感', '分析', '等', '在内', '的', '功能', '。'], ['是', '中文', '语言', '处理', '研究者', '不可', '多', '得', '的', '研究', '工具', '。'], ['工具', '库', '参考', '了', 'TextBlob', '的', '文', '档', '结构', ',', '对', '新手', '使用者', '相当', '友好', '...']]s = SnowNLP(splits)

然后,就可以通过相应的熟悉就能获取到tf和idf的值

tf = s.tfprint(tf)idf = s.idfprint(idf)

打印结果:

[{'SnowNLP': 1, '类似': 1, 'NLTK,': 1, '是': 1, '针对': 1, '中文': 1, '处理': 1, '的': 1, '一个': 1, 'Python': 1, '工具': 1, ...}]{'SnowNLP': 1.0986122886681098, '类似': 1.0986122886681098, 'NLTK,': 1.0986122886681098, '是': 0.33647223662121295, '针对': 1.0986122886681098, '中文': -0.33647223662121295, '处理': 0.33647223662121295, '的': -1.0986122886681098, ...}文本相似度

通过经典检索算法BM25原理,来实现简单的文本相似度的判断和计算。与tf-idf计算要求一样,输入的文本语句需要经过预处理,即断句、分词的形式,详见tf-idf部分,实现代码如下:

s = SnowNLP(splits)sim = s.sim([u'中文', u'语言', u'是', '一个', '研究', '工具', '。'])print(sim)

打印结果:

[-0.334122934736348, -1.4437615292558321, -1.2504480547109145, 0.7841955519453601, -0.30244695426625884]

上述结果表示,“中文语言是一个研究工具。”这句话,与语料中的5个分句的相似度分别为上述结果所展示。

模型训练

该库可以通过训练、导入模型,实现定制化的分词、词性标注、情感分析等功能,详见代码如下:

from snownlp import segseg.train('data.txt')seg.save('seg.marshal')

seg是用以分词的模型,通过train方法,可以传入需要的数据语料进行训练,将训练后的新模型通过save进行保存。save的文件名以及后缀没有要求,但表示了保存的文件路径。用load可以调用保存过的模型。以上逻辑也适用于词性标注和情感分析的部分

from snownlp import tagtag.train('data.txt')tag.save('tag.marshal')

tag是用以词性标注的模型,有着和seg一样的调用方法(train、save、load)以及功能函数(tag和tag_all)

from snownlp import sentimentsentiment.train('neg.txt', 'pos.txt')sentiment.save('sentiment.marshal')

sentiment是用以情感分类的模型,调用train方法需要传入两个文档,分别是表示消极的语料和表示积极的语料。

总结

SnowNLP是一个十分出色的库,并且仍在持续完善中,在完善,自然也就仍有可以优化的地方,老K总结了几点如下:

目前传入文本时需要转码为unicode编码,建议后期可以把转码的部分写进SnowNLP;在处理tf-idf和文本相似度任务时,输入需要分词断句,建议也可以把分词断句的逻辑写进代码;文本分类的功能尚不完善,在完善该功能后,可以优化调用接口,令使用者更便捷的调用和训练;情感分析的训练集较单一,可以扩大范围,提高模型的泛性。 本文是对SnowNLP的分享,github地址请关注后在后台回复关键词索取。

我是@老K玩代码,专注分享实战项目和最新行业资讯,已累计分享超过1000实战项目!

薇信伀从呺 回复/ nlp /,获得相关学习资源

以上就是关于pos机语言切换,中文语言处理的必备工具的知识,后面我们会继续为大家整理关于pos机语言切换的知识,希望能够帮助到大家!

转发请带上网址:http://www.poszjia.com/newsone/59139.html

你可能会喜欢:

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 babsan@163.com 举报,一经查实,本站将立刻删除。