1.独热编码
1.1 独热编码的概念
- 在英文中称作One-Hot code,直观来说就是有多少个状态就有多少比特,而且只有一个比特为1,其他全为0的一种码制。
- 假如有三种颜色特征:红、黄、蓝。红=1,黄=2,蓝=3;红<黄<蓝;
- 即红色:1 0 0 ,黄色: 0 1 0,蓝色:0 0 1
1.2 独热编码表示词向量
- John likes to watch movies. Mary likes too.
- John also likes to watch football games.
1.3 One-Hot编码的实现
from sklearn import preprocessing
enc = preprocessing.OneHotEncoder()
enc.fit( [
[0, 0, 3],
[1, 1, 0],
[0, 2, 1],
[1, 0, 2]]
)
res = enc.transform([[0, 1, 3]]).toarray()
print(res)
[[1. 0. 0. 1. 0. 0. 0. 0. 1.]]
2. 词袋模型
2.1 词袋模型的概念
- 词袋模型(Bag of Words,简称BoW),即将所有词语装进一个袋子里,不考虑其词法和语序的问题,即每个词语都是独立的,把每一个单词都进行统计,同时计算每个单词出现的次数。
- 词袋模型的三部曲:分词(tokenizing),统计修订词特征值(counting)与标准化(normalizing)。
2.2 句子的向量表示
- 文档的向量表示可以直接将各词的词向量表示加和。
2.3 词袋模型的实现
from sklearn.feature_extraction.text import CountVectorizer
texts = ["orange banana apple grape",
"banana apple apple",
"grape",
'orange apple']
cv = CountVectorizer()
cv_fit = cv.fit_transform(texts)
print(cv.vocabulary_)
print(cv_fit.toarray())
"""
运行结果:
[[0 1 1 0 1]
[1 0 1 0 0]
[0 0 0 0 0]
[0 0 0 1 0]]
{'orange banana': 4, 'banana apple': 2, 'apple grape': 1, 'apple apple': 0, 'orange apple': 3}
"""
3 词频逆文本频率
3.1 TF-IDF的概念
- TF-IDF(Term Frequency–Inverse Document Frequency),即“词频-逆文本频率”,是一种用于资讯检索与文本挖掘的常用加权技术
- 词频(Term Frequency,TF):指的是某一个给定的词语在该文件中出现的频率.
- 逆向文件频率(Inverse Document Frequency,IDF):是一个词语普遍重要性的度量.
3.2 TF-IDF的实现
from sklearn.feature_extraction.text import TfidfVectorizer
texts = ["orange banana apple grape", "banana apple apple",
"grape", 'orange apple']
cv = TfidfVectorizer()
cv_fit = cv.fit_transform(texts)
print(cv.vocabulary_)
print(cv_fit.toarray())
运行结果:
F:\1\Users\tarena\PycharmProjects\nlp\venv\Scripts\python.exe D:/Users/tarena/PycharmProjects/nlp/unit11/tfidf.py
{'orange': 3, 'banana': 1, 'apple': 0, 'grape': 2}
[[0.42344193 0.52303503 0.52303503 0.52303503]
[0.8508161 0.52546357 0. 0. ]
[0. 0. 1. 0. ]
[0.62922751 0. 0. 0.77722116]]
"""