自然语言处理(NLP)和计算语言学(CL)是人类语言计算研究的两个领域。
- NLP旨在开发解决涉及语言的实际问题的方法,如信息提取、自动语音识别、机器翻译、情绪分析、问答和总结。
- CL使用计算方法来理解人类语言的特性。
语料库、令牌和类型
无论是经典的还是现代的,都以文本数据集开始,也称为语料库(复数:corpora)。
语料库通常有原始文本(ASCII或UTF-8格式)和与文本相关的任何元数据。原始文本是字符(字节)序列,但是大多数时候将字符分组成连续的称为令牌(Tokens)的连续单元是有用的。在英语中,令牌(Tokens)对应由空格字符或标点分隔的单词和数字序列。
元数据可以是和文本相关联的任何辅助信息,比如标识符、标签和时间戳。
在机器学习的术语里,文本及其元数据称为实例或者是数据点。语料库是一组实例也成为数据集合。
令牌是NLP的基础,令牌是单词,字符或者子单词。将文本分解为令牌(Tokens)的过程称为令牌化(tokenization)
import spacy
nlp = spacy.load(‘en’)
text = “Mary, don’t slap the green witch”
print([str(token) for token in nlp(text.lower())])
#['mary', ',', 'do', "n't", 'slap', 'the', 'green', 'witch', '.']
from nltk.tokenize import TweetTokenizer
tweet=u"Snow White and the Seven Degrees #MakeAMovieCold@midnight:-)"
tokenizer = TweetTokenizer()
print(tokenizer.tokenize(tweet.lower()))
#['snow', 'white', 'and', 'the', 'seven', 'degrees', '#makeamoviecold', '@midnight', ':-)']
一元、二元、三元…到n元模型 (Unigrams, Bigrams, Trigrams, …, Ngrams)
ngram是文本中出现的固定长度(n)的连续令牌序列。bigram有两个令牌,unigram 只有一个令牌。
def n_grams(text,n):
'''
takse tokens or text,returns a list of n grams
'''
return [text{i:i+n} for i in range(len(text)-n+1)]
#[['mary', ',', "n't"], [',', "n't", 'slap'], ["n't", 'slap', 'green'],['slap', 'green', 'witch'], ['green', 'witch', '.']]
词形还原和词干提取(Lemmas and Stems)
Lemmas是单词的词根形式。考虑动词fly。它可以被屈折成许多不同的单词——flow、fly、flies、flying、flow等等——而fly是所有这些看似不同的单词的Lemmas。有时,为了保持向量表示的维数较低,将令牌减少到它们的Lemmas可能是有用的。
词干是最普通的lemmatization。它涉及到使用手工制定的规则来去掉单词的结尾,从而将它们简化为一种叫做词干的常见形式。
import spacy
nlp = spacy.load('en)
doc = nlp(u'he was running late')
for token in doc:
print('{} --> {}'.format(token,token.lemma_))
文档分类
对较长文本块进行分类,主题标签的分配、评论情绪的预测、垃圾邮件的过滤、语言识别和邮件分类等问题可以被定义为受监督的文档分类问题。
广度分类:分块和命名实体识别
,我们需要标记文本的范围;即,一个连续的多令牌边界。例如,“Mary slapped the green witch.”我们可能需要识别其中的名词短语(NP)和动词短语(VP)
单词分类:词性标注
将标记的概念从文档扩展到单个单词或者标记,分类单词的一个常见示例是词性标注。
Input[0]
import spacy
nlp = spacy.load(‘en’)
doc = nlp(u"Mary slapped the green witch.")
for token in doc:
print('{} - {}'.format(token, token.pos_))
Output[0]
Mary - PROPN
slapped - VERB
the - DET
green - ADJ
witch - NOUN
. - PUNCT
句子结构
浅层的句法分析主要识别短语词性,而识别他们之间关系的则成为句法分析。如对“Mary slapped the green witch。”
句法分析树表示句子里不同的语法单位之间的关系。对句子进行成分句法分析。
对句子进行依存句法分析。
词义与语义
词义是可以通过上下文来进行解释或具体确定的,从文本里自动发现并确定词义是半监督学习应用于自然语言处理的一个地方。