用于分类大型数据集的NLP软件

Ani*_*ism 9 nlp nltk

背景

多年来,我一直在使用我自己的贝叶斯方法,根据大量且不断更新的训练数据集对来自外部资源的新项目进行分类.

每个项目有三种类型的分类:

  1. 30个类别,每个项目必须属于一个类别,最多两个类别.
  2. 10个其他类别,如果存在强匹配,则每个项目仅与类别相关联,并且每个项目可以属于与匹配一样多的类别.
  3. 4个其他类别,其中每个项目必须只属于一个类别,如果没有强匹配,则将该项目分配给默认类别.

每个项目包含大约2,000个字符的英文文本.在我的训练数据集中,大约有265,000个项目,其中包含10,000,000个特征的粗略估计(独特的三个单词短语).

我的自制方法相当成功,但肯定还有改进的余地.我已经阅读了NLTK书中的"学习分类文本"这一章,这篇文章非常棒,并且给了我很好的NLP分类技术概述.我希望能够尝试不同的方法和参数,直到我获得可用于我的数据的最佳分类结果.

问题

有哪些现成的NLP工具可以有效地对如此大的数据集进行分类?

那些我到目前为止尝试过的:

  • NLTK
  • TIMBL

我尝试用一​​个数据集来训练他们,这个数据集包含不到1%的可用训练数据:1,700个项目,375,000个特征.对于NLTK,我使用稀疏二进制格式,以及TIMBL的类似紧凑格式.

两者似乎都依赖于在内存中做所有事情,并迅速消耗所有系统内存.我可以让他们使用微小的数据集,但没什么大的.我怀疑如果我尝试逐步添加训练数据,那么当时或者在进行实际分类时会出现同样的问题.

我看过谷歌的预测API,它似乎做了很多我正在寻找但不是一切的东西.如果可能的话,我也想避免依赖外部服务.

关于功能的选择:多年来用我的自制方法进行测试,产生的三个单词短语效果最好.虽然我可以通过使用单词或两个单词短语来减少功能的数量,但这很可能产生较差的结果,并且仍然会有大量的功能.

mjv*_*mjv 0

你尝试过木槌吗?

我不确定它是否能处理您的特定数据集,但我发现它在我之前的测试中非常强大。
然而,我的重点是主题建模而不是分类本身。

另外,请注意,对于许多 NLP 解决方案,您不需要自己输入“特征”(如 N 元语法,即问题中提到的三词短语和两词短语),而是依赖于各种 NLP函数来生成自己的统计模型。