FastText使用介绍

news2024/11/12 0:35:01

FastText概念介绍

FastText 是一个由 Facebook 开发的用于文本分类和向量化的开源工具,它是 Word2Vec 的一个拓展,能够处理词汇中的子词信息。FastText 基于神经网络模型,可以将词语表示为高维向量,并且保留了词汇中的语义信息。FastText 的主要作用包括:

  1. 文本分类:FastText 可以对文本进行分类。它通过学习文本中的特征,可以将文本分类成不同的类别。这使得 FastText 在自然语言处理和文本分类任务中具有广泛的应用。

  2. 词向量表示:FastText 可以将每个词语表示为高维向量。这些向量包含词语的语义信息,因此可以用于衡量不同词语之间的相似度。这些向量可以用于各种自然语言处理任务,如词义消歧、文本分类、聚类等。

  3. 处理低频词:FastText 能够处理低频词。由于词向量是由词汇的子词组成的,因此即使一个词语很少出现在训练数据中,它的向量仍然可以被计算出来。这使得 FastText 能够更好地处理低频词,从而提高了其在自然语言处理任务中的性能。

  4. 训练速度快:FastText 可以在大规模语料库上快速训练模型。这得益于其采用的分层 softmax 技术和并行化训练方法。这使得 FastText 成为处理大量文本数据的理想选择。

文本分类Demo

上面是理论介绍,接下来看看如何使用FastText完成情感分析,下面的代码中先准备了一份训练数据,这份训练数据来源于kaggle,训练数据中包含多条被标记为negative,positive,neutral的句子。下面的代码中将csv格式的原始数据,转换成fasttext能读取的txt格式的数据,然后调用fasttext.train_supervised进行训练,训练完成后,给了三条测试数据来检验模型的正确率。

import fasttext
import pandas as pd

# Load the training data from CSV file
df = pd.read_csv('./fasttext/sentiment_data.csv')
sentences = df['Sentence'].tolist()
labels = df['Sentiment'].tolist()

# Create the FastText training data file
with open('./fasttext/train.txt', 'w') as f:
    for sentence, label in zip(sentences, labels):
        f.write(f"__label__{label} {sentence}\n")

# Train the model
model = fasttext.train_supervised(
    input='./fasttext/train.txt', epoch=25, lr=1.0, wordNgrams=2, bucket=200000, dim=50, loss='ova')

# Test the model
test_data = ["This movie is great!",
             "I hate this product,it is very bad.", "Operating loss totalled EUR 3.2 mn "]
for sentence in test_data:
    result = model.predict(sentence)
    label = result[0][0].replace('__label__', '')
    print(f"Sentence: {sentence}\nSentiment: {label}\n")

下面是三条测试数据的预测结果,可以看到第二个结果并不正确,实际是一句negative的句子,但是预测结果是positive,预测不正确和训练数据也有很大关系,上面的csv文件只有几千条数据而已,第三句是从训练数据中提取的某个句子的部分,预测就正确了。

上面的例子是通过传入数据训练模型,传入测试数据检测训练的模型的正确率。实际还可以下载fasttext预训练好的模型,直接传输测试数据看模型的正确率。下面的代码中直接加载训练好的sentiment_model.bin模型,官网提供了各种预训练模型下载。因为模型一般都是G级别。

import fasttext
import pandas as pd

# Load the pre-trained model
model = fasttext.load_model('sentiment_model.bin')

# Load the test dataset
test_data = pd.read_csv('test.csv')

# Define a function to predict sentiment for a single sentence
def predict_sentiment(sentence):
    result = model.predict(sentence)
    label = result[0][0].replace('__label__', '')
    return label

# Classify the sentences in the test dataset and store the results in a new column
test_data['Predicted Sentiment'] = test_data['Sentence'].apply(predict_sentiment)

# Print the accuracy of the model on the test dataset
correct = 0
total = len(test_data)
for index, row in test_data.iterrows():
    if row['Sentiment'] == row['Predicted Sentiment']:
        correct += 1
accuracy = correct / total
print(f'Accuracy: {accuracy:.2f}')

词向量表示Demo

