自然语言是指人类之间相互交流的语言形式,而自然语言处理则是将数据预处理成易于理解的形式,以便计算机能够理解和处理。简单来说,自然语言处理(NLP)是让计算机能够以人类的方式进行交流的技术。
自然语言处理是当前研究领域中最广泛的一个分支。许多大公司在这一领域投入了大量资源。NLP为公司提供了机会,使其能够更好地理解消费者的情绪和需求。NLP的应用实例包括识别垃圾邮件、分类假新闻、情感分析、预测下一个单词、自动纠错、聊天机器人和个人助手等。
在处理任何NLP任务之前,需要掌握一些基本术语:
标记化:即将整个文本分割成较小的片段。标记化可以按照句子和单词两种方式进行。
示例: ``` text = "Hello there, how are you doing today? The weather is great today. python is awesome"
['Hello there, how are you doing today?', 'The weather is great today.', 'python is awesome']
['Hello', 'there', ',', 'how', 'are', 'you', 'doing', 'today', '?', 'The', 'weather', 'is', 'great', 'today', '.', 'python', 'is', 'awesome'] ```
停用词:通常,这些词语对句子意义贡献不大。在NLP中,我们删除所有停用词,因为它们对数据分析并不重要。英语中有大约179个停用词。
词干提取:即去掉词尾和词头,将单词还原为其词根形式。
词形还原:其作用类似于词干提取,但主要区别在于它返回一个有意义的单词。这主要用于开发聊天机器人、问答系统和文本预测等应用。
WordNet:这是一个英语词汇数据库或词典,包含名词、动词、形容词和副词,并将这些词分为专门设计用于自然语言处理的集合。
词性标注:即将一个句子转换成一系列元组的过程。每个元组包含一个词和其对应的词性标签(如名词、形容词或动词)。
示例:
text = 'An sincerity so extremity he additions.'
[('An', 'DT'), ('sincerity', 'NN'), ('so', 'RB'), ('extremity', 'NN'), ('he', 'PRP'), ('additions', 'VBZ')]
词袋模型:这是一种将文本转换成某种数字表示的方法。例如,独热编码等。
示例:
sent1 = 'he is a good boy'
sent2 = 'she is a good girl'
|
|
girl good boy
sent1 0 1 1
sent2 1 0 1
接下来,我们将介绍一些可以帮助您轻松预处理数据的库:
NLTK
毫无疑问,NLTK是自然语言处理领域最好的库之一。它由Steven Bird和Edward Loper开发,包含了许多内置模块,如标记化、分词、词干化、解析、分块和词性标注。它还提供了超过50个语料库和词汇资源。
安装命令:pip install nltk
使用NLTK对给定文本进行预处理的示例代码: ```python import nltk
from nltk.tokenize import wordtokenize
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 = wordtokenize(text)
textwithnostopwords = [ps.stem(word) for word in text if word not in stopwords.words('english')]
text = " ".join(textwithnostopwords)
text
输出结果:
'hello today i learn python'
```
TextBlob
TextBlob是一个简化文本处理的库。它提供了一个简单的API,可以方便地执行常见的NLP任务,如词性标注、情感分析、分类、翻译等。
安装命令:pip install textblob
spaCy
spaCy是Python中最好用的自然语言处理库之一,由Cython编写。它提供了一些预训练的统计模型,并支持49种以上的语言进行标记化。它还具备卷积神经网络功能,用于标记、解析和命名实体识别。
安装命令:pip install spacy
使用spaCy对给定文本进行预处理的示例代码:
python
import spacy
nlp = spacy.load('en_core_web_sm')
text = "I am Learning Python Nowadays"
text2 = nlp(text)
for token in text2:
print(token, token.idx)
输出结果:
I 0
am 2
Learning 5
Python 14
Nowadays 21
Gensim
Gensim是一个专门用于识别两个文档间语义相似性的Python库。它利用向量空间建模和主题建模工具包来寻找文档间的相似性。它设计用于处理大型文本语料库的算法。
安装命令:pip install gensim
CoreNLP
Stanford CoreNLP旨在简化使用多种语言工具处理文本的过程。该库运行速度快,在开发过程中表现良好。
安装命令:pip install stanford-corenlp