NLP基础知识
自带库
- NLTK:英文的库
- jieba:中文的库
文本处理流程
分词
英文用NLTK,中文用jieba,比较难处理的时候可能要借助正则表达式
复杂的词形
- 1、inflection变化:不影响词性
- walk->walking->walked
- 2、derivation引申:影响词性
- nation(n)->national(adj)->nationalize(v)
词形归一化
1、Stemming词干提取:把不影响词性的后缀去掉
walking->walk
walked->walk
2、Lemmatization词形归一:把各类型的词变性,归一
went归一成go
are归一成be
3、Lemmatization出现的问题(借助词性标注完成)
比如原本是are–>are,is–>is
标注后are(v)–>be,is(v)–>be
去除停用词
比如中文的:的,地,得
比如英文的:the,this
NLP实例
情感分析
数据
s1=’this is a good book’
s2=’this is a awesome book’
s3=’this is a bad book’
s4=’this is a terrible book’
把数据变成向量
统计上文出现过的所有单词:this、is 、a 、good 、awesome、 bad、 terrible、 book,然后每个样本的词向量就是这个单词是否出现过
如:s1=[1 1 1 1 0 0 0 1]
训练
然后再用ML方法训练
文本相似度
we | you | he | work | happy | are |
---|---|---|---|---|---|
1 | 0 | 3 | 0 | 1 | 1 |
1 | 0 | 2 | 0 | 1 | 1 |
0 | 1 | 0 | 1 | 0 | 0 |
这里一共表示了三个样本,然后我们提取出对应的词向量,然后用一些求两个向量的相似度的方法来计算文本的相似度,比如余弦相似度
文本分类
TF-IDF概念
- TF:Term Frequency,用来衡量一个term在文档中出现得有多频繁
- T F ( t ) = t 出 现 在 文 档 中 的 次 数 文 档 中 的 t e r m 总 数 TF(t)={t出现在文档中的次数\over 文档中的term总数} TF(t)=文档中的term总数t出现在文档中的次数
- IDF:Inverse Document Frequency,衡量一个term有多重要
- I D F ( t ) = l n ( 文 档 总 数 含 有 t 的 文 档 总 数 ) IDF(t)=ln(\frac{文档总数}{含有t的文档总数}) IDF(t)=ln(含有t的文档总数文档总数)
- T F − I D F = T F ∗ I D F TF-IDF=TF*IDF TF−IDF=TF∗IDF(注意这个是杠“-”)
TF-IDF实例
⼀个⽂档有100个单词,其中单词baby出现了3次;且一共有10M的⽂档, baby出现在其中的1000个⽂档中。
T
F
(
b
a
b
y
)
=
3
100
=
0.03
I
D
F
(
b
a
b
y
)
=
l
n
(
10000000
1000
)
=
4
T
F
−
I
D
F
(
b
a
b
y
)
=
T
F
(
b
a
b
y
)
∗
I
D
F
(
b
a
b
y
)
=
0.03
∗
4
=
0.12
TF(baby)={3\over 100}=0.03\\ IDF(baby)=ln({10000000\over 1000})=4\\ TF-IDF(baby)=TF(baby)*IDF(baby)=0.03*4=0.12
TF(baby)=1003=0.03IDF(baby)=ln(100010000000)=4TF−IDF(baby)=TF(baby)∗IDF(baby)=0.03∗4=0.12