gpt4 book ai didi

Python 的 Sklearn ngram 准确度随着 ngram 长度的增加而降低

转载 作者:行者123 更新时间:2023-11-30 09:26:09 25 4
gpt4 key购买 nike

我有一个仇恨言论数据集,其中包含一些 10k 标记的推文:它看起来像这样

推文 |类
大家好 |不具攻击性
你这个丑陋的布偶 |攻击性但不是仇恨言论
你这该死的犹太人|仇恨言论

现在我正在尝试使用 SKLearn 库中的 python 中的 MultinomialNB 分类器,这是我的代码。

import pandas as pd
import numpy as np
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB

data = pd.read_excel('myfile', encoding = "utf-8")
data = data.sample(frac=1)
training_base = 0;
training_bounds = 10000;
test_base = training_bounds+1;
test_bounds = 12000;
tweets_train = data['tweet'][training_base:training_bounds]
tweets_test = data['tweet'][test_base:test_bounds]
class_train = data['class'][training_base:training_bounds]
class_test = data['class'][test_base:test_bounds]
vectorizer = CountVectorizer(analyzer='word', ngram_range=(1,1))
train_counts = vectorizer.fit_transform(tweets_train.values)

classifier = MultinomialNB()
train_targets = class_train.values
classifier.fit(train_counts, train_targets)
example_counts = vectorizer.transform(tweets_test.values);
predictions = classifier.predict(example_counts)
accuracy = np.mean(predictions == class_test.values)
print(accuracy)

使用 ngram_range(1,1) 时的准确度约为 75%,但当我转到 (2,2) 到 (8,8) 时,它会从 75,72,67..55% 下降。为什么是这样?我错过了什么?

最佳答案

您使问题变得越来越稀疏,从测试集中的训练集中找到确切的 8 个单词序列可能会非常困难,因此准确性会较差。

我建议混合不同的单词 n-gram 长度(这就是为什么有两个参数),例如。对于非常短的推文来说 (1, 3) 似乎是一个合理的选择。此外,字符 n 元语法中可能存在一些隐藏信息,它们自然地编码更多语言特征 - 您可以将它们添加到特征空间中。

关于Python 的 Sklearn ngram 准确度随着 ngram 长度的增加而降低,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43072699/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com