证监会:加强对拟上市公司投资的离职系统员工监管
06-17
背景?我们可以使用标准多核CPU在不到十分钟的时间内训练fastText,并在不到一分钟的时间内对K类中的50万个句子进行分类。首先引用论文中的一段话,看看作者是如何评价fasttext模型的性能的。
本文的模型非常简单。之前了解过word2vec的同学可以发现它和CBOW的模型框架非常相似。
,例如,输入是一个句子,结果是该句子的单词或n-gram。每一个对应一个向量,然后对这些向量求平均得到文本向量,然后用平均向量得到预测标签。
当数量不多时,就是最简单的softmax;当标签数量巨大时,使用“hierarchical softmax”。该模型非常简单,没有什么可说的。
提一下论文中的两个trick:“hierarchical softmax”,当类别较多时,构建一个Huffman编码树来加速softmax层的计算,这和word2vec中之前的trick是一样的。 “N-gram特征”只使用unigram,否则会丢失词序信息,所以我们通过添加N-gram特征来补充,并使用哈希来减少N-gram的存储。
介绍。本博客将简单记录一下使用python版本的fastText对不同类别的新闻进行分类,中间会用到口吃分词。
,用pandas进行数据处理。可以使用清华大学的新闻数据。
安装取决于Python版本: 3.6 安装stutter分词和fasttext代码语言: javascript copy pip install jiebapip install fasttext分词处理 分词过程中,一些常用的停用词会被删除。对于停用词,可以使用 jiebaimport pandas as pdimport codecsimport mathimport randomstopwords_set = set( )basedir = '/Users/derry/Desktop/Data/'# 分词结果文件 train_file = codecs.open(basedir + "news.data.seg .train", 'w', 'utf-8')test_file = 编解码器。
open(basedir + "news.data.seg.test", 'w', 'utf-8')# 停止词文件 open(basedir + 'stop_text.txt', 'r', encoding='utf-8 ' ) as infile: 对于 infile 中的行: stopwords_set.add(line.strip())train_data = pd.read_table(basedir + 'News_info_train.txt', header=None, error_bad_lines=False)label_data = pd.read_table(basedir + ' News_pic_label_train.txt', header=None, error_bad_lines=False)train_data.drop([2], axis=1, inplace=True)train_data.columns = ['id', 'text']label_data.drop([2, 3 ],axis=1, inplace=True)label_data.columns = ['id', 'class']train_data = pd.merge(train_data, label_data, on='id', how='outer')对于索引,train_data 中的行。 iterrows(): # 结巴分词 seg_text = jieba.cut(row['text'].replace("\t", " ").replace("\n", " ")) Outline = " ".join(seg_text )outline = " ".join(outline.split()) # 去失效词与HTML标签outline_list =outline.split(" ")outline_list_filter = [item for item inoutline_list if item not in stopwords_set]outline = " ". join(outline_list_filter) # 写入 if not math.isnan(row['class']): Outline = Outline + "\t__label__" + str(int(row['class'])) + "\n" train_file.write (outline) train_file.flush() # 划分数据集 # if random.random() > 0.7: # test_file.write(outline) # test_file.flush() # else: # train_file.write(outline) # train_file.flush()train_file.close()test_file.close() 分类预测 当使用fasttext进行训练时,调整参数word_ngrams。
原来的默认值是1,效果可能会更好,但是需要在最后加上bucket=(默认值),否则会出错。我在问题里查了一下。
看来fasttext的Python版本比较旧。如果你使用官方的C++版本就不会出现这种情况。
问题。
版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
标签:
相关文章
06-17
06-21
06-21
06-18
06-17
06-17
06-17
06-18
最新文章
【玩转GPU】ControlNet初学者生存指南
【实战】获取小程序中用户的城市信息(附源码)
包雪雪简单介绍Vue.js:开学
Go进阶:使用Gin框架简单实现服务端渲染
线程池介绍及实际案例分享
JMeter 注释 18 - JMeter 常用配置组件介绍
基于Sentry的大数据权限解决方案
【云+社区年度征文集】GPE监控介绍及使用