我正在构建一个进行文本分类的系统。我正在用Java构建系统。作为功能我正在使用词袋模型。然而,这种模型的一个问题是特征的数量非常高,这使得不可能将数据拟合到存储器中。
但是,我从Scikit-learn中发现了tutorial,它使用特定的数据结构来解决问题。
我的问题:
1 - 人们如何使用Java解决这样的问题?
2-是否有与scikit-learn中给出的解决方案类似的解决方案?
编辑:我到目前为止找到的唯一解决方案是亲自使用HashTables编写稀疏矢量实现。
答案 0 :(得分:1)
如果你想用Java构建这个系统,我建议你使用Weka,这是一个类似于sklearn的机器学习软件。这是一个关于Weka文本分类的简单教程:
https://weka.wikispaces.com/Text+categorization+with+WEKA
您可以从以下网址下载Weka:
答案 1 :(得分:1)
HashSet / HashMap是人们在Java中存储词袋向量的常用方法 - 它们自然是稀疏表示,其增长不是字典的大小,而是文档的大小,而后者通常要小得多。 / p>
如果您处理不寻常的场景,例如非常大的文档/表示,您可以查找一些稀疏的bitset实现,它们在内存方面可能稍微更经济,并且用于基于Hadoop的大规模文本分类实现,例如。
大多数NLP框架无论如何都会为您做出决定 - 您需要以框架所需的格式提供内容。