问题标签 [text-classification]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
1986 浏览

algorithm - 考虑 QWERTY 键盘布局检测随机键盘点击

最近 Wikipedia 破坏检测竞赛的获胜者表示,可以通过“检测随机键盘击中考虑 QWERTY 键盘布局”来改进检测。

例子:woijf qoeoifwjf oiiwjf oiwj pfowjfoiwjfo oiwjfoewoh

是否有任何软件已经这样做了(最好是免费和开源的)?

如果没有,是否有一个积极的 FOSS 项目,其目标是实现这一目标?

如果没有,您会如何建议实施这样的软件?

0 投票
1 回答
1036 浏览

python - MAXent分类器NLTK输出理解

我正在尝试了解classifier.show_most_informative_features(10)for MAXent 分类器。我不明白这些列的含义,例如在以下输出中:

0 投票
3 回答
10562 浏览

svm - 如何使用 SVM 和 KNN 对文本文档进行分类

几乎所有的例子都是基于数字的。在文本文档中,我有单词而不是数字。

那么,您能否向我展示如何使用这些算法进行文本文档分类的简单示例。

我不需要代码示例,只需要逻辑

伪代码将有很大帮助

0 投票
1 回答
1502 浏览

java - 自然语言处理 - 将文本特征转换为特征向量

所以我一直在做一个自然语言处理项目,我需要对不同的写作风格进行分类。假设我已经从文本中提取了语义特征,我计划使用 Java 中的 Weka 来训练 SVM 分类器,使用这些特征可以对其他不同的文本进行分类。

我遇到麻烦的部分是要训练 SVM,必须将特征转换为特征向量。我不确定您如何将词汇丰富度、n-gram、标点符号、段落数和段落长度等特征表示为向量中的数字。如果有人能指出正确的方向,那将不胜感激。

0 投票
2 回答
1297 浏览

svm - svm - 对结果感到困惑,分数远大于 +1 或 -1

我是 SVM 的初学者。在我的项目中,我使用 SVM 对文本进行分类。数据集是笔记本电脑评论,我分为两类,“好评”和“差评”。我已经完成了训练、测试和分类,但是有一些事情让我很困惑,我想问一下。

  1. 以下是已缩放为 [-1,1] 的 SVM 格式数据的两个示例:

    第一个产生分数 5.4750172361043,而第二个产生 0.99999999999985。我想知道为什么?我认为,如果我查看上面的数据,第二个实例比第一个实例具有更好的价值。而且如果我查看原始文本数据审查,我认为第二个实例比第一个实例具有“更好”的审查类别。那么为什么输出分数和我预期的不一样呢?

  2. 上面 SVM 结果的输出产生巨大的价值,甚至超过 -1 和 1,这是否正常?所有数据集的整个结果的最小 SVM 得分为 -4.5085001691845,最大得分为 7.1355405169311。我不太确定,但我认为结果通常介于 -1 和 1 之间。有什么问题吗?

  3. 我应该怎么做才能得到结果,因为你们都认为是正常的?我的意思是,评论类别的好实例的值介于 0 和 1 之间或更多(如 1.135645),而差评的值约为 0 至 -1(或如 -1.0573545)

只是我的问题的附加信息:

  • 我使用来自网站 phpir.com (Ian Barber) 的 SVM 求解器库
  • 我使用的参数 C 和 gamma 仍然是默认的,我还没有做交叉验证
  • 我在这里举了几个好评或差评的例子:http: //pastebin.com/cqDK7WA6

请帮助我,我真的是这方面的初学者,也许我不明白基本的 SVM 概念,所以我需要你的解释,对不起我的英语不好。

0 投票
1 回答
664 浏览

machine-learning - 学习、验证和测试分类器

我正在从事文本分类的情感分析,我想将 Twitter 中的推文分类为 3 个类别,正面、负面或中性。我有 210 个训练数据,我使用Naive Bayes 作为分类器。我正在使用 PHP 和 MySQL 作为训练数据的数据库来实现。我所做的是按顺序:

  1. 我将基于10 倍交叉验证的训练数据拆分为 189 个训练数据和 21 个测试数据。
  2. 我将我的训练数据插入数据库,所以我的分类器可以根据训练数据进行分类
  3. 然后我使用我的分类器对我的测试数据进行分类。我得到了 21 个预测结果。
  4. 基于10 折交叉验证重复步骤 2 和 3 10 次
  5. 我对分类器的准确率一一评估,所以得到了10个准确率结果。然后我取结果的平均值。

我想知道的是:

  1. 学习过程是什么?什么是输入、过程和输出?
  2. 验证过程是什么?什么是输入、过程和输出?
  3. 测试流程是什么?什么是输入、过程和输出?

我只是想确保我对这 3 个过程(学习、验证和测试)的理解是正确的。

