论坛首页 编程语言技术论坛

貌似rmmseg + ferret中文分词不是很好

浏览 2653 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-10-05  
用了一下ruby的中文分词rmmseg + ferret,发现rmmseg的中文分词并不是很好,比如:Hawkins开始了他第一部掌上电脑的设计构想。搜索“掌上电脑”并不能搜索到结果,但是如果把上面这一句改为:Hawkins开始了他第一部 掌上电脑 的设计构想。请注意“掌上电脑”两边的空格,这样的话,rmmseg就可以正确地分词了。

对英文的分词倒是很准确的(好像个个全文检索对英文分词都很强的吧)。

也不知道是不是我用得不对,贴上我使用的代码:
#全文检索
  #rmmseg中文分词
  analyzer = RMMSeg::Ferret::Analyzer.new { |tokenizer|
    Ferret::Analysis::LowerCaseFilter.new(tokenizer)
  } 
  $index = Ferret::Index::Index.new(:analyzer => analyzer)
  acts_as_ferret :field => [:title,:summary,:body] #,:ferret => {:analyzer => analyzer}

  #全文检索方法
  def self.full_text_search(q, options = {})  
    return nil if q.nil? or q==""  
    default_options = {:limit => 10, :page => 1}  
    options = default_options.merge options  
    
    # get the offset based on what page we're on  
    options[:offset] = options[:limit] * (options.delete(:page).to_i-1)  
    results = Page.find_by_contents(q, options)     
     
    return [results.total_hits, results]  
  end
   发表时间:2008-10-05  
JavaEye也是使用rmmseg+ferret,没有遇到你说的问题,不过我们没有使用acts_as_ferret,我猜有可能是你在aaf里面没有指定正确的analyzer?

example.rb
#!/usr/bin/env ruby
require 'rubygems'
require 'ferret'
require 'rmmseg'
require 'rmmseg/ferret'

analyzer = RMMSeg::Ferret::Analyzer.new { |tokenizer| Ferret::Analysis::LowerCaseFilter.new(tokenizer) }
index = Ferret::Index::Index.new(:analyzer => analyzer)
index << "Hawkins开始了他第一部掌上电脑的设计构想"
index.search_each('掌上电脑') do |id, score|
  puts "Document #{id} found with a score of #{score}"
end


quake@quake-laptop:~/Desktop$ ruby test_rmmseg.rb 
Document 0 found with a score of 0.268496215343475
quake@quake-laptop:~/Desktop$ echo "Hawkins开始了他第一部掌上电脑的设计构想" | rmmseg
Hawkins 开始 了 他 第 一部 掌上 电脑 的 设计 构想
0 请登录后投票
   发表时间:2008-10-07  
问题已经解决了,正如Quake Wang  所言,应该是analyzer没设置好,还就是我之前在没有设置analyzer的情况下进行过一次分词,已经生成了index,在项目根目录下的index文件夹里

设置中文analyzer后
acts_as_ferret({:field => [:title,:summary,:body]},{:analyzer => analyzer})


再删除项目根目录下的index文件夹,可正常中文分词了。

不过还有一个初始化问题没有解决。
继续努力。
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics