新手探索NLP(一)

本文介绍了NLP的基础知识,包括概念和正则表达式,重点讲解了数据清洗模块,如去掉标点、切分词、去除停止词及Stemming与Lemmatizing的区别。随后讨论了Vectorizing的三种方法:Count Vectorization、N-gram Vectorization和Inverse Document Frequency Weighting。最后,提到了特征工程在创建新特征和转换现有特征方面的作用。

目录

基础知识模块

1. 概念

2. 正则化表达

Data Cleaning模块

3. 去掉标点

4. 切分词功能

5. 去掉停止词

6. Stemming & Lemmatizing

stemming

lemmatizing

两者的异同

Vectorizing模块 

7. Count Vectorization

 8. N-gram Vectorization

9. Inverse Document Frequency Weighting 

Feature Engineering模块

10. Creating New Features

11. Transformation

 


基础知识模块

1. 概念

使得机器能够理解人类的语言。

包含的方向:

  1. sentiment analysis
  2. topic modeling
  3. text classification
  4. sentence segmentation/ part-of-speech tagging

步骤:

  1. raw text
  2. tokenize
  3. clean text (remove stop words, punctuation, stemming)
  4. vectorize (convert to numeric form)

2. 正则化表达

在学习NLP之前,需要先学习regular expression. 

在python中,调用re包。

re.split('s+', string)根据第一个参数分割字符串

re.findall(pattern, string)在字符串中寻找pattern

re.sub(pattern, replacement pattern, string)在字符串中将pattern替换为新的字符串

 

正则表达式是case sensitive. 

正则表达式元字符如下:. ^ $ * + ? { } [ ] \ | ( ) 
 . 匹配除换行符以外的所以字符 
 ^ 规定匹配模式必须出现在目标字符串的开头,例如:^hell    hello    hellboy 
 $ 规定匹配模式必须出现在目标字符串的结尾,例如:ar$   car   bar 
* 其前一个字符必须在目标对象中连续出现零次或多次 
+ 其前一个字符必须在目标对象中连续出现一次或多次 
? 其前一个字符必须在目标对象中连续出现一次或零次 
{n} 匹配确定的n次,例如:o{2} oo 
{n,} 至少匹配n次,例如:o{2, } oo ooo oooo ...
{n,m} 至少匹配n次,至多匹配m次,例如:o{2,3} oo ooo 
[A-Z] A-Z内任意一个大写字母 
[a-z] a-z内任意一个小写字母 
[0-9] 0-9内任意一个数字,等价于 \d 
[A-Za-z0-9] 任意一个字母或数字,等价于 \w

[^] 表示非,与上面^不同。 
\ 转义字符
| 管道符号,A和B是任意的RE,那么A|B就是匹配A或者B的一个新的RE。 


\s 用于匹配单个空格,包括tab键和换行符 
\S 用于匹配单个空格之外的所有字符 
\d 匹配0-9的数字 
\w 匹配字母、数字或下划线 
\W 匹配所有和\w不匹配的字符 

Data Cleaning模块

3. 去掉标点

def remove_punct(text):
    text_nopunct = "".join([char for char in text if char not in string.punctuation])
    return text_nopunct

如果单独使用[char for char in text if char not in string.punctuation],没有join方法,会返回一个个的字母。注意必须使用方括号行成一个list,使用圆括号会返回一个generator。

data['body_text_clean'] = data.body_text.apply(lambda x: remove_punct(x))

4. 切分词功能

def tokenize(text):
    tokens = re.split('\W+
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值