标签: text-classification

RobertaForSequenceClassification 的 logits 和概率代表什么?

作为“自然语言处理”场景的新手,我正在实验学习并实现了以下代码段:

from transformers import RobertaTokenizer, RobertaForSequenceClassification
import torch
    
path = "D:/LM/rb/"
tokenizer = RobertaTokenizer.from_pretrained(path)
model = RobertaForSequenceClassification.from_pretrained(path)
    
inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
outputs = model(**inputs)
pred_logits = outputs.logits
print(pred_logits)
probs = pred_logits.softmax(dim=-1).detach().cpu().flatten().numpy().tolist()
print(probs)
Run Code Online (Sandbox Code Playgroud)

据我所知,应用模型会返回一个torch.FloatTensor包含取决于配置(RobertaConfig)和输入的各种元素”,并且可以使用 访问 logits .logits。如所示,我已将.softmax函数应用于张量以返回归一化概率并将结果转换为列表。我输出以下内容:

[0.5022980570793152, 0.49770188331604004]
Run Code Online (Sandbox Code Playgroud)

这些概率是否代表某种总体“掩盖”概率?

第一个和第二个索引在输入上下文中代表什么?


编辑:

model.num_labels
Run Code Online (Sandbox Code Playgroud)

输出:

2
Run Code Online (Sandbox Code Playgroud)

@cronoik解释说该模型“尝试对序列是否属于一个类或另一个类进行分类”

我是否可以假设因为没有经过训练的输出层,这些类还没有任何意义?

例如,我可以假设该句子经过分析后属于类别 1 的概率为 0.5。然而,什么是1级呢?

此外,具有预先训练的输出层的模型卡(例如开放式人工智能检测器)有助于区分“真实”“假”,因此我可以假设句子所属的类别。但是,如果没有某种类型的“mapping.txt”文件,如何确认这些“标签”?

python nlp text-classification pytorch huggingface-transformers

3
推荐指数
1
解决办法
9096
查看次数

文本分类 - 如何查找对决策影响最大的功能

当使用SVMlightLIBSVM为了将短语分类为正面或负面时(情感分析),有没有办法确定哪些是影响算法决策的最有影响力的单词?例如,发现该单词"good"有助于将短语确定为正面等.

nlp machine-learning svm sentiment-analysis text-classification

2
推荐指数
1
解决办法
600
查看次数

文本分类 - 使用词干分析器降低结果?

这样一篇关于阿拉伯语的情感分析.

在第5页的开头,它说:

"实验还表明,在特征提取和分类之前的词干几乎总是会降低结果".

稍后在同一页面中,他们声明:

"......还有一个阿拉伯语光词干用来阻止词汇"

嗯,我认为在文本分类之前总是使用词干/词形变换器,为什么他说它会降低结果?

谢谢 :)

nlp stemming sentiment-analysis text-classification

2
推荐指数
1
解决办法
704
查看次数

python textblob和文本分类

我正在尝试使用python和textblob构建文本分类模型,该脚本在我的服务器上运行,并且将来的想法是用户将能够提交他们的文本并将其分类.我正在从csv加载训练集:

# -*- coding: utf-8 -*-
import sys
import codecs
sys.stdout = open('yyyyyyyyy.txt',"w");
from nltk.tokenize import word_tokenize
from textblob.classifiers import NaiveBayesClassifier
with open('file.csv', 'r', encoding='latin-1') as fp:
    cl = NaiveBayesClassifier(fp, format="csv")  

print(cl.classify("some text"))
Run Code Online (Sandbox Code Playgroud)

csv长约500行(字符串在10到100个字符之间),NaiveBayesclassifier需要大约2分钟进行训练,然后能够对我的文本进行分类(不确定是否正常,它需要这么多时间,也许是我的服务器很慢只有512mb ram).

csv行的例子:

"Oggi alla Camera con la Fondazione Italia-Usa abbiamo consegnato a 140 studenti laureati con 110 e 110 lode i diplomi del Master in Marketing Comunicazione e Made in Italy.",FI-PDL
Run Code Online (Sandbox Code Playgroud)

我不清楚,我无法找到textblob文档的答案,如果有一种方法来"保存"我训练有素的分类器(这样可以节省很多时间),因为现在每次运行脚本时它都会训练再次分类.我是文本分类和机器学习的新手,所以如果这是一个愚蠢的问题我会道歉.

