专栏首页AI小白入门初学者|手把手带你学TextBlob

初学者|手把手带你学TextBlob

跟着博主的脚步,每天进步一点点

本文介绍了TextBlob的使用方法,这是一个用Python编写的开源的文本处理库。它可以用来执行很多自然语言处理的任务,比如,词性标注,名词性成分提取,情感分析,文本翻译,等等。

简介

TextBlob是一个用Python编写的开源的文本处理库。它可以用来执行很多自然语言处理的任务,比如,词性标注,名词性成分提取,情感分析,文本翻译,等等。

Github地址:https://github.com/sloria/TextBlob

官方文档:https://textblob.readthedocs.io/en/dev/

实战

1.安装

# 安装:pip install textblob
# 配置国内源安装:pip install textblob  -i  https://pypi.tuna.tsinghua.edu.cn/simple
# 参考:https://textblob.readthedocs.io/en/dev/quickstart.html
from textblob import TextBlob
text = 'I love natural language processing! I am not like fish!'
blob = TextBlob(text)

2.词性标注

blob.tags

[('I', 'PRP'),
 ('love', 'VBP'),
 ('natural', 'JJ'),
 ('language', 'NN'),
 ('processing', 'NN'),
 ('I', 'PRP'),
 ('am', 'VBP'),
 ('not', 'RB'),
 ('like', 'IN'),
 ('fish', 'NN')]

3.短语抽取

np = blob.noun_phrases
for w in np:
    print(w)

natural language processing

4.计算句子情感值

for sentence in blob.sentences:
    print(sentence + '------>' +  str(sentence.sentiment.polarity))

I love natural language processing!------>0.3125
i am not like you!------>0.0

5.Tokenization(把文本切割成句子或者单词)

token = blob.words
for w in token:
    print(w)

I
love
natural
language
processing
I
am
not
like
fish
sentence = blob.sentences
for s in sentence:
    print(s)
I love natural language processing!
I am not like fish!

6.词语变形(Words Inflection)

token = blob.words
for w in token:
    # 变复数
    print(w.pluralize())
    # 变单数
    print(w.singularize())

we
I
love
love
naturals
natural
languages
language
processings
processing
we
I
ams
am
nots
not
likes
like
fish
fish

7.词干化(Words Lemmatization)

from textblob import Word
w = Word('went')
print(w.lemmatize('v'))
w = Word('octopi')
print(w.lemmatize())

go
octopus

8.集成WordNet

from textblob.wordnet import VERB
word = Word('octopus')
syn_word = word.synsets
for syn in syn_word:
    print(syn)
Synset('octopus.n.01')
Synset('octopus.n.02')
# 指定返回的同义词集为动词
syn_word1 = Word("hack").get_synsets(pos=VERB)
for syn in syn_word1:
    print(syn)

Synset('chop.v.05')
Synset('hack.v.02')
Synset('hack.v.03')
Synset('hack.v.04')
Synset('hack.v.05')
Synset('hack.v.06')
Synset('hack.v.07')
Synset('hack.v.08')

# 查看synset(同义词集)的具体定义
Word("beautiful").definitions

['delighting the senses or exciting intellectual or emotional admiration',
 '(of weather) highly enjoyable']

9.拼写纠正(Spelling Correction)

sen = 'I lvoe naturl language processing!'
sen = TextBlob(sen)
print(sen.correct())

I love nature language processing!

# Word.spellcheck()返回拼写建议以及置信度
w1 = Word('good')
w2 = Word('god')
w3 = Word('gd')
print(w1.spellcheck())
print(w2.spellcheck())
print(w3.spellcheck())

[('good', 1.0)]
[('god', 1.0)]
[('go', 0.586139896373057), ('god', 0.23510362694300518), ('d', 0.11658031088082901), ('g', 0.03626943005181347), ('ed', 0.009067357512953367), ('rd', 0.006476683937823834), ('nd', 0.0038860103626943004), ('gr', 0.0025906735751295338), ('sd', 0.0006476683937823834), ('md', 0.0006476683937823834), ('id', 0.0006476683937823834), ('gdp', 0.0006476683937823834), ('ga', 0.0006476683937823834), ('ad', 0.0006476683937823834)]

10.句法分析(Parsing)

text = TextBlob('I lvoe naturl language processing!')
print(text.parse())

I/PRP/B-NP/O lvoe/NN/I-NP/O naturl/NN/I-NP/O language/NN/I-NP/O processing/NN/I-NP/O !/./O/O

11.N-Grams

text = TextBlob('I lvoe naturl language processing!')
print(text.ngrams(n=2))

