重要的是,该量化办法可以用于含有词汇表中没有出现的单词典文档。这些单词会被忽视掉落,然后在获得的向量结不雅中不会给出出现次数。
逆文档频率(Inverse Document Frequency):单词在文档中出现的频率越高,IDF值袈浣低。
- # 编码其他文档
- text2 = ["the puppy"]
- vector = vectorizer.transform(text2)
- print(vector.toarray())
运行示例,显示出编码稀少向量的矩阵情势,可以看出词汇表中的单词出现了1次,而没在词汇表中的单词完全被忽视了。
- [[0 0 0 0 0 0 0 1]]
编码的向量可以直接用于机械进修算法。
TfidfVectorizer——计算单词权重
统计单词出现次数是一个很好的切入点,但也是很基本的特点。
简单的次数统计的一个问题在于,有些悼?船例如“the”会出现很多次,它们的统计数量对于编码向量没有太大年夜意义。
一个替代办法是统计单词权重,今朝最风行的办法是TF-IDF。这是一个缩锌?船代表“词频-逆文档频率”(Term Frequency–Inverse Document Frequency),代表一个词对于一个文档的重要程度。
词频(Term Frequency):指的是某一个给定的词语在一篇文档中出现的次数。
撇开数学不说,TF-IDF给出的是单词权重,会把更有意思的单词标注出来,例如仅在某篇文档中频率很高但不会在所有文档中都频繁出现的词。
TfidfVectorizer可以词条化文档,进修词汇表以及逆文档频率权重,并且可以编码新文档。或者,如不雅你已经用CountVectorizer进修获得了向量,你可以对它应用Tfidftransformer函数,计算逆文档频率并且开端编码文件。
同样的,创建(create)、拟合(fit)以及变换(transform)函数的调用都与CountVectorizer雷同。
下面是一个应用TfidfVectorizer来进修词汇表和3篇小文档的逆文档频率的示例,并对个一一篇文档进行编码。
- from sklearn.feature_extraction.text import TfidfVectorizer
- # 文本文档列表
- text = ["The quick brown fox jumped over the lazy dog.",
- "The dog.",
- "The fox"]
- # 创建变换函数
- vectorizer = TfidfVectorizer()
- # 词条化以及创建词汇表
- vectorizer.fit(text)
- # 总结
- print(vectorizer.vocabulary_)
- print(vectorizer.idf_)
- # 编码文档
- vector = vectorizer.transform([text[0]])
- # 总结编码文档
- print(vector.shape)
- print(vector.toarray())
上例中,我们大年夜文档中学到了含有8个单词典词汇表,在输出向量中,每个单词都分派了一个独一的┞符数索引。
我们计算了词汇表中每个单词典逆文档频率,给不雅测到的最常出现的单词“the”(索引号为7)分派了最低的分数1.0。
- {'fox': 2, 'lazy': 4, 'dog': 1, 'quick': 6, 'the': 7, 'over': 5, 'brown': 0, 'jumped': 3}
- [ 1.69314718 1.28768207 1.28768207 1.69314718 1.69314718 1.69314718
推荐阅读
传递提到,本次本次对31个省(区、市)及新疆临盆扶植兵团的互联网政务办事平台进行了检查,共随机抽查平台201个,个中省级平台30个、地市级平台42个、区县级平台129个。除核查各平台功能是>>>详细阅读
本文标题:如何使用Scikit-learn实现用于机器学习的文本数据准备
地址:http://www.17bianji.com/lsqh/38463.html
1/2 1