零蚀
介绍
-
NLTK
[🔗 NLTK 库]
[🔗 jieba中文分词]python的一个语言处理库,具有词性分类,分析等。英文一般用NLTK,中文用jieba,除了这些,在NLP中也有一些常用的专业术语:
- 语料:语言材料。
- 词性标注:就是给每个词作标签,是动词名词,还是其他。
- 分词 : 切分语句。
-
TF-IDF
-
通过概率统计进行分词的有以下内容:
- HMM 隐马尔科夫模型
- CRF 条件随机场
- 深度学习
-
TF :(term Frequency)衡量一个term(词,术语)在语句中出现的频率,公式如下: T F ( t ) = t 在 文 档 中 出 现 的 次 数 文 档 中 t e r m ( t ) 的 总 数 TF(t)=\frac{t在文档中出现的次数}{文档中term(t)的总数} TF(t)=文档中term(t)的总数t在文档中出现的次数
-
IDF :inverse Document Frequency , 衡量一个term有多重要,公式如下: I D F ( t ) = l o g e ( 文 档 总 数 含 有 t 的 文 档 总 数 ) IDF(t)=log_e(\frac{文档总数}{含有t的文档总数}) IDF(t)=loge(含有t的文档总数文档总数)
-
TF-IDF=TF*IDF,他的作用:提取文本的向量特征,python中是有这个方法的库,叫sklearn,而NLTK&jieba中也有这个方法的。
-
-
TF-IDF在python 中的应用:
如果要查相关的方法,直接在官网的搜索中是无法定位的,需要在classes下我们导入的import对象里面去找我们需要的内容。[🔗 sklearn中文官网]
sklearn的使用
from sklearn.feature_extraction.text import TfidfVectorizer # 语料 corpus = ["我 爱 中国", "因为 我 出生 在 这个 国家", "我 想 做 一个 超人,超越 自己 的 人", "我 觉得 我 可以 更 优秀", "我 不 太 在意 别人 的 看法,因为 我 的 女朋友 也 不在意"] # 计算文本频率 tfidf = TfidfVectorizer() print("**********************TF-IDF矩阵**********************") # TF-IDF (TF*IDF)(得到矩阵位置,和关键词的概率) result = tfidf.fit_transform(corpus).toarray() print(result) print("**********************统计关键词**********************") # 统计关键词 word = tfidf.get_feature_names() print(word) print("**********************打印关键词和它对应的次数**********************") # 打印关键词和它对应的次数 for v, k in tfidf.vocabulary_.items(): print(v, k) print("**********************对比第i类文本词语tfidf的比重**********************") # 对比第i类文本词语tfidf的比重 for i in range(len(result)): print('------', i, '------') for j in range(len(word)): print(word[j],result[i][j])
print
**********************TF-IDF矩阵********************** [[0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ] [0. 0. 0. 0. 0.52335825 0. 0. 0.42224214 0.52335825 0. 0. 0. 0. 0. 0. 0. 0.52335825] [0.5 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.5 0. 0.5 0.5 0. ] [0. 0. 0. 0.57735027 0. 0. 0.57735027 0. 0. 0. 0. 0. 0. 0.57735027 0. 0. 0. ] [0. 0.42066906 0. 0. 0. 0.42066906 0. 0.33939315 0. 0.42066906 0.42066906 0.42066906 0. 0. 0. 0. 0. ]] **********************统计关键词********************** ['一个', '不在意', '中国', '优秀', '出生', '别人', '可以', '因为', '国家', '在意', '女朋友', '看法', '自己', '觉得', '超人', '超越', '这个'] **********************打印关键词和它对应的次数********************** 中国 2 因为 7 出生 4 这个 16 国家 8 一个 0 超人 14 超越 15 自己 12 觉得 13 可以 6 优秀 3 在意 9 别人 5 看法 11 女朋友 10 不在意 1 **********************对比第i类文本词语tfidf的比重********************** ------ 0 ------ 一个 0.0 不在意 0.0 中国 1.0 优秀 0.0 出生 0.0 别人 0.0 可以 0.0 因为 0.0 国家 0.0 在意 0.0 女朋友 0.0 看法 0.0 自己 0.0 觉得 0.0 超人 0.0 超越 0.0 这个 0.0 ------ 1 ------ 一个 0.0 不在意 0.0 中国 0.0 优秀 0.0 出生 0.5233582502695435 别人 0.0 可以 0.0 因为 0.4222421409859579 国家 0.5233582502695435 在意 0.0 女朋友 0.0 看法 0.0 自己 0.0 觉得 0.0 超人 0.0 超越 0.0 这个 0.5233582502695435 ------ 2 ------ 一个 0.5 不在意 0.0 中国 0.0 优秀 0.0 出生 0.0 别人 0.0 可以 0.0 因为 0.0 国家 0.0 在意 0.0 女朋友 0.0 看法 0.0 自己 0.5 觉得 0.0 超人 0.5 超越 0.5 这个 0.0 ------ 3 ------ 一个 0.0 不在意 0.0 中国 0.0 优秀 0.5773502691896258 出生 0.0 别人 0.0 可以 0.5773502691896258 因为 0.0 国家 0.0 在意 0.0 女朋友 0.0 看法 0.0 自己 0.0 觉得 0.5773502691896258 超人 0.0 超越 0.0 这个 0.0 ------ 4 ------ 一个 0.0 不在意 0.4206690600631704 中国 0.0 优秀 0.0 出生 0.0 别人 0.4206690600631704 可以 0.0 因为 0.3393931489111758 国家 0.0 在意 0.4206690600631704 女朋友 0.4206690600631704 看法 0.4206690600631704 自己 0.0 觉得 0.0 超人 0.0 超越 0.0 这个 0.0
NLKT的使用(可以直接给出结果)
from nltk.text import TextCollection corpus=TextCollection(["I come from China", "I will be","I can do it", "I want win,I want win everytime", "The work maybe best to makelife,but can't bring you with what you want"]) tfidf=corpus.tf_idf("work","I want") print(tfidf)