我目前正在使用 Classifier gem 成功地对文本进行分类。我遵循了“ Ruby 中的贝叶斯分类”教程,一切正常。我有两个文件,一个名为“positive_tweets.yml”的文件如下:
- “你好,有什么事。我很好”
- “我是一个积极的推文”
和“negative_tweet.yml”
- “今天天气真不好”
- “我刚刚出了车祸”
为了对“我今天很好”进行分类,我首先像这样训练分类器:
positive = YAML.load_file('positive_tweets.yml')
negative = YAML.load_file('negative_tweets.yml')
classifier = Classifier::Bayes.new('Positive', 'Negative')
positive.each { |p| classifier.train_positive p }
negative.each { |n| classifier.train_negative n }
然后我将文本“我今天很好”分类如下:
classifier.classify "I'm good today" # which returns positive
据我了解,这基本上是在一元级别上工作的。我还想将其提升到一个新的水平,即潜在地对二元组和 n-gram 进行分类。
我已经使用以下方法创建了一个文本的二元数组:
text.split(' ').each_cons(2).to_a
但是,我不确定如何从这里继续,因为该classify
方法不采用数组。它需要一个字符串。