【数媒在线课堂】Python NLP 入门教程
本文简要介绍 Python 自然语言处理 (NLP),使用 Python 的 NLTK 库。NLTK 是 Python 的自然语言处理工具包,在 NLP 领域中,最常使用的一个 Python 库。
什么是 NLP?
简单来说,自然语言处理 (NLP) 就是开发能够理解人类语言的应用程序或服务。
这里讨论一些自然语言处理 (NLP) 的实际应用例子,如语音识别、语音翻译、理解完整的句子、理解匹配词的同义词,以及生成语法正确完整句子和段落。
这并不是 NLP 能做的所有事情。
NLP 实现
️搜索引擎: 比如ASPCMS社区,Yahoo 等。ASPCMS社区搜索引擎知道你是一个技术人员,所以它显示与技术相关的结果;
️社交网站推送: 比如 Facebook News Feed。如果 News Feed 算法知道你的兴趣是自然语言处理,就会显示相关的广告和帖子。
️语音引擎: 比如 Apple 的 Siri。
️垃圾邮件过滤: 如ASPCMS社区垃圾邮件过滤器。和普通垃圾邮件过滤不同,它通过了解邮件内容里面的的深层意义,来判断是不是垃圾邮件。
NLP 库
下面是一些开源的自然语言处理库 (NLP):
- Natural language toolkit (NLTK);
- Apache OpenNLP;
- Stanford NLP suite;
- Gate NLP library
其中自然语言工具包 (NLTK) 是最受欢迎的自然语言处理库 (NLP),它是用 Python 编写的,而且背后有非常强大的社区支持。
NLTK 也很容易上手,实际上,它是最简单的自然语言处理 (NLP) 库。
在这个 NLP 教程中,我们将使用 Python NLTK 库。
使用 NLTK Tokenize 文本
在之前我们用 split 方法将文本分割成 tokens,现在我们使用 NLTK 来 Tokenize 文本。
文本没有 Tokenize 之前是无法处理的,所以对文本进行 Tokenize 非常重要的。token 化过程意味着将大的部件分割为小部件。
你可以将段落 tokenize 成句子,将句子 tokenize 成单个词,NLTK 分别提供了句子 tokenizer 和单词 tokenizer。
同义词处理
使用 nltk.download() 安装界面,其中一个包是 WordNet。
WordNet 是一个为自然语言处理而建立的数据库。它包括一些同义词组和一些简短的定义。
词干提取
语言形态学和信息检索里,词干提取是去除词缀得到词根的过程,例如 working 的词干为 work。
搜索引擎在索引页面时就会使用这种技术,所以很多人为相同的单词写出不同的版本。
有很多种算法可以避免这种情况,最常见的是️波特词干算法。
个人认为,变体还原比词干提取更好。单词变体还原返回一个真实的单词,即使它不是同一个单词,也是同义词,但至少它是一个真实存在的单词。
如果你只关心速度,不在意准确度,这时你可以选用词干提取。
在此 NLP 教程中讨论的所有步骤都只是文本预处理。