構造化されていないプレーン テキスト ファイルのコレクションを参照する Ruby スクリプトを作成しようとしていますが、これらのファイルを処理する最善の方法を考えるのに苦労しています。トピック モデリング用のスクリプトの現在の作業バージョンは次のとおりです。
#!/usr/bin/env ruby -w
require 'rubygems'
require 'lda-ruby'
# Input a directory of files
FILES_DIRECTORY = ARGV[0]
File.open("files.csv", "w") do |f|
Dir.glob(FILES_DIRECTORY + "*.txt") do |filename|
file_id = File.basename(filename).gsub(".txt", "")
text = File.read(filename).clean
f.puts [file_id, text].join(",")
end
end
# Read csv
file = File.open("files.csv", "r") { |f| f.read }
# Train topics and infer
corpus = Lda::Corpus.new
corpus.add_document(Lda::TextDocument.new(corpus, file))
lda = Lda::Lda.new(corpus)
lda.verbose = false
lda.num_topics = 20
lda.em('random')
topics = lda.top_words(10)
puts topics
私が変更しようとしているのは、このプログラムに、単一のファイルではなくプレーン テキスト ファイルのコレクションを読み取らせることです。files.csv
私が理解しているように、lda-ruby は単一のファイルではなく、正しいトピック モデルを実行するために複数のファイルを検索するため、すべてのテキスト ファイルを単一のファイルに放り込むだけでは簡単ではありません。(私がこの結論に達したのは、このスクリプトで、corpus.txt
すべてのテキストを含む単一のテキストfiles.csv
ファイル[たとえば、
それで、私の質問は、lda-ruby でこれらのテキスト ファイルを異なる方法で反復処理するにはどうすればよいかということです。代わりに、ファイルの内容をハッシュに配置する必要がありますか? もしそうなら、どこから始めるべきかについての指針はありますか?または、これを破棄して、別の LDA ライブラリを使用する必要がありますか?
アドバイスをお寄せいただきありがとうございます。