目录
9. Inverse Document Frequency Weighting
基础知识模块
1. 概念
使得机器能够理解人类的语言。
包含的方向:
- sentiment analysis
- topic modeling
- text classification
- sentence segmentation/ part-of-speech tagging
步骤:
- raw text
- tokenize
- clean text (remove stop words, punctuation, stemming)
- 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+