目录
早在20世纪50年代,自然语言处理就被提起,
自然语言处理(英语:Natural Language Processing,缩写作 NLP)是人工智能和语言学领域的分支学科。此领域探讨如何处理及运用自然语言;自然语言处理包括多方面和步骤,基本有认知、理解、生成等部分。
但直到20世纪80年代前,自然语言处理的系统大多仅支持有限的词汇并需要大量的人工编写的规则。到了80年代,机器计算能力的飞速提升以及机器学习算法的出现,为自然语言处理领域带来了变革。隐马可夫模型的使用,以及越来越多的基于统计模型的研究,使得系统拥有了更强的对未知输入的处理能力。如今,研究更多的集中于无监督学习或者语义监督学习,比较成功的便是自动翻译系统。近几年,大数据时代的到来,以及深度学习算法的广泛应用,又为自然语言处理带来了新的突破。
NLP通常包含两方面内容:词法、语法。词法的经典问题为分词、拼写检查、语音识别等;语法的经典问题有词类识别、词义消歧、结构分析等;语音识别领域经典问题有语言识别、语音指令、电话监听、语音生成等。
文本挖掘是抽取有效、新颖、有用、可理解的、散布在文本文件中的有价值知识,并且利用这些知识更好地组织信息的过程。
文本挖掘可以视为NLP(Natural language processing,自然语言处理)的一个子领域,目标是在大量非结构化文本中整理析取出有价值的内容。事实上自从自然语言处理技术发展之时,文字挖掘技术就得以急速在科学领域发展。今随着大量非结构化、半结构化的文字资料在企业资料环境中产生,文字挖掘也得到了越来越多的商业运用。
·TM包:
- DirSource:处理目录
- VectorSource:由文档构成向量
- DataframeSource:数据框,就像CSV 文件
- Map操作:对文档内容应用转换函数
- Xml转化为纯文本
- 去除多余空白
- 去除停用词
- 填充
- Reduce操作:将多个转换函数的输出合并成一个
0.准备阶段:
在真正处理这个课题的时候,充分了解起背景知识可以为下部处理数据、构建模型等步骤提供非常大的用处:
·了解数据的结构:
数据为txt文档,内部包括了各种文字存档,为行分布,每一行是一条”句子“。
·数据的来源:
数据来源于SwiftKey(预测文本模型的公司) 的大量文本文档,用其以发现数据中的结构以及单词如何组合在一起。
·依靠外部的数据材料来优化此数据的处理
·NLP的普遍处理步骤
·text mining的普遍步骤和要求
·NLP与data science 基础知识的联系:
常用的理论和算法有下面几种:
- 维特比算法 Viterbi
- 朴素贝叶斯分类器 Naïve Bayes, Maxent classifiers
- n元语法(下文会用到) N-gram language modeling:也称 n 元文法(n-gram)模型,用于将特定概率与单词相关联的马尔可夫概率模型,取决于先前的(N-1)个单词。
- StaIsIcal Parsing
- • Inverted index, tf-idf,vector$models of meaning .
1.加载与初步处理数据:
在初步了解了数据的背景和建立了对数据处理的大概步骤,现在是开始真正处理数据的时候:
- 标记化 - 识别适当的标记,例如单词,标点符号和数字。编写一个将文件作为输入并返回其标记化版本的函数。
- 亵渎过滤 - 删除亵渎和其他你不想预测的单词。
- Tokenization - identifying appropriate tokens such as words, punctuation, and numbers. Writing a function that takes a file as input and returns a tokenized version of it.
- Profanity filtering - removing profanity and other words you do not want to predict.
·加载数据。
这个数据集相当大,无需全部加载,通常较少的随机选择得出的块,来获得对使用所有数据获得的结果的精确近似。在此,使用R的readLines或扫描函数读取
##download the data
setwd("E://coursera//final proj//final//en_US")
if(!file.exists("./Coursera-SwiftKey.zip")){
download.file("https://d396qusza40orc.cloudfront.net/dsscapstone/dataset/Coursera-SwiftKey.zip",
destfile="./Coursera-SwiftKey.zip")}
unzip(zipfile="./Coursera-SwiftKey.zip")
path_rf <- f