[WordList(['I', 'lvoe']), WordList(['lvoe', 'naturl']), WordList(['naturl', 'language']), WordList(['language', 'processing'])]

12.TextBlob实战之朴素贝叶斯文本分类

# 一个使用TextBlob进行Naive Bayes classifier
# 参考:https://textblob.readthedocs.io/en/dev/classifiers.html#classifiers
# 1.准备数据集:训练集和测试集
train = [
...     ('I love this sandwich.', 'pos'),
...     ('this is an amazing place!', 'pos'),
...     ('I feel very good about these beers.', 'pos'),
...     ('this is my best work.', 'pos'),
...     ("what an awesome view", 'pos'),
...     ('I do not like this restaurant', 'neg'),
...     ('I am tired of this stuff.', 'neg'),
...     ("I can't deal with this", 'neg'),
...     ('he is my sworn enemy!', 'neg'),
...     ('my boss is horrible.', 'neg')
... ]
test = [
...     ('the beer was good.', 'pos'),
...     ('I do not enjoy my job', 'neg'),
...     ("I ain't feeling dandy today.", 'neg'),
...     ("I feel amazing!", 'pos'),
...     ('Gary is a friend of mine.', 'pos'),
...     ("I can't believe I'm doing this.", 'neg')
... ]

# 2.创建朴素贝叶斯分类器
from textblob.classifiers import NaiveBayesClassifier

# 3.把训练丢进去训练
nb_model = NaiveBayesClassifier(train)

# 4.预测新来的样本
dev_sen = "This is an amazing library!"
print(nb_model.classify(dev_sen))

pos

# 也可以计算属于某一类的概率
dev_sen_prob = nb_model.prob_classify(dev_sen)
print(dev_sen_prob.prob("pos"))

0.980117820324005

# 5.计算模型在测试集上的精确度
print(nb_model.accuracy(test))

0.8333333333333334

代码已上传:

1.https://github.com/yuquanle/StudyForNLP/blob/master/NLPtools/TextBlobDemo.ipynb

2.https://github.com/yuquanle/StudyForNLP/blob/master/NLPtools/TextBlob2TextClassifier.ipynb

The End

本文分享自微信公众号 - AI小白入门(StudyForAI),作者:yuquanle

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-10-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【综述】​从基础到前沿看迁移学习在NLP中的演化

    论文标题:Evolution of Transfer Learning in Natural Language Processing

    yuquanle
  • 初学者|NLP相关任务简介

    本文根据自己的学习以及查阅相关资料的理解总结,简要的介绍一下自然语言处理(nlp)一些相关技术以及相关任务,nlp技术包括基础技术和应用技术。后续会抽空继续分专...

    yuquanle
  • 【DL】Deep learning in all,深度学习不再困难

    这限制了深度学习的效果,将其限制在满足这些条件的少数项目中。但是,在过去的几年中,情况发生了变化。在Cortex(https://github.com/cort...

    yuquanle
  • 初学者|手把手带你学TextBlob

    本文介绍了TextBlob的使用方法,这是一个用Python编写的开源的文本处理库。它可以用来执行很多自然语言处理的任务,比如,词性标注,名词性成分提取,情感分...

    用户1737318
  • [文本语义相似] 基于编辑距离相似度

    文本相似在问答系统中有很重要的应用,如基于知识的问答系统(Knowledge-based QA),基于文档的问答系统(Documen-based QA),以及基...

    MachineLP
  • Async/await

    JavaScript的异步一直是JavaScript的一个复杂的事,从回调到Promise再到Generator,直到async/await,都是为了解决异步操...

    wade
  • 高清还原破损视频,参数和训练时间减少三分之二,台大这项研究登上了BMVC 2019

    这是台湾大学发表在BMVC 2019的一项研究,一作是台大通讯与多媒体实验室学生Ya-Liang Chang。

    量子位
  • 高清还原破损视频,参数和训练时间减少三分之二,台大这项研究登上了BMVC 2019

    这是台湾大学发表在BMVC 2019的一项研究,一作是台大通讯与多媒体实验室学生Ya-Liang Chang。

    代码医生工作室
  • 数字化采购浪潮下,企业如何实现局部突破,小步快跑

    根据微软的预测,到2020年,世界经济的25%将实现数字化,成功转型的企业和组织将获得更多利润,企业数字化改造可以帮助企业优化决策,提高资源配置、降本增效,提高...

    数商云
  • 【专业技术】Android平台下使用OpenGL

    存在问题: 安卓平台下如何使用opengl? 解决方案: 1、GLSurfaceView GLSurfaceView是Android应用程序中实现OpenGl画...

    程序员互动联盟

扫码关注云+社区

领取腾讯云代金券