N-grams模型、停顿词(stopwords)和标准化处理 - NLP学习(2)

本文介绍了NLP中的N-grams模型,强调了保留文本顺序的重要性,以及其可能导致词汇量增加和过拟合的风险。此外,讨论了停顿词的去除对减少词汇量和降低特征向量维度的影响,同时也提到了标准化处理,包括CASE Folding、Stemming和Lemmatization,这些方法在减少词汇量的同时也需权衡信息损失的问题。
摘要由CSDN通过智能技术生成

在上一节《Tokenization - NLP(1)》的学习中,我们主要学习了如何将一串字符串分割成单独的字符,并且形成一个词汇集(vocabulary),之后我们将形成的词汇集合转换成计算机可以处理的数字信息,以方便我们做进一步文本分析。这篇博客的主题还是我们如何将文本转成成更有用的成分,让我们能从文本当中提取到更多的信息以便作为特征输入到模型中训练,首先会介绍一下N-grams算法,之后会提到停顿词及英文文本常见的标准化处理手段,如大小写的改变、词干提取等(文章中的某些例子会涉及到正则表达式的使用,但是因为不是主要的内容,对使用到的正则表达式不做过多解释,如果有需要的话自己找下书籍和在网上搜索下如何使用正则表达式)。

一、N-grams

自然语言处理过程中,一个值得我们注意的是,如果我们仅仅是将文本字符串分割成单独的文本,此时我们只是简单的去分析文本中每个字符所代表的潜在意义与我们需要分析的结果的关系性,然而我们忽略一个非常重要的信息,文本的顺序是含有非常的重要信息。举一个简单的例子,“钓鱼”两个词,如果我们单独去分析这两个词,而不是看作一个整体的话,那么我们得到的语意意思就是“钓”是一个动作词,“鱼”是一个名词,而当两个字放在一起的时候,我们知道其实我们想表述的“钓鱼”是我们要做的一个活动(event)。又比如英文“hot dog",我们都知道这个词组想表达的是我们吃的食物”热狗香肠包“,所以我们不希望单独去看hot和dog两个意思,如果是这样子我们可以看出意思相差非常的远,由此我们可以看出文本顺序的重要性。

而实际操作中,我们将这种把文本顺序保留下来的行为称之为建立N-grams模型,也就是我们将一个字符串分割成含有多个词的标识符(tokens)。当然,需要记住的一点是不论是上一节说的还是N-grams,他们都属于文本字符串Tokenization的一个过程。

 1 import re
 2 from nltk.util import ngrams
 3 
 4 sentence = "I love deep learning as it can help me resolve some complicated problems in 2018."
 5 
 6 # tokenize the sentence into tokens
 7 pattern = re.compile(r"([-\s.,;!?])+")
 8 tokens = pattern.split(sentence)
 9 tokens = [x for x in tokens if x and x not in '- \t\n.,;!?']
10 
11 bigrams = list(ngrams(tokens, 2))
12 print([" ".join(x) for x in bigrams])

上述代码的输出结果是:

['I love', 'love deep', 'deep learning', 'learning as', 'as it', 'it can', 'can help', 'help me', 'me resolve', 'resolve some', 'some complicated', 'complicated problems', '
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值