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

图灵汇官网

人类交流是极为复杂且迷人的现象之一。我们每天都在使用各种方式交流,无论是通过对话还是书写符号。即使是一瞥也可以传递信息。斯坦福大学的机器学习教授克里斯·曼宁曾将沟通描述为“一个离散的、符号的、分类的信号系统”。这意味着我们的感官——视觉、触觉、听觉甚至嗅觉——都在帮助我们进行交流。那么,当我们将计算技术引入这一过程时,会发生什么呢?这就是自然语言处理(NLP)的领域。

自然语言处理(NLP)

NLP 是一门结合计算机科学和人工智能领域的学科,旨在实现人机之间的有效沟通。这一领域始于20世纪50年代,当时艾伦·图灵提出了著名的“图灵测试”,用于评估计算机是否能够模拟人类的行为。自那时起,NLP 已经取得了巨大的进步,尤其是在数据科学和语言学方面。

本文接下来将介绍 NLP 中的一些基本功能,并通过 Python 代码示例进行演示。

标记化

标记化是将文本分解成最小单元的过程,比如单词。例如,给定一句话:“The red fox jumps over the moon.”,每个单词都被视为一个标记,共有七个标记。

使用 Python 进行标记化: python myText = 'The red fox jumps over the moon.' myLowerText = myText.lower() myTextList = myLowerText.split() print(myTextList) 输出结果为: ['the', 'red', 'fox', 'jumps', 'over', 'the', 'moon']

词性归类

词性归类用于确定单词在句子中的语法功能。在英语中,常见的词性包括形容词、代词、名词、动词、副词、介词、连词和感叹词。例如,“PERMIT”这个词既可以作为名词也可以作为动词使用。使用 NLTK 库可以轻松完成词性归类: python import nltk myText = nltk.word_tokenize('the red fox jumps over the moon.') print('Parts of Speech:', nltk.pos_tag(myText)) 输出结果为: Parts of Speech: [('the', 'DT'), ('red', 'JJ'), ('fox', 'NN'), ('jumps', 'NNS'), ('over', 'IN'), ('the', 'DT'), ('moon', 'NN'), ('.', '.')]

停止词删除

许多句子和段落中包含的单词如“a”、“and”、“an”和“the”并没有太多意义。删除这些停止词可以简化文本分析。使用 NLTK 库可以方便地删除停止词: ```python from nltk.corpus import stopwords from nltk.tokenize import word_tokenize

examplesent = "a red fox is an animal that is able to jump over the moon." stopwords = set(stopwords.words('english')) wordtokens = wordtokenize(examplesent) filteredsentence = [w for w in wordtokens if not w in stopwords] print(filtered_sentence) 输出结果为: ['red', 'fox', 'animal', 'able', 'jump', 'moon', '.'] ```

词干提取

词干提取是一种将单词简化为其基本形式的方法,以减少词形变化。例如,“钓鱼”这个词可以简化为“鱼”。使用 NLTK 库可以执行词干提取: ```python from nltk.stem import PorterStemmer from nltk.tokenize import word_tokenize

ps = PorterStemmer()

words = ["likes", "likely", "likes", "liking"] for w in words: print(w, ":", ps.stem(w)) 输出结果为: likes : like likely : likel likes : like liking : lik ```

词形还原

词形还原与词干提取类似,但词形还原会考虑单词的词性,从而生成更易读的结果。使用 NLTK 库可以比较词干提取与词形还原: ```python from nltk.stem import PorterStemmer from 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')) 输出结果为: corpora STEMMING: corpora LEMMATIZATION corpora constructing STEMMING: construct LEMMATIZATION constructing better STEMMING: better LEMMATIZATION good done STEMMING: done LEMMATIZATION done worst STEMMING: worst LEMMATIZATION bad pony STEMMING: poni LEMMATIZATION pony ```

总结

语言学涵盖了对语言、形态学、句法、语音和语义的研究。随着数据科学和计算技术的发展,这一领域在过去60年中经历了显著的进步。我们刚刚探讨了一些简单的 NLP 功能,这些功能已经被广泛应用于搜索引擎和语音助手等技术中。NLP 不仅仅是一项技术,更是未来无缝计算的重要组成部分。

Arcadia Data 最近发布了5.0版本,其中包含了一项名为“基于搜索的BI”的自然语言查询功能,这正是利用了之前提到的数据科学和文本分析技术。更多详情请参阅他们关于“基于搜索的BI工具”的视频。

原文转载:https://www.arcadiadata.com/blog/the-data-science-behind-natural-language-processing/

AI研习社今日推荐:AI入门、大数据、机器学习免费教程

35本世界顶级原本教程限时开放,这些书单由知名数据科学网站 KDnuggets 的副主编 Matthew Mayo 推荐,他在机器学习和数据科学领域具有丰富的科研和从业经验。

本文来源: 图灵汇 文章作者: 未来飞机