提前致谢.

python nlp nltk text-classification textblob

2
推荐指数
1
解决办法
1773
查看次数

解决监督学习文本分类中的同义词

我正在使用scikit-learn监督学习方法进行文本分类.我有一个训练数据集,其中包含输入文本字段及其所属的类别.我使用tf-idf,SVM分类器管道来创建模型.该解决方案适用于正常的测试用例.但是如果输入的新文本与训练集中具有synoynmous单词,则解决方案无法正确分类.例如:训练数据中可能出现'run'一词,但如果我使用'sprint'一词进行测试,则该解决方案无法正确分类.

这里最好的方法是什么?为训练数据集中的所有单词添加所有同义词对我来说看起来不像是一种可扩展的方法

machine-learning scikit-learn supervised-learning text-classification

2
推荐指数
1
解决办法
1123
查看次数

使用doc2vec表示的scikit-learn分类

我想使用doc2vec表示和scikit-learn模型对文本文档进行分类.

我的问题是我迷失了如何开始.有人可以解释通常使用doc2vec与scikit-learn采取的一般步骤吗?

machine-learning scikit-learn text-classification doc2vec

2
推荐指数
1
解决办法
2171
查看次数

用于检测账单的OCR

我打算创建一个移动应用程序,它可以扫描商店生成的账单/发票,并从中提取关键功能,如商店名称,地址,购买的商品,账单价值等.我知道我可以使用OCR从账单中提取文本(扫描的账单或账单的照片)但是,我将如何提取所有这些细节?使用什么方法?

ocr text-classification

2
推荐指数
1
解决办法
7624
查看次数

在自定义数据上微调BERT

我想使用Bert 训练21类文本分类模型。但是我的训练数据很少,因此下载了一个类似的数据集,其中包含5个类的数据集,包含200万个样本。t并使用由bert提供的无条件预训练模型对下载的数据进行了微调。并获得了约98%的验证准确性。现在,我想将此模型用作我的小型自定义数据的预训练模型。但是shape mismatch with tensor output_bias from checkpoint reader由于检查点模型有5个类,而我的自定义数据有21个类,因此出现错误。

NFO:tensorflow:Calling model_fn.
INFO:tensorflow:Running train on CPU
INFO:tensorflow:*** Features ***
INFO:tensorflow:  name = input_ids, shape = (32, 128)
INFO:tensorflow:  name = input_mask, shape = (32, 128)
INFO:tensorflow:  name = is_real_example, shape = (32,)
INFO:tensorflow:  name = label_ids, shape = (32, 21)
INFO:tensorflow:  name = segment_ids, shape = (32, 128)
Tensor("IteratorGetNext:3", shape=(32, 21), dtype=int32)
WARNING:tensorflow:From /home/user/Spine_NLP/bert/modeling.py:358: calling dropout (from tensorflow.python.ops.nn_ops) with keep_prob is deprecated and will be …
Run Code Online (Sandbox Code Playgroud)

nlp text-classification deep-learning tensorflow bert-language-model

2
推荐指数
1
解决办法
528
查看次数

如何使用 GPT 3 进行文本分类?

我想知道我是否可以在文本分类问题中使用 OpenAI GPT-3 进行迁移学习?如果是这样,我如何使用 Tensorflow、Keras 开始它。

text-classification keras transfer-learning openai-api gpt-3

2
推荐指数
1
解决办法
4343
查看次数

将多个句子传递给 BERT?

我有一个包含段落的数据集,我需要将其分为两类。这些段落通常有 3-5 句话长。其中绝大多数的长度不到 500 字。我想利用BERT来解决这个问题。

我想知道我应该如何使用 BERT 来生成这些段落的向量表示,尤其是将整个段落传递给 BERT 是否可以?

此处此处对相关问题进行了翔实的讨论。这些讨论集中在如何使用 BERT 来表示整个文档。在我的例子中,段落并没有那么长,确实可以在不超过 512 的最大长度的情况下传递给 BERT。但是,BERT 是在句子上进行训练的。句子是相对独立的意义单位。我想知道将多个句子输入 BERT 是否与模型的设计目的没有根本冲突(尽管这似乎是定期进行的)。

nlp text-classification bert-language-model huggingface-transformers

2
推荐指数
1
解决办法
1152
查看次数