nlp知识点

本文一切秉持短小精悍,通俗易懂的思想

一. tf-idf

1.1 思想

词并不是出现次数越多就越重要,原则是出现在越少的文档重要性就越高,向量长度等于词库大小V
词频(term frequency,TF):指的是某一个给定的词语该文件中出现的频率。
这个数字是对词数(term count)的归一化,以防止它偏向长的文件。(同一个词语在长文件里可能会比短文件有更高的词数,而不管该词语重要与否)
逆向文件频率(inverse document frequency,IDF):由总文件数目除以包含该词语之文件的数目,再log得到,是一个词语普遍重要性的度量。

1.2 举例

在这里插入图片描述

1.3 代码应用

TfidfTransformer + CountVectorizer = TfidfVectorizer

句子转向量

from sklearn.feature_extraction.text import TfidfVectorizer

cv=TfidfVectorizer(smooth_idf=True,stop_words='english') #smooth默认为true,即idf分母+1
vec=cv.fit_transform(['the moon is so sweet tonight.','wind is also gentle.'])#传入句子组成的list
print(cv.get_feature_names())

arr=vec.toarray()
print(arr)

>>>['gentle', 'moon', 'sweet', 'tonight', 'wind']
>>>[[0.         0.57735027 0.57735027 0.57735027 0.        ]
	[0.70710678 0.         0.         0.         0.70710678]]

二. word2vec

2.1 思想

2.2 举例

2.3 代码

三. fasttext

2.1 思想

2.2 举例

2.3 代码

四. 三步搞定用lda无监督算法进行分类

2.1 思想

2.2 举例

2.3 代码

datatext是这样的二重list

[['杏林',
  '芳菲',
  '广东',
  '中医药',
  '曹磊',
  '编著',
  '杏林'],
  [],]
from gensim import corpora
from gensim.models import LdaModel
from gensim.corpora import Dictionary

train = datatext
# 1. 将数据dictionaty
dictionary = corpora.Dictionary(train)
corpus = [ dictionary.doc2bow(text) for text in train ]

# 2. 构建模型
num_topics = 33
chunksize = 2000
passes = 20
iterations = 400
eval_every = None  # Don't evaluate model perplexity, takes too much time.

lda = LdaModel(
    corpus=corpus,
    id2word=dictionary,
    chunksize=chunksize,
    alpha='auto',
    eta='auto',
    iterations=iterations,
    num_topics=num_topics,
    passes=passes,
#     eval_every=eval_every
)
# 3. 显示分类结果
topic_list=lda.print_topics(33)#33代表全部主题list,还可以是0,1,……,32来指定特定主题
 
for topic in topic_list:
    print(topic)

在这里插入图片描述
查看特定文档的分类情况

test_doc=train[2]#文学类

doc_bow = dictionary.doc2bow(test_doc)      # 1. 文档转换成bow
doc_lda = lda[doc_bow]                   # 2. 得到新文档的主题分布
print(doc_lda)							#3. 输出新文档的主题分布
print ("-----------------------------------------") 
#查看主题词 和分布概率
for topic in doc_lda:
    print ("%s\t%f\n"%(lda.print_topic(topic[0]), topic[1]))

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值