Search a term in Japanese

답변 주셔서 감사합니다.

  1. 가타카나로 작성된 샘플 문단
    通報テスト9,通報テスト11,通報テスト8…등

  2. 작동하지 않는 검색어 샘플
    テスト
    "テスト"는 작동하지 않습니다.


    하지만 “通報” 또는 "通報テスト"는 정상적으로 작동하는 것 같습니다.

  3. 사이트 언어 설정이 일본어인지 또는 search tokenize chinese japanese korean 옵션이 활성화되어 있는지 확인
    네, 두 설정이 모두 올바르게 설정되어 있는지 확인했습니다.


믿기 힘든 일이 일어났습니다. '최소 검색어 길이’을 기본값인 2에서 1로 변경한 후, 이제 가타카나를 검색할 수 있게 되었습니다. 왜 그런지는 모르겠지만, 이 설정이 관련이 있을까요?

재현해 보니, 주로 다음 두 부분의 조합 때문에 발생하는 것 같습니다.

그리고

CppjiebaRb를 거친 후 テスト가 テ ス ト로 변환되어, 우리가 설정해 둔 min_search_length 보호 장치에 걸리고 있습니다.

@sam 이 문제를 해결하려면 일본어에 적합한 토크나이저가 필요합니다. 그래야 이러한 검색 문제를 근본적으로 해결할 수 있습니다. 여기저기 조정할 수는 있지만, 결국 이리저리 막기만 하는 상황이 될 것입니다.

적절하게 사용할 수 있는 일본어 세그멘터(segmenter)가 존재하지 않는다고 생각합니다.

여기서는 기본값을 단순히 1로 낮추는 것이 가장 좋은 방법이라고 생각합니다.

그렇지 않으면 일본어로 '집’을 검색하는 것을 금지하게 되는데, 이는 합리적인 검색입니다(家) … 우리는 영어로 '집’을 검색하는 것을 허용하고 있습니다.

요즘 루비를 사용하지 않고 디스코스의 요구 사항도 잘 모르지만, "mecab"에 대한 게마가 있는 것 같습니다.

이 주제에 오게 된 이유는 제가 호스팅한 공개 인스턴스(my hosted public instance)에서 일부 단어 검색이 되지 않는 것을 발견했기 때문입니다. 제 설정은 다음과 같습니다.

  • 최소 검색어 길이: 1
  • 중국어, 일본어, 한국어 검색 토큰화: 활성화
  • 기본 로케일: 일본어

기억이 정확하지는 않지만, 사이트를 영어 로케일로 초기화한 후 나중에 설정을 일본어로 변경했습니다.

검색이 실패한 단어는 “北側”, “真上”, "一般"입니다. 이 단어들은 이 주제에 포함되어 있습니다. 많은 단어는 검색이 되지만 이 단어들은 그렇지 않습니다. 어떤 단어는 검색이 되고 어떤 단어는 안 되는지 패턴을 찾지 못하고 있습니다.

호스팅 인스턴스에서 생성된 검색 인덱스를 확인하는 방법이 있을까요? 저는 루비와 일본어를 모두 읽을 수 있으므로, 디스코스가 CJK에 대해 검색 인덱스를 생성하는 방식을 볼 수 있는 방법이 있다면 도움이 될 수 있을 것 같습니다.

@tgxworld가 언급한 CppjiebaRb 또는 cppjieba는 중국어를 위한 것인 것 같습니다. 일본어 로케일에도 사용되나요?

MeCab은 불행히도 선택지가 아닙니다. GPL 라이선스를 사용하고 있으며, 우리는 의존성에서 MIT와 BSD 라이선스만 선호하기 때문입니다.

호환 가능한 라이선스를 가진 http://chasen.org/~taku/software/TinySegmenter/를 추가하는 PR이 있습니다. 분할(segmenting)을 테스트해 보고 얼마나 잘 작동하는지 알려 주실 수 있을까요? 웹사이트에서 테스트할 수 있는 양식이 있습니다.

Rubygems의 tiny_segmenter를 시도해 봤고, 적어도 이전 댓글에서 나열한 단어들은 생성됩니다.

# coding: utf-8
require 'tiny_segmenter'
require 'pp'

s = File.read('topic27.txt')

ts = TinySegmenter.new
sg = ts.segment(s, ignore_punctuation: true)
pp(sg)
bundle exec ruby test.rb | grep -e 北側 -e 真上 -e 一般
 "北側",
 "真上",
 "一般",
 "一般",
 "一般",
 "北側",
 "一般",

TinySegmenter에 대한 간단한 검색을 통해, 이 도구가 사용하는 모델의 성능이 그렇게 뛰어나지 않다는 것을 알게 되었습니다. 이를 위한 모델 생성기가 있습니다.

다만, 저는 아직 시도해 보지 않았습니다.