400 050 6600
数据分析师

手机号

验证码

30天自动登录
当前位置:首页 - Q&A问答

Q&AQ&A问答

自然语言处理的语言是什么?

来源:CPDA数据分析师网 / 作者:数据君 / 时间:2021-02-03

研究数据科学语言的人们通常对应该首先学习哪种语言感到困惑
R或Python两者对于包括自然语言处理(NLP)在内的一系列数据科学应用程序都极为有用,要了解每种语言的优缺点,让我们通过分析哪种语言适合NLP来探讨R vs Python的数据科学,自然语言处理:教授计算机人类单词,顾名思义,自然语言处理是指教计算机处理自然人类语言(英语,印地语等)并进行分析,NLP可以用于书面文本或语音数据。

我们将使用书面文本对R与Python进行数据科学的比较
我们每天都被书面文本包围着:电子邮件,SMS消息,网页,书籍等等,文本数据在我们的日常生活中起着至关重要的作用,这使NLP成为数据科学家探索的非常重要的领域。

R与Python进行数据科学:挖掘差异
Python和R是两种顶级的数据科学语言。两者都是开源的,拥有庞大的用户群。在现实世界中,对于数据科学和NLP,通常很难在R和Python之间进行选择。在这里,我们将遍历一些关于每种通用语言的必知信息。

 R是由统计人员构建的工具
主要用于数学,统计,研究和数据分析,它的可视化非常流行:图表,图形,图片和各种图表。这些可视化对于帮助人们可视化和理解数据中的趋势,离群值和模式很有用。

Python:多功能主力
Python是具有可读语法的通用,健壮,通用语言。Python的可读语法使其易于学习和理解,因为它可以像人类语言一样被读取,Python还可以在各种不同的项目环境中很好地集成。

NLP图书馆
库是程序员可以包含在程序和项目中以完成特定任务的模块和功能的集合,程序员选择不同的库是因为它们有助于更有效地完成特定任务,例如,wordcloud库用于创建显示来自文本数据集的常用单词的单词云,实际上,我们将在本文后面进行此操作。

R库
R拥有10,000多个库,例如Caret,Dplyr,tidyr,caTools,ggplot2等。这些支持广泛的用途,例如数据分析,操纵,可视化和机器学习(ML)建模。用于NLP的一些库是:tm,tidytext,text2vec和wordcloud。同样,您使用的库将基于您的用例。从R Project签出此页面,以详细了解用于NLP的其他库。

Python库
Python有200多个标准库和几乎无限的第三方库。一些标准的Python库是Pandas,Numpy,Scikit-Learn,SciPy和Matplotlib。这些库用于数据收集,分析,数据挖掘,可视化和ML建模。用于NLP的库有:NLTK,gensim,SpaCy ,g手套和Scikit-Learn。 每个图书馆都有自己的目的和利益。例如,NLTK非常适合学习和探索NLP概念,但它并不适合生产。同时,SpaCy是一个新的NLP库,旨在快速且可立即投入生产。

R和Python中的数据探索
数据探索是数据分析的步,产生可视化的图表或图表,以显示人类用户的模式和趋势。对于我们的NLP演示,让我们从Kaggle提取常用单词的数据集,并使用两种数据科学语言对其进行一些数据探索。

在R和Python中加载数据
首先,让我们在Python和R中加载训练数据,并检查每种语言花费多少时间。

R代码:
#Load data
start_time <- Sys.time()
train<- read.csv("train.csv")
timediff<-difftime(Sys.time(),start_time)
cat("Time taken to load csv is: ",timediff, units(timediff))

输出:

加载csv所需的时间为3.038562分钟。

Python代码:

# Load Data
start_time = time.time()
tr_data=pd.read_csv("train.csv")
time_diff=time.time()-start_time
print("Time taken to load csv is: {} seconds ".format(time_diff))
输出:  

加载CSV所需的时间为17.733536秒。

Python加载CSV所需的时间比R加载相同的数据集所需的时间少得多。

创建词云以查找重复的词
词云是将数据集中的词表示为一组词:一个词在文本数据中出现的频率越高,它在词云中出现的越大和越大。

让我们使用Python和R编程语言在训练数据集中创建50个常见单词的单词云。

R代码:

library(wordcloud)
start_time <- Sys.time()
wordcloud(d_toxic$word,d_toxic$freq,min.freq=100,max.words = 50, colors=brewer.pal(8, "Dark2"))
timediff<-difftime(Sys.time(),start_time)
cat("Time take to create wordcloud is ",timediff, units(timediff))
输出:

创建词云所需的时间为0.2203801秒。

R中前50个字的字云

Python代码:

start_time = time.time()
wordcloud = WordCloud(max_words=50, background_color="white", collocations=False).generate(text)
time_diff = time.time() - start_time
print("Time taken to create wordcloud is {} seconds".format(time_diff) )
plt.imshow(wordcloud, interpolation='bilinear') # display the generated image
plt.title(f"Most popular 50 words")
plt.show()
输出:

