簡體   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