上面的代码是直接使用fasttext.load_model来加载模型,当然,还可以使用gensim来加载模型。下面的代码中就使用gensim来加载"cc.en.300.bin"模型,加载模型后,通过model.wv['word]方法获取文本的向量,还可以通过model.wv.similarity()计算不同word的相似度。

from gensim.models.fasttext import load_facebook_model

# 加载 FastText 模型
model = load_facebook_model("cc.en.300.bin")

# 获取单词的向量表示
vector = model.wv['word']

# 计算两个词之间的相似度
similarity = model.wv.similarity('word1', 'word2')

# 使用词向量来推断一个单词的意思
inferred_vector = model.infer_vector(['text', 'classification', 'task'])

总结

当你下载了已有的pre-model来对句子做情感分析的时候,可能结果不一定理想,为什么呢?因为,FastText 适用于离散标记(discrete tokens)。离散标记指的是对文本进行分词(tokenization)之后得到的单词或词语等离散单元,例如 "cat"、"dog"、"is"、"a" 等。这种文本表示方法不考虑单词之间的顺序和连续性,将文本看作是由一系列离散单元组成的集合。相比之下,连续标记则更注重文本中单词的顺序和连续性。例如,一个句子"I does not like the product",实际是一个negative的句子,但是因为Fasttext是适用于离散标记,无法处理多个词语连起来的含义,很有可能会把他判断成positive的句子,因为有like这个单词。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/801806.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

亚马逊美国站暖风机UL1278测试报告

取暖器是指用于取暖的设备,取暖设备根据加热介质不同、加热原理不同,大体可以分为:燃气取暖设备、电加热取暖设备、锅炉取暖设备、电壁挂炉取暖。但一般这类产品要上架美国亚马逊平台都必须要办理UL1278测试报告。 一、UL1278标准适用产品范围…

vscode搭建用ASP文件测试开发的环境

下载iis express安装包,iis express下载链接:Download Internet Information Services (IIS) 10.0 Express from Official Microsoft Download Center ​ 不适合的可以下载旧的iis express版本,系统没有相适应的.Net版本的还要下载。 安装完…

Java 版 spring cloud +spring boot 工程系统管理 工程项目管理系统源码 工程项目各模块及其功能点清单

工程项目各模块及其功能点清单 一、系统管理 1、数据字典:实现对数据字典标签的增删改查操作 2、编码管理:实现对系统编码的增删改查操作 3、用户管理:管理和查看用户角色 4、菜单管理:实现对系统菜单的增删改查操…

网络安全(黑客)自学建议笔记

前言 网络安全,顾名思义,无安全,不网络。现如今,安全行业飞速发展,我们呼吁专业化的 就职人员与大学生 ,而你,认为自己有资格当黑客吗? 本文面向所有信息安全领域的初学者和从业人员…

IBM Spectrum LSF —— 计算资源的管理和批处理作业的调度

IBM Spectrum LSF 是什么? LSF(Load Sharing Facility)是IBM旗下的一款分布式集群管理系统软件,负责计算资源的管理和批处理作业的调度。它给用户提供统一的集群资源访问接口,让用户透明地访问整个集群资源。同时提供了…

如何使用Redis配置与优化

目录 一、关系数据库与非关系型数据库 关系型数据库 非关系型数据库 关系型数据库和非关系型数据库区别 ① 数据存储方式不同 ② 扩展方式不同 ③ 对事务性的支持不同 非关系型数据库产生背景 二、Redis概念 Redis优点 三、Redis 安装部署 第一步 关闭防火墙和安全…

【Nodejs】接口规范和业务分层

1.接口规范-RESTful架构 1.1 什么是REST REST全称是Representational State Transfer,中文意思是表述(编者注:通常译为表征)性状态转移。 它首次出现在2000年Roy Fielding的博士论文中,Roy Fielding是HTTP规范的主要编…

Eclipse memory analyzer 分析GC dump日志定位代码问题

1、问题描述: 使用命令 jstat -gcutil [pid] 查看JVM GC日志,发现生产系统频繁FullGC,大概几分钟一次,而且系统响应速度变慢很多 再使用 free -g 查看服务器内存全部占用,猜测是内存溢出了 2、导出dump日志 jmap -du…

SpringBoot项目部署在Windows与Centos上

文章目录 Windows部署一、github上下载文件winsw二、文件目录三、编辑xml文件四、安装服务五、启动服务六、把jar包放到项目外面七、添加限制内存 Linux部署一、准备二、服务三、操作 Windows部署 windows部署服务借鉴于此篇博文 一、github上下载文件winsw 点击链接下载下图…

等分切割图片的方法

在做数据集的过程中,有时候需要将大图进行切分成小图片,一方面是为了满足训练需要,一方面是为了扩增数据集。 如下图的尺寸为5472x3648,但是我用不着这么大的图片,需要将图9等分 市面上也有等分切割图片的软件或者网站&#xff…

python_day16_设计模式

“”“单例模式”“” “”“工厂模式”“” class Person:passclass Worker(Person):passclass Student(Person):passclass Teacher(Person):passclass Factory:def get_person(self, p_type):if p_type w:return Worker()elif p_type s:return Student()else:return Te…

深度学习,卷积神经网络

卷积神经网络 1.卷积神经网络应用领域 CV领域发展 CV领域是计算机视觉(Computer Vision)领域的简称。 计算机视觉是指利用计算机模拟人类视觉系统的科学,让计算机具有类似于人类在观察外界的视觉、图像的能力,包括图像处理、图…

无涯教程-jQuery - ajaxSend( callback )方法函数

ajaxSend(callback)方法附有一个在发送AJAX请求时要执行的功能。这是一个Ajax事件。 ajaxSend( callback ) - 语法 $(document).ajaxSend( callback ) 这是此方法使用的所有参数的描述- callback - 要执行的功能。用于该请求的XMLHttpRequest和设置将作为参数传递给回调…

Excel的使用

1.EXCEL诞生的意义 1.1 找到想要的数据 1.2 提升输入速度 2.数据分析与可视化操作 目的是提升数据的价值和意义 3.EXCEL使用的内在意义和外在形式 4.EXCEL的价值 4.1 解读及挖掘数据价值 4.2 协作板块 4.3 展示专业度 4.4 共享文档内容 5.人的需求》》软件功能

SFP3012A-ASEMI代理海矽美(MHCHXM)快恢复二极管

编辑:ll SFP3012A-ASEMI代理海矽美(MHCHXM)快恢复二极管 型号:SFP3012A 品牌:ASEMI 芯片个数:1 芯片尺寸:102MIL*2 封装:TO-247AC 恢复时间:75ns 工作温度&#…

1300*B. T-primes

解析&#xff1a; 有且只有三个因数&#xff0c;当且仅当&#xff0c;完全平方数并且sqrt&#xff08;n&#xff09;为素数 #include<bits/stdc.h> using namespace std; typedef long long ll; const int N1e55; ll t,n; bool prime(ll x){if(x<2) return 0;for(int…

C语言打印水仙花数

“水仙花数”是指一个n位数&#xff0c;其各位数字的n次方之和确好等于该数本身&#xff0c;如:153&#xff1d;13&#xff0b;53&#xff0b;3^3&#xff0c;则153是一个“水仙花数”。 思路&#xff0c;先把每个数的每位算出来&#xff0c;然后再判断他们的3次方相加是否这个…

微软开源贾维斯(J.A.R.V.I.S.)人工智能AI助理系统

贾维斯(Jarvis)的环境配置 一般情况下&#xff0c;深度学习领域相对主流的入门级别显卡是2070或者3070&#xff0c;而3090可以算是消费级深度学习显卡的天花板了&#xff1a; 再往上走就是工业级别的A系列和V系列显卡&#xff0c;显存是一个硬指标&#xff0c;因为需要加载本地…

电脑看不了视频怎么办?最新解决方法分享!

“昨天刚在电脑里保存了一些视频&#xff0c;但是都没法播放。之前下载在电脑里的视频也播放不了&#xff0c;这是怎么回事呢&#xff1f;电脑看不了视频&#xff0c;有什么方法可以解决吗&#xff1f;” 由于电脑的屏幕比较大&#xff0c;我们在观看视频时会有更好的体验感。因…

目标检测-击穿黑夜的PE-YOLO

前言 当前的目标检测模型在许多基准数据集上取得了良好的结果&#xff0c;但在暗光条件下检测目标仍然是一个巨大的挑战。为了解决这个问题&#xff0c;作者提出了金字塔增强网络&#xff08;PENet&#xff09;并将其与YOLOv3结合&#xff0c;构建了一个名为PE-YOLO的暗光目标检…