0 投票
1 回答
424 浏览

svm - 使用 svm 进行文本分类

我读了这篇文章:K最近邻的混合分类方法,贝叶斯方法和遗传算法
建议使用遗传算法来改进文本分类
我想用SVM替换遗传算法,但我不知道它是否有效
我的意思是我不知道新想法和结果是否会比
我在某处读到的这篇文章更好GaSVM更好,但我不知道它是否正确?

0 投票
1 回答
892 浏览

machine-learning - 使用朴素贝叶斯预测分类并处理不在训练集中的特征/词

使用朴素贝叶斯算法考虑垃圾邮件或非垃圾邮件的文本分类问题。

问题如下:

如果在该组词中你看到一个新词 wordX 是你的模型根本没有看到的(所以你甚至没有估计它的拉普拉斯平滑概率),你如何对文档进行预测?

通常要做的事情就是忽略那个 wordX,即使它在当前文本中被看到,因为它没有相关的概率?即我知道有时使用拉普拉斯平滑来尝试解决这个问题,但如果这个词绝对是新词怎么办?

我想到的一些解决方案:

1)在估计分类时忽略那些词(最简单,但有时是错误的......?但是,如果训练集足够大,这可能是最好的做法,因为我认为假设你的特征是合理的如果您有 1M 或 20M 数据,则选择的东西足够好)。

2)将该词添加到您的模型中并完全更改您的模型,因为词汇表发生了变化,所以概率必须随处变化(这确实有问题,因为这可能意味着您必须经常更新模型,特别是如果您的分析 1M 文档, 说)

我对此进行了一些研究,阅读了 Dan Jurafsky NLP 和 NB 的一些幻灯片,观看了 coursera 上的一些视频,并浏览了一些研究论文,但我找不到我认为有用的东西。我觉得这个问题一点也不新鲜,应该有一些东西(启发式..?)。如果没有,那也太棒了!

希望这是对社区有用的帖子,并提前致谢。

PS:为了让问题更明确一点,我见过的一个解决方案是,假设我们在垃圾邮件中看到一个未知的新词 wordX,然后对于那个词,我们可以做 1/ count(spams) + |Vocabulary + 1|,我在做类似的事情时遇到的问题是,这是否意味着我们改变了词汇的大小,现在,我们分类的每个新文档都有一个新的特征和词汇?该视频似乎试图解决该问题,但我不确定这是否是一件好事,或者 2,也许我误解了它:

https://class.coursera.org/nlp/lecture/26

0 投票
1 回答
11477 浏览

r - 外部函数调用中的 NA/NaN/Inf (arg 6)

我正在使用 R 做一篇关于文本挖掘的学期论文。我们的任务是猜测一篇文章的语气(正面/负面)。文章存储在各自的文件夹中。我需要创建一个分类系统,该系统将通过训练样本进行学习。我重用了来自http://www.youtube.com/watch?v=j1V2McKbkLo 的代码 除了最后一行之外的整个代码都成功执行了。以下是代码。

当我尝试执行此操作时,最后一行 (knn) 出现错误:

谁能帮帮我。另外,如果还有其他更简单更好的分类方法,请指点我。感谢和抱歉,很长的帖子。

0 投票
1 回答
5253 浏览

python - 朴素贝叶斯概率总是 1

我开始使用sklearn.naive_bayes.GaussianNB进行文本分类,并且得到了很好的初步结果。我想使用分类器返回的概率作为置信度的度量,但是predict_proba()方法总是为所选类返回“1.0”,而对于所有其他类返回“0.0”。

我知道(从这里)“...... predict_proba 的概率输出不要太认真”,但是到那个程度?!分类器可能会误认为finance-investingchords-strings,但predict_proba()输出没有任何犹豫的迹象......

关于上下文的一些信息:
-我一直在使用sklearn.feature_extraction.text.TfidfVectorizer进行特征提取,但首先没有使用stop_wordsmin/max_df限制词汇表——>我得到了非常大的向量。
- 我一直在分层类别树(浅层:深度不超过 3 层)上训练分类器,每个类别有 7 个文本(手动分类)。现在是flat培训:我没有考虑等级制度。

生成的GaussianNB对象非常大(~300MB),并且预测相当慢:一个文本大约 1 秒。
这有关系吗?巨大的向量是这一切的根源吗?
如何获得有意义的预测?我需要使用不同的分类器吗?

这是我正在使用的代码:

更新:
按照下面的建议,我尝试了MultinomialNB & LogisticRegression。它们都返回不同的概率,并且在任何方面都更适合我的任务:更准确的分类、更小的内存对象和更快的速度(MultinomialNB快如闪电!)。

我现在有一个新问题:返回的概率非常小——通常在 0.004-0.012 范围内。这是针对预测/获胜类别的(并且分类是准确的)。