问题标签 [document-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.
java - 朴素贝叶斯文本分类器 - 确定何时应将文档标记为“未分类”
我设计并实现了一个朴素贝叶斯文本分类器(Java)。我主要使用它将推文分类为 20 类。为了确定文档属于我使用的类的概率
确定一个词袋是否真的不应该属于任何类的最佳方法是什么?我知道我可以只发送 P(类出现的词袋)的最小阈值,如果所有类都低于该阈值,则将文档归类为未分类,但是我意识到这可以防止该分类器变得敏感.
是否可以选择创建一个未分类的类并使用我认为不可分类的文档对其进行训练?
谢谢,
标记
- 编辑 - -
我只是想 - 我可以为 P(bag of wordsoccurring global)*(number of words in document) 设置一个最大阈值。这意味着任何主要由常用词组成的文档(通常是我想要过滤掉的推文),例如。“是的,我同意你的看法”。会被过滤掉。- 您对此的想法也将不胜感激。
或者也许我应该找到标准偏差,如果它很低,确定它应该是未分类的?
search - 给定单词/短语的白名单和黑名单,查找文本的相关性
这是我想在网上搜索一些东西但不知道它叫什么的情况。
我有一组文本文件中的职位描述,有些只有一两句话长,大多数只有一两段。我想写一个脚本,给定一组规则,当它找到我想要的工作描述时会通知我。
例如,假设我正在寻找一份 PHP 编程工作,但不是全职职位,也不是设计职位。所以我的“规则书”可能是:
我可以使用什么方法将这些文件分类为“通过”(与我正在寻找的描述匹配的描述)和“失败”(描述不相关)?我正在考虑的一些想法:
- 计算文本文件中出现在我的“规则手册”中的短语的次数,并拒绝那些包含我不想要的单词的短语。但是,这并不总是有效,因为如果描述说“不需要网页设计”怎么办?然后我的算法会说“它包含这个词
designing
,所以它不相关”,而它真的是! - 在文本中搜索我想要和不想要的短语时,将一定 Levenshtein 距离内的短语计为相同的短语。例如,
designing
和design
应该以同样的方式处理,以及单词的拼写错误,例如programing
. - 我有大量手动查看的描述。有没有办法我可以“教”程序“这些是好的描述的例子,这些是坏的例子”?
有谁知道这个“过滤过程”被称为什么,和/或对我如何完成这个有任何建议或方法?
machine-learning - 朴素贝叶斯文本分类在一个类别中失败。为什么?
我正在实现用于文本类别检测的朴素贝叶斯分类器。我有 37 个类别,我的测试集的准确率约为 36%。
我想提高准确性,所以我决定按照许多来源的建议实现 37 个双向分类器(提高朴素贝叶斯分类器准确性的方法是其中之一),这些分类器将回答给定的文本:
我将通过依次应用它们来确定文本的类别。
但是我的第一个分类器有问题,它总是在“specific_category”类别中失败。
我有训练数据 - 37 个类别,每个类别大小相同的 100 个文档。对于每个类别,我找到了我根据互信息标准选择的 50 个特征的列表(特征只是单词)。
为了举例,我使用两个类别“农业”和“everything_else”(农业除外)。
对于“农业”类别:
对于类别“everything_else”:
然后我有一个与农业无关的文本,让它主要由未知词(UNK)组成。它有 270 个单词,对于“农业”和“everything_else”这两个类别,它们大多是未知的。假设“everything_else”有 260 个单词是 UNK,其他 10 个是已知的。
然后,当我计算概率时
在最后一行中,我们将 260 个单词视为 UNK,将 10 个单词视为一个类别。
主要问题。由于 P(UNK|agriculture) >> P(everything_else) (对于 log 它更大),这 270 个术语 P(UNK|agriculture) 的影响超过了对文本中每个单词的 P(word|everything_else) 总和的影响. 因为
第一个总和要大得多,不能用 P(agriculture) 或 SUM(P(word|everything_else) for 10 words) 来纠正,因为差异很大。然后我总是在“农业”类别中失败,尽管文本不属于它。
问题是:我错过了什么吗?或者我应该如何处理大量的 UNK 单词并且它们的概率在小类别中显着更高?
UPD:尝试将“农业”类别的训练数据(仅将文档连接 36 次)扩大到文档数量相等。它对少数类别有帮助,对其他类别没有多大帮助,我怀疑由于单词数量和字典大小较少,P(UNK|specific_category) 在求和 270 次时变得更大并且超过 P(UNK|everything_else)。
因此,这种方法似乎对训练数据中的单词数量和词汇量非常敏感。如何克服这一点?也许二元组/三元组会有所帮助?
nlp - 自动文档分类的最佳库
问题:我们有一堆文档(杂志文章)需要放入“类别”中。一些类别反映了文章的主题(文章是关于什么的),而另一些类别反映了文章的“性质”(如果杂志印刷在纸上,它可能会出现在哪里)。
我们目前正在通过将文章发送到海外并让人们查看并标记它们来手动解决问题。
我们希望使流程更加自动化。我查看了各种库,但它们似乎并不是为了解决这个问题而设计的。
Carrot² 对搜索结果进行聚类,但尚不清楚它是否可以与现有(固定)类别一起使用,或者是否可以直接从每个输入中推断类别。
NLTK 是一种通用的解决方案,它可以做很多事情,但在速度或准确性方面并不享有盛誉。可能是我最好的选择吗?
理想情况下,我想找到一个解决方案,它给出一个类别列表和一组分类文档的训练集,能够为新文档建议一个类别,并对其建议的准确性充满信心。
如果这不存在现成的,我可以尝试根据 NLTK 的 NaiveBayesClassifier 编写一些东西,但其他选项是什么?
java - Multi-Label Document Classification
I have a database in which I store data based upon the following three fields: id, text, {labels}. Note that each text has been assigned to more than one label \ tag \ class. I want to build a model (weka \ rapidminer \ mahout) that will be able to recommend \ classify a bunch of labels \ tags \ classes to a given text.
I have heard about SVM and Naive Bayes Classifier, but not sure whether they support multi-label classification or not. Anything that guides me to the right direction is more than welcome!
svm - 如何使用 SVM 和 KNN 对文本文档进行分类
几乎所有的例子都是基于数字的。在文本文档中,我有单词而不是数字。
那么,您能否向我展示如何使用这些算法进行文本文档分类的简单示例。
我不需要代码示例,只需要逻辑
伪代码将有很大帮助
python - 什么分类算法可以处理数字和名义数据
这可能是关于可能的分类算法的新手问题,所以请多多包涵。我有一个包含名义属性和数字属性的数据集,可能看起来像下面的示例(不是实际数据集)。哪种算法最适合断言类并获得准确性(最好在 Python/Java 中)?
标称数据可以包含 [1,-1] 的数值,其中 1 表示存在,-1 表示不存在,也可以是一组字符串值,例如 ['YES', 'NO'] 或 ['Type1', '类型2','类型3']。数值用于表示属性的可能性。例如 [0-1],值越接近 1,越有可能评估为真。
java - 如何将属性类型更改为字符串(WEKA - CSV 到 ARFF)
我正在尝试使用 WEKA 库制作 SMS SPAM 分类器。我有一个带有“标签”和“文本”标题的 CSV 文件。当我使用下面的代码时,它会创建一个带有两个属性的 ARFF 文件:
目前,似乎文本属性被格式化为一个名义属性,每个消息的文本作为一个值。但我需要 text 属性是 String 属性,而不是所有实例中所有文本的列表。将文本属性作为字符串将允许我使用 StringToWordVector 过滤器来训练分类器。
我知道我可以像这样创建一个字符串属性:
但我不知道如何替换当前属性,或者在读取 CSV 之前设置属性类型。
我尝试插入一个新的字符串属性并删除当前的标称属性,但这会删除所有的 SMS 文本。我也尝试使用renameAttributeValue,但这似乎不适用于更改属性类型。
编辑: 我怀疑这个NominalToString 过滤器可以完成这项工作,但我不确定如何使用它。
任何建议将不胜感激。谢谢!
machine-learning - 使用朴素贝叶斯分类器进行文档分类
我正在使用简单的朴素贝叶斯算法在 mahout 中制作文档分类器。目前,我拥有的 98% 的数据(文档)属于 A 类,只有 2% 属于 B 类。我的问题是,由于 A 类文档与 B 类文档的百分比差距如此之大,那么分类器还能准确训练吗?
我正在考虑做的是忽略一大堆 A 类文档并“操纵”我拥有的数据集,以便文档的组成没有那么大的差距。因此,我最终将拥有的数据集将包含 30% 的 B 类和 70% 的 A 类。但是,这样做有什么我不知道的影响吗?
python - Python中的URL分类:如何知道给定的URL是否属于博客主页或任何文章
我正在运行一个 URL 分类器算法。我几乎没有与博客相关的 URL,我想知道输入的 URL 是用于任何博客文章还是博客的 URL。
示例 1 - 如果我们输入以下 URL
它会告诉上面的 URL 是主页
示例 2 - 如果我们输入以下 URL
它会告诉上面的 URL 是 blogpost。
无论如何我可以在Python中做到这一点吗?有没有我可能遗漏的算法?或者任何开源包或服务?