繁体   English   中英

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

[英]How can I improve the performance of NLTK? alternatives?

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

它与缩放nltk有关。

您可以使用Mahout查找哪些文档彼此之间最相关。

这是一个快速的教程( 链接 ),将教您一些概念,但是最好在《行动中的Mahout》一书的第8章中对它们进行解释。

基本上,您首先需要以Hadoop SequenceFile格式表示数据,您可以使用seqdirectory命令,但是这可能会太慢,因为它将每个文档作为自己的文件(因此,如果您有成千上万个文档中的“ I / O将受到影响。)从某种意义上讲, 这篇文章是相关的,它讨论了如何从CSV文件中创建SequenceFile,其中每一行都是一个文档。 尽管,如果我没记错的话,Mahuout的后备箱可能对此具有某些功能。 您可能要在Mahout用户邮件列表中询问。

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

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

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

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM