2018达观杯文本智能处理竞赛复盘打榜(二)TF-IDF实践

英语,分类资源 wordnet.

from nltk.corpus import wordnet as wn
panda=wn.synset('panda.n.01')
hyper=lambda s:s.hypernyms()
list(panda.closure(hyper))

上面展示的是用nltk包抓取WordNet的操作。
几乎所有的NLP都使用了原子符号来表示单词。如何从离散值去建立相似性关系是一个文通。
分布相似性 distributional similarity。通过一个词的同伴知道他的意思。
分布式和分布式表示
TF-IDF(term frequency–inverse doc,ument frequency)是一种用于信息检索与数据挖掘的常用加权技术。TF意思是词频(Term Frequency),IDF意思是逆文本频率指数(Inverse Document Frequency)。

TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。TF-IDF加权的各种形式常被搜索引擎应用,作为文件与用户查询之间相关程度的度量或评级。

词频 (term frequency, TF) 指的是某一个给定的词语在该文件中出现的次数。这个数字通常会被归一化(一般是词频除以文章总词数), 以防止它偏向长的文件。(同一个词语在长文件里可能会比短文件有更高的词频,而不管该词语重要与否。)

逆向文件频率 (inverse document frequency, IDF) IDF的主要思想是:如果包含词条t的文档越少, IDF越大,则说明词条具有很好的类别区分能力。某一特定词语的IDF,可以由总文件数目除以包含该词语之文件的数目,再将得到的商取对数得到。

某一特定文件内的高词语频率,以及该词语在整个文件集合中的低文件频率,可以产生出高权重的TF-IDF。因此,TF-IDF倾向于过滤掉常见的词语,保留重要的词语。
代码实践还不充分,时间有限,模仿同学的写了一个:

from sklearn.feature_extraction.text import TfidfVectorizer
corpus = [
    'Today is Friday.',
    'Friday is the fifthday in a week.',
    'A week has five days.',
]
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(corpus)
print(vectorizer.get_feature_names())
 
print(X.shape)

参考资料
1)CS 224:https://www.bilibili.com/video/av41393758/?p=2
2)https://github.com/Heitao5200/DGB/blob/master/feature/feature_code/tfidf.py

你可能感兴趣的:(2018达观杯文本智能处理竞赛复盘打榜(二)TF-IDF实践)