`
yangzhihuan
  • 浏览: 168728 次
  • 性别: 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等信箱。终于等到作者把代码和工具都...

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

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

    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.

    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