답변 주셔서 감사합니다.
-
가타카나로 작성된 샘플 문단
通報テスト9,通報テスト11,通報テスト8…등 -
작동하지 않는 검색어 샘플
テスト
"テスト"는 작동하지 않습니다.
하지만 “通報” 또는 "通報テスト"는 정상적으로 작동하는 것 같습니다.
-
사이트 언어 설정이 일본어인지 또는
search tokenize chinese japanese korean옵션이 활성화되어 있는지 확인
네, 두 설정이 모두 올바르게 설정되어 있는지 확인했습니다.
믿기 힘든 일이 일어났습니다. '최소 검색어 길이’을 기본값인 2에서 1로 변경한 후, 이제 가타카나를 검색할 수 있게 되었습니다. 왜 그런지는 모르겠지만, 이 설정이 관련이 있을까요?
재현해 보니, 주로 다음 두 부분의 조합 때문에 발생하는 것 같습니다.
그리고
CppjiebaRb를 거친 후 テスト가 テ ス ト로 변환되어, 우리가 설정해 둔 min_search_length 보호 장치에 걸리고 있습니다.
@sam 이 문제를 해결하려면 일본어에 적합한 토크나이저가 필요합니다. 그래야 이러한 검색 문제를 근본적으로 해결할 수 있습니다. 여기저기 조정할 수는 있지만, 결국 이리저리 막기만 하는 상황이 될 것입니다.
적절하게 사용할 수 있는 일본어 세그멘터(segmenter)가 존재하지 않는다고 생각합니다.
여기서는 기본값을 단순히 1로 낮추는 것이 가장 좋은 방법이라고 생각합니다.
그렇지 않으면 일본어로 '집’을 검색하는 것을 금지하게 되는데, 이는 합리적인 검색입니다(家) … 우리는 영어로 '집’을 검색하는 것을 허용하고 있습니다.
요즘 루비를 사용하지 않고 디스코스의 요구 사항도 잘 모르지만, "mecab"에 대한 게마가 있는 것 같습니다.
이 주제에 오게 된 이유는 제가 호스팅한 공개 인스턴스(my hosted public instance)에서 일부 단어 검색이 되지 않는 것을 발견했기 때문입니다. 제 설정은 다음과 같습니다.
기억이 정확하지는 않지만, 사이트를 영어 로케일로 초기화한 후 나중에 설정을 일본어로 변경했습니다.
검색이 실패한 단어는 “北側”, “真上”, "一般"입니다. 이 단어들은 이 주제에 포함되어 있습니다. 많은 단어는 검색이 되지만 이 단어들은 그렇지 않습니다. 어떤 단어는 검색이 되고 어떤 단어는 안 되는지 패턴을 찾지 못하고 있습니다.
호스팅 인스턴스에서 생성된 검색 인덱스를 확인하는 방법이 있을까요? 저는 루비와 일본어를 모두 읽을 수 있으므로, 디스코스가 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에 대한 간단한 검색을 통해, 이 도구가 사용하는 모델의 성능이 그렇게 뛰어나지 않다는 것을 알게 되었습니다. 이를 위한 모델 생성기가 있습니다.
다만, 저는 아직 시도해 보지 않았습니다.