专栏首页CDA数据分析师自然语言处理背后的数据科学

自然语言处理背后的数据科学

来源:medium

编译:陆震、夏雅薇

本文转自公众号 大数据文摘

自然语言处理(NLP)是计算机科学和人工智能范畴内的一门学科。

NLP是人与机器之间的沟通,使得机器既可以解释我们的语言,也可以就此作出有效回答。自20世纪50年代以来,这个领域一直存在,你可能听说过Alan Turing开创的“图灵测试”。图灵测试测量计算机对人类所提出问题做出反应的好坏程度。

如果第三方的人不能分辨出人和该计算机之间的区别,那么该计算系统就是智能的。20世纪50年代以来,人类为此努力了很多年,如今终于在数据科学和语言学领域取得了许多进展。

本文将详细介绍自然语言处理领域的一些算法的基本功能,包含一些Python代码示例。

标记化

开始自然语言处理之前,我们看几个非常简单的文本解析。标记化是将文本流(如一句话)分解为构成它的最基本的单词的过程。例如,下面一句话:“红狐狸跳过月球。”这句话有7个单词。

使用python标记句子:

myText ='The red fox jumps over the moon.'myLowerText = myText.lower()myTextList = myLowerText.split()print(myTextList)OUTPUT:['the','red','fox','jumps','over','the','moon']

词性归类

词性用于确定句法功能。英语中的主要词性有:形容词,代词,名词,动词,副词,介词,连词和感叹词。这用于根据其用法推断单词的含义。例如,permit可以是名词和动词。作动词:“I permit you to go to the dance.”作名词:“Did you get the permit from the country.”

使用Python判断词性:(使用NLTK库)

你必须安装NLTK,这是一个用于自然语言处理的Python库。

关于NLTK的说明:

https://www-geeksforgeeks-org.cdn.ampproject.org/c/s/www.geeksforgeeks.org/part-speech-tagging-stop-words-using-nltk-python/amp/

import nltkmyText = nltk.word_tokenize('the red fox jumps over the moon.')print('Parts of Speech:',nltk.pos_tag(myText))OUTPUT:Parts of Speech:[('the','DT' ),('red','JJ'),('fox','NN'),('jumps','NNS'),('over','IN'),('the','DT' ),('moon','NN'),('.','.')]

你能看出NLTK是如何将句子分解为单个单词并说明其词性,如('fox','NN'):

NN noun, sigular 'fox'

停用词删除

许多句子和段落都包含一些几乎无实际意义的单词,包括“a”,“and”,“an”和“the”。停用词过滤是指从句子或单词流中删除这些单词。

使用Python和NLTK实现停用词过滤:

from nltk.corpus import stopwordsfrom nltk.tokenize import word_tokenize
example_sent =“a red fox is an animal that is able to jump over the moon.”stop_words = set(stopwords.words('english'))word_tokens = word_tokenize(example_sent)filtered_sentence = [w for w in word_tokens if not w in stop_words]filtered_sentence = [] for w in word_tokens: if w not in stop_words:filtered_sentence.append(w)print(filtered_sentence)OUTPUT:['red','fox','animal','able','jump','moon','.']

词干提取

词干化是减少单词噪声的过程,也被称为词典归一化。它减少了单词的变化。例如,单词“fishing”的词干为“fish”。

词干化用于将单词简化到其基本含义。另一个很好的例子是“喜欢”这个词,它是许多单词的词干,如:“likes”,“liked”和“likely”。

搜索引擎也是使用词干的。在许多情况下,用这种方法来搜索其中一个单词以返回包含该集合中另一个单词的文档可能是非常有用的。

需要使用Python和NLTK库实现词干化:

from nltk.stem import PorterStemmerFrom nltk.tokenize import word_tokenize
ps = PorterStemmer()words = [“likes”,“possible”,“likes”,“liking”]
for w in words:print(w,“:”,ps.stem(w))
OUTPUT:('likes', ':', u'like')('likely', ':', u'like')('likes', ':', u'like')('liking', ':', u'like')

词形还原

词干化和词形归并非常相似,它们都使你能够找到根词。这被称为单词字归一化,两者可以生成相同的输出。但是,它们的工作原理非常不同。词干试图切分单词,而词形归并让你能够看清单词是名词,动词还是其他词性。

