rmmseg - cpp - 간결 하고 효율 적 인 ruby 중국어 단어 프로그램
저 는 앞의 글 에서 libmmseg 가 ruby 를 실현 하 는 중국어 단 어 를 소개 하 였 으 며, 이 글 에서 또 다른 우수한 ruby 중국어 단어 프로그램 rmmseg - cpp 를 소개 하 였 습 니 다.
rmmseg 는 절강대학 교 학생 pluskid 가 개발 한 순수 ruby 버 전의 중국어 단어 프로그램 으로 '사전 기반 의 최대 일치 알고리즘' 을 사용 합 니 다. rmmseg 에 관 한 소 개 는 다음 과 같 습 니 다.http://www.iteye.com/news/1380。
rmmseg 의 주요 문 제 는 성능 과 메모리 소모 이다.순수 ruby 로 작 성 된 rmmseg 단 어 는 속도 가 매우 느 리 고 메모리 소모 가 매우 놀 랍 습 니 다. 복잡 한 단어 알고리즘 을 사용 할 때 메모리 가 선형 으로 상승 하 는 현상 은 제 가 만 든 대량의 색인 테스트 프로그램 에서 900 MB 이상 올 랐 습 니 다.
이 를 위해 rmmseg 의 작성 자 pluskid 는 C + + 로 rmmseg 프로젝트 를 다시 썼 습 니 다. 이것 이 바로 rmmseg - cpp 입 니 다.저자 자신의 간단 한 테스트 에 따 르 면 rmmseg - cpp 의 성능 은 rmmseg 의 400 배가 넘는다.rmmseg - cpp 의 설치 와 사용 을 간단하게 소개 합 니 다.
1. 설치
rmmseg - cpp 는 현재 유 닉 스 운영 체제 만 지원 하고 Windows 는 지원 되 지 않 습 니 다.
gem install pluskid-rmmseg-cpp --source=http://gems.github.com
2. 사용
require 'ferret'
require 'rmmseg'
analyzer = RMMSeg::Ferret::Analyzer.new do |tokenizer|
Ferret::Analysis::LowerCaseFilter.new(tokenizer)
end
됐 습 니 다. 그리고 analyzer 를 사용 하여 단어 색인 과 조 회 를 할 수 있 습 니 다.
rmmseg - cpp 와 libmmseg 는 현재 비교적 좋 은 ruby 중국어 단어 프로그램 으로 사용 할 수 있 습 니 다. 그들의 성능 과 메모리 관리 가 모두 상당히 좋 습 니 다. 우리 의 테스트 와 사용 상황 을 보면 생산 환경 에서 안심 하고 사용 할 수 있 습 니 다.그러나 그들 도 약간의 차이 점 과 각자 의 특징 이 있다.
1. rmmseg - cpp 의 단어 속 도 는 libmmseg 보다 배 정도 빠르다.
rmmseg - cpp 는 ruby 의 ferret 를 위 한 중국어 단어 인터페이스 로 코드 가 매우 세련 되 고 ruby 와 잘 결합 되 어 있 습 니 다.libmmseg 는 주로 sphinx 와 호흡 을 맞 추 는 데 사 용 됩 니 다. ruby 를 위 한 것 이 아 닙 니 다. 그 는 아주 허름 한 ruby 호출 인터페이스 만 제공 합 니 다. ruby 프로그램 에서 중국어 단 어 를 사용 할 때 rmmseg - cpp 의 성능 이 한 수 위 였 습 니 다.
2. rmmseg - cpp 의 메모리 관 리 는 libmmseg 보다 안정 적 이지 않 은 것 같 습 니 다.
Ruby 자 체 는 GC 기능 을 가 진 스 크 립 트 언어 입 니 다. C / C + + 로 Ruby 확장 자 를 작성 하 는 것 자체 가 번 거 로 운 일 입 니 다. C / C + + 자체 가 수 동 으로 메모 리 를 할당 해 야 하기 때 문 입 니 다. 그러나 프로그래머 가 Ruby 의 GC 체제 에 대해 충분히 알 지 못 하면 많은 번 거 로 움 을 가 져 올 수 있 습 니 다. 잘못 하면 메모리 가 새 거나 원 하지 않 는 사용 중인 대상 이 Ruby GC 에 의 해 떨 어 지 는 문제 가 발생 할 수 있 습 니 다.
rmmseg - cpp 는 GC 에 많은 공 을 들 였 기 때문에 메모리 관리 가 상당히 좋 았 다. 그러나 나 는 데이터 양 이 매우 많은 전문 색인 과정 에서 메모리 가 짧 은 시간 에 몇 십 MB 빠르게 상승 하 는 현상 을 관찰 한 적 이 있다 (그러나 이런 현상 은 흔 하지 않다).
한편, libmmseg 는 ruby 에 대한 의존 이 없고 허름 한 인터페이스 만 제공 하기 때문에 수 차례 의 테스트 에서 프로그램 이 장시간 실행 되 어 관찰 한 결과 메모리 관 리 는 rmmseg - cpp 보다 더욱 안정 적 이 고 메모리 가 빠르게 상승 하 는 현상 이 나타 나 지 않 았 다.
3. rmmseg - cpp 는 현재 Windows 버 전이 없 으 며, libmmseg 는 windows 버 전 을 지원 합 니 다.
4. rmmseg - cpp 설치 설정 은 간단 합 니 다. libmmseg 처럼 귀 찮 지 않 습 니 다.
어쨌든 rmmseg - cpp 와 libmmseg 는 C + + 로 작 성 된 우수한 중국어 단어 프로그램 이 며 ruby 에서 전체 텍스트 검색 을 실현 하 는 중국어 단어 기능 을 지원 할 수 있 습 니 다.특별한 수요 가 아니라면 ruby 에서 만 중국어 단어 기능 을 사용 할 뿐 rmmseg - cpp 를 추천 합 니 다.현재 자바 아이 사이트 의 중국어 단어 알고리즘 은 rmmseg - cpp 를 사용 하여 효과 가 좋 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[git rebase] 어떻게 마스터의 정보를 지점으로 가지고 작업을 진행합니까?분기에서 작업하지만 작업 중에 다른 구성원이 주체에 합쳐지면 주체의 정보 발생할 때의 충돌을 최소한으로 통제하고 싶다 & 합병 후의 내용을 바탕으로 실시하고 싶다 (다른 게 있을 것 같아, 내 해석이야.) ■ Git...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.