创建词云所需的时间为129.392610秒。

让我们比较一下两种数据科学语言在数据加载和词云创建上花费的时间。


R(花费时间) Python(花费时间)
资料载入 3.038562分钟 17.7335秒
词云 0.2203801秒 129.3926秒〜2分钟
我们可以看到,在两种编程语言中,常用的单词都是相似的,但是在R编程语言中,其可视化效果更佳。此外,与Python相比,R语言在词云创建上花费的时间更少。但是,与R相比,在Python中加载数据所需的时间明显更少。

在R和Python中建模
当我们说数据科学中的“建模”时,是指教一个程序,以使用机器学习算法从训练数据中学习。在建模中,我们发现输入变量和目标变量之间的关系。有很多机器学习算法,例如KNN,朴素贝叶斯,支持向量机,逻辑回归,决策树,随机森林,XG-Boost等,可以找到输入变量和目标变量之间的关系。 

例如,客户为产品撰写了评论(例如面食),因此评论(以文字形式)是我们的输入变量,而将文本分类为正面评论或负面评论是我们的目标变量。 

点评1:面食非常美味。

评论2:面食便宜且不美味。

因此,评论1是正面评论,评论2是负面评论。机器学习算法从过去数据的输入和输出变量中学习,并预测新数据的目标变量。

在这里,我们将实现XG-Boost算法,该算法是在概率和统计数据的帮助下基于训练数据(我们之前使用R和Python编程语言加载的)进行学习的。我们将创建一个有助于预测未来趋势的模型;系统不断学习,并根据所学知识做出决策。

R代码:

ctrain <- xgb.DMatrix(Matrix(data.matrix(X_train)), label = (y_train))
xb <- xgboost(ctrain, max_depth = 100, 
              nround=100, 
              eval_metric = "auc",
              objective = "binary:logistic")  
y_pred=predict(xb, y_val)
val-auc=auc(y_pred,y_val)
输出: 
val-auc:0.80443

Python代码:

clf = xgb.XGBClassifier(max_depth=100,min_samples_split=100);
clf.fit(X_train, y_train)
train_fpr, train_tpr, thresholds = roc_curve(y_train, clf.predict_proba(X_train)[:,1])
train-auc= auc(train_fpr, train_tpr)
val_fpr, val_tpr, thresholds = roc_curve(y_val, clf.predict_proba(X_val)[:,1])
val-auc= auc(val_fpr, val_tpr)
输出: val-auc:0.83768 XG-Boost在两种编程语言中的性能相似。 


NLP的Python和R的比较
使用XG-Boost对文本数据建模时,Python和R的得分几乎相同。可以使用许多性能指标来评估机器学习模型的性能。在这里,我们使用了AUC分数;AUC的意思是“曲线下的区域”。此度量可用于分类分析,以基于训练数据识别模型预测所需属性的能力。我们通过Python获得的AUC稍高一点,这就是我们知道它的性能比R稍好一点的原因。

如今,文本数据非常庞大,因此深度学习也应运而生。深度学习与大数据集配合得很好,它基于我们的脑细胞(神经元)概念,这是术语“人工神经网络”的根源。随着数据集中数据量的增加,许多ML算法的性能会停滞不前,但是深度学习性能会随着数据量的增加而提高。


我们还可以实现双向LSTM等深度学习模型,以进一步提高性能。深度学习模型使用Python构建的Keras和Tensorflow API。但是,现已提供用于Keras的R接口,用于在R中进行编程。Keras R软件包使我们可以享受R编程的好处,同时可以使用Python Keras软件包的功能-一种强大的组合。

数据科学和NLP的语言是什么:Python还是R?答案是,这取决于您的个人喜好以及您要在分析中尝试做的事情!

所有常见和必要的数据科学任务(数据加载,数据分析,数据探索,数据预处理,数据特征化,数据建模和预测建模)均可以R编程语言和Python语言提供。两种语言都是用户友好的,易于实现。对于这两种语言,还有各种各样的库可用于文本处理,文本分析和文本建模。所有ML和深度学习模型都可以轻松地用两种语言实现。R中的深度学习模型实际上甚至可以在后端运行Python API的功能,这意味着使用两种语言进行交流还有一个额外的好处。

敬业的数据专家永远不会停止发展他们的技能。虽然您当然可以从任何一种语言开始,但从中学习一点点其他语言,并随着时间的推移积累更多的知识,从长远来看肯定会帮助您提高能力。


免费客服热线:400-050-6600

商业联合会数据分析专业委员会



Prev article

我们如何了解结构化和非结构化数据?

Next article

数据分析师如何从原始数据中得到见解?

数据分析师

报名咨询

数据分析师

报名缴费

数据分析师

客服中心

数据分析师

课程服务

数据分析师

认证服务