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

4 投票
2 回答
1117 浏览
提问于 2025-04-17 22:49

我正在用BeautifulSoup从HTML中提取一些文本和相关信息,想要建立一个文本库。如果我能在Python中调用Mallet,并让它从Python字符串中分析主题,而不是从文件夹里的文本文件中分析,那就太好了。这样我就可以把Mallet找到的关键词放到每个文件里。

当我运行以下代码时,出现了一个消息,表示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 个回答

1

我曾经尝试在一个NLTK项目中使用Mallet,结果遇到了很多麻烦。这里要强调的是,Mallet是基于Java的,而NLTK是用Python写的。

你可能已经知道这一点,但我想说的是,我在这两种技术混合使用时遇到了困难,因为我对Java不太熟悉。我也听到同事们对用Python调用Mallet的反馈,他们都说:“准备花很多时间调试吧。”

从那以后,我开始使用sklearn这个Python库。它主要是针对机器学习的,虽然不是专门为自然语言处理(NLP)设计的,但也能很好地用于这方面。这个库提供了很多建模工具,而且大部分功能依赖于NumPy,所以运行速度应该很快。我用得不少,觉得它写得很好,文档也很清晰。

我并不是想让你放弃使用Mallet,尤其是因为我这么说。但如果你愿意考虑其他选择,我觉得在用NLTK构建项目时,使用Python模块会简单得多,因为NLTK本身就是用Python写的。希望这些对你有帮助!

2

如果你还在寻找解决方案的话,可以试试Gensim。它是一个用Python写的主题建模和机器学习的工具包,里面有一个很简单好用的Mallet封装,而且文档也写得很清楚。你可以在这里找到一些Gensim的教程,还有一个专门讲解Mallet封装的教程。另外,你可能还想看看一些安装说明(主要是关于设置Java内存的部分),可以在这里找到,了解完后你就可以开始使用了。

撰写回答