ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

有关TF与IDF

2021-05-19 20:01:55  阅读:207  来源: 互联网

标签:有关 watch 单词 IDF 文档 likes TF John


有关TF与IDF

词袋模型

在进入TF的了解之前我们需要了解词袋模型:
Bag-of-words model (BoW model) 最早出现在自然语言处理(Natural Language Processing)和信息检索(Information Retrieval)领域.。该模型忽略掉文本的语法和语序等要素,将其仅仅看作是若干个词汇的集合,文档中每个单词的出现都是独立的。BoW使用一组无序的单词(words)来表达一段文字或一个文档.。近年来,BoW模型副也被广泛应用于计算机视觉中。首先给出两个简单的文本文档如下:
John likes to watch movies. Mary likes too.
John also likes to watch football games.
基于上述两个文档中出现的单词,构建如下一个词典 (dictionary):
{“John”: 1, “likes”: 2,“to”: 3, “watch”: 4, “movies”: 5,“also”: 6, “football”: 7, “games”: 8,“Mary”: 9, “too”: 10}
上面的词典中包含10个单词, 每个单词有唯一的索引, 那么每个文本我们可以使用一个10维的向量来表示。如下:
[1, 2, 1, 1, 1, 0, 0, 0, 1, 1]→[‘John’,‘likes’,‘to’,‘watch’,‘movies’,‘also’,‘football’,‘games’,‘Mary’,‘too’]
[1, 1,1, 1, 0, 1, 1, 1, 0, 0]→[‘John’,‘likes’,‘to’,‘watch’,‘movies’,‘also’,‘football’,‘games’,‘Mary’,‘too’]
该向量与原来文本中单词出现的顺序没有关系,而是词典中每个单词在文本中出现的频率。

TF

TF(term-frequency)是词频,是指将段落中的所有词提取出来并组成字典再来对原来的段落重新编码的过程,词频完成的就是创建词袋Bow模型的过程

from sklearn.feature_extraction.text import CountVectorizer
test=['你想吃啥啥啥啥子牙','我啥也不想吃']
tf=CountVectorizer(token_pattern='[a-zA-Z|\u4e00-\u9fa5]')
test1=tf.fit_transform(test)
print(tf.get_feature_names())
print(test1.A)

IDF

idf反向文档频率 ( inverse document-frequency )
原始的词项频率会面临一个问题,在进行查询和计算的时候,所有的词项都被认为是同等重要的。但是实际上有些词汇虽然出现频率很高,但是对相关度计算却没什么作用。比如,在对一部电影的评价的时候,这部电影名字会出现很多次,但是电影名字对电影的评价好坏却没有什么影响。所以我们就提供了如下的机制来解决这个问题:给文档集频率较高的词项赋予较低的权重,其中文档集频率值词项在文档集中出现的次数,这样便能解决上述问题。
原理如下:
在这里插入图片描述
idf调库代码如下(test与TFtest相同):

from sklearn.feature_extraction.text import TfidfVectorizer
idf=TfidfVectorizer(norm=None,token_pattern="[a-zA-Z|\u4e00-\u9fa5]")
test2=idf.fit_transform(test)
print(idf.get_feature_names())
print(test2.A)
import numpy as np
result=np.log(3/2)+1
print(result)

以上就是有关TF与IDF原理及代码一些简单介绍

标签:有关,watch,单词,IDF,文档,likes,TF,John
来源: https://blog.51cto.com/u_15210794/2786733

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有