例如单词'saw',词干化返回'saw',词形归并返回'see'和'saw'。词形归并通常会返回一个可读的单词,而词干化可能不会。可以看下面的一个示例以了解差异。

from nltk.stem import PorterStemmerFrom nltk.stem import WordNetLemmatizer
lemmatizer = WordNetLemmatizer()ps = PorterStemmer()words = [“corpora”,“constructing”,“better”,“done”,“worst”,“pony”]
for w in words:print(w,“STEMMING:”,ps.stem(w),“LEMMATIZATION”,lemmatizer.lemmatize(w,pos = 'v'))
OUTPUT:corpora STEMMING:corpora LEMMATIZATION corporaconstructing STEMMING:construct LEMMATIZATION constructingbetter STEMMING:better LEMMATIZATION gooddone STEMMING:done LEMMATIZATION doneworst STEMMING:worst LEMMATIZATION badpony STEMMING:poni LEMMATIZATION pony

结论

语言学是对语言,形态,句法,语音和语义的研究。包括数据科学和计算在内的这三个领域在过去60年中已经兴起爆发。我们刚刚只是探索了在NLP中一些非常简单的文本分析。Google,Bing和其他搜索引擎利用此技术帮助你在世界范围网络中查找信息。

想想让Alexa播放你最喜欢的歌曲是多么容易,或者Siri如何帮助你确定方向。这完全是因为NLP。计算系统中的自然语言不是噱头或玩具,而是我们生活中无缝对接计算系统的未来。

Arcadia Data刚刚发布了5.0版,其中包括我们称之为Search Based BI的自然语言查询功能。它使用了上面描述的一些数据科学和文本分析功能。

用我们的Search Based BI工具查看此视频:

http://watch.arcadiadata.com/watch/NSf1mMENjYfTY2cjpuGWPS?

相关报道:

https://medium.com/dataseries/the-data-science-behind-natural-language-processing-69d6df06a1ff

本文分享自微信公众号 - CDA数据分析师(cdacdacda)

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

原始发表时间:2019-04-29

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 学会这8个(组)excel函数,轻松解决工作中80%的难题

    文 | 兰色幻想-赵志东 函数是excel中最重要的分析工具,面对400多个excel函数新手应该从哪里入手呢?下面是实际工作中最常用的8个(组)函数,学会后工...

    CDA数据分析师
  • 你的名字烂大街了吗,数据揭开国人起名背后的秘密

    之前处座便听人戏称:“00后,是‘梓’掉的一代。”看看各地相继出炉的2018新生儿爆款姓名,“梓,涵,宇,沐……”层出不穷。玛丽苏言情味如此明显,这让心中早有仗...

    CDA数据分析师
  • 入门 | 数据科学初学者必知的NumPy基础知识

    NumPy(Numerical Python)是 Python 中的一个线性代数库。对每一个数据科学或机器学习 Python 包而言,这都是一个非常重要的库,S...

    CDA数据分析师
  • 自然语言处理背后的算法基本功能

    NLP是人与机器之间的沟通,使得机器既可以解释我们的语言,也可以就此作出有效回答。自20世纪50年代以来,这个领域一直存在,你可能听说过Alan Turing开...

    商业新知
  • 自然语言处理背后的数据科学

    NLP是人与机器之间的沟通,使得机器既可以解释我们的语言,也可以就此作出有效回答。自20世纪50年代以来,这个领域一直存在,你可能听说过Alan Turing开...

    大数据文摘
  • 自然语言处理背后的数据科学

    人类交流是能感知到的最迷人的特性之一。作为人类的一员,我知道人类之间如何互动是极其复杂的。我们经常发送和接收错误的信息,或者我们的信息会被他人误解。每天我们都理...

    AI研习社
  • day24 03 多继承

     A,B,C,D四个类,其中D类继承A,B,C三个父类,因此也叫多继承,子类方法调用的时候先找自己里面的,没有再根据就近原则逐个找父类里面的,最后没有还是会报错

    用户2398817
  • POJ-1887 Testing the CATCHER(dp,最长下降子序列)

    Testing the CATCHER Time Limit: 1000MS Memory Limit: 30000K Total Submi...

    ShenduCC
  • Solution for wear-leveling

    Flash is a type of electrically-erasable programmable read-only memory (EEPROM) ...

    anytao
  • No thread-bound request found异常

    本文主要研究下spring mvc的No thread-bound request found异常

    codecraft

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动