目录
1. 自然语言处理概述
1.1 什么是NLP
简单来说,自然语言处理(NLP)是计算机或系统真正理解人类语言并以与人类相同的方式处理它的能力。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。自然语言处理是一门融语言学、计算机科学、数学于一体的科学。
1.2 NLP的难度是什么
自然语言理解难在哪儿? https://blog.csdn.net/qq_27586341/article/details/123519687 (1)隐含、潜在的信息:在人与人之间的日常会话中,很多事往往是隐含的,会以诸如某种信号、表情、或只是沉默等形式表达出来。人类有能力理解会话中潜在的意图,但计算机却不能。
(2)歧义:单词、句子、语义级别
1.3 NLP相关的技术
自动文摘、机器写作、文档分类、文本标记、 信息抽取、机器翻译、信息检索、问答系统、对话系统(聊天机器人)、语音识别,等等。
2. NLP常用库
2.1 NLTK
NLTK(www.nltk.org)是在处理预料库、分类文本、分析语言结构等多项操作中最长遇到的包。其收集的大量公开数据集、模型上提供了全面、易用的接口,涵盖了分词、词性标注(Part-Of-Speech tag, POS-tag)、命名实体识别(Named Entity Recognition, NER)、句法分析(Syntactic Parse)等各项 NLP 领域的功能。
详细介绍,请参考文章:自然语言处理库——NLTK_满腹的小不甘_静静的博客-CSDN博客_nltk库
2.2 TextBlob
TextBlob是一个用Python编写的开源的文本处理库。它可以用来执行很多自然语言处理的任务,比如,词性标注,名词性成分提取,情感分析,文本翻译,等等。
基本功能
- Noun phrase extraction 短语提取 Part-of-speech tagging 词汇标注
- Sentiment analysis 情感分析 Classification (Naive Bayes, Decision Tree) 分类
- Language translation and detection powered by Google Translate 语言翻译和检查(谷歌翻译支持)
- Tokenization (splitting text into words and sentences) 分词、分句
- Word and phrase frequencies 词、短语频率
- Parsing 语法分析
- n-grams N元标注
- Word inflection (pluralization and singularization) and lemmatization 词反射及词干提取
- Spelling correction 拼写准确性
- Add new models or languages through extensions 添加新模型或语言通过表达
- WordNet integration WordNet整合
详细介绍,请参考文章:自然语言处理库——TextBlob_满腹的小不甘_静静的博客-CSDN博客_textblob库
文本处理工具 - TextBlob_qq_22930277的博客-CSDN博客_textblob
2.3 Gensim
Gensim(http://pypi.python.org/pypi/gensim)是一款开源的第三方Python工具包,用于从原始的非结构化的文本中,无监督地学习到文本隐层的主题向量表达。 主要用于主题建模和文档相似性处理,它支持包括TF-IDF,LSA,LDA,和word2vec在内的多种主题模型算法。Gensim在诸如获取单词的词向量等任务中非常有用。
详细介绍,请参考文章:自然语言处理库——Gensim之Word2vec_满腹的小不甘_静静的博客-CSDN博客_gensim word2vec
2.4 Pattern
Pattern(http://pypi.python.org/pypi/Pattern)适用于各种NLP任务,例如词类标注器、n-gram搜索、情感分析、WordNet和机器学习(例如向量空间建模、k均值聚类、朴素贝叶斯、KNN、SVM分类器)。
import pattern
from pattern.en import tag
tweet = "I hope it is going good for you!"
tweet_1 = tweet.lower()
tweet_tags = tag(tweet_1) # 词性标注
2.5 SpaCy
SpaCy(https://spacy.io/)提供了非常快速和准确的句法分析功能,还提供了命名实体识别和可以随时访问词向量的功能。它使用Cython语言编写,包含各种训练模型,包括语言词汇表、语法、词向量转换和实体识别。
2.6 Stanford CoreNLP
CoreNLP是由斯坦福大学开源的一套Java NLP工具,提供诸如:词性标注(part-of-speech (POS) tagger)、命名实体识别(named entity recognizer (NER))、情感分析(sentiment analysis)等功能。