当前位置: 首页 > 工具软件 > FastText > 使用案例 >

fastText

江鸿羲
2023-12-01

1. pip3 install fastTest

报错:

ModuleNotFoundError: No module named 'Cython'
    
    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /private/var/folders/mv/wj3sbtd54rs9tkm4dfhw7zj80000gn/T/pip-install-v49fp01i/fastText/


2. pip3 install Cython

在安装fastText

 

3. python3调用仍报错

ModuleNotFoundError: No module named 'fastText'

4. 解决,先卸载已安装的fastText,从官网git下载fastText,make,install

https://fasttext.cc/docs/en/supervised-tutorial.html

 

方案二:(转载地址https://blog.csdn.net/qq_32023541/article/details/80844036

fastText 安装

fasttext 是一个有效的学习字词表达和句子分类的库。建立在现代 Mac OS 和 Linux 发行版上。因为它使用了 C++11 的特性,所以需要一个支持 C++11 的编译器,这些包括:

gcc-4.8 或更高版本

clang-3.3 或更高版本

安装 fasttext

(1)最简单的方法是使用 pip 安装

    $ git clone https://github.com/facebookresearch/fastText.git
    $ cd fastText
    $ pip install .

(2)也可以使用 setuptools 安装

    $ git clone https://github.com/facebookresearch/fastText.git
    $ cd fastText
    $ python setup.py install

(3)现在可以直接安装

pip install fasttext

一般来说,正确处理数据是很重要的,fasttext 采用 UTF-8 编码的文本。所有的文本必须是 Python2的Unicode 和Python3的str。传递的文本将被 pybind11 编码为 UTF-8 ,然后传递给 fasttext c++ 库。这意味着在构建模型时使用 UTF-8 编码的文本非常重要。在类 unix 系统中,可以使用 iconv 转换文本。

fasttext 将基于以下 ASCII 字符进行标记(将文本分割成块)。特别是,它不知道 UTF-8 空格。建议将 UTF-8空格/字符边界转换成下列符号之一作为批准:

空格  tab 空字符 回车符


fastText 使用

fasttext 包有两个主要用例:单词表示学习 和 文本分类
1.单词表示学习

为了学习单词向量,我们可以使用 fasttext.skipgram 和 fasttext.cbow 功能

    import fasttext
    # skipgram model
    model = fasttext.skipgram('data.txt','model')
    print model.words # 字典中的词汇列表
     
    # CBOW model
    model = fasttext.cbow('data.txt','model')
    print model.words

data.txt 是一个以 UTF-8 编码的训练文本文件,在默认情况下,单词向量将会考虑到 n-grams 的3 到 6 个字符。在优化结束时,程序将保存 2 个文件: model.bin 和 model.vec

获取词汇表外单词的向量,已经训练过的模型可以用来计算词汇表外的词汇向量。

    # 单词 'king' 的词向量
    print model['king']

加载训练好的词向量模型,我们可以使用 fasttext.load_model 方法

    # 加载前面训练好的模型 model.bin
    model = fasttext.load_model("model.bin")
    print model.words # model 中的词汇列表
    print model["king"] # "king" 的词向量

2.文本分类

该包还可以用于训练监督文本分类器,并从 fasttext 加载经过训练的分类器

训练文本分类器如下,data.train.txt 是一个包含训练语句和标签的文本文件,可以先参考上一节中训练语料的格式。默认情况下,我们假定标签是由字符串 __label__ 为前缀的单词。

    # 训练文本分类器
    classifier = fasttext.supervised('data.train.txt','model')
    # 还可以用 label_prefix 指定标签前缀
    classifier = fasttext.supervised('data.train.txt','model',label_prefix = '__label__')

将输出两个文件: model.bin 和 model.vec

一旦模型被训练,我们可以计算分类器在测试数据集上的准确率和召回率来评估模型 classifer.test 方法

    # 加载模型
    classifier = fasttext.load_model("model.bin",label_prefix = "__label__")
     
    # 使用 classifier.test 方法在测试数据集上评估模型
    result = classifier.test("test.txt")
    print "准确率:" , result.precision
    print "召回率:" , result.recall
    print "Number of examples:", result.nexamples

为了使用训练的模型预测文本列表中最有可能的标签,我们可以用 classifier.predict 方法

    texts = ["example very long text 1","example very longtext 2"]
    labels = classifier.predict(texts)
    print labels

或者加上可能性,也就是这个标签的预测概率,我们用 classifier.predict_proba 方法

    texts = ["example very long text 1","example very longtext 2"]
    labels = classifier.predict_proba(texts)
    print labels

我们也可以指定 k 值,从分类器中得到 k-best 标签

    # 不含预测可能性的 k = 3
    labels = classifier.predict(texts,k = 3)
     
    # 含可能性的 k = 3
    labels = classifier.predict_proba(texts,k = 3)
---------------------  
作者:ouprince  
来源:CSDN  
原文:https://blog.csdn.net/qq_32023541/article/details/80844036  
版权声明:本文为博主原创文章,转载请附上博文链接!

 类似资料:

相关阅读

相关文章

相关问答