python - 如何提高 NLTK 的性能?备择方案?

标签 python nltk mahout

我试着在这里和那里搜索它,但找不到任何好的解决方案,所以尽管询问了 nlp 专家。我正在开发一个文本相似性查找应用程序,我需要将成千上万的文档(每个文档大约 1000 个单词)相互匹配。对于 nlp 部分,我最好的选择是 NLTK(看到它的功能和 python 的算法友好性。但是现在当词性标记本身花费了很多时间时,我相信 nltk 可能不是最合适的。Java 或 C 不会伤害了我,因此任何解决方案都对我有用。 请注意,我已经开始从 mysql 迁移到 hbase,以便更自由地处理如此大量的数据。但是仍然存在问题,如何执行算法。 Mahout 可能是一个选择,但这也是机器学习的选择,而不是专用于 nlp(可能对语音识别有好处)。还有什么可用的选项。在要点上,我需要高性能 nlp,(从高性能机器学习向下一步)。 (我有点倾向于 Mahout,看到 future 的用法)。

它是关于扩展 nltk 的。

最佳答案

您可以使用 Mahout 查找彼此最相关的文档。

这是一个快速教程 (link),它将教您一些概念,但在 Mahout in Action 一书的第 8 章中对它们进行了最好的解释。

基本上,您首先需要在 Hadoop 中表示您的数据 SequenceFile格式,你可以使用 seqdirectory 命令,但这可能会太慢,因为它希望每个文档都作为自己的文件(所以如果你有“成千上万的文档”我/O 会受苦的。)This post在某种意义上是相关的,它讨论如何从 CSV 文件制作 SequenceFile,其中每一行都是一个文档。不过,如果我没记错的话,Mahout 的主干可能有一些功能。您可能想在 Mahout 用户邮件列表中提问。

然后,在您的文档在 Hadoop 中呈现之后 SequenceFile格式,您需要应用 seq2sparse 命令。可用命令行选项的完整列表在本书的第 8 章中,但您可以点击该命令以获取其帮助提示,它会为您提供一个命令列表。您需要的命令之一是 -a,它是您要使用的 (lucene?) 文本分析器的类名,在这里您可以删除停用词、词干、删除标点符号等等...默认分析器是 org.apache.lucene.analysis.standard.StandardAnalyzer

然后使用 rowid 命令将数据表示为矩阵。

之后,您使用rowsimilarity 命令来获取最相似的文档。

希望这对您有所帮助。

关于python - 如何提高 NLTK 的性能?备择方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15782898/

相关文章:

python - 通过 nltk python 从 wordnet 获取上位词

hadoop - 如何在mahout中获取群集的主题和文件?

针对非登录/访客/匿名用户的 Mahout 推荐

python - 有没有一种方法可以在不使用 Python API 的情况下执行 PyObject 的深层复制(例如通过 C、Rust 等)?

python - Node api、Reactjs、Python fast api 和 React Native 的 Azure 托管设置

python - 计算大数的二项式概率

使用 nltk 的 python 拼写校正器

python - Flask 将命名元组作为字典返回,但并非始终如此

3.x 中等效的 Python 2.x 子列表参数

java - Apache Mahout 没有给出任何建议