我正在尝试编写一个 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
. (我得出这个结论是因为让这个脚本读取corpus.txt
包含所有文本的单个文本文件 [例如,] 和files.csv
文件之间几乎没有差异。)
所以,我的问题是如何让 lda-ruby 以不同的方式遍历这些文本文件?是否应该将文件的内容放入散列中?如果是这样,关于我应该从哪里开始的任何指示?或者,我应该放弃这个并使用不同的 LDA 库吗?
提前感谢您的任何建议。