`
yangzhihuan
  • 浏览: 168514 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

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

阅读更多
用了一下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
分享到:
评论
2 楼 yangzhihuan 2008-10-07  
问题已经解决了,正如Quake Wang  所言,应该是analyzer没设置好,还就是我之前在没有设置analyzer的情况下进行过一次分词,已经生成了index,在项目根目录下的index文件夹里

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


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

不过还有一个初始化问题没有解决。
继续努力。
1 楼 QuakeWang 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 开始 了 他 第 一部 掌上 电脑 的 设计 构想

相关推荐

    工具Ferret(含代码)

    Ferret可能是通过模拟网络连接,让目标系统将其Cookie发送给Ferret,而不是预期的服务器。 在使用Ferret时,需要具备一定的网络协议知识,特别是HTTP和HTTPS。HTTP是互联网上应用最广泛的数据交换协议,而HTTPS是在...

    Go-Ferret一种声明式Web爬虫系统

    Go-Ferret是一种基于Go语言开发的声明式Web爬虫系统,它的主要目的是为了简化从互联网上抓取和处理数据的过程。在Web爬虫领域,Go-Ferret提供了一种高效且易于使用的解决方案,尤其适合于UI测试、机器学习以及数据...

    Ruby搜索引擎Ferret.zip

    Ferret 是 Java 全文搜索引擎 Lucene 的 Ruby 移植版本。 标签:Ferret

    ferret 6.84 for win7 64

    FERRET 绘图软件 6.84 for win64 安装方式,解压到任意目录,直接执行bin\bash.exe或bin\mintty.exe原方式操作,直接执行bin\ferret_v6.84.exe 直接进入FERRET

    ferret简明手册

    ### FERRET简明手册知识点概述 #### 一、FERRET简介与基本操作 - **Commandline模式**:启动FERRET时,默认进入命令行模式,提示符为“yes?”,用户可以通过此模式输入命令。 - **FERRET-GUI**:通过`ferret-gui`...

    Ferret工具源代码

    几年前的黑帽子大会后传出的一个工具Ferret。作者声称可以利用他截获邮箱登录过程中的cookie信息。进而可以随意侵入他人的信箱。曾在黑帽子大会上当场演示如何破解gmail,hotmail等信箱。终于等到作者把代码和工具都...

    Ferret ruby下的搜索引擎技术

    ruby下的搜索引擎。With the introduction of Ferret, Ruby users now have one of the fastest and most flexible search libraries available. And it's surprisingly easy to use.

    E022-渗透测试常用工具-使用ferret进行Cookie劫持.pdf

    在这个过程中,使用了ferret工具来执行Cookie劫持,这是一种常见的攻击手段,用于获取用户的登录凭据,特别是那些存储在Cookie中的会话ID。以下是整个过程的详细解释: 1. **环境准备**: 在这个场景中,我们有两...

    Ferret 是用于实时嵌入式控制系统的免费软件 lisp 实现_Makefile_代码_相关文件_下载

    Ferret 是一个免费软件 lisp 实现,旨在用于实时嵌入式控制系统。Ferret lisp 编译成自包含的C++11。生成的代码可在支持C++11兼容编译器的任何操作系统和/或微控制器之间移植。它已经过验证,可以在从内存低至2KB 的...

    Arduino-ferret.zip

    Arduino-ferret.zip,ferret是一个用于实时嵌入式控制系统的自由软件lisp实现。,Arduino是一家开源软硬件公司和制造商社区。Arduino始于21世纪初,深受电子制造商的欢迎,Arduino通过开源系统提供了很多灵活性。

    Ferret-crx插件

    【Ferret-crx插件】是一款专为提高搜索效率设计的浏览器扩展程序,主要针对英语用户群体。这款插件的独特之处在于它提供了一个统一的、便捷的搜索入口,允许用户在多功能框中输入特定的指令来启动搜索,极大地简化了...

    Image Ferret-开源

    "Image Ferret"是一款开源的图像搜索工具,它专为帮助用户在互联网上高效地查找、探索和发现各种图像、照片以及艺术作品而设计。这款软件的独特之处在于它能够自动学习用户的偏好,根据用户对图像的喜好进行智能推荐...

    Ferret CMS-开源

    **Ferret CMS 开源内容管理系统详解** Ferret CMS 是一个基于 Zope 平台构建的开源内容管理系统。Zope 是一个强大的Python Web应用程序框架,它为开发人员提供了丰富的功能,使得创建复杂的Web应用变得更为简单。...

    Ferret.Net-开源

    【标题】"Ferret.Net-开源" 【描述】中的知识点: 1. **Ferret.Net**:这是一个专为IT专业人士设计的开源类库,它主要用于处理网络套接字通信,提供跨平台的支持。 2. **基于接口**:这意味着Ferret.Net的设计遵循...

    Python库 | txtferret-0.1.0-py3-none-any.whl

    "ferret"这个词在英语中指的是雪貂,一种善于挖掘和寻找的小动物。在这里,它可能是象征着库能够深入文本数据中,挖掘出有价值的信息。版本号"0.1.0"表明这是该库的初步版本,可能存在更多的更新和发展空间。 ...

    Ferret4J-开源

    Ferret4J旨在成为Java应用程序的轻量级MVC框架。 它基于以模型为中心的体系结构,并努力减少干扰。 您可以在我的博客中找到更多信息,网址为http://blackship.eu/category/my-projects/jferret/

    pnw-ferret:政治与战争的数据收集和分析工具

    "pnw-ferret"是一个专门用于政治与战争数据收集和分析的工具,它以其高效的数据处理能力和深度洞察力在IT行业中占据了一席之地。这个工具以“雪貂”为代号,暗示了其在信息搜索和挖掘中的敏捷性和精准性。主要由...

    一个MIME检测库.zip

    《深入理解MIME检测库:以Ferret为例》 在信息技术领域,MIME(Multipurpose Internet Mail Extensions)是一种标准,用于定义非ASCII字符的数据类型,尤其在电子邮件、Web和其他Internet协议中广泛应用。MIME扩展...

    ferret-opencv

    雪貂opencv 用于OpenCV雪貂绑定(require '[ferret-opencv.core :as cv])(def cam (cv/video-capture 0))(let [f (cv/query-capture cam)] (cv/imwrite "image_latest.png" f))样品CMake cmake_minimum_required...

Global site tag (gtag.js) - Google Analytics