win10+python3.6下安装fastText+fastText原理和使用

fastText的安装+原理和使用

  • 1. 安装fastText
    • 1.1 报错:
    • 1.2 解决方法
  • 2. fastText
    • 2.1 FastText原理
      • 2.1.1 模型架构
      • 2.1.2 层次SoftMax
      • 2.1. 3 N-gram特征
    • 2.2 基于FastText的文本多分类
    • 参考链接

1. 安装fastText

运行环境: win10+Python 3.6+64位

1.1 报错:

直接运行 pip install fastText, 会报以下错误:
“Microsoft Visual C++ 14.0 is required. Get it with “Microsoft Visual C++ Build Tools”: http://landinghub.visualstudio.com/visual-cpp-build-tools”

win10+python3.6下安装fastText+fastText原理和使用_第1张图片

然后上述链接还打不开,找不到内容,,,

1.2 解决方法

首先去python的各种第三方安装包:https://www.lfd.uci.edu/~gohlke/pythonlibs/#fasttext找到适合自己版本的.whl文件,然后下载安装:

pip install C:\Users\janti\Anaconda3\pkgs\fasttext-0.8.22-cp36-cp36m-win_amd64.whl

其中C:\Users\janti\Anaconda3\pkgs 是下载该文件后的文件路径,根据自己实际情况修改。
win10+python3.6下安装fastText+fastText原理和使用_第2张图片

2. fastText

fasttext是facebook开源的一个词向量与文本分类工具,在2016年开源,典型应用场景是“带监督的文本分类问题”。提供简单而高效的文本分类和表征学习的方法,性能比肩深度学习而且速度更快。

fastText结合了自然语言处理和机器学习中最成功的理念。这些包括了使用词袋以及n-gram袋表征语句,还有使用子字(subword)信息,并通过隐藏表征在类别间共享信息。我们另外采用了一个softmax层级(利用了类别不均衡分布的优势)来加速运算过程。

这些不同概念被用于两个不同任务:
有效文本分类 :有监督学习学习
词向量表征:无监督学习

举例来说:fastText能够学会“男孩”、“女孩”、“男人”、“女人”指代的是特定的性别,并且能够将这些数值存在相关文档中。然后,当某个程序在提出一个用户请求(假设是“我女友现在在儿?”),它能够马上在fastText生成的文档中进行查找并且理解用户想要问的是有关女性的问题。

2.1 FastText原理

fastText方法包含三部分,模型架构,层次SoftMax和N-gram特征。

2.1.1 模型架构

fastText的架构和word2vec中的CBOW的架构类似,因为它们的作者都是Facebook的科学家Tomas Mikolov,而且确实fastText也算是words2vec所衍生出来的。

Continuous Bog-Of-Words的模型框架:

win10+python3.6下安装fastText+fastText原理和使用_第3张图片
fastText 的模型框架:
win10+python3.6下安装fastText+fastText原理和使用_第4张图片

fastText 模型输入一个词的序列(一段文本或者一句话),输出这个词序列属于不同类别的概率。
序列中的词和词组组成特征向量,特征向量通过线性变换映射到中间层,中间层再映射到标签。
fastText 在预测标签时使用了非线性激活函数,但在中间层不使用非线性激活函数。 fastText 模型架构和 Word2Vec 中的 CBOW 模型很类似。不同之处在于,fastText 预测标签,而 CBOW 模型预测中间词。

2.1.2 层次SoftMax

对于有大量类别的数据集,fastText使用了一个分层分类器(而非扁平式架构)。不同的类别被整合进树形结构中(想象下二叉树而非 list)。在某些文本分类任务中类别很多,计算线性分类器的复杂度高。为了改善运行时间,fastText 模型使用了层次 Softmax 技巧。层次 Softmax 技巧建立在哈弗曼编码的基础上,对标签进行编码,能够极大地缩小模型预测目标的数量。

fastText 也利用了类别(class)不均衡这个事实(一些类别出现次数比其他的更多),通过使用 Huffman 算法建立用于表征类别的树形结构。因此,频繁出现类别的树形结构的深度要比不频繁出现类别的树形结构的深度要小,这也使得进一步的计算效率更高。

win10+python3.6下安装fastText+fastText原理和使用_第5张图片

2.1. 3 N-gram特征

fastText 可以用于文本分类和句子分类。不管是文本分类还是句子分类,我们常用的特征是词袋模型。但词袋模型不能考虑词之间的顺序,因此 fastText 还加入了 N-gram 特征。

“我 爱 她” 这句话中的词袋模型特征是 “我”,“爱”, “她”。这些特征和句子 “她 爱 我” 的特征是一样的。如果加入 2-Ngram,第一句话的特征还有 “我-爱” 和 “爱-她”,这两句话 “我 爱 她” 和 “她 爱 我” 就能区别开来了。当然啦,为了提高效率,我们需要过滤掉低频的 N-gram。

这部分内容来自:https://blog.csdn.net/zhouguangfei0717/article/details/81003455

2.2 基于FastText的文本多分类

参考链接

https://www.cnblogs.com/gaofighting/p/9552821.html

https://blog.csdn.net/asd136912/article/details/80068241

https://blog.csdn.net/zhouguangfei0717/article/details/81003455

你可能感兴趣的:(NLP)