将Python字符串传递给Mallet进行主题建模

4
我正在使用BeautifulSoup从HTML中收集一些元数据和文本,并构建语料库。如果我可以在Python中调用Mallet并从Python字符串中建模主题,而不是从目录中的文本文件,那将非常有帮助。这样我就可以在每个文件中放置Mallet找到的n个关键词。
当我运行以下代码时,会收到“Mallet已被识别”的消息:
from nltk.classify import mallet
from subprocess import call
mallet.config_mallet("malletdir/mallet-2.0.7/bin")

但我在接下来的步骤中没有任何进展,而且甚至不确定Mallet是否接受除保存文件以外的任何东西。

我找不到任何我能真正理解的文档。有人看到易于理解的文档了吗?(NLTK书籍并没有涉及Mallet)。我也很乐意了解在Python中进行主题建模的其他方法,我可以在没有深入了解Python的情况下将其操作化。

对不起,这是我第一次尝试。

2个回答

2
如果您仍在寻找解决方案:Gensim(一种Python主题建模/机器学习包)具有易于使用和文档完善的Mallet封装。这里是一些Gensim教程以及一个针对Mallet封装的教程。您可能还需要阅读一些安装说明(主要是关于设置Java内存的部分)在这里,然后就可以开始了。

1
我曾尝试在一个NLTK项目中实现Mallet,但是我遇到了一个又一个的死胡同。我认为需要注意的主要事情是Mallet是基于Java编写的,而NLTK是用Python编写的。
你已经知道这一点,但我的观点是,对我个人来说,我很难将这些技术混合使用,因为我没有Java的强大背景。我从同事那里得到了关于Mallet和Python的相同反馈,“准备花费大量时间进行调试”。
从那以后,我一直在使用sklearn库进行Python开发。它旨在更普遍地应用于机器学习,而不是直接用于NLP,但可以很好地用于NLP。它带有非常多的建模工具,并且大部分似乎都依赖于NumPy,所以速度应该很快。我已经使用它很多次并且可以说它写得非常好并且有文档支持。

我不希望因为我的话而让你放弃使用Mallet,但如果你愿意尝试其他选择,我认为你会发现在NLTK中使用Python模块来构建项目要比使用Mallet更容易,因为它本身就是用Python编写的。希望这能帮到你!


是的,我稍微研究了一下sklearn,但目前让事情正常运行同样困难——我使用的是OSX Lion,而且我无法正确安装Scipy或matplotlib!假设我可以这样做,您认为这种方法是否正确:http://scikit-learn.org/stable/auto_examples/applications/topics_extraction_with_nmf.html?抱歉打扰您——总体而言,这只是论文的一个相对较小的组成部分,我不想走太多弯路。 - user2437842
是的,这是一个很好的例子。 - Drewness

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接