本系列文章旨在通过Python代码和流行的深度学习及机器学习框架,如scikit-learn、Keras和TensorFlow,逐步讲解自然语言处理(NLP)的基本概念到高级技术。无论是NLP新手还是有一定基础的读者,都可以跟随本系列文章进行学习和实践。
本系列文章适合对NLP感兴趣的初学者或有一定基础的读者,通过阅读和编码来学习NLP。
需要具备基本的Python理解能力。
Keras、Tensorflow、Scikit-learn、NLTK、Glove等。
自然语言处理是计算机科学的一个分支,它使计算机能够像人类一样自然地理解语言。这意味着计算机能够理解情感、语音、回答问题、文本摘要等。将不会过多讨论NLP的历史和演变。如果感兴趣,可以访问这个。
原始文本数据在未经清洗的情况下直接从各种来源获取。应用多个步骤来清洗数据。未清洗的文本数据包含无用信息,这会偏离结果,因此清洗数据始终是第一步。一些标准的预处理技术应该被应用以使数据更干净。清洗后的数据还可以防止模型过拟合。
将原始文本数据转换为pandas数据框,并执行各种数据清洗技术。
import pandas as pd
text = ['This is the NLP TASKS ARTICLE written by ABhishek Jaiswal', 'IN this article I"ll be explaining various DATA-CLEANING techniques',
'So stay tuned for FURther More &&', 'Nah I don"t think he goes to usf, he lives around']
df = pd.DataFrame({'text':text})
输出:
Source: Local
Lowercasing
The method lower() converts all uppercase characters into lowercase and returns.
Applying lower() method using lambda function
df['lower'] = df['text'].apply(lambda x: " ".join(x.lower() for x in x.split()))
接下来,将讨论去除标点符号、去除停用词、拼写校正、分词、词干提取和词形还原等技术。
到目前为止,已经看到了在获取原始数据后必须执行的各种文本预处理技术。清洗完数据后,现在可以执行探索性数据分析,并探索和理解文本数据。
计算数据中的独特词汇可以让了解数据中最常见的、最不常见的词汇。通常会删除最不常见的评论,使模型训练更加泛化。
import nltk
nltk.Freq_dist(all_words)
from wordcloud import WordCloud
import matplotlib.pyplot as plt
words = []
for message in df['processed']:
words.extend([word for word in message.split() if word not in STOPWORDS])
wordcloud = WordCloud(width=1000, height=500).generate(" ".join(words))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
plt.show()