5个Python库轻松实现自然语言处理入门指南
本文介绍5个常用的Python自然语言处理库,包括NLTK、TextBlob、Spacy、Gensim和CoreNLP。详细讲解标记、词干提取等核心术语,并提供各库的安装命令与基础代码示例,帮助开发者快速上手NLP预处理任务。
一、前言
自然语言指人类日常交流所使用的语言,而自然语言处理(NLP)则是将非结构化数据转化为计算机可理解格式的技术手段。简而言之,NLP旨在赋予计算机以人类语言的理解与交互能力。
作为当前研究最为广泛的领域之一,NLP吸引了大量科技巨头的巨额投资。企业利用NLP技术深入分析消费者情绪与文本数据,从而挖掘商业价值。其典型应用场景包括垃圾邮件检测、假新闻分类、情感分析、下一词预测、自动纠错、聊天机器人开发以及个人智能助手等。
三、解决任何NLP任务前要知道的7个术语
标记(Tokenization):该过程旨在将完整文本分割为更小的语义单元。标记操作通常基于句子和单词两个层级进行划分。
text = "Hello there, how are you doing today? The weather is great today. python is awsome"
##sentece tokenize (Separated by sentence)
['Hello there, how are you doing today?', 'The weather is great today.', 'python is awsome']
##word tokenizer (Separated by words)
['Hello', 'there', ',', 'how', 'are', 'you', 'doing', 'today', '?', 'The', 'weather', 'is', 'great', 'today', '.','python', 'is', 'awsome']
停止词(Stop Words):这类词汇通常对句意贡献较小。在NLP预处理中,为了降低数据噪声,通常会移除所有停止词,因为它们对核心数据分析意义不大。在英语语境中,常见的停止词数量约为179个。
词干提取(Stemming):该方法通过剥离单词的后缀和前缀,将其还原为词根形式。
词形还原(Lemmatization):其原理与词干提取类似,但关键区别在于它返回的是具有实际意义的规范单词。该技术主要应用于聊天机器人、问答系统及文本预测等场景。
WordNet:这是一个针对英语名词、动词、形容词和副词的词汇数据库或词典。其中的词汇被专门分组,以适配自然语言处理的设计需求。
词性标注(Part-of-Speech Tagging):此过程将句子转换为元组列表,每个元组包含形式(单词、标记)。这里的标记用于标识该单词的词性,如名词、形容词或动词等。
text = 'An sincerity so extremity he additions.'
--------------------------------
('An', 'DT'), ('sincerity', 'NN'), ('so', 'RB'), ('extremity', 'NN'), ('he', 'PRP'), ('additions', 'VBZ')]
词袋(Bag of Words):这是一种将文本转换为数字表示的方法,例如采用独热编码(One-Hot Encoding)等技术手段。
sent1 = he is a good boy
sent2 = she is a good girl
|
|
girl good boy
sent1 0 1 1
sent2 1 0 1
接下来,让我们回到主题,介绍能够帮助您轻松完成数据预处理的Python库。
二、NLTK
毫无疑问,NLTK是自然语言处理领域最优秀且使用最广泛的库之一。NLTK全称为Natural Language Toolkit(自然语言工具包),由Steven Bird和Edward Loper开发。它内置了众多模块,支持标记化、词元化、词干化、解析、分块及词性标注等功能,并提供超过50个语料库和词汇资源。
安装:pip install nltk
让我们使用NLTK对给定的文本执行预处理
import nltk
#nltk.download('punkt')
from nltk.tokenize import word_tokenize
from nltk.corpus import stopwords
from nltk.stem import PorterStemmer
import re
ps = PorterStemmer()
text = 'Hello there,how are you doing today? I am Learning Python.'
text = re.sub("[^a-zA-Z0-9]"," ",text)
text = word_tokenize(text)
text_with_no_stopwords = [ps.stem(word) for word in text if word not in stopwords.words('english')]
text = " ".join(text_with_no_stopwords)
text
-----------------------------------------------OUTPUT------------------------------------
'hello today I learn python'
三、TextBlob
TextBlob是一个简化的文本处理库。它提供了简洁的API,用于执行常见的NLP任务,如词性标记、情感分析、文本分类及翻译等。
安装:pip install textblob
四、spacy
这是Python中备受推崇的自然语言处理库之一,底层由Cython编写。它提供了一些预训练的统计模型,并支持多达49种以上的语言进行标记化处理。该库利用卷积神经网络作为特征提取手段,用于标记、解析和命名实体识别任务。
安装:pip install spacy
import spacy
nlp = spacy.load('en_core_web_sm')
text = "I am Learning Python Nowdays"
text2 = nlp(text)
for token in text2:
print(token,token.idx)
------------------------------OUTPUT-----------------------
I 0
am 2
Learning 5
Python 14
Nowdays 21
五、Gensim
它是一个Python库,专门用于识别两个文档之间的语义相似性。它利用向量空间建模和主题建模工具包来寻找文档间的相似之处。Gensim的设计初衷是处理大型文本语料库的算法需求。
安装:pip install gensim
六、CoreNLP
Stanford CoreNLP的目标是简化对一段文本应用不同语言工具的过程。该库运行速度极快,且在开发环境中表现稳定。
安装:pip install stanford-corenlp
到此这篇关于5个Python库就能让你轻松的实现自然语言预处理的文章就介绍到这了,更多相关Python库自然语言预处理内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













